1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-16 21:05:26 +03:00

Compilation fixes

This commit is contained in:
Bertrand Songis 2019-04-23 08:26:38 +02:00
parent 469f6f860e
commit fa6db9e330
8 changed files with 38 additions and 55 deletions

View file

@ -80,7 +80,6 @@ enum MenuModelSetupItems {
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
ITEM_MODEL_INTERNAL_MODULE_LABEL, ITEM_MODEL_INTERNAL_MODULE_LABEL,
ITEM_MODEL_INTERNAL_MODULE_MODE, ITEM_MODEL_INTERNAL_MODULE_MODE,
ITEM_MODEL_INTERNAL_MODULE_PROTOCOL,
ITEM_MODEL_INTERNAL_MODULE_CHANNELS, ITEM_MODEL_INTERNAL_MODULE_CHANNELS,
ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND, ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND,
ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM, ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM,
@ -173,12 +172,7 @@ enum MenuModelSetupItems {
#define SW_WARN_ROWS uint8_t(NAVIGATION_LINE_BY_LINE|(getSwitchWarningsCount()-1)), uint8_t(getSwitchWarningsCount() > 5 ? TITLE_ROW : HIDDEN_ROW) #define SW_WARN_ROWS uint8_t(NAVIGATION_LINE_BY_LINE|(getSwitchWarningsCount()-1)), uint8_t(getSwitchWarningsCount() > 5 ? TITLE_ROW : HIDDEN_ROW)
#endif #endif
#if defined(TARANIS_INTERNAL_PPM) #define INTERNAL_MODULE_MODE_ROWS (isModuleXJT(INTERNAL_MODULE) ? (uint8_t)1 : (uint8_t)0) // Module type + RF protocols
#define INTERNAL_MODULE_MODE_ROWS (isModuleXJT(INTERNAL_MODULE) ? (uint8_t)1 : (uint8_t)0) // Module type + RF protocols
#else
#define INTERNAL_MODULE_MODE_ROWS 0 // (OFF / RF protocols)
#endif
#define IF_INTERNAL_MODULE_ON(x) (IS_INTERNAL_MODULE_ENABLED()? (uint8_t)(x) : HIDDEN_ROW) #define IF_INTERNAL_MODULE_ON(x) (IS_INTERNAL_MODULE_ENABLED()? (uint8_t)(x) : HIDDEN_ROW)
#define IF_EXTERNAL_MODULE_ON(x) (IS_EXTERNAL_MODULE_ENABLED()? (uint8_t)(x) : HIDDEN_ROW) #define IF_EXTERNAL_MODULE_ON(x) (IS_EXTERNAL_MODULE_ENABLED()? (uint8_t)(x) : HIDDEN_ROW)
#define EXTERNAL_MODULE_BIND_ROWS() ((isModuleXJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) || isModuleSBUS(EXTERNAL_MODULE)) ? (uint8_t)1 : (isModulePPM(EXTERNAL_MODULE) || isModulePXX(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW #define EXTERNAL_MODULE_BIND_ROWS() ((isModuleXJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) || isModuleSBUS(EXTERNAL_MODULE)) ? (uint8_t)1 : (isModulePPM(EXTERNAL_MODULE) || isModulePXX(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW
@ -494,7 +488,6 @@ void menuModelSetup(event_t event)
LABEL(InternalModule), LABEL(InternalModule),
INTERNAL_MODULE_MODE_ROWS, // module mode (PXX(2) / None) INTERNAL_MODULE_MODE_ROWS, // module mode (PXX(2) / None)
IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(0)), // XJT protocols
INTERNAL_MODULE_CHANNELS_ROWS, // Channels min and count INTERNAL_MODULE_CHANNELS_ROWS, // Channels min and count
IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)), IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)),
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // RxNum IF_PXX2_MODULE(INTERNAL_MODULE, 0), // RxNum
@ -948,27 +941,26 @@ void menuModelSetup(event_t event)
case ITEM_MODEL_INTERNAL_MODULE_MODE: case ITEM_MODEL_INTERNAL_MODULE_MODE:
lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAlignedLeft(y, STR_MODE);
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, attr); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0);
if (isModuleXJT(INTERNAL_MODULE))
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+6*FW, y, STR_XJT_PROTOCOLS, 1+g_model.moduleData[INTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0);
if (attr) { if (attr) {
uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable); if (menuHorizontalPosition == 0) {
if (checkIncDec_Ret) { uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable);
// TODO this code should be common, in module.h (X10_new_UI branch) if (checkIncDec_Ret) {
memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); // TODO this code should be common, in module.h (X10_new_UI branch)
g_model.moduleData[INTERNAL_MODULE].type = moduleType; memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData));
g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); g_model.moduleData[INTERNAL_MODULE].type = moduleType;
g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE);
}
} }
} else if (isModuleXJT(INTERNAL_MODULE)) {
break; g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, RF_PROTO_X16, RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable);
if (checkIncDec_Ret) {
case ITEM_MODEL_INTERNAL_MODULE_PROTOCOL: g_model.moduleData[0].type = MODULE_TYPE_XJT;
lcdDrawTextAlignedLeft(y, STR_PROTO); g_model.moduleData[0].channelsStart = 0;
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_XJT_PROTOCOLS, 1+g_model.moduleData[0].rfProtocol, attr); g_model.moduleData[0].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE);
if (attr) { }
g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, RF_PROTO_X16, RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable);
if (checkIncDec_Ret) {
g_model.moduleData[0].type = MODULE_TYPE_XJT;
g_model.moduleData[0].channelsStart = 0;
g_model.moduleData[0].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE);
} }
} }
break; break;

