From 877b2442c4c7cfced9517e86d438e6fa1b575c58 Mon Sep 17 00:00:00 2001 From: Lenczu Vex Date: Mon, 2 Dec 2024 20:09:33 +0100 Subject: Much fixes --- ibus.c | 15 ++++++++------- ibus.h | 5 +++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/ibus.c b/ibus.c index 3d7a8d0..19870ca 100644 --- a/ibus.c +++ b/ibus.c @@ -1,15 +1,16 @@ #include "ibus.h" -uint16_t CRC16Gen(*IBusFrame frame){ - uint16_t checksum = 0xFFFF; - for (int i = 2; i < frame[0]-2; i++) { - checksum -= ibusPacket[i]; +uint16_t CRC16Gen(IBusFrame frame){ + uint16_t checksum = 0x0; + for (int i = 0; i < frame[0]-2; i++) { + checksum += frame[i]; } + checksum = 0xFFFF - checksum; return checksum; } -int encodeIBus(*IBusFrame frame, *channelValues vals){ +int encodeIBus(IBusFrame frame, channelValues vals){ *frame=IBusSize; *(frame+1)=startByteBeta; for (int i=0; i>8) + *(frame+frame[0]-2)=(uint8_t)(checksum & 0xFF); + *(frame+frame[0]-1)=(uint8_t)(checksum>>8); } diff --git a/ibus.h b/ibus.h index fb1d7fb..0c9ac12 100644 --- a/ibus.h +++ b/ibus.h @@ -8,6 +8,7 @@ #define IBusSize 0x20 #define startByteBeta 0x40 -typedef uint8_t[IBusSize] IBusFrame -typedef uint16_t[15] channelValues +typedef uint8_t IBusFrame[IBusSize]; +typedef uint16_t channelValues[15]; +int encodeIBus(IBusFrame frame, channelValues vals); #endif -- cgit v1.2.3-70-g09d2