Fixing string packing to conform with protocol

This commit is contained in:
Simon Larsson
2020-07-04 08:52:56 +02:00
parent 9d4945805c
commit 36bc053d08
+12 -2
View File
@@ -36,10 +36,15 @@ def str2timex(string):
return out
# Pack 4 bytes in 3, used for strings
# * Set last char to 0b111111 (all 6 bits 1)
# * Discard any unused bytes (i.e. all zeros) at the end
def pack4to3(indata):
# Add terminating byte
indata.append(0x3f)
# Add padding
while len(indata)%4:
# Add padding
indata.append(0xff)
indata.append(0x00)
outdata = []
while len(indata)>0:
@@ -52,6 +57,11 @@ def pack4to3(indata):
outdata.append( ((ch3&0x0F)<<4) | ((ch2>>2)&0x0F) )
outdata.append( ((ch4&0x3F)<<2) | ((ch3&0x30)>>4) )
# Remove zero bytes at end
while outdata[-1] == 0x00:
print("Removing one zero")
outdata = outdata[:-1]
return outdata
# Takes a list of bytes, encapsulates and returns final data packet