Compilation fix

This commit is contained in:
Bertrand Songis
2016-06-12 15:27:55 +02:00
parent 21075d5a4c
commit f415f38ba6
4 changed files with 35 additions and 25 deletions
+17 -16
View File
@@ -24,25 +24,10 @@
#define CROSSFIRE_CH_BITS 11
// Range for pulses (channels output) is [-1024:+1024]
uint8_t createCrossfireFrame(uint8_t * frame, int16_t * pulses, LuaTelemetryPacket * telemetryPacket)
uint8_t createCrossfireChannelsFrame(uint8_t * frame, int16_t * pulses)
{
uint8_t * buf = frame;
*buf++ = MODULE_ADDRESS;
#if defined(LUA)
if (telemetryPacket->crossfire.command) {
*buf++ = 2 + telemetryPacket->crossfire.length; // 1(ID) + telemetryPacket->crossfire.length + 1(CRC)
uint8_t * crc_start = buf;
*buf++ = telemetryPacket->crossfire.command;
for (int i=0; i<telemetryPacket->crossfire.length; i++) {
*buf++ = telemetryPacket->crossfire.data[i];
}
*buf++ = crc8(crc_start, telemetryPacket->crossfire.length + 1);
telemetryPacket->crossfire.clear();
return buf - frame;
}
#endif
*buf++ = 24; // 1(ID) + 22 + 1(CRC)
uint8_t * crc_start = buf;
*buf++ = CHANNELS_ID;
@@ -61,3 +46,19 @@ uint8_t createCrossfireFrame(uint8_t * frame, int16_t * pulses, LuaTelemetryPack
*buf++ = crc8(crc_start, 23);
return buf - frame;
}
#if defined(LUA)
uint8_t createCrossfireRequestFrame(uint8_t * frame, LuaTelemetryPacket * telemetryPacket)
{
uint8_t * buf = frame;
*buf++ = MODULE_ADDRESS;
*buf++ = 2 + telemetryPacket->crossfire.length; // 1(ID) + telemetryPacket->crossfire.length + 1(CRC)
uint8_t * crc_start = buf;
*buf++ = telemetryPacket->crossfire.command;
for (int i=0; i<telemetryPacket->crossfire.length; i++) {
*buf++ = telemetryPacket->crossfire.data[i];
}
*buf++ = crc8(crc_start, telemetryPacket->crossfire.length + 1);
return buf - frame;
}
#endif
+14 -4
View File
@@ -29,7 +29,11 @@ ModulePulsesData modulePulsesData[NUM_MODULES] __DMA;
TrainerPulsesData trainerPulsesData __DMA;
#if defined(CROSSFIRE)
uint8_t createCrossfireFrame(uint8_t * frame, int16_t * pulses, LuaTelemetryPacket * telemetry);
uint8_t createCrossfireChannelsFrame(uint8_t * frame, int16_t * pulses);
#endif
#if defined(CROSSFIRE) && defined(LUA)
uint8_t createCrossfireRequestFrame(uint8_t * frame, LuaTelemetryPacket * telemetry);
#endif
uint8_t getRequiredProtocol(uint8_t port)
@@ -181,11 +185,17 @@ void setupPulses(uint8_t port)
case PROTO_CROSSFIRE:
if (telemetryProtocol == PROTOCOL_PULSES_CROSSFIRE && !init_needed) {
uint8_t * crossfire = modulePulsesData[port].crossfire.pulses;
uint8_t len;
#if defined(LUA)
uint8_t len = createCrossfireFrame(crossfire, &channelOutputs[g_model.moduleData[port].channelsStart], &luaOutputTelemetryPacket);
#else
uint8_t len = createCrossfireFrame(crossfire, &channelOutputs[g_model.moduleData[port].channelsStart], NULL);
if (luaOutputTelemetryPacket.crossfire.command) {
len = createCrossfireRequestFrame(crossfire, &luaOutputTelemetryPacket);
luaOutputTelemetryPacket.crossfire.clear();
}
else
#endif
{
len = createCrossfireChannelsFrame(crossfire, &channelOutputs[g_model.moduleData[port].channelsStart]);
}
sportSendBuffer(crossfire, len);
}
scheduleNextMixerCalculation(port, CROSSFIRE_FRAME_PERIOD);
-2
View File
@@ -524,8 +524,6 @@ struct LuaTelemetryPacket
extern Fifo<LuaTelemetryPacket, 16> * luaInputTelemetryFifo;
extern LuaTelemetryPacket luaOutputTelemetryPacket;
void sportSendLuaPacket(LuaTelemetryPacket & packet);
#else
#define LuaTelemetryPacket void
#endif
#endif // _FRSKY_H_
+4 -3
View File
@@ -21,17 +21,18 @@
#include "gtests.h"
#if defined(CROSSFIRE)
TEST(Crossfire, createCrossfireFrame)
uint8_t createCrossfireChannelsFrame(uint8_t * frame, int16_t * pulses);
TEST(Crossfire, createCrossfireChannelsFrame)
{
int16_t pulsesStart[NUM_TRAINER];
uint8_t crossfire[CROSSFIRE_FRAME_LEN];
uint8_t crossfire[CROSSFIRE_FRAME_MAXLEN];
memset(crossfire, 0, sizeof(crossfire));
for (int i=0; i<NUM_TRAINER; i++) {
pulsesStart[i] = -1024 + (2048 / NUM_TRAINER) * i;
}
createCrossfireFrame(crossfire, pulsesStart);
createCrossfireChannelsFrame(crossfire, pulsesStart);
// TODO check
}