Beispiel #1
0
SceneRegisterStatus = Struct(
    "status_code" / EnumAdapter(Int8ul, SceneStatusCode),
    "current_scene" / Int16ul,
    "scenes" / Array(16, Int16ul)
)

SceneSetupWithValidation = Struct(
    "scene_number" / ExprValidator(Int16ul, obj_ > 0),
)

SceneSetup = Struct(
    "scene_number" / Int16ul
)

SceneMessage = Struct(
    "opcode" / Opcode(SceneOpcode),
    "params" / Switch(
        this.opcode,
        {
            SceneOpcode.SCENE_GET: SceneGet,
            SceneOpcode.SCENE_RECALL: SceneRecall,
            SceneOpcode.SCENE_RECALL_UNACKNOWLEDGED: SceneRecall,
            SceneOpcode.SCENE_STATUS: SceneStatus,
            SceneOpcode.SCENE_REGISTER_GET: SceneRegisterGet,
            SceneOpcode.SCENE_REGISTER_STATUS: SceneRegisterStatus,
            SceneOpcode.SCENE_STORE: SceneSetupWithValidation,
            SceneOpcode.SCENE_STORE_UNACKNOWLEDGED: SceneSetupWithValidation,
            SceneOpcode.SCENE_DELETE: SceneSetup,
            SceneOpcode.SCENE_DELETE_UNACKNOWLEDGED: SceneSetup,

        }
Beispiel #2
0
LightCTLTemperatureSetOptional = Struct(
    Embedded(LightCTLTemperatureSetMinimal), Embedded(OptionalSetParameters))

LightCTLTemperatureSet = NamedSelect(optional=LightCTLTemperatureSetOptional,
                                     minimal=LightCTLTemperatureSetMinimal)

LightCTLRange = Struct(
    "range_min" / Int16ul,
    "range_max" / Int16ul,
)

LightCTLRangeStatus = Struct("status" / StatusCodeAdapter,
                             Embedded(LightCTLRange))

LightCTLMessage = SwitchStruct(
    "opcode" / Opcode(LightCTLOpcode), "params" / Switch(
        this.opcode,
        {
            LightCTLOpcode.LIGHT_CTL_GET: LightCTLGet,
            LightCTLOpcode.LIGHT_CTL_SET: LightCTLSet,
            LightCTLOpcode.LIGHT_CTL_SET_UNACKNOWLEDGED: LightCTLSet,
            LightCTLOpcode.LIGHT_CTL_STATUS: LightCTLStatus,
            LightCTLOpcode.LIGHT_CTL_TEMPERATURE_GET: LightCTLGet,
            LightCTLOpcode.LIGHT_CTL_TEMPERATURE_RANGE_GET: LightCTLGet,
            LightCTLOpcode.LIGHT_CTL_TEMPERATURE_RANGE_STATUS:
            LightCTLRangeStatus,
            LightCTLOpcode.LIGHT_CTL_TEMPERATURE_SET: LightCTLTemperatureSet,
            LightCTLOpcode.LIGHT_CTL_TEMPERATURE_SET_UNACKNOWLEDGED:
            LightCTLTemperatureSet,
            LightCTLOpcode.LIGHT_CTL_TEMPERATURE_STATUS:
            LightCTLTemperatureStatus,
    "payload" / Switch(
        this.subopcode,
        {
            GatewayConfigServerSubOpcode.GATEWAY_CONFIGURATION_SET:
            ConfigurationSet,
            GatewayConfigServerSubOpcode.MTU_SIZE_SET: ConfigurationSetMtu,
            GatewayConfigServerSubOpcode.ETHERNET_MAC_ADDRESS_SET:
            ConfigurationSetMacAddr,
            GatewayConfigServerSubOpcode.SERVER_ADDRESS_AND_PORT_NUMBER_SET:
            ConfigurationSetServerAddrAndPortNr,
            GatewayConfigServerSubOpcode.RECONNECT_INTERVAL_SET:
            ConfigurationSetReconnectInterval,
            GatewayConfigServerSubOpcode.DNS_IP_ADDRESS_SET:
            ConfigurationSetDnsIpAddr,
            GatewayConfigServerSubOpcode.IP_ADDRESS_SET:
            ConfigurationSetIpAddr,
            GatewayConfigServerSubOpcode.GATEWAY_IP_ADDRESS_SET:
            ConfigurationSetGatewayIpAddr,
            GatewayConfigServerSubOpcode.NETMASK_SET: ConfigurationSetNetmask,
            GatewayConfigServerSubOpcode.GATEWAY_CONFIGURATION_STATUS:
            ConfigurationStatus,
            GatewayConfigServerSubOpcode.GATEWAY_PACKETS_STATUS: PacketsStatus,
        },
    ))

GatewayConfigMessage = SwitchStruct(
    "opcode" / Opcode(GatewayConfigServerOpcode), "params" /
    Switch(this.opcode,
           {GatewayConfigServerOpcode.SILVAIR_GATEWAY: GatewayConfigParams}))
# fmt: on
Beispiel #4
0
            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
        }
    )
)

# TODO: message not implemented due to somewhat complicated structure and lack of examples
# SensorCadence = Struct(
#     "sensor_setting_property_id" / Int16ul,
#     *FastCadencePeriodDivisorAndTriggerType,
#     Embedded(TriggerDelta),
#     "status_min_interval" / ExprAdapter(Int16ul, lambda obj, ctx: pow(2, obj), lambda obj, ctx: log(obj, 2)),
#     "fast_cadence_low" / PropertyValue,
#     "fast_cadence_high" / PropertyValue
# )

SensorMessage = SwitchStruct(
    "opcode" / Opcode(SensorOpcode),
    "params" / Switch(
        this.opcode,
        {
            SensorOpcode.SENSOR_DESCRIPTOR_GET: SensorGet,
            SensorOpcode.SENSOR_DESCRIPTOR_STATUS: SensorDescriptorStatus,
            SensorOpcode.SENSOR_GET: SensorGet,
            SensorOpcode.SENSOR_STATUS: SensorStatus,
            # SensorOpcode.SENSOR_COLUMN_GET: SensorColumnGet,
            # SensorOpcode.SENSOR_COLUMN_STATUS: 0x00,
            # SensorOpcode.SENSOR_SERIES_GET: SensorSeriesGet,
            # SensorOpcode.SENSOR_SERIES_STATUS: 0x00,
        }
    )
)
Beispiel #6
0

# fmt: off
BatteryFlags = BitStruct(
    "battery_serviceability_flags" /
    EnumAdapter(BitsInteger(2), GenericBatteryFlagsServiceability),
    "battery_charging_flags" /
    EnumAdapter(BitsInteger(2), GenericBatteryFlagsCharging),
    "battery_indicator_flags" /
    EnumAdapter(BitsInteger(2), GenericBatteryFlagsIndicator),
    "battery_presence_flags" /
    EnumAdapter(BitsInteger(2), GenericBatteryFlagsPresence),
)

GenericBatteryGet = Struct()

GenericBatteryStatus = Struct(
    "battery_level" / DefaultCountValidator(Int8ul),
    "time_to_discharge" / DefaultCountValidator(Int24ul),
    "time_to_charge" / DefaultCountValidator(Int24ul), "flags" / BatteryFlags)

GenericBatteryMessage = Struct(
    "opcode" / Opcode(GenericBatteryOpcode), "params" / Switch(
        this.opcode,
        {
            GenericBatteryOpcode.BATTERY_GET: GenericBatteryGet,
            GenericBatteryOpcode.BATTERY_STATUS: GenericBatteryStatus,
        },
    ))
# fmt: on
    TIME_SET = 0x005C
    TIME_STATUS = 0x005D
    TIME_ROLE_GET = 0x8238
    TIME_ROLE_SET = 0x8239
    TIME_ROLE_STATUS = 0x823A
    TIME_ZONE_GET = 0x823B
    TIME_ZONE_SET = 0x823C
    TIME_ZONE_STATUS = 0x823D
    TAI_UTC_DELTA_GET = 0x823E
    TAI_UTC_DELTA_SET = 0x823F
    TAI_UTC_DELTA_STATUS = 0x8240


# fmt: off
TimeMessage = SwitchStruct(
    "opcode" / Opcode(TimeOpcode), "params" / Switch(
        this.opcode, {
            TimeOpcode.TIME_GET: TimeGet,
            TimeOpcode.TIME_SET: TimeSet,
            TimeOpcode.TIME_STATUS: TimeStatus,
            TimeOpcode.TIME_ZONE_GET: TimeZoneGet,
            TimeOpcode.TIME_ZONE_SET: TimeZoneSet,
            TimeOpcode.TIME_ZONE_STATUS: TimeZoneStatus,
            TimeOpcode.TAI_UTC_DELTA_GET: TAIUTCDeltaGet,
            TimeOpcode.TAI_UTC_DELTA_SET: TAIUTCDeltaSet,
            TimeOpcode.TAI_UTC_DELTA_STATUS: TAIUTCDeltaStatus,
            TimeOpcode.TIME_ROLE_GET: TimeRoleGet,
            TimeOpcode.TIME_ROLE_SET: TimeRoleSet,
            TimeOpcode.TIME_ROLE_STATUS: TimeRoleStatus
        }))
# fmt: on
Beispiel #8
0
        {
            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(DebugOpcode)),
    "params" / DebugPayload
)
# fmt: on
Beispiel #9
0
            this.subopcode, {
                NetworkDiagnosticServerSubOpcode.SUBSCRIPTION_SET:
                NetworkDiagnosticServerSubscriptionSet,
                NetworkDiagnosticServerSubOpcode.SUBSCRIPTION_SET_UNACK:
                NetworkDiagnosticServerSubscriptionSet,
                NetworkDiagnosticServerSubOpcode.SUBSCRIPTION_STATUS:
                NetworkDiagnosticServerSubscriptionStatus
            }), None))

