Source code for bluetooth_mesh.messages.silvair.debug

#
# python-bluetooth-mesh - Bluetooth Mesh for Python
#
# Copyright (C) 2019  SILVAIR sp. z o.o.
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
#
from enum import IntEnum

from construct import (
    BitsInteger,
    BitStruct,
    ByteSwapped,
    Bytewise,
    Const,
    Default,
    GreedyRange,
    GreedyString,
    Int8ul,
    Int16ul,
    Int24ub,
    Int32ul,
    PaddedString,
    Padding,
    Select,
    Struct,
    Switch,
    this,
)

from bluetooth_mesh.messages.util import DictAdapter, EnumAdapter, Opcode


[docs]class DebugOpcode(IntEnum): OPCODE = 0xF53601
[docs]class DebugSubOpcode(IntEnum): RSSI_THRESHOLD_GET = 0x00 RSSI_THRESHOLD_SET = 0x01 RSSI_THRESHOLD_STATUS = 0x02 RADIO_TEST = 0x03 TIMESLOT_TX_POWER_GET = 0x04 TIMESLOT_TX_POWER_SET = 0x05 TIMESLOT_TX_POWER_STATUS = 0x06 SOFTDEVICE_TX_POWER_GET = 0x07 SOFTDEVICE_TX_POWER_SET = 0x08 SOFTDEVICE_TX_POWER_STATUS = 0x09 UPTIME_GET = 0x0A UPTIME_STATUS = 0x0B LAST_SW_FAULT_GET = 0x0C LAST_SW_FAULT_CLEAR = 0x0D LAST_SW_FAULT_STATUS = 0x0E SYSTEM_STATS_GET = 0x0F SYSTEM_STATS_STATUS = 0x10 LAST_MALLOC_FAULT_GET = 0x11 LAST_MALLOC_FAULT_CLEAR = 0x12 LAST_MALLOC_FAULT_STATUS = 0x13 LAST_FDS_FAULT_GET = 0x14 LAST_FDS_FAULT_CLEAR = 0x15 LAST_FDS_FAULT_STATUS = 0x16 BYTES_BEFORE_GARBAGE_COLLECTOR_GET = 0x17 BYTES_BEFORE_GARBAGE_COLLECTOR_STATUS = 0x18 PROVISIONED_APP_VERSION_GET = 0x19 PROVISIONED_APP_VERSION_STATUS = 0x1A FULL_FIRMWARE_VERSION_GET = 0x1B FULL_FIRMWARE_VERSION_STATUS = 0x1C IV_INDEX_GET = 0x1D IV_INDEX_STATUS = 0x1E GARBAGE_COLLECTOR_COUNTER_GET = 0x1F GARBAGE_COLLECTOR_COUNTER_STATUS = 0x20 ARAP_LIST_SIZE_GET = 0x21 ARAP_LIST_SIZE_STATUS = 0x22 ARAP_LIST_CONTENT_GET = 0x23 ARAP_LIST_CONTENT_STATUS = 0x24
# fmt: off RssiThreshold = Struct( "rssi_threshold" / Int8ul ) RadioTest = Struct( "packet_counter" / Int8ul ) TxPower = Struct( "tx_power" / Int8ul ) UptimeStatus = Struct( "uptime" / Int32ul ) LastFault = Struct( "time" / Int32ul, "fault" / GreedyString("utf8") ) SystemStats = Struct( "stats" / DictAdapter( GreedyRange( Struct( "name" / PaddedString(8, "utf8"), "high_water_mark" / Int16ul, "rfu" / Padding(4), ) ), key=this.name, value=this.high_water_mark ) ) GarbageCollector = Struct( "bytes_left" / Int16ul ) AppVersion = Struct( "version" / Int16ul ) FirmwareVersion = Struct( "version" / GreedyString("utf8") ) IvIndex = Struct( "ivindex" / Int32ul ) GarbageCollectorCounter = Struct( "counter" / Int16ul ) ArapSize = Select( Struct( "capacity" / Int16ul, "size" / Int16ul ), Struct( "capacity" / Int8ul, "size" / Int8ul ) ) ArapContentGet = Struct( "page" / Int8ul ) ArapContent = Struct( "current_page" / Int8ul, "last_page" / Int8ul, "nodes" / DictAdapter( GreedyRange( ByteSwapped( BitStruct( "sequence" / Bytewise(Int24ub), "ivi" / BitsInteger(1), "address" / BitsInteger(15), ) ) ), key=this.address, value=[this.ivi, this.sequence] ) ) DebugPayload = Struct( "subopcode" / EnumAdapter(Int8ul, DebugSubOpcode), "data" / Default(Switch( this.subopcode, { DebugSubOpcode.RSSI_THRESHOLD_SET: RssiThreshold, DebugSubOpcode.RSSI_THRESHOLD_STATUS: RssiThreshold, DebugSubOpcode.RADIO_TEST: RadioTest, DebugSubOpcode.TIMESLOT_TX_POWER_SET: TxPower, DebugSubOpcode.TIMESLOT_TX_POWER_STATUS: TxPower, DebugSubOpcode.SOFTDEVICE_TX_POWER_SET: TxPower, DebugSubOpcode.SOFTDEVICE_TX_POWER_STATUS: TxPower, DebugSubOpcode.UPTIME_STATUS: UptimeStatus, DebugSubOpcode.LAST_SW_FAULT_STATUS: LastFault, DebugSubOpcode.SYSTEM_STATS_STATUS: SystemStats, DebugSubOpcode.LAST_MALLOC_FAULT_STATUS: LastFault, DebugSubOpcode.LAST_FDS_FAULT_STATUS: LastFault, DebugSubOpcode.BYTES_BEFORE_GARBAGE_COLLECTOR_STATUS: GarbageCollector, DebugSubOpcode.PROVISIONED_APP_VERSION_STATUS: AppVersion, DebugSubOpcode.FULL_FIRMWARE_VERSION_STATUS: FirmwareVersion, DebugSubOpcode.IV_INDEX_STATUS: IvIndex, DebugSubOpcode.GARBAGE_COLLECTOR_COUNTER_STATUS: GarbageCollectorCounter, DebugSubOpcode.ARAP_LIST_SIZE_STATUS: ArapSize, DebugSubOpcode.ARAP_LIST_CONTENT_GET: ArapContentGet, DebugSubOpcode.ARAP_LIST_CONTENT_STATUS: ArapContent, }, ), None) ) DebugMessage = Struct( "opcode" / Const(DebugOpcode.OPCODE, Opcode), "params" / DebugPayload ) # fmt: on