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,
    this,
)

from bluetooth_mesh.messages.util import EnumAdapter
from bluetooth_mesh.messages.util import EnumSwitch as Switch
from bluetooth_mesh.messages.util import NamedSelect, Opcode, SwitchStruct


[docs]class DebugOpcode(IntEnum): SILVAIR_DEBUG = 0xF53601
[docs]class DebugSubOpcode(IntEnum): RSSI_THRESHOLD_GET = 0x00 RSSI_THRESHOLD_SET = 0x01 RSSI_THRESHOLD_STATUS = 0x02 RADIO_TEST = 0x03 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 RssiThresholdGet = Struct() RssiThreshold = Struct( "rssi_threshold" / Int8ul ) RadioTest = Struct( "packet_counter" / Int8ul ) UptimeGet = Struct() UptimeStatus = Struct( "uptime" / Int32ul ) LastSwFaultGet = Struct() LastSwFaultClear = Struct() LastSwFaultStatus = Struct( "time" / Int32ul, "fault" / GreedyString("utf8") ) SystemStatsGet = Struct() SystemStat = Struct( "name" / PaddedString(8, "utf8"), "high_water_mark" / Int32ul, "_rfu" / Padding(2) ) SystemStatsStatus = Struct( "stats" / GreedyRange(SystemStat) ) LastMallocFaultGet = Struct() LastMallocFaultClear = Struct() LastMallocFaultStatus = LastSwFaultStatus LastFdsFaultGet = Struct() LastFdsFaultClear = Struct() LastFdsFaultStatus = LastSwFaultStatus BytesBeforeGarbageCollectorGet = Struct() BytesBeforeGarbageCollectorStatus = Struct( "bytes_left" / Int16ul ) ProvisionedAppVersionGet = Struct() ProvisionedAppVersionStatus = Struct( "version" / Int16ul ) FullFirmwareVersionGet = Struct() FullFirmwareVersionStatus = Struct( "version" / GreedyString("utf8") ) IvIndexGet = Struct() IvIndexStatus = Struct( "ivindex" / Int32ul ) GarbageCollectorCounterGet = Struct() GarbageCollectorCounterStatus = Struct( "counter" / Int16ul ) ArapSize16 = Struct( "capacity" / Int16ul, "size" / Int16ul ) ArapSize8 = Struct( "capacity" / Int8ul, "size" / Int8ul ) ArapListSizeGet = Struct() ArapListSizeStatus = NamedSelect( new=ArapSize16, old=ArapSize8, ) ArapListContentGet = Struct( "page" / Int8ul ) ArapNode = ByteSwapped( BitStruct( "sequence" / Bytewise(Int24ub), "ivi" / BitsInteger(1), "address" / BitsInteger(15), ) ) ArapListContentStatus = Struct( "current_page" / Int8ul, "last_page" / Int8ul, "nodes" / GreedyRange(ArapNode) ) DebugParams = SwitchStruct( "subopcode" / EnumAdapter(Int8ul, DebugSubOpcode), "payload" / Switch( this.subopcode, { DebugSubOpcode.RSSI_THRESHOLD_GET: RssiThresholdGet, DebugSubOpcode.RSSI_THRESHOLD_SET: RssiThreshold, DebugSubOpcode.RSSI_THRESHOLD_STATUS: RssiThreshold, DebugSubOpcode.RADIO_TEST: RadioTest, DebugSubOpcode.UPTIME_GET: UptimeGet, DebugSubOpcode.UPTIME_STATUS: UptimeStatus, DebugSubOpcode.LAST_SW_FAULT_GET: LastSwFaultGet, DebugSubOpcode.LAST_SW_FAULT_CLEAR: LastSwFaultClear, DebugSubOpcode.LAST_SW_FAULT_STATUS: LastSwFaultStatus, DebugSubOpcode.SYSTEM_STATS_GET: SystemStatsGet, DebugSubOpcode.SYSTEM_STATS_STATUS: SystemStatsStatus, DebugSubOpcode.LAST_MALLOC_FAULT_GET: LastMallocFaultGet, DebugSubOpcode.LAST_MALLOC_FAULT_CLEAR: LastMallocFaultClear, DebugSubOpcode.LAST_MALLOC_FAULT_STATUS: LastMallocFaultStatus, DebugSubOpcode.LAST_FDS_FAULT_GET: LastFdsFaultGet, DebugSubOpcode.LAST_FDS_FAULT_CLEAR: LastFdsFaultClear, DebugSubOpcode.LAST_FDS_FAULT_STATUS: LastFdsFaultStatus, DebugSubOpcode.BYTES_BEFORE_GARBAGE_COLLECTOR_GET: BytesBeforeGarbageCollectorGet, DebugSubOpcode.BYTES_BEFORE_GARBAGE_COLLECTOR_STATUS: BytesBeforeGarbageCollectorStatus, DebugSubOpcode.PROVISIONED_APP_VERSION_GET: ProvisionedAppVersionGet, DebugSubOpcode.PROVISIONED_APP_VERSION_STATUS: ProvisionedAppVersionStatus, DebugSubOpcode.FULL_FIRMWARE_VERSION_GET: FullFirmwareVersionGet, DebugSubOpcode.FULL_FIRMWARE_VERSION_STATUS: FullFirmwareVersionStatus, DebugSubOpcode.IV_INDEX_GET: IvIndexGet, DebugSubOpcode.IV_INDEX_STATUS: IvIndexStatus, DebugSubOpcode.GARBAGE_COLLECTOR_COUNTER_GET: GarbageCollectorCounterGet, DebugSubOpcode.GARBAGE_COLLECTOR_COUNTER_STATUS: GarbageCollectorCounterStatus, DebugSubOpcode.ARAP_LIST_SIZE_GET: ArapListSizeGet, DebugSubOpcode.ARAP_LIST_SIZE_STATUS: ArapListSizeStatus, DebugSubOpcode.ARAP_LIST_CONTENT_GET: ArapListContentGet, DebugSubOpcode.ARAP_LIST_CONTENT_STATUS: ArapListContentStatus, } ) ) DebugMessage = SwitchStruct( "opcode" / Opcode(DebugOpcode), "params" / Switch( this.opcode, { DebugOpcode.SILVAIR_DEBUG: DebugParams, } ) ) # fmt: on