NetworkDiagnosticSetupServerPayload = Struct(
    "subopcode" / EnumAdapter(Int8ul, NetworkDiagnosticSetupServerSubOpcode),
    "payload" / Default(
        Switch(
            this.subopcode, {
                NetworkDiagnosticSetupServerSubOpcode.PUBLICATION_SET:
                NetworkDiagnosticSetupServerPublicationSet,
                NetworkDiagnosticSetupServerSubOpcode.PUBLICATION_STATUS:
                NetworkDiagnosticSetupServerPublicationStatus,
            }), None))

NetworkDiagnosticServerMessage = Struct(
    "opcode" / Const(NetworkDiagnosticServerOpcode.OPCODE,
                     Opcode(NetworkDiagnosticServerOpcode)),
    "params" / NetworkDiagnosticServerPayload)

NetworkDiagnosticSetupServerMessage = Struct(
    "opcode" / Const(NetworkDiagnosticSetupServerOpcode.OPCODE,
                     Opcode(NetworkDiagnosticSetupServerOpcode)),
    "params" / NetworkDiagnosticSetupServerPayload)
# fmt: on
Beispiel #10
0
    "lightness" / Int16ul,
    "tid" / Int8ul
)

LightLightnessSetOptional = Struct(
    Embedded(LightLightnessSetMinimal),
    Embedded(OptionalSetParameters)
)

