MODULE_CALLTYPE static u16 ppmout_cb() { static volatile u16 accum; u16 val; if (state == 0) { accum = 0; build_data_pkt(); } if(state & 0x01) { PWM_Set(1); if(state == num_channels * 2 + 1) { state = 0; return num_channels > 9 ? Model.proto_opts[PERIOD_PW] + (num_channels - 9) * 2000 - accum : Model.proto_opts[PERIOD_PW] - accum; } val = pulses[state / 2]; } else { PWM_Set(0); val = Model.proto_opts[NOTCH_PW]; } state++; accum += val; return val; }
MODULE_CALLTYPE static u16 usbhid_cb() { if(PrevXferComplete) { build_data_pkt(); HID_Write(packet, USBHID_MAX_CHANNELS); } return 50000; }
MODULE_CALLTYPE static u16 ppmout_cb() { build_data_pkt(); PPM_Enable(Model.proto_opts[NOTCH_PW], pulses); #ifdef EMULATOR return 3000; #else return Model.proto_opts[PERIOD_PW]; #endif }