Subversion Repositories FlightCtrl

Rev

Rev 2027 | Rev 2065 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "externalControl.h"
#include "configuration.h"
#include "controlMixer.h"

ExternalControl_t externalControl;
uint8_t externalControlActive;

int16_t EC_PRTY[4];

// TODO: Who is going to call this
void EC_setNeutral(void) {
        // if necessary. From main.c.
        externalControl.config = 0;
        externalControl.pitch = 0;
        externalControl.roll = 0;
        externalControl.yaw = 0;
        externalControl.throttle = 0;

        // From main.c. What does it do??
        externalControl.digital[0] = 0x55;
}

int16_t* EC_getPRTY(void) {
        return EC_PRTY;
}

uint8_t EC_getArgument(void) {
        return externalControl.config;
}

uint8_t EC_getCommand(void) {
        return externalControl.free;
}

// not implemented.
int16_t EC_getVariable(uint8_t varNum) {
        return 0;
}

void EC_periodicTask() {
        if (externalControlActive) {
                externalControlActive--;
                EC_PRTY[CONTROL_PITCH] = externalControl.pitch * (int16_t) staticParams.stickP;
                EC_PRTY[CONTROL_ROLL] = externalControl.roll * (int16_t) staticParams.stickP;
                EC_PRTY[CONTROL_THROTTLE] = externalControl.throttle;
                EC_PRTY[CONTROL_YAW] = externalControl.yaw; // No stickP or similar??????
        } else {
                EC_PRTY[CONTROL_PITCH] = EC_PRTY[CONTROL_ROLL] = EC_PRTY[CONTROL_THROTTLE] = EC_PRTY[CONTROL_YAW] = 0;
        }
}

uint8_t EC_getSignalQuality(void) {
        if (externalControlActive > 80)
                // Configured and heard from recently
                return SIGNAL_GOOD;

        if (externalControlActive)
                // Configured and heard from
                return SIGNAL_OK;

        if (!(externalControl.config & 0x01 && dynamicParams.externalControl > 128))
                // External control is not even configured.
                return NO_SIGNAL;

        // Configured but expired.
        return SIGNAL_LOST;
}