ganglion: fix bug with bit shift in decompression
Esse commit está contido em:
+17
-19
@@ -458,8 +458,6 @@ def conv19bitToInt32 (threeByteBuffer):
|
||||
|
||||
return (prefix << 19) | (threeByteBuffer[0] << 16) | (threeByteBuffer[1] << 8) | threeByteBuffer[2]
|
||||
|
||||
|
||||
|
||||
def decompressDeltas19Bit(buffer):
|
||||
"""
|
||||
Called to when a compressed packet is received.
|
||||
@@ -468,14 +466,14 @@ def decompressDeltas19Bit(buffer):
|
||||
"""
|
||||
if len(buffer) != 19:
|
||||
raise ValueError("Input should be 19 bytes long.")
|
||||
|
||||
|
||||
receivedDeltas = [[0, 0, 0, 0],[0, 0, 0, 0]]
|
||||
|
||||
# Sample 1 - Channel 1
|
||||
miniBuf = [
|
||||
(buffer[0] >> 5),
|
||||
((buffer[0] & 0x1F) << 3) | (buffer[1] >> 5),
|
||||
((buffer[1] & 0x1F) << 3) | (buffer[2] >> 5)
|
||||
((buffer[0] & 0x1F) << 3 & 0xFF) | (buffer[1] >> 5),
|
||||
((buffer[1] & 0x1F) << 3 & 0xFF) | (buffer[2] >> 5)
|
||||
]
|
||||
|
||||
receivedDeltas[0][0] = conv19bitToInt32(miniBuf)
|
||||
@@ -483,48 +481,48 @@ def decompressDeltas19Bit(buffer):
|
||||
# Sample 1 - Channel 2
|
||||
miniBuf = [
|
||||
(buffer[2] & 0x1F) >> 2,
|
||||
(buffer[2] << 6) | (buffer[3] >> 2),
|
||||
(buffer[3] << 6) | (buffer[4] >> 2)
|
||||
(buffer[2] << 6 & 0xFF) | (buffer[3] >> 2),
|
||||
(buffer[3] << 6 & 0xFF) | (buffer[4] >> 2)
|
||||
]
|
||||
receivedDeltas[0][1] = conv19bitToInt32(miniBuf)
|
||||
|
||||
# Sample 1 - Channel 3
|
||||
miniBuf = [
|
||||
((buffer[4] & 0x03) << 1) | (buffer[5] >> 7),
|
||||
((buffer[5] & 0x7F) << 1) | (buffer[6] >> 7),
|
||||
((buffer[6] & 0x7F) << 1) | (buffer[7] >> 7)
|
||||
((buffer[4] & 0x03) << 1 & 0xFF) | (buffer[5] >> 7),
|
||||
((buffer[5] & 0x7F) << 1 & 0xFF) | (buffer[6] >> 7),
|
||||
((buffer[6] & 0x7F) << 1 & 0xFF) | (buffer[7] >> 7)
|
||||
]
|
||||
receivedDeltas[0][2] = conv19bitToInt32(miniBuf)
|
||||
|
||||
# Sample 1 - Channel 4
|
||||
miniBuf = [
|
||||
((buffer[7] & 0x7F) >> 4),
|
||||
((buffer[7] & 0x0F) << 4) | (buffer[8] >> 4),
|
||||
((buffer[8] & 0x0F) << 4) | (buffer[9] >> 4)
|
||||
((buffer[7] & 0x0F) << 4 & 0xFF) | (buffer[8] >> 4),
|
||||
((buffer[8] & 0x0F) << 4 & 0xFF) | (buffer[9] >> 4)
|
||||
]
|
||||
receivedDeltas[0][3] = conv19bitToInt32(miniBuf)
|
||||
|
||||
# Sample 2 - Channel 1
|
||||
miniBuf = [
|
||||
((buffer[9] & 0x0F) >> 1),
|
||||
(buffer[9] << 7) | (buffer[10] >> 1),
|
||||
(buffer[10] << 7) | (buffer[11] >> 1)
|
||||
(buffer[9] << 7 & 0xFF) | (buffer[10] >> 1),
|
||||
(buffer[10] << 7 & 0xFF) | (buffer[11] >> 1)
|
||||
]
|
||||
receivedDeltas[1][0] = conv19bitToInt32(miniBuf)
|
||||
|
||||
# Sample 2 - Channel 2
|
||||
miniBuf = [
|
||||
((buffer[11] & 0x01) << 2) | (buffer[12] >> 6),
|
||||
(buffer[12] << 2) | (buffer[13] >> 6),
|
||||
(buffer[13] << 2) | (buffer[14] >> 6)
|
||||
((buffer[11] & 0x01) << 2 & 0xFF) | (buffer[12] >> 6),
|
||||
(buffer[12] << 2 & 0xFF) | (buffer[13] >> 6),
|
||||
(buffer[13] << 2 & 0xFF) | (buffer[14] >> 6)
|
||||
]
|
||||
receivedDeltas[1][1] = conv19bitToInt32(miniBuf)
|
||||
|
||||
# Sample 2 - Channel 3
|
||||
miniBuf = [
|
||||
((buffer[14] & 0x38) >> 3),
|
||||
((buffer[14] & 0x07) << 5) | ((buffer[15] & 0xF8) >> 3),
|
||||
((buffer[15] & 0x07) << 5) | ((buffer[16] & 0xF8) >> 3)
|
||||
((buffer[14] & 0x07) << 5 & 0xFF) | ((buffer[15] & 0xF8) >> 3),
|
||||
((buffer[15] & 0x07) << 5 & 0xFF) | ((buffer[16] & 0xF8) >> 3)
|
||||
]
|
||||
receivedDeltas[1][2] = conv19bitToInt32(miniBuf)
|
||||
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário