From 01fcc62e64fab2fdf4df449bda5b4a77c728d3c8 Mon Sep 17 00:00:00 2001 From: "gruvin@gmail.com" Date: Mon, 20 Aug 2012 07:42:31 +0000 Subject: [PATCH] DSM2 Range Check (half) implemented in model SETUP protocol setting. Half -- because I don't yet know how to make warning sounds in this new code. HELP! :P ... otherwise it's working. I have confirmed that the range check bit appears on the scope, while watching the DSM2 data stream. --- src/model_menus.cpp | 14 +++++++++++--- src/pulses_avr.cpp | 7 ++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/model_menus.cpp b/src/model_menus.cpp index b0eff59df..c115b30cd 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -789,13 +789,21 @@ void menuProcModel(uint8_t event) } #if defined(DSM2) || defined(PXX) else if (IS_DSM2_PROTOCOL(protocol) || IS_PXX_PROTOCOL(protocol)) { - if (attr && m_posHorz > 0 && IS_DSM2_PROTOCOL(protocol)) - m_posHorz = 0; + if (attr && m_posHorz > 1 && IS_DSM2_PROTOCOL(protocol)) + m_posHorz = 0; // limit 3 column row to 2 colums for DSM2 protocol (Rx_Num and RANGE fields) lcd_putsLeft(y, STR_RXNUM); lcd_outdezNAtt(MODEL_PARAM_OFS-(IS_DSM2_PROTOCOL(protocol) ? 0 : 3*FW), y, g_model.modelId, ((attr && m_posHorz==0) ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0) | LEADING0|LEFT, 2); - if (attr && (IS_DSM2_PROTOCOL(protocol) || (m_posHorz==0 && (s_editMode>0 || p1valdiff)))) + if (IS_DSM2_PROTOCOL(protocol)) { // RANGE CHECK + lcd_putsnAtt(MODEL_PARAM_OFS+4*FW, y, PSTR(" RANGE0) + s_rangecheck_mode = true; + else + s_rangecheck_mode = false; + } + + if (attr && (m_posHorz==0 && (s_editMode>0 || p1valdiff))) CHECK_INCDEC_MODELVAR(event, g_model.modelId, 0, 99); #if defined(PXX) diff --git a/src/pulses_avr.cpp b/src/pulses_avr.cpp index 671cf3eea..ea853bcef 100644 --- a/src/pulses_avr.cpp +++ b/src/pulses_avr.cpp @@ -419,6 +419,7 @@ normal: */ bool s_bind_mode = false; // Issue 98 +bool s_rangecheck_mode = false; uint8_t s_bind_allowed = 255; // Issue 98 FORCEINLINE void setupPulsesDsm2() @@ -430,7 +431,11 @@ FORCEINLINE void setupPulsesDsm2() s_bind_mode = true; *ptr++ = BIND_BIT; } - else + else if (s_rangecheck_mode) + { + *ptr++ = RANGECHECK_BIT; + } + else { s_bind_mode = false; *ptr++ = 0x00;