LightLightnessSet = NamedSelect(
    optional=LightLightnessSetOptional,
    minimal=LightLightnessSetMinimal
)

LightLightnessMessage = SwitchStruct(
    "opcode" / Opcode(LightLightnessOpcode),
    "params" / Switch(
        this.opcode,
        {
    LightLightnessOpcode.LIGHT_LIGHTNESS_GET: LightLightnessGet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_SET: LightLightnessSet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_SET_UNACKNOWLEDGED: LightLightnessSet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_STATUS: LightLightnessStatus,
    LightLightnessOpcode.LIGHT_LIGHTNESS_LINEAR_GET: LightLightnessGet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_LINEAR_SET: LightLightnessSet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_LINEAR_SET_UNACKNOWLEDGED: LightLightnessSet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_LINEAR_STATUS: LightLightnessStatus,
    LightLightnessOpcode.LIGHT_LIGHTNESS_LAST_GET: LightLightnessGet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_LAST_STATUS: LightLightnessDefault,
    LightLightnessOpcode.LIGHT_LIGHTNESS_DEFAULT_GET: LightLightnessGet,
    LightLightnessOpcode.LIGHT_LIGHTNESS_DEFAULT_STATUS: LightLightnessDefault,
Beispiel #11
0
            {
                GatewayConfigServerSubOpcode.GATEWAY_CONFIGURATION_SET:
                ConfigurationSet,
                GatewayConfigServerSubOpcode.MTU_SIZE_SET: ConfigurationSetMtu,
                GatewayConfigServerSubOpcode.ETHERNET_MAC_ADDRESS_SET:
                ConfigurationSetMacAddr,
                GatewayConfigServerSubOpcode.SERVER_ADDRESS_AND_PORT_NUMBER_SET:
                ConfigurationSetServerAddrAndPortNr,
                GatewayConfigServerSubOpcode.RECONNECT_INTERVAL_SET:
                ConfigurationSetReconnectInterval,
                GatewayConfigServerSubOpcode.DNS_IP_ADDRESS_SET:
                ConfigurationSetDnsIpAddr,
                GatewayConfigServerSubOpcode.IP_ADDRESS_SET:
                ConfigurationSetIpAddr,
                GatewayConfigServerSubOpcode.GATEWAY_IP_ADDRESS_SET:
                ConfigurationSetGatewayIpAddr,
                GatewayConfigServerSubOpcode.NETMASK_SET:
                ConfigurationSetNetmask,
                GatewayConfigServerSubOpcode.GATEWAY_CONFIGURATION_STATUS:
                ConfigurationStatus,
                GatewayConfigServerSubOpcode.GATEWAY_PACKETS_STATUS:
                PacketsStatus,
            },
        ), None))

