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; }
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; }
void PROTOCOL_DeInit() { CLOCK_StopTimer(); if(Model.protocol != PROTOCOL_NONE && PROTOCOL_LOADED) PROTO_Cmds(PROTOCMD_DEINIT); proto_state = PROTO_DEINIT; }
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); }
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; }
static void initialize() { CLOCK_StopTimer(); num_channels = Model.num_channels; PrevXferComplete = 1; USB_Enable(1, 1); CLOCK_StartTimer(1000, usbhid_cb); }
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; }
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); }
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); }
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); }
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); }
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; }
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; }