From a11dbdf2cb84a1fa7f01a4c575f678033a00e7f3 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 26 Mar 2019 16:11:00 +0100 Subject: [PATCH] Simplification --- radio/src/gui/128x64/radio_version.cpp | 12 ++++++------ radio/src/opentx.h | 10 ++-------- radio/src/pulses/pxx2.h | 17 +++++++++++------ radio/src/telemetry/frsky_pxx2.cpp | 16 ++++------------ 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/radio/src/gui/128x64/radio_version.cpp b/radio/src/gui/128x64/radio_version.cpp index 74a846df1..d56256787 100644 --- a/radio/src/gui/128x64/radio_version.cpp +++ b/radio/src/gui/128x64/radio_version.cpp @@ -143,7 +143,7 @@ void menuRadioModulesVersion(event_t event) // Module model if (y >= MENU_BODY_TOP && y < MENU_BODY_BOTTOM) { lcdDrawText(INDENT_WIDTH, y, "Model"); - uint8_t modelId = reusableBuffer.hardware.modules[module].modelID; + uint8_t modelId = reusableBuffer.hardware.modules[module].information.modelID; if (modelId >= DIM(modulesModels)) modelId = 0; lcdDrawText(12 * FW, y, modulesModels[modelId]); @@ -153,19 +153,19 @@ void menuRadioModulesVersion(event_t event) // Module version if (y >= MENU_BODY_TOP && y < MENU_BODY_BOTTOM) { lcdDrawText(INDENT_WIDTH, y, "Version"); - if (reusableBuffer.hardware.modules[module].hwVersion.data) { - drawPXX2FullVersion(12 * FW, y, reusableBuffer.hardware.modules[module].hwVersion, reusableBuffer.hardware.modules[module].swVersion); + if (reusableBuffer.hardware.modules[module].information.modelID) { + drawPXX2FullVersion(12 * FW, y, reusableBuffer.hardware.modules[module].information.hwVersion, reusableBuffer.hardware.modules[module].information.swVersion); } } y += FH; for (uint8_t receiver=0; receiver= MENU_BODY_TOP && y < MENU_BODY_BOTTOM) { lcdDrawText(INDENT_WIDTH, y, "Receiver"); lcdDrawNumber(lcdLastRightPos + 2, y, receiver + 1); - uint8_t modelId = reusableBuffer.hardware.modules[module].receivers[receiver].modelID; + uint8_t modelId = reusableBuffer.hardware.modules[module].receivers[receiver].information.modelID; if (modelId >= DIM(receiversModels)) modelId = 0; lcdDrawText(12 * FW, y, receiversModels[modelId]); @@ -174,7 +174,7 @@ void menuRadioModulesVersion(event_t event) // Receiver version if (y >= MENU_BODY_TOP && y < MENU_BODY_BOTTOM) { - drawPXX2FullVersion(12 * FW, y, reusableBuffer.hardware.modules[module].receivers[receiver].hwVersion, reusableBuffer.hardware.modules[module].receivers[receiver].swVersion); + drawPXX2FullVersion(12 * FW, y, reusableBuffer.hardware.modules[module].receivers[receiver].information.hwVersion, reusableBuffer.hardware.modules[module].receivers[receiver].information.swVersion); } y += FH; } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 3a980cd14..cf5beb6ff 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1190,15 +1190,9 @@ union ReusableBuffer struct { int8_t step; uint8_t timeout; - uint8_t modelID; - PXX2Version hwVersion; - PXX2Version swVersion; - uint8_t variant; + PXX2HardwareInformation information; struct { - uint8_t modelID; - PXX2Version hwVersion; - PXX2Version swVersion; - uint8_t variant; + PXX2HardwareInformation information; } receivers[PXX2_MAX_RECEIVERS_PER_MODULE]; } modules[NUM_MODULES]; uint32_t updateTime; diff --git a/radio/src/pulses/pxx2.h b/radio/src/pulses/pxx2.h index 627233d2f..de1580d8f 100644 --- a/radio/src/pulses/pxx2.h +++ b/radio/src/pulses/pxx2.h @@ -203,12 +203,17 @@ class Pxx2Pulses: public PxxPulses { union PXX2Version { - uint16_t data; - struct { - uint8_t major; - uint8_t minor:4; - uint8_t revision:4; - }; + uint8_t major; + uint8_t minor:4; + uint8_t revision:4; +}; + +struct PXX2HardwareInformation +{ + uint8_t modelID; + PXX2Version hwVersion; + PXX2Version swVersion; + uint8_t variant; }; #endif diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index 3f543e669..49006d909 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -50,18 +50,10 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame) } uint8_t index = frame[3]; - if (index == 0xFF) { - reusableBuffer.hardware.modules[module].modelID = frame[4]; - reusableBuffer.hardware.modules[module].hwVersion.data = *((uint16_t *)&frame[5]); - reusableBuffer.hardware.modules[module].swVersion.data = *((uint16_t *)&frame[7]); - reusableBuffer.hardware.modules[module].variant = frame[9]; - } - else if (index < PXX2_MAX_RECEIVERS_PER_MODULE) { - reusableBuffer.hardware.modules[module].receivers[index].modelID = frame[4]; - reusableBuffer.hardware.modules[module].receivers[index].hwVersion.data = *((uint16_t *)&frame[5]); - reusableBuffer.hardware.modules[module].receivers[index].swVersion.data = *((uint16_t *)&frame[7]); - reusableBuffer.hardware.modules[module].receivers[index].variant = frame[9]; - } + if (index == 0xFF) + memcpy(&reusableBuffer.hardware.modules[module].information, &frame[4], sizeof(PXX2HardwareInformation)); + else if (index < PXX2_MAX_RECEIVERS_PER_MODULE) + memcpy(&reusableBuffer.hardware.modules[module].receivers[index].information, &frame[4], sizeof(PXX2HardwareInformation)); } void processModuleSettingsFrame(uint8_t module, uint8_t * frame)