GatewayConfigMessage = Struct(
    "opcode" / Const(GatewayConfigServerOpcode.SILVAIR_GATEWAY,
                     Opcode(GatewayConfigServerOpcode)),
    "params" / GatewayConfigPayload)
# fmt: on
Beispiel #12
0
    "present_level" / Int16sl
)

GenericLevelStatusOptional = Struct(
    Embedded(GenericLevelStatusMinimal),
    "target_level" / Int16sl,
    "remaining_time" / TransitionTimeAdapter(TransitionTime, allow_unknown=True)
)

GenericLevelStatus = Select(
    GenericLevelStatusOptional,
    GenericLevelStatusMinimal
)

GenericLevelMessage = Struct(
    "opcode" / Opcode(GenericLevelOpcode),
    "params" / Switch(
        this.opcode,
        {
            GenericLevelOpcode.LEVEL_GET: GenericLevelGet,
            GenericLevelOpcode.LEVEL_SET: GenericLevelSet,
            GenericLevelOpcode.LEVEL_SET_UNACKNOWLEDGED: GenericLevelSet,
            GenericLevelOpcode.LEVEL_STATUS: GenericLevelStatus,
            GenericLevelOpcode.DELTA_SET: GenericDeltaSet,
            GenericLevelOpcode.DELTA_SET_UNACKNOWLEDGED: GenericDeltaSet,
            GenericLevelOpcode.MOVE_SET: GenericMoveSet,
            GenericLevelOpcode.MOVE_SET_UNACKNOWLEDGED: GenericMoveSet,
        },
    )
)
# fmt: on
            NetworkDiagnosticServerSubOpcode.RADIO_STAT_GET:
            NetworkDiagnosticServerRadioStatGet
        }))

NetworkDiagnosticSetupServerParams = SwitchStruct(
    "subopcode" / EnumAdapter(Int8ul, NetworkDiagnosticSetupServerSubOpcode),
    "payload" / Switch(
        this.subopcode, {
            NetworkDiagnosticSetupServerSubOpcode.PUBLICATION_GET:
            NetworkDiagnosticSetupServerPublicationGet,
            NetworkDiagnosticSetupServerSubOpcode.PUBLICATION_SET:
            NetworkDiagnosticSetupServerPublicationSet,
            NetworkDiagnosticSetupServerSubOpcode.PUBLICATION_STATUS:
            NetworkDiagnosticSetupServerPublicationStatus
        }))

NetworkDiagnosticServerMessage = SwitchStruct(
    "opcode" / Opcode(NetworkDiagnosticServerOpcode),
    "params" / Switch(this.opcode, {
        NetworkDiagnosticServerOpcode.SILVAIR_NDS:
        NetworkDiagnosticServerParams
    }))

NetworkDiagnosticSetupServerMessage = SwitchStruct(
    "opcode" / Opcode(NetworkDiagnosticSetupServerOpcode), "params" / Switch(
        this.opcode, {
            NetworkDiagnosticSetupServerOpcode.SILVAIR_NDS_SETUP:
            NetworkDiagnosticSetupServerParams
        }))
