diff options
author | Oxore <oxore@protonmail.com> | 2023-03-03 00:02:25 +0300 |
---|---|---|
committer | Oxore <oxore@protonmail.com> | 2023-03-03 00:24:54 +0300 |
commit | 2a260911f5abc4e03cb41474a49e01a571395155 (patch) | |
tree | a2342b619430d52c06cc90f37ad19b1eba3b7a10 /Libraries/Button | |
parent | d16620e6ba7467e9ef99bf61336ccd8fb4dfd813 (diff) |
Remove precious comments, change encoding to utf-8
Diffstat (limited to 'Libraries/Button')
-rw-r--r-- | Libraries/Button/button_handler.c | 153 | ||||
-rw-r--r-- | Libraries/Button/button_handler.h | 5 | ||||
-rw-r--r-- | Libraries/Button/button_task.c | 87 |
3 files changed, 77 insertions, 168 deletions
diff --git a/Libraries/Button/button_handler.c b/Libraries/Button/button_handler.c index 8df1e6b..7c3ea91 100644 --- a/Libraries/Button/button_handler.c +++ b/Libraries/Button/button_handler.c @@ -3,48 +3,39 @@ #include "nixie_driver_process.h" -// FreeRTOS includes +// FreeRTOS includes #include "FreeRTOS.h" #include "task.h" #include "queue.h" -// Обработчик нажатий представляет собой конечный автомат для обработки -// результата работы сенсорной библиотеки, обработки комбинаций и времени -// нажатий и выдачи результата во внешнюю программу +// Обработчик нажатий представляет СЃРѕР±РѕР№ конечный автомат для обработки +// результата работы сенсорной библиотеки, обработки комбинаций Рё времени +// нажатий Рё выдачи результата РІРѕ внешнюю программу -#define TIME_BUTTON_LONG_PRESS 1000 // 3 секунды для долгого жмака +#define TIME_BUTTON_LONG_PRESS 1000 // 3 секунды для долгого жмака -// Состояние конечного автомата обработчика нажатий +// Состояние конечного автомата обработчика нажатий typedef enum { - BUTTON_STATE_START = 0, BUTTON_STATE_ONE_BUT_IS_PRESSING_NOW, BUTTON_STATE_TWO_BUTS_AND_TIMER, BUTTON_STATE_TWO_BUTS_AFTER_TIMER - } Button_FSMStates_t; -// Комбнации нажатостей кнопушек (нажата одна, зажаты две и тд.) +// Комбнации нажатостей кнопушек (нажата РѕРґРЅР°, зажаты РґРІРµ Рё тд.) enum { - BUT_COMB_NONE = 0, BUT_COMB_BUT1 = 1, BUT_COMB_BUT2 = 2, BUT_COMB_BOTH = 3 - } ; - -//extern const uint8_t tube_digits [MAX_DIGITS]; -//static uint8_t test_button_bufer[MAX_TUBES] = {TUBE_DIGIT_0}; -//static uint8_t cnt [6] = {0}; - QueueHandle_t queue_but_comb; -// - сделать в обработчике вывода индикации ламп на нижнем уровне, -// чтобы ты отправлял цифру на индикатор, а он сам уже преобразовывал +// - сделать РІ обработчике вывода индикации ламп РЅР° нижнем СѓСЂРѕРІРЅРµ, +// чтобы ты отправлял цифру РЅР° индикатор, Р° РѕРЅ сам СѓР¶Рµ преобразовывал // ---------------------------------------------------------------------------- @@ -58,155 +49,132 @@ void ButtonInit ( void ) // ---------------------------------------------------------------------------- -// Конечный автомат-обработчик нажатий кнопушек +// Конечный автомат-обработчик нажатий кнопушек // Note: -// Антидребезг в данном автомате не нужен, т.к. обработчик сенсорной библиотеки -// уже все сделал (а вот не сделал, возможно от микродребезга есть защита, -// а вот от крупного дребезга нет защиты) +// Антидребезг РІ данном автомате РЅРµ нужен, С‚.Рє. обработчик сенсорной библиотеки +// СѓР¶Рµ РІСЃРµ сделал (Р° РІРѕС‚ РЅРµ сделал, РІРѕР·РјРѕР¶РЅРѕ РѕС‚ микродребезга есть защита, +// Р° РІРѕС‚ РѕС‚ РєСЂСѓРїРЅРѕРіРѕ дребезга нет защиты) // ---------------------------------------------------------------------------- void Button_ProcessFSM ( void ) { static Button_FSMStates_t state_fsm_button = BUTTON_STATE_START; static uint8_t still_pushed = 0; - + static uint8_t prev_button_comb; static uint8_t curr_button_comb; static ButtonCombName_t msg_but_comb_name; - + switch ( state_fsm_button ) { // ------------------------------------------------------------------------- case BUTTON_STATE_START: - + curr_button_comb = Button_GetCurrButtons(); - + if ( curr_button_comb != BUT_COMB_NONE ) { prev_button_comb = curr_button_comb; state_fsm_button = BUTTON_STATE_ONE_BUT_IS_PRESSING_NOW; still_pushed = 0; } - + break; // ------------------------------------------------------------------------- case BUTTON_STATE_ONE_BUT_IS_PRESSING_NOW: - // - 1 отпустили - // - 2 нажали вторую - // - 3 вторая кнопка, но такого не должно быть(ошибка) - + // - 1 отпустили + // - 2 нажали вторую + // - 3 вторая РєРЅРѕРїРєР°, РЅРѕ такого РЅРµ должно быть(ошибка) + curr_button_comb = Button_GetCurrButtons(); - - // Сначала проверим, вдруг кнопушку отпустили + + // Сначала проверим, РІРґСЂСѓРі кнопушку отпустили if ( (curr_button_comb == BUT_COMB_NONE) && (still_pushed == 0) ) { - // - сообщ.: "Одиночный обратный жмак" - + // - СЃРѕРѕР±С‰.: "Одиночный обратный жмак" + switch ( prev_button_comb ) { case BUT_COMB_BUT1: - -// test_button_bufer[0] == TUBE_DIGIT_9 ? cnt[0] = 0 : cnt[0]++; -// test_button_bufer[0] = tube_digits [cnt[0]]; -// NixieDriver_SendValue ( &test_button_bufer[0] ); xQueueReceive ( queue_but_comb, &msg_but_comb_name, 0 ); msg_but_comb_name = BUTTON_SINGLE_FORWARD; xQueueSend ( queue_but_comb, &msg_but_comb_name, 0 ); - break; case BUT_COMB_BUT2: -// test_button_bufer[1] == TUBE_DIGIT_9 ? cnt[1] = 0 : cnt[1]++; -// test_button_bufer[1] = tube_digits [cnt[1]]; -// NixieDriver_SendValue ( &test_button_bufer[0] ); xQueueReceive ( queue_but_comb, &msg_but_comb_name, 0 ); msg_but_comb_name = BUTTON_SINGLE_BACKWARD; xQueueSend ( queue_but_comb, &msg_but_comb_name, 0 ); - break; - default: break; } - + state_fsm_button = BUTTON_STATE_START; - + return; } - + if ( (curr_button_comb == BUT_COMB_NONE) && (still_pushed == 1) ) { state_fsm_button = BUTTON_STATE_START; return; } - + switch ( prev_button_comb ) { case BUT_COMB_BUT1: - + if ( curr_button_comb == BUT_COMB_BOTH ) { - // - тогда сообщ.: "Зажатый прямой жмак вперед" -// test_button_bufer[2] == TUBE_DIGIT_9 ? cnt[2] = 0 : cnt[2]++; -// test_button_bufer[2] = tube_digits [cnt[2]]; -// -// NixieDriver_SendValue ( &test_button_bufer[0] ); + // - тогда СЃРѕРѕР±С‰.: "Зажатый РїСЂСЏРјРѕР№ жмак вперед" xQueueReceive ( queue_but_comb, &msg_but_comb_name, 0 ); //msg_but_comb_name = BUTTON_HOLD_FORWARD; msg_but_comb_name = BUTTON_HOLD_BACKWARD; xQueueSend ( queue_but_comb, &msg_but_comb_name, 0 ); - StartLTimer ( LTIMER_BUTTON_LONG_PRESS ); state_fsm_button = BUTTON_STATE_TWO_BUTS_AND_TIMER; still_pushed = 1; } - + break; - + case BUT_COMB_BUT2: - + if ( curr_button_comb == BUT_COMB_BOTH ) { - // - тогда сообщ.: "Зажатый прямой жмак назад" -// test_button_bufer[3] == TUBE_DIGIT_9 ? cnt[3] = 0 : cnt[3]++; -// test_button_bufer[3] = tube_digits [cnt[3]]; -// -// NixieDriver_SendValue ( &test_button_bufer[0] ); + // - тогда СЃРѕРѕР±С‰.: "Зажатый РїСЂСЏРјРѕР№ жмак назад" xQueueReceive ( queue_but_comb, &msg_but_comb_name, 0 ); //msg_but_comb_name = BUTTON_HOLD_BACKWARD; msg_but_comb_name = BUTTON_HOLD_FORWARD; xQueueSend ( queue_but_comb, &msg_but_comb_name, 0 ); - + StartLTimer ( LTIMER_BUTTON_LONG_PRESS ); state_fsm_button = BUTTON_STATE_TWO_BUTS_AND_TIMER; still_pushed = 1; } - + break; - + default: state_fsm_button = BUTTON_STATE_START; break; } - + break; - + // ------------------------------------------------------------------------- case BUTTON_STATE_TWO_BUTS_AND_TIMER: - + curr_button_comb = Button_GetCurrButtons(); - + if ( curr_button_comb == BUT_COMB_BOTH ) { - if ( GetLTimer (LTIMER_BUTTON_LONG_PRESS) == TIME_BUTTON_LONG_PRESS ) + if ( GetLTimer (LTIMER_BUTTON_LONG_PRESS) == TIME_BUTTON_LONG_PRESS ) { - // - сообщ.: "Две долго" -// test_button_bufer[4] == TUBE_DIGIT_9 ? cnt[4] = 0 : cnt[4]++; -// test_button_bufer[4] = tube_digits [cnt[4]]; -// -// NixieDriver_SendValue ( &test_button_bufer[0] ); + // - СЃРѕРѕР±С‰.: "Две долго" xQueueReceive ( queue_but_comb, &msg_but_comb_name, 0 ); msg_but_comb_name = BUTTON_LONG; xQueueSend ( queue_but_comb, &msg_but_comb_name, 0 ); - + state_fsm_button = BUTTON_STATE_TWO_BUTS_AFTER_TIMER; } } @@ -215,14 +183,14 @@ void Button_ProcessFSM ( void ) prev_button_comb = curr_button_comb; state_fsm_button = BUTTON_STATE_ONE_BUT_IS_PRESSING_NOW; } - + break; - - // ------------------------------------------------------------------------- + + // ------------------------------------------------------------------------- case BUTTON_STATE_TWO_BUTS_AFTER_TIMER: - + curr_button_comb = Button_GetCurrButtons(); - + if ( curr_button_comb == BUT_COMB_NONE ) { state_fsm_button = BUTTON_STATE_START; @@ -232,23 +200,10 @@ void Button_ProcessFSM ( void ) prev_button_comb = curr_button_comb; state_fsm_button = BUTTON_STATE_ONE_BUT_IS_PRESSING_NOW; } - + break; - + default: - break; + break; } } - - - - - - - - - - - - - diff --git a/Libraries/Button/button_handler.h b/Libraries/Button/button_handler.h index 76b21d1..86118fa 100644 --- a/Libraries/Button/button_handler.h +++ b/Libraries/Button/button_handler.h @@ -3,19 +3,16 @@ #include <stdint.h> - typedef enum { - BUTTON_SINGLE_FORWARD, BUTTON_SINGLE_BACKWARD, BUTTON_HOLD_FORWARD, BUTTON_HOLD_BACKWARD, BUTTON_LONG - } ButtonCombName_t; void ButtonInit ( void ); uint8_t Button_GetCurrButtons ( void ); void Button_ProcessFSM ( void ); -#endif //BUTTON_HANDLER_INCLUDED
\ No newline at end of file +#endif //BUTTON_HANDLER_INCLUDED diff --git a/Libraries/Button/button_task.c b/Libraries/Button/button_task.c index 4a06a3b..3446fb4 100644 --- a/Libraries/Button/button_task.c +++ b/Libraries/Button/button_task.c @@ -5,19 +5,11 @@ #include "button_handler.h" #include "ltimers.h" -// FreeRTOS includes #include "FreeRTOS.h" #include "task.h" #include "queue.h" #include "semphr.h" - -// Номера сенсорных кнопушек -//enum { -// TKEY_NUM_1 = 0, -// TKEY_NUM_2 -//}; - #define TKEY_NUM_1 0 #define TKEY_NUM_2 1 @@ -35,9 +27,7 @@ uint8_t DS[TSLPRM_TOTAL_TKEYS + TSLPRM_TOTAL_LNRTS]; // To store the States (one per object) int16_t DD[TSLPRM_TOTAL_TKEYS + (TSLPRM_TOTAL_LNRTS * 3)]; // To store the Deltas (one per channel) -//static uint8_t touch_tube_bufer [MAX_TUBES] = {0}; - -// Битовая переменная, в которой будут устанавливаться соответствующие +// Битовая переменная, в которой будут устанавливаться соответствующие // номерам нажатых кнопушек биты static volatile uint8_t tkey_buttons_bits = 0; @@ -63,9 +53,9 @@ void ProcessFSM_ButtonTask ( void ) { /* Execute STMTouch Driver state machine */ if (TSL_user_Action () == TSL_STATUS_OK) - { + { ProcessSensors (); // Execute sensors related tasks - + // Обработчик нажатий кнопушек (автомат) //Button_ProcessFSM (); } @@ -82,25 +72,19 @@ void ProcessFSM_ButtonTask ( void ) static void ProcessSensors ( void ) { uint32_t idx; - //uint32_t idxch; uint32_t idx_ds = 0; uint32_t idx_dd = 0; - //uint32_t touched = 0; -#if USE_LCD > 0 +#if USE_LCD > 0 static uint32_t started = 0; #endif -#if TSLPRM_TOTAL_TKEYS > 0 +#if TSLPRM_TOTAL_TKEYS > 0 // Read all TKeys for (idx = 0; idx < TSLPRM_TOTAL_TKEYS; idx++) { // STMStudio debug - DS[idx_ds++] = MyTKeys[idx].p_Data->StateId; + DS[idx_ds++] = MyTKeys[idx].p_Data->StateId; DD[idx_dd++] = MyTKeys[idx].p_ChD->Delta; -// if (TEST_TKEY(idx)) -// { -// touched = 1; -// } } #endif @@ -115,39 +99,15 @@ static void ProcessSensors ( void ) { DD[idx_dd++] = MyLinRots[idx].p_ChD[idxch].Delta; } -// if (TEST_LINROT(idx)) -// { -// touched = 1; -// } } #endif - + // Сделаем обработчик антидребезга (вроде он есть в библе сенсорных кнопок, // но GROUP5 почему-то сильно дергается) TkeyDebounce(); // Тут можно поменять кнопки местами - - // if (TEST_TKEY(TKEY_NUM_2)) - // { - // tkey_buttons_bits |= 1 << TKEY_NUM_1; - // } - // else - // { - // tkey_buttons_bits &= ~(1 << TKEY_NUM_1); - // } - - // if (TEST_TKEY(TKEY_NUM_1)) - // { - // tkey_buttons_bits |= 1 << TKEY_NUM_2; - - // } - // else - // { - // tkey_buttons_bits &= ~(1 << TKEY_NUM_2); - // } - } /** @@ -182,7 +142,6 @@ void TSL_CallBack_TimerTick(void) void MyTKeys_ErrorStateProcess(void) { /* Add here your own processing when a sensor is in Error state */ - //TSL_linrot_SetStateOff(); TSL_tkey_SetStateOff (); while(1) { @@ -193,7 +152,6 @@ void MyLinRots_ErrorStateProcess(void) { /* Add here your own processing when a sensor is in Error state */ TSL_linrot_SetStateOff(); - //TSL_tkey_SetStateOff (); while(1) { } @@ -203,7 +161,7 @@ void MyLinRots_ErrorStateProcess(void) // ---------------------------------------------------------------------------- // Ф-я антидребезга для сенсорных кнопок // ---------------------------------------------------------------------------- -void TkeyDebounce ( void ) +void TkeyDebounce ( void ) { static uint8_t tkey_db_state = 1; static uint8_t tkey_code = 0; @@ -211,16 +169,16 @@ void TkeyDebounce ( void ) if (TEST_TKEY(TKEY_NUM_2)) { - tkey_code |= 1 << TKEY_NUM_1; + tkey_code |= 1 << TKEY_NUM_1; } else { tkey_code &= ~(1 << TKEY_NUM_1); } - + if (TEST_TKEY(TKEY_NUM_1)) { - tkey_code |= 1 << TKEY_NUM_2; + tkey_code |= 1 << TKEY_NUM_2; } else { @@ -240,20 +198,20 @@ void TkeyDebounce ( void ) case 2: if( GetLTimer( LTIMER_SENSOR_BUT_DEBOUNCE ) >= TIME_SENSOR_BUT_DEBOUNCE ) - { + { tkey_db_state = 3; - } - break; + } + break; case 3: - if( _tkey_code == tkey_code ) - { - tkey_db_state = 1; + if( _tkey_code == tkey_code ) + { + tkey_db_state = 1; tkey_buttons_bits = _tkey_code; - - } - else { tkey_db_state = 1; } - break; + + } + else { tkey_db_state = 1; } + break; default: break; @@ -268,5 +226,4 @@ void TkeyDebounce ( void ) void Button_Task ( void *pvParameters ) { while(1)ProcessFSM_ButtonTask (); - //vTaskDelete(NULL); -}
\ No newline at end of file +} |