mirror of
https://github.com/furrtek/PrecIR.git
synced 2026-05-29 18:14:03 +00:00
703673001f
USB/battery boot detection Battery charge detection VCP repeats field is now 16-bit Flash programming for IR remote data PWM for red LED Updated clock settings for 8MHz oscillator Added flashtest.py to program remote with default data
64 lines
1.8 KiB
Python
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(PLID, cmd):
|
|
frame = [0x85, 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(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
|