# fmt: on
Beispiel #14
0
    CONFIG_RELAY_GET = 0x8026
    CONFIG_RELAY_SET = 0x8027
    CONFIG_RELAY_STATUS = 0x8028
    CONFIG_SIG_MODEL_APP_GET = 0x804B
    CONFIG_SIG_MODEL_APP_LIST = 0x804C
    CONFIG_SIG_MODEL_SUBSCRIPTION_GET = 0x8029
    CONFIG_SIG_MODEL_SUBSCRIPTION_LIST = 0x802A
    CONFIG_VENDOR_MODEL_APP_GET = 0x804D
    CONFIG_VENDOR_MODEL_APP_LIST = 0x804E
    CONFIG_VENDOR_MODEL_SUBSCRIPTION_GET = 0x802B
    CONFIG_VENDOR_MODEL_SUBSCRIPTION_LIST = 0x802C


# fmt: off
ConfigMessage = SwitchStruct(
    "opcode" / Opcode(ConfigOpcode), "params" / Switch(
        this.opcode, {
            ConfigOpcode.CONFIG_APPKEY_ADD:
            ConfigAppKeyAdd,
            ConfigOpcode.CONFIG_APPKEY_DELETE:
            ConfigAppKeyDelete,
            ConfigOpcode.CONFIG_APPKEY_GET:
            ConfigAppKeyGet,
            ConfigOpcode.CONFIG_APPKEY_LIST:
            ConfigAppKeyList,
            ConfigOpcode.CONFIG_APPKEY_STATUS:
            ConfigAppKeyStatus,
            ConfigOpcode.CONFIG_APPKEY_UPDATE:
            ConfigAppKeyUpdate,
            ConfigOpcode.CONFIG_BEACON_GET:
            ConfigBeaconGet,
    HEALTH_CURRENT_STATUS = 0x04
    HEALTH_FAULT_CLEAR = 0x802F
    HEALTH_FAULT_CLEAR_UNACKNOWLEDGED = 0x8030
    HEALTH_FAULT_GET = 0x8031
    HEALTH_FAULT_STATUS = 0x05
    HEALTH_FAULT_TEST = 0x8032
    HEALTH_FAULT_TEST_UNACKNOWLEDGED = 0x8033
    HEALTH_PERIOD_GET = 0x8034
    HEALTH_PERIOD_SET = 0x8035
    HEALTH_PERIOD_SET_UNACKNOWLEDGED = 0x8036
    HEALTH_PERIOD_STATUS = 0x8037


# fmt: off
HealthMessage = SwitchStruct(
    "opcode" / Opcode(HealthOpcode), "params" / Switch(
        this.opcode, {
            HealthOpcode.HEALTH_ATTENTION_GET: HealthAttentionGet,
            HealthOpcode.HEALTH_ATTENTION_SET: HealthAttentionSet,
            HealthOpcode.HEALTH_ATTENTION_SET_UNACKNOWLEDGED:
            HealthAttentionSet,
            HealthOpcode.HEALTH_ATTENTION_STATUS: HealthAttentionStatus,
            HealthOpcode.HEALTH_CURRENT_STATUS: HealthCurrentStatus,
            HealthOpcode.HEALTH_FAULT_CLEAR: HealthFaultClear,
            HealthOpcode.HEALTH_FAULT_CLEAR_UNACKNOWLEDGED: HealthFaultClear,
            HealthOpcode.HEALTH_FAULT_GET: HealthFaultGet,
            HealthOpcode.HEALTH_FAULT_STATUS: HealthCurrentStatus,
            HealthOpcode.HEALTH_FAULT_TEST: HealthFaultTest,
            HealthOpcode.HEALTH_FAULT_TEST_UNACKNOWLEDGED: HealthFaultTest,
            HealthOpcode.HEALTH_PERIOD_GET: HealthPeriodGet,
            HealthOpcode.HEALTH_PERIOD_SET: HealthPeriodSet,
Beispiel #16
0
        "link_status" / EnumAdapter(BitsInteger(1), LinkStatus),
        "last_error" / EnumAdapter(BitsInteger(4), LastError)
    )
)

GatewayConfigPayload = Struct(
    "subopcode" / EnumAdapter(Int8ul, GatewayConfigServerSubOpcode),
    "payload" / Default(Switch(
        this.subopcode,
        {
            GatewayConfigServerSubOpcode.GATEWAY_CONFIGURATION_SET: ConfigurationSet,
            GatewayConfigServerSubOpcode.MTU_SIZE_SET: ConfigurationSetMtu,
            GatewayConfigServerSubOpcode.ETHERNET_MAC_ADDRESS_SET: ConfigurationSetMacAddr,
            GatewayConfigServerSubOpcode.SERVER_ADDRESS_AND_PORT_NUMBER_SET: ConfigurationSetServerAddrAndPortNr,
            GatewayConfigServerSubOpcode.RECONNECT_INTERVAL_SET: ConfigurationSetReconnectInterval,
            GatewayConfigServerSubOpcode.DNS_IP_ADDRESS_SET: ConfigurationSetDnsIpAddr,
            GatewayConfigServerSubOpcode.IP_ADDRESS_SET: ConfigurationSetIpAddr,
            GatewayConfigServerSubOpcode.GATEWAY_IP_ADDRESS_SET: ConfigurationSetGatewayIpAddr,
            GatewayConfigServerSubOpcode.NETMASK_SET: ConfigurationSetNetmask,
            GatewayConfigServerSubOpcode.GATEWAY_CONFIGURATION_STATUS: ConfigurationStatus,
            GatewayConfigServerSubOpcode.GATEWAY_PACKETS_STATUS: PacketsStatus,
        },
    ), None)
)

GatewayConfigMessage = Struct(
    "opcode" / Const(GatewayConfigServerOpcode.OPCODE, Opcode(GatewayConfigServerOpcode)),
    "params" / GatewayConfigPayload
)
# fmt: on
SceneStatus = NamedSelect(optional=SceneStatusWithTargetScene,
                          minimal=SceneStatusMinimal)

SceneRegisterGet = Struct()

SceneRegisterStatus = Struct(
    "status_code" / EnumAdapter(Int8ul, SceneStatusCode),
    "current_scene" / Int16ul, "scenes" / GreedyRange(Int16ul))

SceneSetupWithValidation = Struct(
    "scene_number" / ExprValidator(Int16ul, obj_ > 0), )

SceneSetup = Struct("scene_number" / Int16ul)

SceneMessage = SwitchStruct(
    "opcode" / Opcode(SceneOpcode), "params" / Switch(
        this.opcode, {
            SceneOpcode.SCENE_GET: SceneGet,
            SceneOpcode.SCENE_RECALL: SceneRecall,
            SceneOpcode.SCENE_RECALL_UNACKNOWLEDGED: SceneRecall,
            SceneOpcode.SCENE_STATUS: SceneStatus,
            SceneOpcode.SCENE_REGISTER_GET: SceneRegisterGet,
            SceneOpcode.SCENE_REGISTER_STATUS: SceneRegisterStatus,
            SceneOpcode.SCENE_STORE: SceneSetupWithValidation,
            SceneOpcode.SCENE_STORE_UNACKNOWLEDGED: SceneSetupWithValidation,
            SceneOpcode.SCENE_DELETE: SceneSetup,
            SceneOpcode.SCENE_DELETE_UNACKNOWLEDGED: SceneSetup,
        }))
# fmt: on
)

LightExtendedControllerPropertyStatus = Struct(
    "id" / EnumAdapter(Int16ul, LightExtendedControllerProperty),
    "value" / LightExtendedControllerPropertyValue,
)

LightExtendedControllerSyncIntegralStatus = Struct(
    "sync_integral" / Int16ul,
)

LightExtendedControllerPayload = Struct(
    "subopcode" / EnumAdapter(Int8ul, LightExtendedControllerSubOpcode),
    "payload" / Default(Switch(
        this.subopcode,
        {
            LightExtendedControllerSubOpcode.PROPERTY_GET: LightExtendedControllerPropertyGet,
            LightExtendedControllerSubOpcode.PROPERTY_SET: LightExtendedControllerPropertySet,
            LightExtendedControllerSubOpcode.PROPERTY_SET_UNACKNOWLEDGED: LightExtendedControllerPropertySet,
            LightExtendedControllerSubOpcode.PROPERTY_STATUS: LightExtendedControllerPropertyStatus,
            LightExtendedControllerSubOpcode.SYNC_INTEGRAL_STATUS: LightExtendedControllerSyncIntegralStatus,
        },
    ), None)
)

LightExtendedControllerMessage = Struct(
    "opcode" / Const(LightExtendedControllerOpcode.SILVAIR_LEC, Opcode(LightExtendedControllerOpcode)),
    "params" / LightExtendedControllerPayload
)
# fmt: on
Beispiel #19
0
LightExtendedControllerPropertyStatus = Struct(
    "id" / EnumAdapter(Int16ul, LightExtendedControllerProperty),
    "value" / LightExtendedControllerPropertyValue,
)

LightExtendedControllerSyncIntegralStatus = Struct("sync_integral" / Int16ul, )

LightExtendedControllerParams = SwitchStruct(
    "subopcode" / EnumAdapter(Int8ul, LightExtendedControllerSubOpcode),
    "payload" / Switch(
        this.subopcode, {
            LightExtendedControllerSubOpcode.PROPERTY_GET:
            LightExtendedControllerPropertyGet,
            LightExtendedControllerSubOpcode.PROPERTY_SET:
            LightExtendedControllerPropertySet,
            LightExtendedControllerSubOpcode.PROPERTY_SET_UNACKNOWLEDGED:
            LightExtendedControllerPropertySet,
            LightExtendedControllerSubOpcode.PROPERTY_STATUS:
            LightExtendedControllerPropertyStatus,
            LightExtendedControllerSubOpcode.SYNC_INTEGRAL_STATUS:
            LightExtendedControllerSyncIntegralStatus,
        }))

LightExtendedControllerMessage = SwitchStruct(
    "opcode" / Opcode(LightExtendedControllerOpcode),
    "params" / Switch(this.opcode, {
        LightExtendedControllerOpcode.SILVAIR_LEC:
        LightExtendedControllerParams,
    }))
# fmt: on
        this.subopcode,
        {
            NetworkDiagnosticServerSubOpcode.SUBSCRIPTION_SET: NetworkDiagnosticServerSubscriptionSet,
            NetworkDiagnosticServerSubOpcode.SUBSCRIPTION_SET_UNACK: NetworkDiagnosticServerSubscriptionSet,
            NetworkDiagnosticServerSubOpcode.SUBSCRIPTION_STATUS: NetworkDiagnosticServerSubscriptionStatus
        }
    ), None)
)

