summaryrefslogtreecommitdiff
path: root/ibus.c
diff options
context:
space:
mode:
Diffstat (limited to 'ibus.c')
-rw-r--r--ibus.c15
1 files changed, 8 insertions, 7 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<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);
}