uintptr_t CFlie_Cmds(enum ProtoCmds cmd)
{
    // dbgprintf("CFlie_Cmds %d\n", cmd);
    switch(cmd) {
        case PROTOCMD_INIT:  initialize(); return 0;
        case PROTOCMD_DEINIT:
            CLOCK_StopTimer();
            NRF24L01_WriteReg(NRF24L01_00_CONFIG, 0);
            return 0;
        case PROTOCMD_CHECK_AUTOBIND: return 0;  // never Autobind
        case PROTOCMD_BIND: initialize(); return 0;
        case PROTOCMD_NUMCHAN:
            switch(Model.proto_opts[PROTOOPTS_CRTP_MODE]) {
                case CRTP_MODE_CPPM:
                    return 12;  // A, E, R, T, up to 8 additional aux channels
                case CRTP_MODE_RPYT:
                default:
                    return 5;  // A, E, R, T, + or x mode
            }
        case PROTOCMD_DEFAULT_NUMCHAN: return 5;
        case PROTOCMD_CURRENT_ID: return Model.fixed_id;
        case PROTOCMD_GETOPTIONS: return (uintptr_t)cflie_opts;
        case PROTOCMD_TELEMETRYSTATE:
            return (Model.proto_opts[PROTOOPTS_TELEMETRY] == TELEM_OFF ? PROTO_TELEM_OFF : PROTO_TELEM_ON);
        case PROTOCMD_TELEMETRYTYPE: 
            return TELEM_DSM;
        case PROTOCMD_CHANNELMAP: return AETRG;
        default: break;
    }
    return 0;
}
Exemple #2
0
const void *CFlie_Cmds(enum ProtoCmds cmd)
{
    // dbgprintf("CFlie_Cmds %d\n", cmd);
    switch(cmd) {
        case PROTOCMD_INIT:  initialize(); return 0;
        case PROTOCMD_DEINIT:
            CLOCK_StopTimer();
            NRF24L01_WriteReg(NRF24L01_00_CONFIG, 0);
            return 0;
        case PROTOCMD_CHECK_AUTOBIND: return (void *)0L; // never Autobind // always Autobind
        case PROTOCMD_BIND:  initialize(); return 0;
        case PROTOCMD_NUMCHAN:
            switch(Model.proto_opts[PROTOOPTS_CRTP_MODE]) {
                case CRTP_MODE_CPPM:
                    return (void *)12L;  // A, E, R, T, up to 8 additional aux channels
                case CRTP_MODE_RPYT:
                default:
                    return (void *)5L; // A, E, R, T, + or x mode
            }
        case PROTOCMD_DEFAULT_NUMCHAN: return (void *)5L;
        case PROTOCMD_CURRENT_ID: return Model.fixed_id ? (void *)((unsigned long)Model.fixed_id) : 0;
        case PROTOCMD_GETOPTIONS: return cflie_opts;
        case PROTOCMD_TELEMETRYSTATE:
            return (void *)(long)(Model.proto_opts[PROTOOPTS_TELEMETRY] == TELEM_OFF ? PROTO_TELEM_OFF : PROTO_TELEM_ON);
        case PROTOCMD_TELEMETRYTYPE: 
            return (void *)(long) TELEM_DSM;
        default: break;
    }
    return 0;
}
Exemple #3
0
void PROTOCOL_DeInit()
{
    CLOCK_StopTimer();
    if(Model.protocol != PROTOCOL_NONE && PROTOCOL_LOADED)
        PROTO_Cmds(PROTOCMD_DEINIT);
    proto_state = PROTO_DEINIT;
}
Exemple #4
0
static void initialize(u8 bind)
{
  CLOCK_StopTimer();

  if (bind) {
      switch (Model.proto_opts[PROTO_OPTS_FORMAT]) {
      case FORMAT_V1:
        PROTOCOL_SetBindState(5000);
        bind_counter = 1400;    // Stay in bind mode for 5s
        break;
      case FORMAT_V2:
        PROTOCOL_SetBindState(5000);
        bind_counter = 187;     // Stay in bind mode for 5s
        break;
      case FORMAT_FDV3:
        PROTOCOL_SetBindState(10000);
        bind_counter = 2000;    // Stay in bind mode for 10s
        break;
      }
  } else {
      bind_counter = 0;
  }
  state = 400;            // Used by V2 to send RF channels + ID for 2.65s at startup
  hopping_frequency_no = 0;
  fdv3_id_send = 0;

  CORONA_init();
  CORONA_rf_init();

  CLOCK_StartTimer(10, corona_cb);
}
Exemple #5
0
void PROTOCOL_DeInit()
{
    CLOCK_StopTimer();
    if(Model.protocol != PROTOCOL_NONE && PROTOCOL_LOADED)
        PROTO_Cmds(PROTOCMD_DEINIT);
    CLOCK_StartMixer(); // run mixer on timer so channels are updated for things like calibration
    proto_state = PROTO_DEINIT;
}
Exemple #6
0
static void initialize()
{
    CLOCK_StopTimer();
    num_channels = Model.num_channels;
    PrevXferComplete = 1;
    USB_Enable(1, 1);
    CLOCK_StartTimer(1000, usbhid_cb);
}
Exemple #7
0
void PPMin_Start()
{
    if (Model.protocol == PROTOCOL_PPM)
        CLOCK_StopTimer();
    PPMin_Init();
    ppmSync = 0;
    timer_enable_counter(TIM1);
    nvic_enable_irq(NVIC_EXTI9_5_IRQ);
    exti_enable_request(_PWM_EXTI);
    ppmSync = 0;
}
Exemple #8
0
static void initialize()
{
    CLOCK_StopTimer();
    tx_power = Model.tx_power;
    DM002_initialize_txid();
    DM002_init();
    packet_count = 0;
    hopping_frequency_no = 0;
    bind_counter = DM002_BIND_COUNT;
    phase = BIND;
    CLOCK_StartTimer(DM002_INITIAL_WAIT, dm002_callback);
}
static void initialize(int bind)
{
    CLOCK_StopTimer();
    frsky_init();
    seed = 1;
    fixed_id = 0x1257;
    if (bind) {
        PROTOCOL_SetBindState(0xFFFFFFFF);
        state = FRSKY_BIND;
    } else {
        state = FRSKY_DATA1;
    }
    CLOCK_StartTimer(10000, frsky_cb);
}
static void initialize()
{
    CLOCK_StopTimer();
    tx_power = Model.tx_power;
    phase = initialize_rx_tx_addr();
    telemetry_setup_state = CFLIE_TELEM_SETUP_STATE_INIT;
    packet_counter = 0;

    int delay = cflie_init();

    dbgprintf("cflie init\n");
    if (phase == CFLIE_INIT_SEARCH) {
        PROTOCOL_SetBindState(0xFFFFFFFF);
    }
    CLOCK_StartTimer(delay, cflie_callback);
}
Exemple #11
0
void PROTOCOL_Init(u8 force)
{
    if(! force && (proto_state & PROTO_MODULEDLG))
        return;
    PROTOCOL_DeInit();
    PROTOCOL_Load(0);
    proto_state = PROTO_INIT;
    if (! force && PROTOCOL_CheckSafe()) {
        return;
    }
    proto_state |= PROTO_READY;

    if(Model.protocol == PROTOCOL_NONE || ! PROTOCOL_LOADED)
        CLOCK_StopTimer();
    else
        PROTO_Cmds(PROTOCMD_INIT);
}
Exemple #12
0
static void initialize()
{
    CLOCK_StopTimer();
    if (PPMin_Mode())
        return;

    PWM_Initialize();
    num_channels = Model.num_channels;
    if (Model.proto_opts[CENTER_PW] == 0) {
        Model.proto_opts[CENTER_PW] = 1100;
        Model.proto_opts[DELTA_PW] = 400;
        Model.proto_opts[NOTCH_PW] = 400;
        Model.proto_opts[PERIOD_PW] = 22500;
    }
    
    CLOCK_StartTimer(1000, ppmout_cb);
}
Exemple #13
0
const void *Corona_Cmds(enum ProtoCmds cmd)
{
    switch(cmd) {
        case PROTOCMD_INIT:  initialize(0); return 0;
        case PROTOCMD_DEINIT:
        case PROTOCMD_RESET:
            CLOCK_StopTimer();
            return (void *)(CC2500_Reset() ? 1L : -1L);
        case PROTOCMD_BIND:  initialize(1); return 0;
        case PROTOCMD_NUMCHAN: return (void *)8L;
        case PROTOCMD_DEFAULT_NUMCHAN: return (void *)8L;
        case PROTOCMD_CURRENT_ID: return (void *)((long)Model.fixed_id);
        case PROTOCMD_GETOPTIONS: return corona_opts;
        case PROTOCMD_TELEMETRYSTATE: return (void *)(long)PROTO_TELEM_UNSUPPORTED;
        default: break;
    }
    return 0;
}
void initASSAN(u8 bind)
{
    CLOCK_StopTimer();
    initialize_txid();
    init();
    tx_power = Model.tx_power;
    hopping_frequency_no = 0;

    if(bind) {
        state=BIND0;
        PROTOCOL_SetBindState(0xffffffff);
    }
    else {
        state=DATA0;
        PROTOCOL_SetBindState(0);
    }
    CLOCK_StartTimer(50000, ASSAN_callback);
}
Exemple #15
0
const void *DM002_Cmds(enum ProtoCmds cmd)
{
    switch(cmd) {
        case PROTOCMD_INIT:  initialize(); return 0;
        case PROTOCMD_DEINIT:
        case PROTOCMD_RESET:
            CLOCK_StopTimer();
            return (void *)(NRF24L01_Reset() ? 1L : -1L);
        case PROTOCMD_CHECK_AUTOBIND: return (void *)1L; // always Autobind
        case PROTOCMD_BIND:  initialize(); return 0;
        case PROTOCMD_NUMCHAN: return (void *) 10L;
        case PROTOCMD_DEFAULT_NUMCHAN: return (void *)10L;
        case PROTOCMD_CURRENT_ID: return Model.fixed_id ? (void *)((unsigned long)Model.fixed_id) : 0;
        case PROTOCMD_GETOPTIONS: return (void*)0L;
        case PROTOCMD_TELEMETRYSTATE: return (void *)(long)PROTO_TELEM_UNSUPPORTED;
        default: break;
    }
    return 0;
}
uintptr_t ASSAN_Cmds(enum ProtoCmds cmd)
{
    switch(cmd) {
        case PROTOCMD_INIT:  initASSAN(0); return 0;
        case PROTOCMD_DEINIT:
        case PROTOCMD_RESET:
            CLOCK_StopTimer();
            return (NRF24L01_Reset() ? 1L : -1L);
        case PROTOCMD_CHECK_AUTOBIND: return 0L;
        case PROTOCMD_BIND:  initASSAN(1); return 0;
        case PROTOCMD_NUMCHAN: return  8L;
        case PROTOCMD_DEFAULT_NUMCHAN: return 8L;
        case PROTOCMD_CURRENT_ID: return Model.fixed_id;
        case PROTOCMD_GETOPTIONS: return 0L;
        case PROTOCMD_CHANNELMAP: return AETRG;
        case PROTOCMD_TELEMETRYSTATE: return PROTO_TELEM_UNSUPPORTED;
        default: break;
    }
    return 0;
}
Exemple #17
0
const void *CFlie_Cmds(enum ProtoCmds cmd)
{
    dbgprintf("CFlie_Cmds %d\n", cmd);
    switch(cmd) {
        case PROTOCMD_INIT:  initialize(); return 0;
        case PROTOCMD_DEINIT:
            CLOCK_StopTimer();
            NRF24L01_WriteReg(NRF24L01_00_CONFIG, 0);
            return 0;
        case PROTOCMD_CHECK_AUTOBIND: return (void *)0L; // never Autobind // always Autobind
        case PROTOCMD_BIND:  initialize(); return 0;
        case PROTOCMD_NUMCHAN: return (void *) 5L; // A, E, T, R, + or x mode,
        case PROTOCMD_DEFAULT_NUMCHAN: return (void *)5L;
        case PROTOCMD_CURRENT_ID: return Model.fixed_id ? (void *)((unsigned long)Model.fixed_id) : 0;
        case PROTOCMD_GETOPTIONS: return cflie_opts;
        case PROTOCMD_TELEMETRYSTATE:
            return (void *)(long)(Model.proto_opts[PROTOOPTS_TELEMETRY] == TELEM_ON ? PROTO_TELEM_ON : PROTO_TELEM_OFF);
        default: break;
    }
    return 0;
}