Exemple #1
0
void TIMER_Power(){
    static u32 timer = 0;
    u32 alert = Transmitter.power_alarm * 60 * 1000;
    static u16 throttle;
    u16 new_throttle;
    u16 elevator;
    unsigned mode = MODE_2 == Transmitter.mode || MODE_4 == Transmitter.mode ? 2 : 1;

    if( 0 == timer)
        timer =  CLOCK_getms() + alert;

    elevator = 2 == mode ? abs(CHAN_ReadInput(INP_THROTTLE)) : abs(CHAN_ReadInput(INP_ELEVATOR));
    new_throttle = 2 == mode ?  abs(CHAN_ReadInput(INP_ELEVATOR)) : abs(CHAN_ReadInput(INP_THROTTLE));
    new_throttle = abs(new_throttle - throttle);
     
    if( elevator < 1000 && abs(CHAN_ReadInput(INP_AILERON)) < 1000 && 
                new_throttle < 1000 && abs(CHAN_ReadInput(INP_RUDDER)) < 1000 &&
                !ScanButtons() && (!HAS_TOUCH || !SPITouch_IRQ()) ) {
        if ( CLOCK_getms() > timer ) {
            timer =  CLOCK_getms() + 2000;
            MUSIC_Play(MUSIC_SHUTDOWN);
        }                
    } else 
           timer =  CLOCK_getms() + alert;
    throttle = 2 == mode ?  abs(CHAN_ReadInput(INP_ELEVATOR)) : abs(CHAN_ReadInput(INP_THROTTLE));
}
Exemple #2
0
int PROTOCOL_SticksMoved(int init)
{
    const s32 STICK_MOVEMENT = 15;   // defines when the bind dialog should be interrupted (stick movement STICK_MOVEMENT %)
    static s32 ele_start, ail_start;
    s32 ele = CHAN_ReadInput(MIXER_MapChannel(INP_ELEVATOR));
    s32 ail = CHAN_ReadInput(MIXER_MapChannel(INP_AILERON));
    if(init) {
        ele_start = ele;
        ail_start = ail;
        return 0;
    }
    s32 ele_diff = abs(ele_start - ele);
    s32 ail_diff = abs(ail_start - ail);
    return ((ele_diff + ail_diff > 2 * STICK_MOVEMENT * CHAN_MAX_VALUE / 100));
}
Exemple #3
0
static void MIXER_UpdateRawInputs()
{
    int i;
    //1st step: read input data (sticks, switches, etc) and calibrate
    for (i = 1; i <= NUM_TX_INPUTS; i++) {
        unsigned mapped_channel = MIXER_MapChannel(i);
        if (PPMin_Mode() == PPM_IN_TRAIN2 && Model.train_sw && raw[Model.train_sw] > 0) {
            int ppm_channel_map = map_ppm_channels(i);
            if (ppm_channel_map >= 0) {
                if (ppmSync) {
                    raw[i] = ppmChannels[ppm_channel_map];
                }
                continue;
            }
        }
        raw[i] = CHAN_ReadInput(mapped_channel);
    }
    if (PPMin_Mode() == PPM_IN_SOURCE && ppmSync) {
        for (i = 0; i < (Model.num_ppmin & 0x3f); i++) {
            raw[1 + NUM_INPUTS + NUM_OUT_CHANNELS + NUM_VIRT_CHANNELS + i] = ppmChannels[i];
        }
    }
}
Exemple #4
0
s32 CHAN_ReadRawInput(int channel)
{
    return CHAN_ReadInput(channel);
}