Esempio n. 1
0
class MultistateInput(Cluster):
    cluster_id = 0x0012
    attributes = {
        0x000e: ('state_text', t.List(t.LVBytes)),
        0x001c: ('description', t.LVBytes),
        0x004a: ('number_of_states', t.uint16_t),
        0x0051: ('out_of_service', t.Bool),
        0x0055: ('present_value', t.Single),
        # 0x0057: ('priority_array', TODO.array),  # Array of 16 structures of (boolean, single precision)
        0x0067: ('reliability', t.uint8_t),  # enum8
        0x006f: ('status_flags', t.uint8_t),  # bitmap8
        0x0100: ('application_type', t.uint32_t),
    }
    server_commands = {}
    client_commands = {}
Esempio n. 2
0
    0x0022:
    ('Unind_req', (('SrcAddress', t.EmberEUI64), ('SrcEndpoint', t.uint8_t),
                   ('ClusterID', t.uint16_t), ('DstAddress', MultiAddress))),
    # Network Management Server Services Requests
    # ... TODO optional stuff ...
    0x0034: ('Mgmt_Leave_req', (('DeviceAddress', t.EmberEUI64),
                                ('Options', t.uint8_t))),  # bitmap8
    0x0036: ('Mgmt_Permit_Joining_req', (('PermitDuration', t.uint8_t),
                                         ('TC_Significant', t.Bool))),
    # ... TODO optional stuff ...

    # Responses
    # Device and Service Discovery Server Responses
    0x8000: ('NWK_addr_rsp', (STATUS, IEEE, NWK, ('NumAssocDev', t.uint8_t),
                              ('StartIndex', t.uint8_t),
                              ('NWKAddressAssocDevList', t.List(t.uint16_t)))),
    0x8001: ('IEEE_addr_rsp', (STATUS, IEEE, NWK, ('NumAssocDev', t.uint8_t),
                               ('StartIndex', t.uint8_t),
                               ('NWKAddrAssocDevList', t.List(t.uint16_t)))),
    0x8002: ('Node_Desc_rsp', (STATUS, NWKI, ('NodeDescriptor',
                                              NodeDescriptor))),
    0x8003: ('Power_Desc_rsp', (STATUS, NWKI, ('PowerDescriptor',
                                               PowerDescriptor))),
    0x8004: ('Simple_Desc_rsp', (STATUS, NWKI,
                                 ('SimpleDescriptor',
                                  SizePrefixedSimpleDescriptor))),
    0x8005: ('Active_EP_rsp', (STATUS, NWKI, ('ActiveEPList',
                                              t.LVList(t.uint8_t)))),
    0x8006: ('Match_Desc_rsp', (STATUS, NWKI, ('MatchList',
                                               t.LVList(t.uint8_t)))),
    # 0x8010: ('Complex_Desc_rsp', (STATUS, NWKI, ('Length', t.uint8_t), ('ComplexDescriptor', ComplexDescriptor))),
Esempio n. 3
0
def test_list():
    expected = list(map(ord, '\x0123'))
    assert t.List(t.uint8_t).deserialize(b'\x0123') == (expected, b'')
Esempio n. 4
0
    _fields = [
        ('direction', t.uint8_t),
        ('attrid', t.uint16_t),
    ]


class DiscoverAttributesResponseRecord(t.EzspStruct):
    _fields = [
        ('attrid', t.uint16_t),
        ('datatype', t.uint8_t),
    ]


COMMANDS = {
    # id: (name, params, is_response)
    0x00: ('Read attributes', (t.List(t.uint16_t), ), False),
    0x01: ('Read attributes response', (t.List(ReadAttributeRecord), ), True),
    0x02: ('Write attributes', (t.List(Attribute), ), False),
    0x03: ('Write attributes undivided', (t.List(Attribute), ), False),
    0x04: ('Write attributes response',
           (t.List(WriteAttributesStatusRecord), ), True),
    0x05: ('Write attributes no response', (t.List(Attribute), ), False),
    0x06: ('Configure reporting', (t.List(AttributeReportingConfig), ), False),
    0x07: ('Configure reporting response',
           (t.List(ConfigureReportingResponseRecord), ), True),
    0x08: ('Read reporting configuration',
           (t.List(ReadReportingConfigRecord), ), False),
    0x09: ('Read reporting configuration response',
           (t.List(AttributeReportingConfig), ), True),
    0x0a: ('Report attributes', (t.List(Attribute), ), False),
    0x0b: ('Default response', (t.uint8_t, Status), True),
Esempio n. 5
0
def test_list():
    expected = list(map(ord, "\x0123"))
    assert t.List(t.uint8_t).deserialize(b"\x0123") == (expected, b"")
Esempio n. 6
0
 # 4. Configuration frames
 "version": (0x00, (t.uint8_t, ), (t.uint8_t, t.uint8_t, t.uint16_t)),
 "getConfigurationValue":
 (0x52, (t.EzspConfigId, ), (t.EzspStatus, t.uint16_t)),
 "setConfigurationValue":
 (0x53, (t.EzspConfigId, t.uint16_t), (t.EzspStatus, )),
 "addEndpoint": (
     0x02,
     (
         t.uint8_t,
         t.uint16_t,
         t.uint16_t,
         t.uint8_t,
         t.uint8_t,
         t.uint8_t,
         t.List(t.uint16_t),
         t.List(t.uint16_t),
     ),
     (t.EzspStatus, ),
 ),
 "setPolicy": (0x55, (t.EzspPolicyId, t.EzspDecisionId), (t.EzspStatus, )),
 "getPolicy": (0x56, (t.EzspPolicyId, ), (t.EzspStatus, t.EzspDecisionId)),
 "getValue": (0xAA, (t.EzspValueId, ), (t.EzspStatus, t.LVBytes)),
 "getExtendedValue": (
     0x03,
     (t.EzspExtendedValueId, t.uint32_t),
     (t.EzspStatus, t.LVBytes),
 ),
 "setValue": (0xAB, (t.EzspValueId, t.LVBytes), (t.EzspStatus, )),
 "setGpioCurrentConfiguration": (
     0xAC,
Esempio n. 7
0
import bellows.types as t

COMMANDS = {
    # 4. Configuration frames
    'version': (0x00, (t.uint8_t, ), (t.uint8_t, t.uint8_t, t.uint16_t)),
    'getConfigurationValue': (0x52, (t.EzspConfigId, ), (t.EzspStatus, t.uint16_t)),
    'setConfigurationValue': (0x53, (t.EzspConfigId, t.uint16_t), (t.EzspStatus, )),
    # TODO: Last four fields are length, length, array, array. Need some
    #       composite type to handle that.
    'addEndpoint': (0x02, (t.uint8_t, t.uint16_t, t.uint16_t, t.uint8_t,
                           t.uint8_t, t.uint8_t, t.List(t.uint16_t), t.List(t.uint16_t)), (t.EzspStatus, )),
    'setPolicy': (0x55, (t.EzspPolicyId, t.EzspDecisionId), (t.EzspStatus, )),
    'getPolicy': (0x56, (t.EzspPolicyId, ), (t.EzspStatus, t.EzspDecisionId)),
    'getValue': (0xAA, (t.EzspValueId, ), (t.EzspStatus, t.LVBytes)),
    'getExtendedValue': (0x03, (t.EzspExtendedValueId, t.uint32_t), (t.EzspStatus, t.LVBytes)),
    'setValue': (0xAB, (t.EzspValueId, t.LVBytes), (t.EzspStatus, )),
    'setGpioCurrentConfiguration': (0xAC, (t.uint8_t, t.uint8_t, t.uint8_t), (t.EzspStatus, )),
    'setGpioPowerUpDownConfiguration': (0xAD, (t.uint8_t, t.uint8_t, t.uint8_t, t.uint8_t, t.uint8_t), (t.EzspStatus, )),
    'setGpioRadioPowerMask': (0xAE, (t.uint32_t, ), ()),
    'setCtune': (0xF5, (t.uint16_t, ), ()),
    'getCtune': (0xF6, (), (t.uint16_t, )),
    'setChannelMap': (0xF7, (t.uint8_t, t.uint8_t), ()),
    # 5. Utilities Frames
    'nop': (0x05, (), ()),
    'echo': (0x81, (t.LVBytes, ), (t.LVBytes, )),
    'invalidCommand': (0x58, (), (t.EzspStatus, )),
    'callback': (0x06, (), ()),
    'noCallbacks': (0x07, (), ()),
    'setToken': (0x09, (t.uint8_t, t.fixed_list(8, t.uint8_t)), (t.EmberStatus, )),
    'getToken': (0x0A, (t.uint8_t, ), (t.EmberStatus, t.fixed_list(8, t.uint8_t))),
    'getMfgToken': (0x0B, (t.EzspMfgTokenId, ), (t.LVBytes, )),