Subversion Repositories FlightCtrl

Rev

Rev 2099 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1910 - 1
#include "externalcontrol.h"
2
#include "configuration.h"
3
#include "controlMixer.h"
4
 
5
ExternalControl_t externalControl;
6
uint8_t externalControlActive;
7
 
8
int16_t EC_EATR[4];
9
 
10
// TODO: Who is going to call this
11
void EC_setNeutral(void) {
12
        // if necessary. From main.c.
13
        externalControl.config = 0;
14
        externalControl.pitch = 0;
15
        externalControl.roll = 0;
16
        externalControl.yaw = 0;
17
        externalControl.throttle = 0;
18
 
19
        // From main.c. What does it do??
20
        externalControl.digital[0] = 0x55;
21
}
22
 
23
int16_t* EC_getEATR(void) {
24
        return EC_EATR;
25
}
26
 
27
uint8_t EC_getArgument(void) {
28
        return externalControl.config;
29
}
30
 
31
uint8_t EC_getCommand(void) {
32
        return externalControl.free;
33
}
34
 
35
// not implemented.
36
int16_t EC_getVariable(uint8_t varNum) {
37
        return 0;
38
}
39
 
40
void EC_update() {
41
  if (externalControlActive) {
42
    externalControlActive--;
43
    EC_EATR[CONTROL_ELEVATOR] = externalControl.pitch * 4;
44
    EC_EATR[CONTROL_AILERONS] = externalControl.roll * 4;
45
    EC_EATR[CONTROL_THROTTLE] = externalControl.throttle;
46
    EC_EATR[CONTROL_RUDDER  ] = externalControl.yaw; // No stickP or similar??????
47
  } else {
48
    EC_EATR[CONTROL_ELEVATOR] = EC_EATR[CONTROL_AILERONS] = EC_EATR[CONTROL_THROTTLE] = EC_EATR[CONTROL_RUDDER] = 0;
49
  }
50
}
51
 
52
uint8_t EC_getSignalQuality(void) {
53
  if (externalControlActive > 40)
54
    // Configured and heard from recently
55
    return SIGNAL_GOOD;
56
 
57
  if (externalControlActive)
58
    // Configured and heard from
59
    return SIGNAL_OK;
60
 
61
  if (!(externalControl.config & 0x01 && dynamicParams.ExternalControl > 128))
62
    // External control is not even configured.
63
    return NO_SIGNAL;
64
 
65
  // Configured but expired.
66
  return SIGNAL_LOST;
67
}