packet decompress
All checks were successful
ci/woodpecker/push/msm6050 Pipeline was successful

This commit is contained in:
wrapper 2026-07-21 23:26:09 +07:00
parent 0d4464fed0
commit caa678dc63

View file

@ -257,6 +257,35 @@ uint32_t DN_Packet_Compress3(uint8_t *src, uint32_t size, uint8_t *dest)
}
#endif
void DN_Packet_Uncompress(uint8_t *src, uint32_t size, uint8_t *dest)
{
uint32_t inOffset;
uint32_t outOffset;
uint16_t getCount;
uint32_t incrOffset;
outOffset = 0;
wdog_reset();
for (inOffset = 0; inOffset < size; inOffset += incrOffset) {
getCount = *(uint16_t *)(src + inOffset);
if ((src[inOffset + 1] & 0x80) == 0) {
/* RLE flag: 0 => Copy data */
memcpy(dest + outOffset, src + inOffset + 2, getCount & 0x7fff);
incrOffset = (getCount & 0x7fff) + 2;
} else {
/* RLE flag: 1 => Repeat data */
memset(dest + outOffset, src[inOffset + 2], getCount & 0x7fff);
incrOffset = 3;
}
outOffset = (getCount & 0x7fff) + outOffset;
}
}
/* 03 - DCC Packets */
#ifdef DCC_TESTING
uint32_t DN_Packet_DCC_Send(uint32_t data) {