3 "CRSF": [0xEC,0x04,0x32,ord('b'),ord('l')],
4 "GHST": [0x89,0x04,0x32,ord('b'),ord('l')],
8 "CRSF": [0xEC,0x04,0x32,ord('b'),ord('d')],
9 "GHST": [0x89,0x04,0x32,ord('b'),ord('d')],
12 MODEL_SEQ
= [0xEC,0x04,0x32,ord('m'),ord('m')]
14 def calc_crc8(payload
, poly
=0xD5):
20 crc
= (crc
<< 1) ^ poly
25 def get_telemetry_seq(seq
, key
=None):
30 key
= [ord(x
) for x
in key
]
32 payload
[1] += len(key
)
33 payload
+= [calc_crc8(payload
[2:])]
36 def get_init_seq(module
, key
=None):
37 return get_telemetry_seq(INIT_SEQ
.get(module
, []), key
)
39 def get_bind_seq(module
, key
=None):
40 return get_telemetry_seq(BIND_SEQ
.get(module
, []), key
)
42 def get_model_seq(model
):
43 return get_telemetry_seq(MODEL_SEQ
, model
)
45 if __name__
== '__main__':
46 print("CRC: %s" % get_init_seq('CRSF', [ord(x
) for x
in 'R9MM']))
47 print("CRC: %s" % get_init_seq('CRSF', 'R9MM'))