Exemplo n.º 1
0
static u16 frsky_cb()
{
    if (state < FRSKY_BIND_DONE) {
        build_bind_packet_1way();
        CC2500_Strobe(CC2500_SIDLE);
        CC2500_WriteReg(CC2500_0A_CHANNR, 0x00);
        CC2500_WriteData(packet, packet[0]+1);
        state++;
        return 53460;
    }
    if (state == FRSKY_BIND_DONE) {
        state++;
        PROTOCOL_SetBindState(0);
    }
    if (state >= FRSKY_DATA1) {
        u8 chan = calc_channel();
        CC2500_Strobe(CC2500_SIDLE);
        CC2500_WriteReg(CC2500_0A_CHANNR, chan * 5 + 6);
        build_data_packet_1way();
        CC2500_WriteData(packet, packet[0]+1);
        state++;
        if (state > FRSKY_DATA5)
            state = FRSKY_DATA1;
        return 9006;
    }
        
    return 0;
}
Exemplo n.º 2
0
MODULE_CALLTYPE
static u16 corona_cb() {
  // Tune frequency if it has been changed
  if (fine != (s8)Model.proto_opts[PROTO_OPTS_FREQFINE]) {
      fine = (s8)Model.proto_opts[PROTO_OPTS_FREQFINE];
      CC2500_WriteReg(CC2500_0C_FSCTRL0, fine);
  }

  if (bind_counter) {
      if (bind_counter-- == 0) PROTOCOL_SetBindState(0);
      packet_period = CORONA_build_bind_pkt();
  } else {
      packet_period = CORONA_build_packet();
  }

  // Send packet
  CC2500_WriteData(packet, packet[0]+2);
  return packet_period;
}