void data_hub_send_telemetry(char buf[PAGE_SIZE]){ static __xdata u16 sequence_num = 0; u16 crc = crc16(buf, PAGE_SIZE, crc16((u8 *)&(++sequence_num), sizeof(sequence_num), 0)); if(uart1_tx_margin() < ( sizeof(protocol_header) + sizeof(sequence_num) + PAGE_SIZE + sizeof(crc))){ return; } uart1_write(protocol_header, sizeof(protocol_header)); uart1_write((u8 *)&sequence_num, sizeof(sequence_num)); uart1_write(buf, PAGE_SIZE); uart1_write((u8 *)&crc, sizeof(crc)); }
void telemeter_send(char buf[SYLPHIDE_PAGESIZE]){ static __xdata u16 sequence_num = 0; u16 crc; if((!telemeter_ready) || (uart1_tx_margin() < ( sizeof(sylphide_protocol_header) + sizeof(sequence_num) + SYLPHIDE_PAGESIZE + sizeof(crc)))){ return; } crc = crc16(buf, SYLPHIDE_PAGESIZE, crc16((u8 *)&(++sequence_num), sizeof(sequence_num), 0)); uart1_write(sylphide_protocol_header, sizeof(sylphide_protocol_header)); uart1_write((u8 *)&sequence_num, sizeof(sequence_num)); uart1_write(buf, SYLPHIDE_PAGESIZE); uart1_write((u8 *)&crc, sizeof(crc)); }