sm1000_main: Wait for BACK button release after menu exit.
authorsjlongland <sjlongland@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 25 Sep 2015 21:26:43 +0000 (21:26 +0000)
committersjlongland <sjlongland@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 25 Sep 2015 21:26:43 +0000 (21:26 +0000)
Otherwise we inadvertantly switch modes unexpectedly.

git-svn-id: https://svn.code.sf.net/p/freetel/code@2382 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/stm32/src/sm1000_main.c

index d09c563dc8a245d072a741c97d408a19fc954678..fbe7207e28114555bfb8e7573528b2c5a82a0d22 100644 (file)
@@ -61,6 +61,7 @@ struct switch_t sw_ptt;     /*!< Switch driver for PTT buttons */
 unsigned int announceTicker = 0;
 unsigned int menuLEDTicker = 0;
 unsigned int menuTicker = 0;
+unsigned int menuExit = 0;
 
 /*!
  * User preferences
@@ -190,12 +191,17 @@ int main(void) {
                         menuTicker = 0;
                         led_pwr(LED_ON);
                         morse_play(&morse_player, NULL);
+                        menuExit = 1;
                     }
                 }
             } else {
                 uint8_t mode_changed = 0;
 
-                if (switch_pressed(&sw_select) > HOLD_DELAY) {
+                if (menuExit) {
+                    /* We've just exited a menu, wait for release of BACK */
+                    if (switch_released(&sw_back))
+                        menuExit = 0;
+                } else if (switch_pressed(&sw_select) > HOLD_DELAY) {
                     /* Enter the menu */
                     menu_enter(&menu, &menu_root);
                     menuTicker = MENU_DELAY;