def cmd_touchpad(msg): assert (msg[1], msg[2]) == (0x22, 0x09), "Unexpected command type" ck_msg_len(msg, (0x22, 0x09), 0x06, exact_len=False) d = { 'partition_number': msg[3], 'area_number': msg[4], 'message_type': TOUCHPAD_MSG_TYPE.get(msg[5], 'Unknown Message Type'), 'display_text': '', } if len(msg) > 0x06: d['display_text'] = decode_text_tokens(msg[6:-1]) return d
def cmd_partition_data(msg): assert msg[1] == 0x04, "Unexpected command type" ck_msg_len(msg, 0x04, 0x05, exact_len=False) d = { 'partition_number': msg[2], 'area_number': msg[3], 'arming_level': ARM_LEVEL.get(msg[4], 'Unknown Arming Level'), 'arming_level_code': msg[4], 'partition_text': '', } if len(msg) > 0x05: d['partition_text'] = decode_text_tokens(msg[5:-1]) return d
def cmd_zone_data(msg): ck_msg_len(msg, 0x03, 0x09, exact_len=False) assert msg[1] == 0x03, "Unexpected command type 0x02x" % msg[1] d = { 'partition_number': msg[2], 'area_number': msg[3], 'group_number': msg[4], 'zone_number': (msg[5] << 8) + msg[6], 'zone_type': ZONE_TYPES.get(msg[7], 'Unknown'), 'zone_state': build_state_list(msg[8], ZONE_STATES), 'zone_text': '', 'zone_text_tokens': [ ], } if len(msg) > 0x09 + 1: d['zone_text'] = decode_text_tokens(msg[9:-1]) d['zone_text_tokens'] = msg[9:-1] return d;