diff options
| author | Lenczu Vex <kuba.lenczowski03@gmail.com> | 2024-12-02 20:09:33 +0100 |
|---|---|---|
| committer | Lenczu Vex <kuba.lenczowski03@gmail.com> | 2024-12-02 20:09:33 +0100 |
| commit | 877b2442c4c7cfced9517e86d438e6fa1b575c58 (patch) | |
| tree | 9e33931523ce7b7c7d5df1361f0a0f2b5ce1e25d | |
| parent | 3f96783eba8768109b449e0aebed67052e832661 (diff) | |
| -rw-r--r-- | ibus.c | 15 | ||||
| -rw-r--r-- | ibus.h | 5 |
2 files changed, 11 insertions, 9 deletions
@@ -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<channelC*2; i++){ @@ -19,8 +20,8 @@ int encodeIBus(*IBusFrame frame, *channelValues vals){ *(frame+i+2)=(uint8_t) (*(vals+(i/2)) & 0xFF); } uint16_t checksum=CRC16Gen(frame); - *(frame+frame[0]-2)=(uint8_t)(checksum & 0xFF) - *(frame+frame[0]-1)=(uint8_t)(checksum>>8) + *(frame+frame[0]-2)=(uint8_t)(checksum & 0xFF); + *(frame+frame[0]-1)=(uint8_t)(checksum>>8); } @@ -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 |
