Subversion Repositories FlightCtrl

Rev

Rev 2099 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2099 Rev 2103
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 = 0;
6
uint8_t externalControlActive = 0;
7
// int16_t EC_PRTY[4];
-
 
8
// TODO: Who is going to call this
-
 
9
 
7
 
10
void EC_setNeutral(void) {
8
void EC_setNeutral(void) {
11
  // if necessary. From main.c.
9
  // if necessary. From main.c.
12
  externalControl.config = 0;
10
  externalControl.config = 0;
13
  externalControl.pitch = 0;
11
  externalControl.pitch = 0;
14
  externalControl.roll = 0;
12
  externalControl.roll = 0;
15
  externalControl.yaw = 0;
13
  externalControl.yaw = 0;
16
  externalControl.throttle = 0;
14
  externalControl.throttle = 0;
17
 
15
 
18
  // From main.c. What does it do??
16
  // From main.c. What does it do??
19
  externalControl.digital[0] = 0x55;
17
  externalControl.digital[0] = 0x55;
20
}
18
}
21
 
19
 
22
void EC_periodicTaskAndPRTY(int16_t* PRTY) {
20
void EC_periodicTaskAndPRYT(int16_t* PRYT) {
23
  if (externalControlActive) {
21
  if (externalControlActive) {
24
    externalControlActive--;
22
    externalControlActive--;
25
    PRTY[CONTROL_ELEVATOR] += externalControl.pitch * 8;
23
    PRYT[CONTROL_ELEVATOR] += externalControl.pitch * 8;
26
    PRTY[CONTROL_AILERONS] += externalControl.roll * 8;
24
    PRYT[CONTROL_AILERONS] += externalControl.roll * 8;
27
    PRTY[CONTROL_THROTTLE] += externalControl.throttle * 8;
25
    PRYT[CONTROL_THROTTLE] += externalControl.throttle * 8;
28
    PRTY[CONTROL_RUDDER] += externalControl.yaw * 8;
26
    PRYT[CONTROL_RUDDER] += externalControl.yaw * 8;
29
  }
27
  }
30
}
28
}
31
 
29
 
32
uint8_t EC_getArgument(void) {
30
uint8_t EC_getArgument(void) {
33
  return externalControl.config;
31
  return externalControl.config;
34
}
32
}
35
 
33
 
36
uint8_t EC_getCommand(void) {
34
uint8_t EC_getCommand(void) {
37
  return externalControl.free;
35
  return externalControl.free;
38
}
36
}
39
 
37
 
40
// not implemented.
38
// not implemented.
41
int16_t EC_getVariable(uint8_t varNum) {
39
int16_t EC_getVariable(uint8_t varNum) {
42
  return 0;
40
  return 0;
43
}
41
}
44
 
42
 
45
uint8_t EC_getSignalQuality(void) {
43
uint8_t EC_getSignalQuality(void) {
46
  if (externalControlActive > 40)
44
  if (externalControlActive > 40)
47
    // Configured and heard from recently
45
    // Configured and heard from recently
48
    return SIGNAL_GOOD;
46
    return SIGNAL_GOOD;
49
 
47
 
50
  if (externalControlActive)
48
  if (externalControlActive)
51
    // Configured and heard from
49
    // Configured and heard from
52
    return SIGNAL_OK;
50
    return SIGNAL_OK;
53
 
51
 
54
  if (!(externalControl.config & 0x01 && dynamicParams.externalControl > 128))
52
  if (!(externalControl.config & 0x01 && dynamicParams.externalControl > 128))
55
    // External control is not even configured.
53
    // External control is not even configured.
56
    return NO_SIGNAL;
54
    return NO_SIGNAL;
57
 
55
 
58
  // Configured but expired.
56
  // Configured but expired.
59
  return SIGNAL_LOST;
57
  return SIGNAL_LOST;
60
}
58
}
61
 
59