[all] DSM2 changes (variants are now chosen in Protocol field)
[sky9x] PPM Port2 support added [all] Negative GVARS bug fixed
This commit is contained in:
@@ -81,8 +81,10 @@
|
||||
|
||||
// SD driver
|
||||
#if !defined(SIMU)
|
||||
bool sdMounted();
|
||||
void sdMountPoll();
|
||||
void sdPoll10ms();
|
||||
|
||||
#define SD_IS_HC() (0)
|
||||
#define SD_GET_BLOCKNR() (0)
|
||||
#define SD_GET_SIZE_MB() (0)
|
||||
|
||||
@@ -669,12 +669,17 @@ void sdPoll10ms()
|
||||
}
|
||||
|
||||
#if !defined(SIMU)
|
||||
bool sdMounted()
|
||||
{
|
||||
return g_FATFS_Obj.fs_type != 0;
|
||||
}
|
||||
|
||||
void sdMountPoll()
|
||||
{
|
||||
static uint8_t mountTimer;
|
||||
if (mountTimer-- == 0) {
|
||||
mountTimer = 100;
|
||||
if (g_FATFS_Obj.fs_type == 0) {
|
||||
if (!sdMounted()) {
|
||||
f_mount(0, &g_FATFS_Obj);
|
||||
}
|
||||
}
|
||||
|
||||
+77
-33
@@ -662,14 +662,21 @@ enum menuModelSetupItems {
|
||||
ITEM_MODEL_SWITCHES_WARNING,
|
||||
ITEM_MODEL_BEEP_CENTER,
|
||||
ITEM_MODEL_PROTOCOL,
|
||||
IF_PCBSKY9X(ITEM_MODEL_PPM2_PROTOCOL)
|
||||
ITEM_MODEL_PROTOCOL_PARAMS,
|
||||
ITEM_MODEL_SETUP_MAX
|
||||
};
|
||||
|
||||
#if defined(CPUARM) || defined(PCBGRUVIN9X)
|
||||
#define FIELD_TIMER_MAX 3
|
||||
#define FIELD_TIMER_MAX 3
|
||||
#else
|
||||
#define FIELD_TIMER_MAX 2
|
||||
#define FIELD_TIMER_MAX 2
|
||||
#endif
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
#define FIELD_PROTOCOL_MAX 2
|
||||
#else
|
||||
#define FIELD_PROTOCOL_MAX 1
|
||||
#endif
|
||||
|
||||
#if LCD_W >= 212
|
||||
@@ -700,7 +707,7 @@ void menuModelSetup(uint8_t event)
|
||||
s_rangecheck_mode = 0;
|
||||
#endif
|
||||
|
||||
MENU(STR_MENUSETUP, menuTabModel, e_Model, ((protocol<=PROTO_PPMSIM||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX), {0,0,CASE_PCBX9D(0) FIELD_TIMER_MAX,FIELD_TIMER_MAX,0,0,0,0,0,0,0,NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1,1,2});
|
||||
MENU(STR_MENUSETUP, menuTabModel, e_Model, ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX), {0,0,CASE_PCBX9D(0) FIELD_TIMER_MAX,FIELD_TIMER_MAX,0,0,0,0,0,0,0,NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, FIELD_PROTOCOL_MAX, IF_PCBSKY9X(1) 2 });
|
||||
|
||||
uint8_t sub = m_posVert - 1;
|
||||
int8_t editMode = s_editMode;
|
||||
@@ -871,42 +878,79 @@ void menuModelSetup(uint8_t event)
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_PROTOCOL:
|
||||
#if defined(PCBSKY9X)
|
||||
lcd_putsLeft(y, PSTR("Port1"));
|
||||
#else
|
||||
lcd_putsLeft(y, NO_INDENT(STR_PROTO));
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, protocol,
|
||||
(attr && m_posHorz==0 ? (editMode>0 ? BLINK|INVERS : INVERS):0));
|
||||
if (protocol <= PROTO_PPMSIM) {
|
||||
#endif
|
||||
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, protocol, (attr && m_posHorz==0 ? (editMode>0 ? BLINK|INVERS : INVERS):0));
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW+3, y, STR_CH, (attr && m_posHorz==1) ? blink : 0);
|
||||
lcd_outdezAtt(lcdLastPos, y, g_model.ppmSCH+1, LEFT | ((attr && m_posHorz==1) ? blink : 0));
|
||||
lcd_putc(lcdLastPos, y, '-');
|
||||
lcd_outdezAtt(lcdLastPos + FW+1, y, g_model.ppmSCH+NUM_PORT1_CHANNELS, LEFT | ((attr && m_posHorz==2) ? blink : 0));
|
||||
#else
|
||||
if (IS_PPM_PROTOCOL(protocol)) {
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN+7*FW, y, STR_NCHANNELS, g_model.ppmNCH+2, (attr && m_posHorz==1) ? blink : 0);
|
||||
}
|
||||
#if defined(DSM2)
|
||||
else if (protocol == PROTO_DSM2) {
|
||||
if (attr && m_posHorz > 1) m_posHorz = 1;
|
||||
int8_t x = limit((int8_t)0, (int8_t)g_model.ppmNCH, (int8_t)2);
|
||||
g_model.ppmNCH = x;
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_DSM2MODE, x, (attr && m_posHorz==1) ? blink : 0);
|
||||
else if (attr) {
|
||||
REPEAT_LAST_CURSOR_MOVE();
|
||||
}
|
||||
#endif
|
||||
else if (attr) {
|
||||
m_posHorz = 0;
|
||||
}
|
||||
if (attr && (editMode>0 || p1valdiff || (protocol>PROTO_PPMSIM && !IS_DSM2_PROTOCOL(protocol)))) {
|
||||
|
||||
if (attr && (editMode>0 || p1valdiff
|
||||
#if !defined(PCBSKY9X)
|
||||
|| (!IS_PPM_PROTOCOL(protocol) && !IS_DSM2_PROTOCOL(protocol))
|
||||
#endif
|
||||
)) {
|
||||
switch (m_posHorz) {
|
||||
case 0:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.protocol, 0, PROTO_MAX-1);
|
||||
break;
|
||||
case 1:
|
||||
#if defined(DSM2)
|
||||
if (protocol == PROTO_DSM2)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.ppmNCH, 0, 2);
|
||||
else
|
||||
#if defined(PCBSKY9X)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.ppmSCH, 0, 32-8-(g_model.ppmNCH*2));
|
||||
#else
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.ppmNCH, -2, 4);
|
||||
#endif
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.ppmNCH, -2, 4);
|
||||
break;
|
||||
#if defined(PCBSKY9X)
|
||||
case 2:
|
||||
if (IS_PPM_PROTOCOL(protocol))
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.ppmNCH, -2, min<int8_t>(4, (32-g_model.ppmSCH)/2-4));
|
||||
else
|
||||
REPEAT_LAST_CURSOR_MOVE();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
case ITEM_MODEL_PPM2_PROTOCOL:
|
||||
lcd_putsLeft(y, PSTR("Port2"));
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, 0, 0);
|
||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW+3, y, STR_CH, (attr && m_posHorz==0) ? blink : 0);
|
||||
lcd_outdezAtt(lcdLastPos, y, g_model.ppm2SCH+1, LEFT | ((attr && m_posHorz==0) ? blink : 0));
|
||||
lcd_putc(lcdLastPos, y, '-');
|
||||
lcd_outdezAtt(lcdLastPos + FW+1, y, g_model.ppm2SCH+8+(g_model.ppm2NCH*2), LEFT | ((attr && m_posHorz==1) ? blink : 0));
|
||||
if (attr && (editMode>0 || p1valdiff)) {
|
||||
switch (m_posHorz) {
|
||||
case 0:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.ppm2SCH, 0, 32-8-(g_model.ppm2NCH*2));
|
||||
break;
|
||||
case 1:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.ppm2NCH, -2, min<int8_t>(4, (32-g_model.ppm2SCH)/2-4));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ITEM_MODEL_PROTOCOL_PARAMS:
|
||||
if (protocol <= PROTO_PPMSIM) {
|
||||
if (IS_PPM_PROTOCOL(protocol)) {
|
||||
lcd_putsLeft( y, STR_PPMFRAME);
|
||||
lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS);
|
||||
lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.ppmFrameLength*5 + 225, ((attr && m_posHorz==0) ? (editMode>0 ? BLINK|INVERS : INVERS) : 0) | PREC1|LEFT);
|
||||
@@ -930,19 +974,12 @@ void menuModelSetup(uint8_t event)
|
||||
}
|
||||
#if defined(DSM2) || defined(PXX)
|
||||
else if (IS_DSM2_PROTOCOL(protocol) || IS_PXX_PROTOCOL(protocol)) {
|
||||
if (attr && m_posHorz > 1 && IS_DSM2_PROTOCOL(protocol))
|
||||
m_posHorz = 0; // limit 3 column row to 2 colums for DSM2 protocol (Rx_Num and RANGE fields)
|
||||
if (attr && m_posHorz > 1) {
|
||||
REPEAT_LAST_CURSOR_MOVE(); // limit 3 column row to 2 colums (Rx_Num and RANGE fields)
|
||||
}
|
||||
|
||||
lcd_putsLeft(y, STR_RXNUM);
|
||||
lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN-(IS_DSM2_PROTOCOL(protocol) ? 0 : 3*FW), y, g_model.modelId, ((attr && m_posHorz==0) ? (editMode>0 ? BLINK|INVERS : INVERS) : 0) | LEADING0|LEFT, 2);
|
||||
|
||||
#if defined(DSM2)
|
||||
if (IS_DSM2_PROTOCOL(protocol)) { // RANGE CHECK
|
||||
lcd_putsnAtt(MODEL_SETUP_2ND_COLUMN+5*FW, y, PSTR("RANGErange")+5*(s_rangecheck_mode), 5, (m_posHorz==1 ? attr : 0));
|
||||
s_rangecheck_mode = (attr && m_posHorz==1 && editMode>0); // [MENU] key toggles range check mode
|
||||
}
|
||||
#endif
|
||||
|
||||
lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN-3*FW, y, g_model.modelId, ((attr && m_posHorz==0) ? (editMode>0 ? BLINK|INVERS : INVERS) : 0) | LEADING0|LEFT, 2);
|
||||
if (attr && (m_posHorz==0 && (editMode>0 || p1valdiff)))
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.modelId, 0, 99);
|
||||
|
||||
@@ -958,6 +995,13 @@ void menuModelSetup(uint8_t event)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
if (IS_DSM2_PROTOCOL(protocol)) {
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, PSTR("\013Range[MENU]Norm [MENU]"), s_rangecheck_mode, (m_posHorz==1 ? attr : 0));
|
||||
s_rangecheck_mode = (attr && m_posHorz==1 && editMode>0); // [MENU] key toggles range check mode
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
+16
-14
@@ -121,13 +121,17 @@ enum BeeperMode {
|
||||
#endif
|
||||
|
||||
#if defined(PCBX9D) || defined(PCBACT)
|
||||
#define MODELDATA_EXTRA char bitmap[10];
|
||||
#define LIMITDATA_EXTRA char name[6];
|
||||
#define swstate_t uint16_t
|
||||
#define MODELDATA_EXTRA char bitmap[10];
|
||||
#define LIMITDATA_EXTRA char name[6];
|
||||
#define swstate_t uint16_t
|
||||
#elif defined(PCBSKY9X)
|
||||
#define MODELDATA_EXTRA uint8_t ppmSCH; int8_t ppm2SCH; int8_t ppm2NCH;
|
||||
#define LIMITDATA_EXTRA
|
||||
#define swstate_t uint8_t
|
||||
#else
|
||||
#define MODELDATA_EXTRA
|
||||
#define LIMITDATA_EXTRA
|
||||
#define swstate_t uint8_t
|
||||
#define swstate_t uint8_t
|
||||
#endif
|
||||
|
||||
enum BacklightMode {
|
||||
@@ -141,8 +145,7 @@ enum BacklightMode {
|
||||
#if defined(FSPLASH) || defined(XSPLASH)
|
||||
#define SPLASH_MODE uint8_t splashMode:3
|
||||
#else
|
||||
#define SPLASH_MODE uint8_t splashMode:1; \
|
||||
uint8_t spare4:2
|
||||
#define SPLASH_MODE uint8_t splashMode:1; uint8_t spare4:2
|
||||
#endif
|
||||
|
||||
#define ALTERNATE_VIEW 0x10
|
||||
@@ -816,30 +819,29 @@ PACK(typedef struct t_TimerData {
|
||||
|
||||
enum Protocols {
|
||||
PROTO_PPM,
|
||||
#if !defined(CPUARM)
|
||||
PROTO_PPM16,
|
||||
PROTO_PPMSIM,
|
||||
#endif
|
||||
#if defined(PXX) || defined(DSM2) || defined(IRPROTOS)
|
||||
PROTO_PXX,
|
||||
#endif
|
||||
#if defined(DSM2) || defined(IRPROTOS)
|
||||
PROTO_DSM2,
|
||||
PROTO_DSM2_LP45,
|
||||
PROTO_DSM2_DSM2,
|
||||
PROTO_DSM2_DSMX,
|
||||
#endif
|
||||
#if defined(IRPROTOS)
|
||||
// we will need 4 bytes for proto :(
|
||||
PROTO_SILV,
|
||||
PROTO_TRAC09,
|
||||
PROTO_PICZ,
|
||||
// PROTO_SWIFT, // we will need 4 bytes for proto :(
|
||||
PROTO_SWIFT,
|
||||
#endif
|
||||
PROTO_MAX,
|
||||
PROTO_NONE
|
||||
};
|
||||
|
||||
enum Dsm2Variants {
|
||||
LPXDSM2,
|
||||
DSM2only,
|
||||
DSM2_DSMX
|
||||
};
|
||||
|
||||
#if defined(MAVLINK)
|
||||
#define TELEMETRY_DATA MavlinkData mavlink;
|
||||
#elif defined(FRSKY) || !defined(CPUM64)
|
||||
|
||||
+4
-13
@@ -267,12 +267,8 @@ void per10ms()
|
||||
#endif
|
||||
|
||||
#if defined(FRSKY) && !defined(CPUARM) && !(defined(PCBSTD) && (defined(AUDIO) || defined(VOICE)))
|
||||
#if defined(DSM2_SERIAL)
|
||||
if (s_current_protocol != PROTO_DSM2)
|
||||
if (!IS_DSM2_SERIAL_PROTOCOL(s_current_protocol))
|
||||
check_frsky();
|
||||
#else
|
||||
check_frsky();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// These moved here from perOut() to improve beep trigger reliability.
|
||||
@@ -1080,7 +1076,7 @@ int16_t getGVarValue(int16_t x, int16_t min, int16_t max)
|
||||
int8_t mul = 1;
|
||||
|
||||
if (idx < 0) {
|
||||
idx = 1-idx;
|
||||
idx = -1-idx;
|
||||
mul = -1;
|
||||
}
|
||||
|
||||
@@ -1297,7 +1293,6 @@ void checkAll()
|
||||
|
||||
checkTHR();
|
||||
checkSwitches();
|
||||
|
||||
clearKeyEvents();
|
||||
}
|
||||
|
||||
@@ -3119,12 +3114,8 @@ ISR(TIMER_10MS_VECT, ISR_NOBLOCK) // 10ms timer
|
||||
|
||||
#if defined(FRSKY)
|
||||
if (cnt10ms == 30) {
|
||||
#if defined(DSM2_SERIAL)
|
||||
if (s_current_protocol != PROTO_DSM2)
|
||||
if (!IS_DSM2_SERIAL_PROTOCOL(s_current_protocol))
|
||||
check_frsky();
|
||||
#else
|
||||
check_frsky();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -3258,7 +3249,7 @@ FORCEINLINE void DSM2_USART0_vect()
|
||||
ISR(USART0_UDRE_vect)
|
||||
{
|
||||
#if defined(FRSKY) && defined(DSM2_SERIAL)
|
||||
if (g_model.protocol == PROTO_DSM2) {
|
||||
if (IS_DSM2_PROTOCOL(g_model.protocol)) { // TODO not s_current_protocol?
|
||||
DSM2_USART0_vect();
|
||||
}
|
||||
else {
|
||||
|
||||
+23
-4
@@ -305,16 +305,34 @@ extern bool s_rangecheck_mode;
|
||||
extern uint8_t s_bind_allowed;
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define IS_PPM_PROTOCOL(protocol) (protocol==PROTO_PPM)
|
||||
#else
|
||||
#define IS_PPM_PROTOCOL(protocol) (protocol<=PROTO_PPMSIM)
|
||||
#endif
|
||||
|
||||
#if defined(PXX)
|
||||
#define IS_PXX_PROTOCOL(protocol) (protocol==PROTO_PXX)
|
||||
#else
|
||||
#define IS_PXX_PROTOCOL(protocol) (0)
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
#define IS_DSM2_PROTOCOL(protocol) (protocol==PROTO_DSM2)
|
||||
#define IS_DSM2_PROTOCOL(protocol) (protocol>=PROTO_DSM2_LP45 && protocol<=PROTO_DSM2_DSMX)
|
||||
#else
|
||||
#define IS_DSM2_PROTOCOL(protocol) (0)
|
||||
#endif
|
||||
|
||||
#if defined(PXX)
|
||||
#define IS_PXX_PROTOCOL(protocol) (protocol==PROTO_PXX)
|
||||
#if defined(DSM2_SERIAL)
|
||||
#define IS_DSM2_SERIAL_PROTOCOL(protocol) (IS_DSM2_PROTOCOL(protocol))
|
||||
#else
|
||||
#define IS_PXX_PROTOCOL(protocol) (0)
|
||||
#define IS_DSM2_SERIAL_PROTOCOL(protocol) (0)
|
||||
#endif
|
||||
|
||||
|
||||
#define NUM_PORT1_CHANNELS (IS_PXX_PROTOCOL(g_model.protocol) ? 8 : (IS_DSM2_PROTOCOL(g_model.protocol) ? 6 : (8+(g_model.ppmNCH*2))))
|
||||
#if defined(PCBSKY9X)
|
||||
#define NUM_PORT2_CHANNELS (8+(g_model.ppm2NCH*2))
|
||||
#endif
|
||||
|
||||
#include "lcd.h"
|
||||
@@ -585,6 +603,7 @@ enum CswFunctions {
|
||||
#endif
|
||||
|
||||
#define THRCHK_DEADBAND 16
|
||||
|
||||
#if defined(FSPLASH) || defined(XSPLASH)
|
||||
#define SPLASH_TIMEOUT (g_eeGeneral.splashMode == 0 ? 60000/*infinite=10mn*/ : ((4*100) * (g_eeGeneral.splashMode & 0x03)))
|
||||
#else
|
||||
|
||||
+67
-21
@@ -38,11 +38,13 @@ uint8_t s_pulses_paused = 0;
|
||||
uint8_t s_current_protocol = 255;
|
||||
uint8_t pxxFlag = 0 ;
|
||||
|
||||
uint16_t ppmStream[20] = { 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 9000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ;
|
||||
uint16_t ppmStream[20] = { 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 9000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ;
|
||||
uint16_t ppm2Stream[20] = { 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 9000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ;
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
volatile uint32_t Pulses_index = 0 ; // Modified in interrupt routine
|
||||
uint8_t Bit_pulses[64] ; // Likely more than we need
|
||||
volatile uint32_t ppmStreamIndex = 0 ; // Modified in interrupt routine
|
||||
volatile uint32_t ppm2StreamIndex = 0 ; // Modified in interrupt routine
|
||||
uint8_t Bit_pulses[64] ; // Likely more than we need
|
||||
uint8_t *Pulses2MHzptr ;
|
||||
#else
|
||||
uint16_t pxxStream[400] ; // Transisitions
|
||||
@@ -76,31 +78,57 @@ void startPulses()
|
||||
#endif
|
||||
}
|
||||
|
||||
void setupPulsesPPM() // Don't enable interrupts through here
|
||||
#if defined(PCBSKY9X)
|
||||
#define PPM_PORT_PARAM uint32_t ppmPort=0
|
||||
#else
|
||||
#define PPM_PORT_PARAM
|
||||
#endif
|
||||
|
||||
void setupPulsesPPM(PPM_PORT_PARAM) // Don't enable interrupts through here
|
||||
{
|
||||
#if defined(PCBSKY9X)
|
||||
register Pwm *pwmptr = PWM;
|
||||
#endif
|
||||
|
||||
int16_t PPM_range = g_model.extendedLimits ? 640 * 2 : 512 * 2; //range of 0.7..1.7msec
|
||||
uint32_t numCh = 8 + g_model.ppmNCH * 2; //Channels *2
|
||||
|
||||
// Total frame length = 22.5msec
|
||||
// each pulse is 0.7..1.7ms long with a 0.3ms stop tail
|
||||
// The pulse ISR is 2mhz that's why everything is multiplied by 2
|
||||
uint16_t * ptr = ppmStream;
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CDTYUPD = (g_model.ppmDelay * 50 + 300) * 2; //Stoplen *2
|
||||
uint32_t pwmCh;
|
||||
uint16_t * ptr;
|
||||
uint32_t firstCh, lastCh;
|
||||
if (ppmPort == 0) {
|
||||
pwmCh = 3;
|
||||
ptr = ppmStream;
|
||||
firstCh = g_model.ppmSCH;
|
||||
lastCh = min<uint32_t>(NUM_CHNOUT, firstCh + 8 + (g_model.ppmNCH * 2));
|
||||
}
|
||||
else {
|
||||
pwmCh = 1;
|
||||
ptr = ppm2Stream;
|
||||
firstCh = g_model.ppm2SCH;
|
||||
lastCh = min<uint32_t>(NUM_CHNOUT, firstCh + 8 + (g_model.ppm2NCH * 2));
|
||||
}
|
||||
#else
|
||||
#define firstCh 0
|
||||
uint32_t lastCh = 8 + g_model.ppmNCH * 2; //Channels *2
|
||||
uint16_t * ptr = ppmStream;
|
||||
#endif
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CDTYUPD = (g_model.ppmDelay * 50 + 300) * 2; //Stoplen *2
|
||||
if (g_model.pulsePol)
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CMR |= 0x00000200 ; // CPOL
|
||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CMR |= 0x00000200 ; // CPOL
|
||||
else
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CMR &= ~0x00000200 ; // CPOL
|
||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CMR &= ~0x00000200 ; // CPOL
|
||||
#endif
|
||||
|
||||
uint32_t rest = 22500u * 2; //Minimum Framelen=22.5 ms
|
||||
rest += (int32_t(g_model.ppmFrameLength)) * 1000;
|
||||
for (uint32_t i = 0; i < numCh; i++) { //NUM_CHNOUT
|
||||
for (uint32_t i=firstCh; i<lastCh; i++) {
|
||||
int16_t v = limit((int16_t)-PPM_range, g_chans512[i], (int16_t)PPM_range) + 2*PPM_CH_CENTER(i);
|
||||
rest -= v;
|
||||
*ptr++ = v; /* as Pat MacKenzie suggests */
|
||||
@@ -331,12 +359,12 @@ void setupPulsesDsm2(uint8_t chns)
|
||||
// If more channels needed make sure the pulses union/array is large enough
|
||||
if (dsmDat[0]&BAD_DATA) //first time through, setup header
|
||||
{
|
||||
switch(g_model.ppmNCH)
|
||||
switch(s_current_protocol)
|
||||
{
|
||||
case LPXDSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
dsmDat[0]= 0x80;
|
||||
break;
|
||||
case DSM2only:
|
||||
case PROTO_DSM2_DSM2:
|
||||
dsmDat[0]=0x90;
|
||||
break;
|
||||
default:
|
||||
@@ -373,9 +401,11 @@ extern "C" void PWM_IRQHandler(void)
|
||||
register Pwm *pwmptr;
|
||||
register Ssc *sscptr;
|
||||
uint32_t period;
|
||||
uint32_t reason;
|
||||
|
||||
pwmptr = PWM;
|
||||
if (pwmptr->PWM_ISR1 & PWM_ISR1_CHID3) {
|
||||
reason = pwmptr->PWM_ISR1 ;
|
||||
if (reason & PWM_ISR1_CHID3) {
|
||||
switch (s_current_protocol) // Use the current, don't switch until set_up_pulses
|
||||
{
|
||||
case PROTO_PXX:
|
||||
@@ -401,7 +431,9 @@ extern "C" void PWM_IRQHandler(void)
|
||||
}
|
||||
break;
|
||||
|
||||
case PROTO_DSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
case PROTO_DSM2_DSM2:
|
||||
case PROTO_DSM2_DSMX:
|
||||
// Alternate periods of 19.5mS and 2.5 mS
|
||||
period = pwmptr->PWM_CH_NUM[3].PWM_CPDR;
|
||||
if (period == 5000) // 2.5 mS
|
||||
@@ -426,15 +458,23 @@ extern "C" void PWM_IRQHandler(void)
|
||||
break;
|
||||
|
||||
default:
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = ppmStream[Pulses_index++]; // Period in half uS
|
||||
if (ppmStream[Pulses_index] == 0) {
|
||||
Pulses_index = 0;
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = ppmStream[ppmStreamIndex++]; // Period in half uS
|
||||
if (ppmStream[ppmStreamIndex] == 0) {
|
||||
ppmStreamIndex = 0;
|
||||
setupPulses();
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (reason & PWM_ISR1_CHID1) {
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = ppm2Stream[ppm2StreamIndex++] ; // Period in half uS
|
||||
if (ppm2Stream[ppm2StreamIndex] == 0) {
|
||||
ppm2StreamIndex = 0 ;
|
||||
setupPulsesPPM(1) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -453,7 +493,9 @@ void setupPulses()
|
||||
disable_pxx();
|
||||
break;
|
||||
#if defined(DSM2)
|
||||
case PROTO_DSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
case PROTO_DSM2_DSM2:
|
||||
case PROTO_DSM2_DSMX:
|
||||
disable_ssc();
|
||||
break;
|
||||
#endif
|
||||
@@ -479,7 +521,9 @@ void setupPulses()
|
||||
init_main_ppm(5000, 0); // Initial period 2.5 mS, output off
|
||||
init_ssc();
|
||||
break;
|
||||
case PROTO_DSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
case PROTO_DSM2_DSM2:
|
||||
case PROTO_DSM2_DSMX:
|
||||
init_main_ppm(5000, 0); // Initial period 2.5 mS, output off
|
||||
init_ssc();
|
||||
break;
|
||||
@@ -499,7 +543,9 @@ void setupPulses()
|
||||
setupPulsesPXX();
|
||||
break;
|
||||
#if defined(DSM2)
|
||||
case PROTO_DSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
case PROTO_DSM2_DSM2:
|
||||
case PROTO_DSM2_DSMX:
|
||||
setupPulsesDsm2(6);
|
||||
break;
|
||||
#endif
|
||||
|
||||
+24
-24
@@ -67,7 +67,7 @@ void startPulses()
|
||||
{
|
||||
#if defined(PCBGRUVIN9X)
|
||||
#if defined(DSM2_SERIAL)
|
||||
if (g_model.protocol != PROTO_DSM2)
|
||||
if (!IS_DSM2_PROTOCOL(g_model.protocol))
|
||||
#endif
|
||||
{
|
||||
// TODO g: There has to be a better place for this bug fix
|
||||
@@ -97,12 +97,6 @@ uint8_t *pulses2MHzWPtr = pulses2MHz;
|
||||
#define CTRL_REP_1CMD -3
|
||||
#define CTRL_REP_2CMD -6
|
||||
|
||||
#if defined(DSM2_SERIAL)
|
||||
#define DSM2_SERIAL_INTERRUPT() (s_current_protocol == PROTO_DSM2)
|
||||
#else
|
||||
#define DSM2_SERIAL_INTERRUPT() (0)
|
||||
#endif
|
||||
|
||||
// TIMER1_COMPA_vect used for PPM and DSM2=SERIAL
|
||||
uint8_t g_ppmPulsePolarity = 0;
|
||||
ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR)
|
||||
@@ -111,7 +105,7 @@ ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR)
|
||||
|
||||
// Call setupPulses only after REST pulse had been sent.
|
||||
// Must do this before toggle PORTB to keep timing accurate
|
||||
if (DSM2_SERIAL_INTERRUPT() || *((uint16_t*)pulses2MHzRPtr) == 0) {
|
||||
if (IS_DSM2_SERIAL_PROTOCOL(s_current_protocol) || *((uint16_t*)pulses2MHzRPtr) == 0) {
|
||||
setupPulses(); // does not sei() for setupPulsesPPM
|
||||
heartbeat |= HEART_TIMER_PULSES;
|
||||
if (IS_PXX_PROTOCOL(s_current_protocol) || IS_DSM2_PROTOCOL(s_current_protocol)) {
|
||||
@@ -379,16 +373,16 @@ normal:
|
||||
FORCEINLINE void setupPulsesDsm2()
|
||||
{
|
||||
uint16_t *ptr = (uint16_t *)pulses2MHz;
|
||||
switch(g_model.ppmNCH)
|
||||
switch (s_current_protocol)
|
||||
{
|
||||
case LPXDSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
*ptr = 0x00;
|
||||
break;
|
||||
case DSM2only:
|
||||
case PROTO_DSM2_DSM2:
|
||||
*ptr = 0x10;
|
||||
break;
|
||||
default:
|
||||
*ptr = 0x18; // DSMX
|
||||
default: // DSMX
|
||||
*ptr = 0x18;
|
||||
break;
|
||||
}
|
||||
if (s_bind_allowed) s_bind_allowed--;
|
||||
@@ -507,16 +501,16 @@ void setupPulsesDsm2()
|
||||
pulses2MHzWPtr = pulses2MHz;
|
||||
|
||||
// If more channels needed make sure the pulses union/array is large enough
|
||||
switch(g_model.ppmNCH)
|
||||
switch (s_current_protocol)
|
||||
{
|
||||
case LPXDSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
dsmDat[0] = 0x00;
|
||||
break;
|
||||
case DSM2only:
|
||||
case PROTO_DSM2_DSM2:
|
||||
dsmDat[0] = 0x10;
|
||||
break;
|
||||
default:
|
||||
dsmDat[0] = 0x18; // DSMX bind mode
|
||||
default: // DSMX bind mode
|
||||
dsmDat[0] = 0x18;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -740,7 +734,7 @@ void setupPulses()
|
||||
// TX moudle power control output register, in case of electrical glitch.
|
||||
// (Following advice of Atmel for MCU's used in industrial / mission cricital
|
||||
// applications.)
|
||||
if (required_protocol == PROTO_DSM2)
|
||||
if (IS_DSM2_PROTOCOL(required_protocol))
|
||||
PORTH &= ~0x80;
|
||||
else
|
||||
PORTH |= 0x80;
|
||||
@@ -749,7 +743,7 @@ void setupPulses()
|
||||
if (s_current_protocol != required_protocol) {
|
||||
|
||||
#if defined(DSM2_SERIAL) && defined(FRSKY)
|
||||
if (s_current_protocol == 255 || s_current_protocol == PROTO_DSM2) {
|
||||
if (s_current_protocol == 255 || IS_DSM2_PROTOCOL(s_current_protocol)) {
|
||||
FRSKY_Init();
|
||||
}
|
||||
#endif
|
||||
@@ -773,7 +767,9 @@ void setupPulses()
|
||||
switch (required_protocol) {
|
||||
|
||||
#if defined(DSM2_PPM) // For DSM2=SERIAL, the default: case is executed, below
|
||||
case PROTO_DSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
case PROTO_DSM2_DSM2:
|
||||
case PROTO_DSM2_DSMX:
|
||||
set_timer3_capture();
|
||||
OCR1C = 200; // 100 uS
|
||||
TCNT1 = 300; // Past the OCR1C value
|
||||
@@ -838,7 +834,9 @@ void setupPulses()
|
||||
break ;
|
||||
|
||||
#if defined(DSM2_SERIAL) && defined(FRSKY)
|
||||
case PROTO_DSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
case PROTO_DSM2_DSM2:
|
||||
case PROTO_DSM2_DSMX:
|
||||
DSM2_Init();
|
||||
// no break
|
||||
#endif
|
||||
@@ -876,7 +874,9 @@ void setupPulses()
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
case PROTO_DSM2:
|
||||
case PROTO_DSM2_LP45:
|
||||
case PROTO_DSM2_DSM2:
|
||||
case PROTO_DSM2_DSMX:
|
||||
// schedule next Mixer calculations
|
||||
SCHEDULE_MIXER_END(22*16);
|
||||
#if defined(DSM2_PPM)
|
||||
@@ -981,7 +981,7 @@ ISR(TIMER1_COMPB_vect) // PXX main interrupt
|
||||
ISR(TIMER1_COMPC_vect) // DSM2_PPM or PXX end of frame
|
||||
{
|
||||
#if defined(DSM2_PPM) && defined(PXX)
|
||||
if ( g_model.protocol == PROTO_DSM2 ) {
|
||||
if (IS_DSM2_PROTOCOL(g_model.protocol)) { // TODO not s_current_protocol?
|
||||
#endif
|
||||
|
||||
#if defined(DSM2_PPM)
|
||||
|
||||
@@ -398,7 +398,6 @@ void init_pwm()
|
||||
configure_pins( PIO_PC18, PIN_PERIPHERAL | PIN_INPUT | PIN_PER_B | PIN_PORTC | PIN_NO_PULLUP ) ;
|
||||
|
||||
#if !defined(REVA)
|
||||
configure_pins( PIO_PC15, PIN_PERIPHERAL | PIN_INPUT | PIN_PER_B | PIN_PORTC | PIN_NO_PULLUP ) ;
|
||||
configure_pins( PIO_PC22, PIN_PERIPHERAL | PIN_INPUT | PIN_PER_B | PIN_PORTC | PIN_NO_PULLUP ) ;
|
||||
#endif
|
||||
|
||||
@@ -418,16 +417,6 @@ void init_pwm()
|
||||
pwmptr->PWM_CH_NUM[0].PWM_CDTYUPD = 40 ; // Duty
|
||||
pwmptr->PWM_ENA = PWM_ENA_CHID0 ; // Enable channel 0
|
||||
|
||||
#if !defined(REVA)
|
||||
// PWM1 for PPM2 output 100Hz test
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CMR = 0x0000000C ; // CLKB
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CPDR = 100 ; // Period
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = 100 ; // Period
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTY = 40 ; // Duty
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTYUPD = 40 ; // Duty
|
||||
pwmptr->PWM_ENA = PWM_ENA_CHID1 ; // Enable channel 1
|
||||
#endif
|
||||
|
||||
#if !defined(REVA)
|
||||
// PWM2 for HAPTIC drive 100Hz test
|
||||
pwmptr->PWM_CH_NUM[2].PWM_CMR = 0x0000000C ; // CLKB
|
||||
@@ -765,6 +754,8 @@ void usbBootloader()
|
||||
NVIC_DisableIRQ(TC2_IRQn) ;
|
||||
|
||||
disable_main_ppm() ;
|
||||
disable_ppm2();
|
||||
|
||||
// PWM->PWM_IDR1 = PWM_IDR1_CHID3 ;
|
||||
// NVIC_DisableIRQ(PWM_IRQn) ;
|
||||
disable_ssc() ;
|
||||
|
||||
@@ -159,6 +159,7 @@ void setSticksGain(uint8_t gains);
|
||||
// Pulses driver
|
||||
void init_main_ppm(uint32_t period, uint32_t out_enable);
|
||||
void disable_main_ppm();
|
||||
void disable_ppm2();
|
||||
void init_ssc();
|
||||
void disable_ssc();
|
||||
#define disable_pxx() disable_ssc()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "../open9x.h"
|
||||
|
||||
// TODO illogical in the driver :(
|
||||
void setupPulsesPPM();
|
||||
void setupPulsesPPM(uint32_t ppmPort=0);
|
||||
|
||||
void init_main_ppm( uint32_t period, uint32_t out_enable )
|
||||
{
|
||||
@@ -62,9 +62,26 @@ void init_main_ppm( uint32_t period, uint32_t out_enable )
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CDTY = g_model.ppmDelay*100+600; // Duty in half uS
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CDTYUPD = g_model.ppmDelay*100+600; // Duty in half uS
|
||||
pwmptr->PWM_ENA = PWM_ENA_CHID3 ; // Enable channel 3
|
||||
|
||||
NVIC_EnableIRQ(PWM_IRQn) ;
|
||||
pwmptr->PWM_IER1 = PWM_IER1_CHID3 ;
|
||||
|
||||
#if !defined(REVA)
|
||||
configure_pins( PIO_PC15, PIN_PERIPHERAL | PIN_INPUT | PIN_PER_B | PIN_PORTC | PIN_NO_PULLUP ) ;
|
||||
#endif
|
||||
|
||||
#if !defined(REVA)
|
||||
// PWM1 for PPM2
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CMR = 0x0000000B ; // CLKB
|
||||
if (g_model.pulsePol)
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CMR |= 0x00000200 ; // CPOL
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CPDR = period ; // Period
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = period ; // Period
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTY = g_model.ppmDelay*100+600 ; // Duty
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTYUPD = g_model.ppmDelay*100+600 ; // Duty
|
||||
pwmptr->PWM_ENA = PWM_ENA_CHID1 ; // Enable channel 1
|
||||
#endif
|
||||
|
||||
pwmptr->PWM_IER1 = PWM_IER1_CHID1 ;
|
||||
NVIC_EnableIRQ(PWM_IRQn) ;
|
||||
}
|
||||
|
||||
void disable_main_ppm()
|
||||
@@ -75,6 +92,16 @@ void disable_main_ppm()
|
||||
pioptr->PIO_PER = PIO_PA17 ; // Assign A17 to PIO
|
||||
|
||||
PWM->PWM_IDR1 = PWM_IDR1_CHID3 ;
|
||||
}
|
||||
|
||||
void disable_ppm2()
|
||||
{
|
||||
register Pio *pioptr ;
|
||||
|
||||
pioptr = PIOC ;
|
||||
pioptr->PIO_PER = PIO_PC17 ; // Assign A17 to PIO
|
||||
|
||||
PWM->PWM_IDR1 = PWM_IDR1_CHID1 ;
|
||||
NVIC_DisableIRQ(PWM_IRQn) ;
|
||||
}
|
||||
|
||||
|
||||
@@ -85,9 +85,6 @@ const pm_char STR_OPEN9X[] PROGMEM =
|
||||
ISTR(VSWITCHES)
|
||||
ISTR(VSRCRAW)
|
||||
ISTR(VTMRMODES)
|
||||
#if defined(DSM2)
|
||||
ISTR(DSM2MODE)
|
||||
#endif
|
||||
#if defined(PCBGRUVIN9X) || defined (CPUARM)
|
||||
ISTR(DATETIME)
|
||||
#endif
|
||||
|
||||
+1
-11
@@ -134,14 +134,8 @@ extern const pm_char STR_OPEN9X[];
|
||||
#define OFS_VSWITCHES (OFS_VKEYS + sizeof(TR_VKEYS))
|
||||
#define OFS_VSRCRAW (OFS_VSWITCHES + sizeof(TR_VSWITCHES))
|
||||
#define OFS_VTMRMODES (OFS_VSRCRAW + sizeof(TR_VSRCRAW))
|
||||
#if defined(DSM2)
|
||||
#define OFS_DSM2MODE (OFS_VTMRMODES + sizeof(TR_VTMRMODES))
|
||||
#define OFS_ENDDSM2 (OFS_DSM2MODE + sizeof(TR_DSM2MODE))
|
||||
#else
|
||||
#define OFS_ENDDSM2 (OFS_VTMRMODES + sizeof(TR_VTMRMODES))
|
||||
#endif
|
||||
#if defined(PCBGRUVIN9X) || defined(CPUARM)
|
||||
#define OFS_DATETIME (OFS_ENDDSM2)
|
||||
#define OFS_DATETIME (OFS_VTMRMODES + sizeof(TR_VTMRMODES))
|
||||
#endif
|
||||
#if defined(CPUARM)
|
||||
#define OFS_VLCD (OFS_DATETIME + sizeof(TR_DATETIME))
|
||||
@@ -198,10 +192,6 @@ extern const pm_char STR_OPEN9X[];
|
||||
#define STR_VSRCRAW (STR_OPEN9X + OFS_VSRCRAW)
|
||||
#define STR_VTMRMODES (STR_OPEN9X + OFS_VTMRMODES)
|
||||
|
||||
#if defined(DSM2)
|
||||
#define STR_DSM2MODE (STR_OPEN9X + OFS_DSM2MODE)
|
||||
#endif
|
||||
|
||||
#if defined(ROTARY_ENCODERS)
|
||||
#define STR_VRENAVIG (STR_OPEN9X + OFS_VRENAVIG)
|
||||
#define STR_VRENCODERS (STR_OPEN9X + OFS_VRENCODERS)
|
||||
|
||||
+24
-13
@@ -47,22 +47,36 @@
|
||||
#endif
|
||||
|
||||
#define LEN_VPROTOS "\006"
|
||||
#ifdef PXX
|
||||
#define TR_PXX "PXX\0 "
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
#ifdef DSM2
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
#ifdef IRPROTOS
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "POZ""NEG"
|
||||
@@ -230,9 +244,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "VYP""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
+24
-13
@@ -47,22 +47,36 @@
|
||||
#endif
|
||||
|
||||
#define LEN_VPROTOS "\006"
|
||||
#ifdef PXX
|
||||
#define TR_PXX "PXX\0 "
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
#ifdef DSM2
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
#ifdef IRPROTOS
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "POS""NEG"
|
||||
@@ -231,9 +245,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "AUS""ABS""GSs""GS%""GSt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
+16
-9
@@ -52,24 +52,34 @@
|
||||
#define LEN_VPROTOS "\006"
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "POS""NEG"
|
||||
@@ -267,9 +277,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
+17
-9
@@ -52,24 +52,35 @@
|
||||
#define LEN_VPROTOS "\006"
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "POS""NEG"
|
||||
@@ -267,9 +278,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
+24
-13
@@ -47,22 +47,36 @@
|
||||
#endif
|
||||
|
||||
#define LEN_VPROTOS "\006"
|
||||
#ifdef PXX
|
||||
#define TR_PXX "PXX\0 "
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
#ifdef DSM2
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
#ifdef IRPROTOS
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "POS""NEG"
|
||||
@@ -231,9 +245,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""GZs""GZ%""GZt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMseulDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
+24
-13
@@ -46,22 +46,36 @@
|
||||
#endif
|
||||
|
||||
#define LEN_VPROTOS "\006"
|
||||
#ifdef PXX
|
||||
#define TR_PXX "PXX\0 "
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
#ifdef DSM2
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
#ifdef IRPROTOS
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "POS""NEG"
|
||||
@@ -231,9 +245,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
+24
-13
@@ -47,22 +47,36 @@
|
||||
#endif
|
||||
|
||||
#define LEN_VPROTOS "\006"
|
||||
#ifdef PXX
|
||||
#define TR_PXX "PXX\0 "
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
#ifdef DSM2
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
#ifdef IRPROTOS
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "POS""NEG"
|
||||
@@ -231,9 +245,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""MTs""MT%""MTt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
+19
-12
@@ -51,25 +51,35 @@
|
||||
|
||||
#define LEN_VPROTOS "\006"
|
||||
|
||||
#ifdef PXX
|
||||
#define TR_PXX "PXX\0 "
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#elif defined(DSM2) || defined(IRPROTOS)
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX
|
||||
#endif
|
||||
|
||||
#ifdef DSM2
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 "
|
||||
#elif defined(IRPROTOS)
|
||||
#define TR_DSM2 "[LP45]""[DSM2]""[DSMX]"
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2
|
||||
#endif
|
||||
|
||||
#ifdef IRPROTOS
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
#if defined(CPUARM)
|
||||
#define TR_XPPM
|
||||
#else
|
||||
#define TR_XPPM "PPM16\0""PPMsim"
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
#define TR_POSNEG "Pos""Neg"
|
||||
@@ -267,9 +277,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "AV ""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define INDENT "\001"
|
||||
#define LEN_INDENT 1
|
||||
|
||||
Reference in New Issue
Block a user