View file

@ -568,21 +568,21 @@ When called without parameters, it will only return the status of the output buf
static int luaCrossfireTelemetryPush(lua_State * L) static int luaCrossfireTelemetryPush(lua_State * L)
{ {
if (lua_gettop(L) == 0) { if (lua_gettop(L) == 0) {
lua_pushboolean(L, isCrossfireOutputBufferAvailable()); lua_pushboolean(L, outputTelemetryBuffer.isAvailable());
} }
else if (isCrossfireOutputBufferAvailable()) { else if (outputTelemetryBuffer.isAvailable()) {
uint8_t command = luaL_checkunsigned(L, 1); uint8_t command = luaL_checkunsigned(L, 1);
luaL_checktype(L, 2, LUA_TTABLE); luaL_checktype(L, 2, LUA_TTABLE);
uint8_t length = luaL_len(L, 2); uint8_t length = luaL_len(L, 2);
telemetryOutputPushByte(MODULE_ADDRESS); outputTelemetryBuffer.pushByte(MODULE_ADDRESS);
telemetryOutputPushByte(2 + length); // 1(COMMAND) + data length + 1(CRC) outputTelemetryBuffer.pushByte(2 + length); // 1(COMMAND) + data length + 1(CRC)
telemetryOutputPushByte(command); // COMMAND outputTelemetryBuffer.pushByte(command); // COMMAND
for (int i=0; i<length; i++) { for (int i=0; i<length; i++) {
lua_rawgeti(L, 2, i+1); lua_rawgeti(L, 2, i+1);
telemetryOutputPushByte(luaL_checkunsigned(L, -1)); outputTelemetryBuffer.pushByte(luaL_checkunsigned(L, -1));
} }
telemetryOutputPushByte(crc8(outputTelemetryBuffer+2, 1 + length)); outputTelemetryBuffer.pushByte(crc8(outputTelemetryBuffer.data+2, 1 + length));
telemetryOutputSetTrigger(command); outputTelemetryBuffer.setDestination(TELEMETRY_ENDPOINT_SPORT);
lua_pushboolean(L, true); lua_pushboolean(L, true);
} }
else { else {

View file

@ -52,11 +52,10 @@ void setupPulsesCrossfire()
if (telemetryProtocol == PROTOCOL_TELEMETRY_CROSSFIRE) { if (telemetryProtocol == PROTOCOL_TELEMETRY_CROSSFIRE) {
uint8_t * pulses = extmodulePulsesData.crossfire.pulses; uint8_t * pulses = extmodulePulsesData.crossfire.pulses;
#if defined(LUA) #if defined(LUA)
if (outputTelemetryBufferTrigger != 0x00 && outputTelemetryBufferSize > 0) { if (outputTelemetryBuffer.destination == TELEMETRY_ENDPOINT_SPORT) {
memcpy(pulses, outputTelemetryBuffer, outputTelemetryBufferSize); memcpy(pulses, outputTelemetryBuffer.data, outputTelemetryBuffer.size);
extmodulePulsesData.crossfire.length = outputTelemetryBufferSize; extmodulePulsesData.crossfire.length = outputTelemetryBuffer.size;
outputTelemetryBufferTrigger = 0x00; outputTelemetryBuffer.reset();
outputTelemetryBufferSize = 0;
} }
else else
#endif #endif

View file

@ -174,11 +174,6 @@ void processCrossfireTelemetryFrame()
} }
} }
bool isCrossfireOutputBufferAvailable()
{
return outputTelemetryBufferSize == 0;
}
void processCrossfireTelemetryData(uint8_t data) void processCrossfireTelemetryData(uint8_t data)
{ {
if (telemetryRxBufferCount == 0 && data != RADIO_ADDRESS) { if (telemetryRxBufferCount == 0 && data != RADIO_ADDRESS) {

View file

@ -78,7 +78,6 @@ enum CrossfireSensorIndexes {
void processCrossfireTelemetryData(uint8_t data); void processCrossfireTelemetryData(uint8_t data);
void crossfireSetDefault(int index, uint8_t id, uint8_t subId); void crossfireSetDefault(int index, uint8_t id, uint8_t subId);
bool isCrossfireOutputBufferAvailable();
#if SPORT_MAX_BAUDRATE < 400000 #if SPORT_MAX_BAUDRATE < 400000
const uint32_t CROSSFIRE_BAUDRATES[] = { const uint32_t CROSSFIRE_BAUDRATES[] = {

View file

@ -158,14 +158,14 @@ static void processMultiTelemetryPaket(const uint8_t *packet)
// Just an ack to our command, ignore for now // Just an ack to our command, ignore for now
break; break;
#if defined(MULTI_SPORT) && defined(LUA)
case FrskySportPolling: case FrskySportPolling:
#if defined(LUA) if (len >= 1 && outputTelemetryBuffer.destination == TELEMETRY_ENDPOINT_SPORT && data[0] == outputTelemetryBuffer.sport.physicalId) {
if (len >= 1 && outputTelemetryBuffer.size > 0 && data[0] == outputTelemetryBuffer.trigger) {
TRACE("MP Sending sport data out."); TRACE("MP Sending sport data out.");
sportSendBuffer(outputTelemetryBuffer.data, outputTelemetryBuffer.size); sportSendBuffer(outputTelemetryBuffer.data, outputTelemetryBuffer.size);
} }
#endif
break; break;
#endif
default: default:
TRACE("[MP] Unkown multi packet type 0x%02X, len %d", type, len); TRACE("[MP] Unkown multi packet type 0x%02X, len %d", type, len);

View file

@ -266,8 +266,7 @@ void telemetryInit(uint8_t protocol)
// The DIY Multi module always speaks 100000 baud regardless of the telemetry protocol in use // The DIY Multi module always speaks 100000 baud regardless of the telemetry protocol in use
telemetryPortInit(MULTIMODULE_BAUDRATE, TELEMETRY_SERIAL_8E2); telemetryPortInit(MULTIMODULE_BAUDRATE, TELEMETRY_SERIAL_8E2);
#if defined(LUA) #if defined(LUA)
outputTelemetryBuffer.size = 0; outputTelemetryBuffer.reset();
outputTelemetryBuffer.trigger = 0x7E;
#endif #endif
} }
else if (protocol == PROTOCOL_TELEMETRY_SPEKTRUM) { else if (protocol == PROTOCOL_TELEMETRY_SPEKTRUM) {
@ -280,8 +279,7 @@ void telemetryInit(uint8_t protocol)
else if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) { else if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) {
telemetryPortInit(CROSSFIRE_BAUDRATE, TELEMETRY_SERIAL_DEFAULT); telemetryPortInit(CROSSFIRE_BAUDRATE, TELEMETRY_SERIAL_DEFAULT);
#if defined(LUA) #if defined(LUA)
outputTelemetryBufferSize = 0; outputTelemetryBuffer.reset();
outputTelemetryBufferTrigger = 0;
#endif #endif
telemetryPortSetDirectionOutput(); telemetryPortSetDirectionOutput();
} }

View file

@ -108,8 +108,8 @@
#define LEN_MODULE_PROTOCOLS "\006" #define LEN_MODULE_PROTOCOLS "\006"
#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M-A\0""R9MLit""R9ML-A""R9MP-A""SBUS\0" #define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M-A\0""R9MLit""R9ML-A""R9MP-A""SBUS\0"
#else #else
#define LEN_MODULE_PROTOCOLS "\006" #define LEN_MODULE_PROTOCOLS "\013"
#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT-A\0""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M-A\0""R9MLit""R9ML-A""R9MP-A""SBUS\0" #define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0""R9MLite\0 ""R9ML ACCESS""R9MP ACCESS""SBUS\0"
#endif #endif
#define LEN_TELEMETRY_PROTOCOLS "\017" #define LEN_TELEMETRY_PROTOCOLS "\017"