Reorganize module type/subType/rfProtocol

This commit is contained in:
Raphael Coeffic
2022-03-24 10:40:17 +01:00
committed by Raphael Coeffic
parent 049f337665
commit 86d1ca4364
38 changed files with 163 additions and 275 deletions
+6 -49
View File
@@ -65,49 +65,6 @@ etx_serial_init multiSerialInitParams = {
};
#endif
void multiPatchCustom(uint8_t moduleIdx)
{
if (g_model.moduleData[moduleIdx].multi.customProto) {
uint8_t type = g_model.moduleData[moduleIdx].getMultiProtocol() - 1; // custom where starting at 1, etx list at 0
int subtype = g_model.moduleData[moduleIdx].subType;
g_model.moduleData[moduleIdx].multi.customProto = 0;
if (type == 2) { // multi PROTO_FRSKYD
g_model.moduleData[moduleIdx].subType = 1; // D8
return;
}
else if (type == 14) { // multi PROTO_FRSKYX
g_model.moduleData[moduleIdx].setMultiProtocol(2);
switch (subtype) {
case 0: //D16-16
g_model.moduleData[moduleIdx].subType = 0;
break;
case 1: //D16-8
g_model.moduleData[moduleIdx].subType = 2;
break;
case 2: //EU-16
g_model.moduleData[moduleIdx].subType = 4;
break;
case 3: //EU-8
g_model.moduleData[moduleIdx].subType = 5;
break;
}
return;
}
else if (type == 24) { // multi PROTO_FRSKYV
g_model.moduleData[moduleIdx].setMultiProtocol(2);
g_model.moduleData[moduleIdx].subType = 3;
return;
}
if (type > 14)
type -= 1;
if (type > 24)
type -= 1;
g_model.moduleData[moduleIdx].setMultiProtocol(type);
}
}
static void sendMulti(uint8_t moduleIdx, uint8_t b)
{
#if defined(HARDWARE_INTERNAL_MODULE)
@@ -201,7 +158,7 @@ void setupPulsesMulti(uint8_t moduleIdx)
sendMulti(moduleIdx, invert[moduleIdx] & 0x08);
}
else {
sendMulti(moduleIdx, (uint8_t) (((g_model.moduleData[moduleIdx].getMultiProtocol() + 3) & 0xC0)
sendMulti(moduleIdx, (uint8_t) (((g_model.moduleData[moduleIdx].multi.rfProtocol + 3) & 0xC0)
| (g_model.header.modelId[moduleIdx] & 0x30)
| (invert[moduleIdx] & 0x08)
//| 0x04 // Future use
@@ -430,7 +387,7 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe)
{// byte 1+2, protocol information
// Our enumeration starts at 0
int type = g_model.moduleData[moduleIdx].getMultiProtocol() + 1;
int type = g_model.moduleData[moduleIdx].multi.rfProtocol + 1;
int subtype = g_model.moduleData[moduleIdx].subType;
int8_t optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
@@ -481,12 +438,12 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe)
// Set the highest bit of option byte in AFHDS2A protocol to instruct MULTI to passthrough telemetry bytes instead
// of sending Frsky D telemetry
if (g_model.moduleData[moduleIdx].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FS_AFHDS2A)
if (g_model.moduleData[moduleIdx].multi.rfProtocol == MODULE_SUBTYPE_MULTI_FS_AFHDS2A)
optionValue = optionValue | 0x80;
// For custom protocol send unmodified type byte
if (g_model.moduleData[moduleIdx].getMultiProtocol() == MM_RF_CUSTOM_SELECTED)
type = g_model.moduleData[moduleIdx].getMultiProtocol();
if (g_model.moduleData[moduleIdx].multi.rfProtocol == MM_RF_CUSTOM_SELECTED)
type = g_model.moduleData[moduleIdx].multi.rfProtocol;
uint8_t headerByte = 0x55;
// header, byte 0, 0x55 for proto 0-31, 0x54 for proto 32-63
@@ -500,7 +457,7 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe)
// protocol byte
protoByte |= (type & 0x1f);
if (g_model.moduleData[moduleIdx].getMultiProtocol() != MODULE_SUBTYPE_MULTI_DSM2)
if (g_model.moduleData[moduleIdx].multi.rfProtocol != MODULE_SUBTYPE_MULTI_DSM2)
protoByte |= (g_model.moduleData[moduleIdx].multi.autoBindMode << 6);
sendMulti(moduleIdx, protoByte);