NetworkDiagnosticSetupServerPayload = Struct(
    "subopcode" / EnumAdapter(Int8ul, NetworkDiagnosticSetupServerSubOpcode),
    "payload" / Default(Switch(
        this.subopcode,
        {
            NetworkDiagnosticSetupServerSubOpcode.PUBLICATION_SET: NetworkDiagnosticSetupServerPublicationSet,
            NetworkDiagnosticSetupServerSubOpcode.PUBLICATION_STATUS: NetworkDiagnosticSetupServerPublicationStatus,
        }
    ), None)
)

NetworkDiagnosticServerMessage = Struct(
    "opcode" / Const(NetworkDiagnosticServerOpcode.SILVAIR_NDS, Opcode(NetworkDiagnosticServerOpcode)),
    "params" / NetworkDiagnosticServerPayload
)

NetworkDiagnosticSetupServerMessage = Struct(
    "opcode" / Const(NetworkDiagnosticSetupServerOpcode.SILVAIR_NDS_SETUP, Opcode(NetworkDiagnosticSetupServerOpcode)),
    "params" / NetworkDiagnosticSetupServerPayload
)
# fmt: on
Beispiel #21
0
DebugV2Parameter = SwitchStruct(
    "data_type" / EnumAdapter(Int8ul, DebugV2DataTypes), "parameter" / Switch(
        this.data_type, {
            DebugV2DataTypes.UINT8: Int8ul,
            DebugV2DataTypes.UINT16: Int16ul,
            DebugV2DataTypes.UINT32: Int32ul,
            DebugV2DataTypes.UINT64: Int64ul,
            DebugV2DataTypes.INT8: Int8sl,
            DebugV2DataTypes.INT16: Int16sl,
            DebugV2DataTypes.INT32: Int32sl,
            DebugV2DataTypes.INT64: Int64sl,
            DebugV2DataTypes.FLOAT: Float32l,
            DebugV2DataTypes.DOUBLE: Float64l,
            DebugV2DataTypes.ENUM: Int8ul,
            DebugV2DataTypes.STRING: PascalString(Int8ul, "utf-8"),
            DebugV2DataTypes.ARRAY: PrefixedArray(Int8ul, Int8ul),
            DebugV2DataTypes.INVALID: Struct()
        }))

