Fixed pushing CRSF telem packets to internal module

This commit is contained in:
Raphael Coeffic
2021-11-21 11:18:35 +01:00
committed by Raphael Coeffic
parent 9fb741be98
commit 043c1e6a2d
2 changed files with 11 additions and 7 deletions
+6 -3
View File
@@ -696,7 +696,10 @@ When called without parameters, it will only return the status of the output buf
*/
static int luaCrossfireTelemetryPush(lua_State * L)
{
if (telemetryProtocol != PROTOCOL_TELEMETRY_CROSSFIRE) {
bool sport = (telemetryProtocol == PROTOCOL_TELEMETRY_CROSSFIRE);
bool internal = (moduleState[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_CROSSFIRE);
if (!internal && !sport) {
lua_pushnil(L);
return 1;
}
@@ -719,8 +722,8 @@ static int luaCrossfireTelemetryPush(lua_State * L)
lua_rawgeti(L, 2, i+1);
outputTelemetryBuffer.pushByte(luaL_checkunsigned(L, -1));
}
outputTelemetryBuffer.pushByte(crc8(outputTelemetryBuffer.data+2, 1 + length));
outputTelemetryBuffer.setDestination(TELEMETRY_ENDPOINT_SPORT);
outputTelemetryBuffer.pushByte(crc8(outputTelemetryBuffer.data + 2, 1 + length));
outputTelemetryBuffer.setDestination(internal ? 0 : TELEMETRY_ENDPOINT_SPORT);
lua_pushboolean(L, true);
}
else {
+5 -4
View File
@@ -70,10 +70,11 @@ uint8_t createCrossfireChannelsFrame(uint8_t * frame, int16_t * pulses)
return buf - frame;
}
static void setupPulsesCrossfire(uint8_t idx, CrossfirePulsesData* p_data)
static void setupPulsesCrossfire(uint8_t idx, CrossfirePulsesData* p_data,
uint8_t endpoint)
{
#if defined(LUA)
if (outputTelemetryBuffer.destination == TELEMETRY_ENDPOINT_SPORT) {
if (outputTelemetryBuffer.destination == endpoint) {
memcpy(p_data->pulses, outputTelemetryBuffer.data,
outputTelemetryBuffer.size);
p_data->length = outputTelemetryBuffer.size;
@@ -96,9 +97,9 @@ void setupPulsesCrossfire(uint8_t idx)
{
if (idx == INTERNAL_MODULE) {
auto* p_data = &intmodulePulsesData.crossfire;
setupPulsesCrossfire(idx, p_data);
setupPulsesCrossfire(idx, p_data, 0);
} else if (telemetryProtocol == PROTOCOL_TELEMETRY_CROSSFIRE) {
auto* p_data = &extmodulePulsesData.crossfire;
setupPulsesCrossfire(idx, p_data);
setupPulsesCrossfire(idx, p_data, TELEMETRY_ENDPOINT_SPORT);
}
}