1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 17:55:19 +03:00

D16 bind option (#7218)

D16  bind option, and several fixes that give MULTI live data priority vs OpenTX stored multi definitions

Co-authored-by: pascallanger <pascal_langer@yahoo.fr>
This commit is contained in:
3djc 2019-12-27 09:42:13 +01:00 committed by GitHub
parent 2f793eba32
commit ea11335273
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 97 additions and 63 deletions

View file

@ -38,6 +38,7 @@
static void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe);
void sendChannels(uint8_t moduleIdx);
static void sendD16BindOption(uint8_t moduleIdx);
#if defined(LUA)
static void sendSport(uint8_t moduleIdx);
static void sendHott(uint8_t moduleIdx);
@ -174,10 +175,13 @@ void setupPulsesMulti(uint8_t moduleIdx)
| g_model.moduleData[moduleIdx].multi.disableMapping));
// Multi V1.3.X.X -> Send protocol additional data: max 9 bytes
#if defined(LUA)
if (getMultiModuleStatus(moduleIdx).isValid()) {
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
if (status.minor >= 3 && !(status.flags & 0x80)) { //Version 1.3.x.x or more and Buffer not full
if (IS_D16_MULTI(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_BIND) {
sendD16BindOption(moduleIdx);//1 byte of additional data
}
#if defined(LUA)
// SPort send
if (IS_D16_MULTI(moduleIdx) && outputTelemetryBuffer.destination == TELEMETRY_ENDPOINT_SPORT && outputTelemetryBuffer.size) {
sendSport(moduleIdx); //8 bytes of additional data
@ -185,9 +189,9 @@ void setupPulsesMulti(uint8_t moduleIdx)
else if (IS_HOTT_MULTI(moduleIdx)) {
sendHott(moduleIdx); //1 byte of additional data
}
#endif
}
}
#endif
}
void setupPulsesMultiExternalModule()
@ -345,6 +349,13 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe)
sendMulti(moduleIdx, (uint8_t) optionValue);
}
void sendD16BindOption(uint8_t moduleIdx)
{
uint8_t bind_opt = g_model.moduleData[moduleIdx].multi.receiverTelemetryOff ? 1 : 0;
bind_opt |= g_model.moduleData[moduleIdx].multi.receiverHigherChannels ? 2 : 0;
sendMulti(moduleIdx, bind_opt);
}
#if defined(LUA)
void sendSport(uint8_t moduleIdx)
{