Subversion Repositories FlightCtrl

Rev

Rev 1821 | Rev 2027 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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