summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ibus.c15
-rw-r--r--ibus.h5
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<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);
}
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