DebugV2SubMessage = Struct("subopcode" / EnumAdapter(Int8ul, DebugV2SubOpcode),
                           "parameter_type" / Int8ul, "page_number" / Int8ul,
                           "payload" / GreedyRange(DebugV2Parameter))

DebugV2Message = SwitchStruct(
    "opcode" / Opcode(DebugV2Opcode),
    "params" / Switch(this.opcode, {
        DebugV2Opcode.SILVAIR_DEBUG_V2: DebugV2SubMessage,
    }))

# fmt: on
Beispiel #22
0
    "delay" / Delay(Int8ul),
)

GenericOnOffSet = Select(GenericOnOffSetOptional, GenericOnOffSetMinimal)

GenericOnOffStatusMinimal = Struct("present_onoff" / Int8ul)

GenericOnOffStatusOptional = Struct(
    "present_onoff" / Int8ul,
    "target_onoff" / Int8ul,
    "remaining_time" / TransitionTimeAdapter(TransitionTime, allow_unknown=True),
)

GenericOnOffStatus = Select(GenericOnOffStatusOptional, GenericOnOffStatusMinimal)


GenericOnOffMessage = Struct(
    "opcode" / Opcode(GenericOnOffOpcode),
    "params"
    / Switch(
        this.opcode,
        {
            GenericOnOffOpcode.ONOFF_GET: GenericOnOffGet,
            GenericOnOffOpcode.ONOFF_SET: GenericOnOffSet,
            GenericOnOffOpcode.ONOFF_SET_UNACKNOWLEDGED: GenericOnOffSet,
            GenericOnOffOpcode.ONOFF_STATUS: GenericOnOffStatus,
        },
    ),
)
# fmt: off
    "id" / EnumAdapter(Int16ul, LightExtendedControllerProperty),
    "value" / LightExtendedControllerPropertyValue,
)

