Bsongis/xjt lite support (#6563)

External XJT Lite support added
This commit is contained in:
Bertrand Songis
2019-07-15 08:51:00 +02:00
committed by GitHub
parent 9792bf52d4
commit ccc93ce439
33 changed files with 328 additions and 153 deletions
+18 -10
View File
@@ -53,12 +53,18 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame)
uint8_t index = frame[3];
uint8_t modelId = frame[4];
uint8_t length = min<uint8_t>(frame[0] - 3, sizeof(PXX2HardwareInformation));
if (index == PXX2_HW_INFO_TX_ID && modelId < DIM(PXX2modulesModels)) {
memcpy(&destination->information, &frame[4], sizeof(PXX2HardwareInformation));
memcpy(&destination->information, &frame[4], length);
if (destination->information.capabilities & ~((1 << RECEIVER_CAPABILITY_COUNT) - 1))
destination->information.capabilityNotSupported = true;
}
else if (index < PXX2_MAX_RECEIVERS_PER_MODULE && modelId < DIM(PXX2receiversModels)) {
memcpy(&destination->receivers[index].information, &frame[4], sizeof(PXX2HardwareInformation));
memcpy(&destination->receivers[index].information, &frame[4], length);
destination->receivers[index].timestamp = get_tmr10ms();
if (destination->receivers[index].information.capabilities & ~((1 << MODULE_CAPABILITY_COUNT) - 1))
destination->information.capabilityNotSupported = true;
}
}
@@ -78,7 +84,7 @@ void processModuleSettingsFrame(uint8_t module, uint8_t * frame)
destination->txPower = frame[5];
destination->state = PXX2_SETTINGS_OK;
destination->retryTime = 0;
destination->timeout = 0;
moduleState[module].mode = MODULE_MODE_NORMAL;
}
@@ -88,23 +94,25 @@ void processReceiverSettingsFrame(uint8_t module, uint8_t * frame)
return;
}
ReceiverSettings * destination = moduleState[module].receiverSettings;
if (frame[4] & PXX2_RX_SETTINGS_FLAG1_FPORT)
reusableBuffer.hardwareAndSettings.receiverSettings.fport = 1;
destination->fport = 1;
if (frame[4] & PXX2_RX_SETTINGS_FLAG1_FASTPWM)
reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate = 1;
destination->pwmRate = 1;
if (frame[4] & PXX2_RX_SETTINGS_FLAG1_TELEMETRY_DISABLED)
reusableBuffer.hardwareAndSettings.receiverSettings.telemetryDisabled = 1;
destination->telemetryDisabled = 1;
uint8_t outputsCount = min<uint8_t>(16, frame[0] - 4);
reusableBuffer.hardwareAndSettings.receiverSettings.outputsCount = outputsCount;
destination->outputsCount = outputsCount;
for (uint8_t pin = 0; pin < outputsCount; pin++) {
reusableBuffer.hardwareAndSettings.receiverSettings.outputsMapping[pin] = frame[5 + pin];
destination->outputsMapping[pin] = frame[5 + pin];
}
reusableBuffer.hardwareAndSettings.receiverSettings.state = PXX2_SETTINGS_OK;
reusableBuffer.hardwareAndSettings.receiverSettings.timeout = 0;
destination->state = PXX2_SETTINGS_OK;
destination->timeout = 0;
moduleState[module].mode = MODULE_MODE_NORMAL;
}