Multi fixes

This commit is contained in:
3djc
2019-03-16 15:28:53 +01:00
parent db62647b3e
commit ce0a58b790
5 changed files with 16 additions and 10 deletions
+1 -1
View File
@@ -1081,7 +1081,7 @@ void menuModelSetup(event_t event)
}
moduleSettings[moduleIdx].mode = newFlag;
#if defined(MULTIMODULE)
if (newFlag == MODULE_BIND)
if (newFlag == MODULE_MODE_BIND)
multiBindStatus = MULTI_BIND_INITIATED;
#endif
}
+5
View File
@@ -545,6 +545,11 @@ bool isInternalModuleAvailable(int module)
bool isExternalModuleAvailable(int module)
{
#if !defined(PCBXLITE)
if (module == MODULE_TYPE_R9M_LITE || module == MODULE_TYPE_R9M_LITE2 || module == MODULE_TYPE_R9M_LITE_PRO2) {
return false;
}
#endif
#if !defined(PXX1)
if (module == MODULE_TYPE_XJT || module == MODULE_TYPE_R9M || module == MODULE_TYPE_R9M_LITE) {
return false;
+5 -5
View File
@@ -57,7 +57,7 @@ static void sendFailsafeChannels(uint8_t port)
uint8_t bitsavailable = 0;
for (int i = 0; i < MULTI_CHANS; i++) {
int16_t failsafeValue = g_model.moduleData[port].failsafeChannels[i];
int16_t failsafeValue = g_model.failsafeChannels[i];
int pulseValue;
if (g_model.moduleData[port].failsafeMode == FAILSAFE_HOLD)
failsafeValue = FAILSAFE_CHANNEL_HOLD;
@@ -106,7 +106,7 @@ void setupPulsesMultimodule()
sendSetupFrame();
} else if (counter % 1000 == 0 && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_NOT_SET && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_RECEIVER) {
sendFrameProtocolHeader(EXTERNAL_MODULE, true);
sendFailsafeChannels(port);
sendFailsafeChannels(EXTERNAL_MODULE);
} else {
// Normal Frame
sendFrameProtocolHeader(EXTERNAL_MODULE, false);
@@ -152,16 +152,16 @@ void sendFrameProtocolHeader(uint8_t port, bool failsafe)
int8_t optionValue = g_model.moduleData[port].multi.optionValue;
uint8_t protoByte = 0;
if (moduleSettings[port].mode == MODULE_BIND)
if (moduleSettings[port].mode == MODULE_MODE_BIND)
protoByte |= MULTI_SEND_BIND;
else if (moduleSettings[port].mode == MODULE_RANGECHECK)
else if (moduleSettings[port].mode == MODULE_MODE_RANGECHECK)
protoByte |= MULTI_SEND_RANGECHECK;
// rfProtocol
if (g_model.moduleData[port].getMultiProtocol(true) == MM_RF_PROTO_DSM2) {
// Autobinding should always be done in DSMX 11ms
if (g_model.moduleData[port].multi.autoBindMode && moduleSettings[port].mode == MODULE_BIND)
if (g_model.moduleData[port].multi.autoBindMode && moduleSettings[port].mode == MODULE_MODE_BIND)
subtype = MM_RF_DSM2_SUBTYPE_AUTO;
// Multi module in DSM mode wants the number of channels to be used as option value
+1
View File
@@ -202,6 +202,7 @@ void setupPulsesPPMTrainer();
void sendByteDsm2(uint8_t b);
void putDsm2Flush();
void putDsm2SerialBit(uint8_t bit);
void sendByteSbus(uint8_t b);
#if defined(HUBSAN)
void Hubsan_Init();
+4 -4
View File
@@ -173,14 +173,14 @@ const SpektrumSensor spektrumSensors[] = {
{I2C_CELLS, 8, uint16, ZSTR_CELLS, UNIT_VOLTS, 2},
{I2C_CELLS, 10, uint16, ZSTR_CELLS, UNIT_VOLTS, 2},
{I2C_CELLS, 12, uint16, ZSTR_TEMP2, UNIT_CELSIUS, 2},
// Vario-S
{0x40, 0, int16, ZSTR_ALT, UNIT_METERS, 1},
{0x40, 2, int16, ZSTR_VSPD, UNIT_METERS_PER_SECOND, 1},
// 0x50-0x56 custom 3rd party sensors
//{0x50, 0, int16, ZSTR_}
// 0x7d are transmitter channels frame data [7], probably only available on the Spektrum
// telemetry bus on the model itself
@@ -333,7 +333,7 @@ void processSpektrumPacket(const uint8_t *packet)
}
telemetryStreaming = TELEMETRY_TIMEOUT10ms;
}
uint16_t pseudoId = (sensor->i2caddress << 8 | sensor->startByte);
setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, value, sensor->unit, sensor->precision);
}
@@ -400,7 +400,7 @@ void processDSMBindPacket(const uint8_t *packet)
setTelemetryValue(TELEM_PROTO_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 4, 0, 0, debugval, UNIT_RAW, 0);
/* Finally stop binding as the rx just told us that it is bound */
if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2 && moduleSettings[EXTERNAL_MODULE].mode == MODULE_BIND) {
if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2 && moduleSettings[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) {
multiBindStatus=MULTI_BIND_FINISHED;
}
}