From 45ef68b74d3f7075ab354e82e3b279dba55eda0e Mon Sep 17 00:00:00 2001 From: bartool Date: Sat, 1 Apr 2023 23:23:14 +0200 Subject: [PATCH] [wip] added amplitude helper --- firmware/shared_libs/controllers/ctrl_app.c | 54 ++++++++-------- .../controllers/ctrl_channel_button.c | 6 +- .../controllers/ctrl_channel_button.h | 3 +- .../shared_libs/disp_layout/disp_layout.c | 64 +++++++++---------- 4 files changed, 66 insertions(+), 61 deletions(-) diff --git a/firmware/shared_libs/controllers/ctrl_app.c b/firmware/shared_libs/controllers/ctrl_app.c index d748aec..49a8fbc 100644 --- a/firmware/shared_libs/controllers/ctrl_app.c +++ b/firmware/shared_libs/controllers/ctrl_app.c @@ -232,6 +232,24 @@ static void _moveToRighttFocusFreqNumber(void) } static void _setTo0_01xFocusNumber(void) +{ + switch (_app_data->curr_state_lay) + { + case LAY_AMPL: + _app_data->ampl_focus_digit = 0; + break; + case LAY_OFFS: + _app_data->offs_focus_digit = 0; + break; + default: + break; + } + + _app_data->timer_blink[last_key] = 2; + _app_data->isButtonBlink |= (1 << last_key); + _app_data->isValueChange = 1; +} +static void _setTo0_1xFocusNumber(void) { switch (_app_data->curr_state_lay) { @@ -247,39 +265,23 @@ static void _setTo0_01xFocusNumber(void) _app_data->timer_blink[last_key] = 2; _app_data->isButtonBlink |= (1 << last_key); -} -static void _setTo0_1xFocusNumber(void) -{ - switch (_app_data->curr_state_lay) - { - case LAY_AMPL: - _app_data->ampl_focus_digit = 10; - break; - case LAY_OFFS: - _app_data->offs_focus_digit = 10; - break; - default: - break; - } - - _app_data->timer_blink[last_key] = 2; - _app_data->isButtonBlink |= (1 << last_key); + _app_data->isValueChange = 1; } static void _setTo1xFocusNumber(void) { switch (_app_data->curr_state_lay) { case LAY_AMPL: - _app_data->ampl_focus_digit = 10; + _app_data->ampl_focus_digit = 2; break; case LAY_OFFS: - _app_data->offs_focus_digit = 10; + _app_data->offs_focus_digit = 2; break; case LAY_PHAS: - _app_data->offs_focus_digit = 1; + _app_data->offs_focus_digit = 0; break; case LAY_DUTY: - _app_data->offs_focus_digit = 1; + _app_data->offs_focus_digit = 0; break; default: break; @@ -287,22 +289,23 @@ static void _setTo1xFocusNumber(void) _app_data->timer_blink[last_key] = 2; _app_data->isButtonBlink |= (1 << last_key); + _app_data->isValueChange = 1; } static void _setTo10xFocusNumber(void) { switch (_app_data->curr_state_lay) { case LAY_AMPL: - _app_data->ampl_focus_digit = 100; + _app_data->ampl_focus_digit = 3; break; case LAY_OFFS: - _app_data->offs_focus_digit = 100; + _app_data->offs_focus_digit = 3; break; case LAY_PHAS: - _app_data->offs_focus_digit = 10; + _app_data->offs_focus_digit = 1; break; case LAY_DUTY: - _app_data->offs_focus_digit = 10; + _app_data->offs_focus_digit = 1; break; default: break; @@ -310,6 +313,7 @@ static void _setTo10xFocusNumber(void) _app_data->timer_blink[last_key] = 2; _app_data->isButtonBlink |= (1 << last_key); + _app_data->isValueChange = 1; } static const CMD_button_t btn_command[BTN_STATE_MAX][DISP_BTN_MAX] = { diff --git a/firmware/shared_libs/controllers/ctrl_channel_button.c b/firmware/shared_libs/controllers/ctrl_channel_button.c index 6281bec..37a5912 100644 --- a/firmware/shared_libs/controllers/ctrl_channel_button.c +++ b/firmware/shared_libs/controllers/ctrl_channel_button.c @@ -1,6 +1,5 @@ #include "main.h" #include "hw_button.h" -#include "ctrl_button.h" #include "ctrl_channel_button.h" #define DUMMY_GPIO_Port GPIOA @@ -61,4 +60,9 @@ void CTRL_channelButtonsHandler(void) { buttonHandler(&channel_buttons[btn_key]); } +} + +__weak void CTRL_pushedChanBtnEvent(ButtonKey_t *key) +{ + UNUSED(key); } \ No newline at end of file diff --git a/firmware/shared_libs/controllers/ctrl_channel_button.h b/firmware/shared_libs/controllers/ctrl_channel_button.h index a0f5a0b..3cad522 100644 --- a/firmware/shared_libs/controllers/ctrl_channel_button.h +++ b/firmware/shared_libs/controllers/ctrl_channel_button.h @@ -12,4 +12,5 @@ typedef enum } HW_chanBtnName_t; void CTRL_channelButtonInit(void); -void CTRL_channelButtonsHandler(void); \ No newline at end of file +void CTRL_channelButtonsHandler(void); +void CTRL_pushedChanBtnEvent(ButtonKey_t *key); \ No newline at end of file diff --git a/firmware/shared_libs/disp_layout/disp_layout.c b/firmware/shared_libs/disp_layout/disp_layout.c index 8a4d13d..e68d0eb 100644 --- a/firmware/shared_libs/disp_layout/disp_layout.c +++ b/firmware/shared_libs/disp_layout/disp_layout.c @@ -5,8 +5,12 @@ #include "disp_layout.h" +#define FREQ_MAX_DIGIT 7 +#define AMPL_MAX_DIGIT 3 + const uint8_t btn_pos_x[DISP_BTN_MAX] = {0, 26, 52, 78, 104}; -const uint8_t marker_freq_pos_X[7] = {76, 84, 90, 96, 105, 111, 118}; +const uint8_t marker_freq_pos_x[FREQ_MAX_DIGIT] = {76, 84, 90, 96, 105, 111, 118}; +const uint8_t marker_ampl_pos_x[AMPL_MAX_DIGIT] = {82, 94, 100}; // clang-format off const GFX_bitmap_t marker = {05, 03, (uint8_t[]){0xF9,0xFB,0xFF,0xFB,0xF9,}}; @@ -23,36 +27,32 @@ static void _drawFreqValue(GFX_display_t *disp, uint32_t freq, uint8_t pos_y) DISP_writeString(disp, &font5x7Info, (uint8_t[]){data[4], data[5], data[6], 0}, 105, pos_y, BM_NORMAL); } -static void _drawAmplValue(GFX_display_t *disp, uint16_t ampl) +static void _drawAmplValue(GFX_display_t *disp, uint16_t ampl, uint8_t pos_y) { uint8_t data[8]; snprintf((char *)data, 8, "%02d.%02d V", ampl / 100, ampl % 100); - DISP_writeString(disp, &font5x7Info, data, 76, 23, BM_NORMAL); + DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL); } -static void _drawOffsValue(GFX_display_t *disp, uint16_t offs) +static void _drawOffsValue(GFX_display_t *disp, uint16_t offs, uint8_t pos_y) { - // float offs = getOffsetValue(); uint8_t data[8]; - // snprintf((char *)data, 8, "%+4.2f V", offs); snprintf((char *)data, 8, "%+01d.%02d V", offs / 100, offs % 100); - DISP_writeString(disp, &font5x7Info, data, 76, 33, BM_NORMAL); + DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL); } -static void _drawPhasValue(GFX_display_t *disp, uint16_t phase) +static void _drawPhasValue(GFX_display_t *disp, uint16_t phase, uint8_t pos_y) { - // uint32_t phase = getPhaseValue(); uint8_t data[8]; snprintf((char *)data, 8, "%03u'", phase); - DISP_writeString(disp, &font5x7Info, data, 76, 43, BM_NORMAL); + DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL); } -static void _drawDutyValue(GFX_display_t *disp, uint8_t duty) +static void _drawDutyValue(GFX_display_t *disp, uint8_t duty, uint8_t pos_y) { - // uint32_t duty = getDutyValue(); uint8_t data[8]; snprintf((char *)data, 8, "%03u%%", duty); - DISP_writeString(disp, &font5x7Info, data, 76, 43, BM_NORMAL); // zmien pozycje!!!!!!!! + DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL); } static void _blinkButtons(GFX_display_t *disp, APP_data_t *app_data) @@ -95,6 +95,11 @@ static void _drawButtons(GFX_display_t *disp, APP_data_t *app_data) app_data->isButtonChange = 0; } +static uint8_t _calcMarkePos(uint32_t value, uint32_t max) +{ + return ((62 * value) + (max / 2)) / max; +} + static void _drawMeterHelper(GFX_display_t *disp, char *min, char *max, uint8_t pos) { DISP_drawPixel(disp, 64, 40, GFX_WHITE); @@ -111,12 +116,15 @@ static void _drawFreqValueHelper(GFX_display_t *disp, uint32_t freq, uint8_t foc DISP_clearRegion(disp, 64, 13, 66, 40); DISP_writeString(disp, &font5x7Info, (uint8_t *)"F:", 64, 20, BM_NORMAL); _drawFreqValue(disp, freq, 20); - DISP_drawBitmap(disp, &marker, marker_freq_pos_X[6 - focus_digit], 15, BM_NORMAL); + DISP_drawBitmap(disp, &marker, marker_freq_pos_x[(FREQ_MAX_DIGIT - 1) - focus_digit], 15, BM_NORMAL); } -static uint8_t _calcMarkePos(uint32_t value, uint32_t max) +static void _drawAmplValueHelper(GFX_display_t *disp, uint32_t ampl, uint8_t focus_digit) { - return ((62 * value) + (max / 2)) / max; + DISP_clearRegion(disp, 64, 13, 66, 40); + DISP_writeString(disp, &font5x7Info, (uint8_t *)"A:", 64, 20, BM_NORMAL); + _drawAmplValue(disp, ampl, 20); + DISP_drawBitmap(disp, &marker, marker_ampl_pos_x[(AMPL_MAX_DIGIT - 1) - focus_digit], 15, BM_NORMAL); } static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data) @@ -126,16 +134,15 @@ static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data) { case LAY_FREQ: _drawFreqValueHelper(disp, fun_gen->frequency, app_data->freq_focus_digit); - _drawMeterHelper(disp, "1", "1M", _calcMarkePos(900000, 1000000)); + _drawMeterHelper(disp, "1", "1M", _calcMarkePos(990000, 1000000)); break; case LAY_AMPL: - _drawAmplValue(disp, fun_gen->amplitude); + _drawAmplValueHelper(disp, fun_gen->amplitude, app_data->ampl_focus_digit); + _drawMeterHelper(disp, "0V", "5V", _calcMarkePos(100, 500)); break; case LAY_OFFS: - _drawOffsValue(disp, fun_gen->offset); break; case LAY_PHAS: - _drawPhasValue(disp, fun_gen->phase); break; case LAY_MAIN: DISP_clearRegion(disp, 62, 13, 66, 40); @@ -145,9 +152,9 @@ static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data) DISP_writeString(disp, &font5x7Info, (uint8_t *)"P:", 64, 43, BM_NORMAL); _drawFreqValue(disp, fun_gen->frequency, 13); - _drawAmplValue(disp, fun_gen->amplitude); - _drawOffsValue(disp, fun_gen->offset); - _drawPhasValue(disp, fun_gen->phase); + _drawAmplValue(disp, fun_gen->amplitude, 23); + _drawOffsValue(disp, fun_gen->offset, 33); + _drawPhasValue(disp, fun_gen->phase, 43); break; default: @@ -159,17 +166,6 @@ static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data) static void _drawPwmGenValues(GFX_display_t *disp, APP_data_t *app_data) { GEN_pwm_t *pwm_gen = app_data->generator; - DISP_writeString(disp, &font5x7Info, (uint8_t *)"F:", 64, 13, BM_NORMAL); - DISP_writeString(disp, &font5x7Info, (uint8_t *)"A:", 64, 23, BM_NORMAL); - DISP_writeString(disp, &font5x7Info, (uint8_t *)"O:", 64, 33, BM_NORMAL); - DISP_writeString(disp, &font5x7Info, (uint8_t *)"P:", 64, 43, BM_NORMAL); - DISP_writeString(disp, &font5x7Info, (uint8_t *)"D:", 64, 43, BM_NORMAL); - - _drawFreqValue(disp, pwm_gen->frequency, 13); - _drawAmplValue(disp, pwm_gen->amplitude / 100); - _drawOffsValue(disp, pwm_gen->offset / 100); - _drawPhasValue(disp, pwm_gen->phase); - _drawDutyValue(disp, pwm_gen->duty); } static void _drawValues(GFX_display_t *disp, APP_data_t *app_data)