コード例 #1
0
ファイル: data_hub.c プロジェクト: ina111/ninja-scan-light
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));
}
コード例 #2
0
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));
}