#include "ibus.h" uint16_t CRC16Gen(*IBusFrame frame){ uint16_t checksum = 0xFFFF; for (int i = 2; i < frame[0]-2; i++) { checksum -= ibusPacket[i]; } return checksum; } int encodeIBus(*IBusFrame frame, *channelValues vals){ *frame=IBusSize; *(frame+1)=startByteBeta; for (int i=0; i>sizeof(uint8_t); else *(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) }