LightExtendedControllerSyncIntegralStatus = Struct("sync_integral" / Int16ul, )

LightExtendedControllerPayload = Struct(
    "subopcode" / EnumAdapter(Int8ul, LightExtendedControllerSubOpcode),
    "payload" / Default(
        Switch(
            this.subopcode,
            {
                LightExtendedControllerSubOpcode.PROPERTY_GET:
                LightExtendedControllerPropertyGet,
                LightExtendedControllerSubOpcode.PROPERTY_SET:
                LightExtendedControllerPropertySet,
                LightExtendedControllerSubOpcode.PROPERTY_SET_UNACKNOWLEDGED:
                LightExtendedControllerPropertySet,
                LightExtendedControllerSubOpcode.PROPERTY_STATUS:
                LightExtendedControllerPropertyStatus,
                LightExtendedControllerSubOpcode.SYNC_INTEGRAL_STATUS:
                LightExtendedControllerSyncIntegralStatus,
            },
        ), None))

LightExtendedControllerMessage = Struct(
    "opcode" / Const(LightExtendedControllerOpcode.OPCODE,
                     Opcode(LightExtendedControllerOpcode)),
    "params" / LightExtendedControllerPayload)
# fmt: on
Beispiel #24
0
        {
            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.SILVAIR_DEBUG, Opcode(DebugOpcode)),
    "params" / DebugPayload
)
# fmt: on
GenericMoveSet = NamedSelect(optional=GenericMoveSetOptional,
                             minimal=GenericMoveSetMinimal)

GenericLevelStatusMinimal = Struct("present_level" / Int16sl)

GenericLevelStatusOptional = Struct(
    Embedded(GenericLevelStatusMinimal), "target_level" / Int16sl,
    "remaining_time" /
    TransitionTimeAdapter(TransitionTime, allow_unknown=True))

GenericLevelStatus = NamedSelect(optional=GenericLevelStatusOptional,
                                 minimal=GenericLevelStatusMinimal)

GenericLevelMessage = SwitchStruct(
    "opcode" / Opcode(GenericLevelOpcode), "params" / Switch(
        this.opcode,
        {
            GenericLevelOpcode.GENERIC_LEVEL_GET: GenericLevelGet,
            GenericLevelOpcode.GENERIC_LEVEL_SET: GenericLevelSet,
            GenericLevelOpcode.GENERIC_LEVEL_SET_UNACKNOWLEDGED:
            GenericLevelSet,
            GenericLevelOpcode.GENERIC_LEVEL_STATUS: GenericLevelStatus,
            GenericLevelOpcode.GENERIC_DELTA_SET: GenericDeltaSet,
            GenericLevelOpcode.GENERIC_DELTA_SET_UNACKNOWLEDGED:
            GenericDeltaSet,
            GenericLevelOpcode.GENERIC_MOVE_SET: GenericMoveSet,
            GenericLevelOpcode.GENERIC_MOVE_SET_UNACKNOWLEDGED: GenericMoveSet,
        },
    ))
# fmt: on