Files
PrecIR/tools_python/pr.py
Furrtek 405e27f69a Moved files, added ESL Blaster protocol info
Removed line used for debug in ESL Blaster FW
2019-07-25 08:38:11 +02:00

64 lines
1.8 KiB
Python

# Collection of procedures related to ESLs
# 2018 furrtek - furrtek.org
# See LICENSE
def terminate_frame(frame, repeats):
# Compute whole frame's CRC16
result = 0x8408
poly = 0x8408
for by in frame:
result ^= by
for bi in range(0, 8):
if (result & 1):
result >>= 1
result ^= poly
else:
result >>= 1
frame.append(result & 255)
frame.append((result // 256) & 255)
frame.append(repeats & 255) # This is used by the transmitter, it's not part of the transmitted data
frame.append((repeats // 256) & 255) # This is used by the transmitter, it's not part of the transmitted data
def make_raw_frame(protocol, PLID, cmd):
frame = [protocol, PLID[3], PLID[2], PLID[1], PLID[0], cmd]
return frame
def make_mcu_frame(PLID, cmd):
frame = [0x85, PLID[3], PLID[2], PLID[1], PLID[0], 0x34, 0x00, 0x00, 0x00, cmd]
return frame
def append_word(frame, value):
frame.append(value // 256)
frame.append(value & 255)
def get_plid(barcode):
PLID = [0] * 4
if len(barcode) != 17:
return PLID
id_value = int(barcode[2:7]) + (int(barcode[7:12]) << 16)
PLID[0] = (id_value >> 8) & 0xFF
PLID[1] = id_value & 0xFF
PLID[2] = (id_value >> 24) & 0xFF
PLID[3] = (id_value >> 16) & 0xFF
return PLID
def make_ping_frame(PLID, repeats):
frame = make_raw_frame(0x85, PLID, 0x17)
frame.append(0x01)
frame.append(0x00)
frame.append(0x00)
frame.append(0x00)
for b in range(0, 22):
frame.append(0x01)
terminate_frame(frame, repeats)
return frame
def make_refresh_frame(PLID):
frame = make_mcu_frame(PLID, 0x01)
for b in range(0, 22):
frame.append(0x00)
terminate_frame(frame, 1)
return frame