[wip] controllers and display
This commit is contained in:
@@ -1,214 +1,191 @@
|
||||
#include "main.h"
|
||||
#include "display_gfx.h"
|
||||
#include "font_gfx.h"
|
||||
#include "bitmap_fonts.h"
|
||||
#include "bitmap_disp_buttons.h"
|
||||
|
||||
// #include "wave_gfx.h"
|
||||
|
||||
#include "printf.h"
|
||||
#include "bitmap_fonts.h"
|
||||
#include "disp_layout_defs.h"
|
||||
|
||||
#include "disp_layout.h"
|
||||
|
||||
static uint8_t isChannelChange = 1;
|
||||
static uint8_t isGraphChange = 1;
|
||||
static uint8_t isValuesChange = 1;
|
||||
static uint8_t isButtonsChange = 1;
|
||||
static int8_t isButtonsBlink = 1;
|
||||
|
||||
static uint8_t timer_blink[LAY_BTN_MAX];
|
||||
|
||||
void LAY_blinkButton(LAY_dispBtnName_t disp_btn)
|
||||
static void _drawFreqValue(GFX_display_t *disp, uint32_t freq)
|
||||
{
|
||||
timer_blink[disp_btn] = 2;
|
||||
isButtonsBlink = 1;
|
||||
// uint32_t freq = 9999999;
|
||||
uint8_t data[8];
|
||||
snprintf((char *)data, 8, "%07u", freq);
|
||||
DISP_writeString(disp, &font5x7Info, data, 76, 13, BM_NORMAL);
|
||||
}
|
||||
|
||||
void LAY_updateChannels(void)
|
||||
static void _drawAmplValue(GFX_display_t *disp, uint16_t ampl)
|
||||
{
|
||||
isChannelChange = 1;
|
||||
// float ampl = getAmplValue();
|
||||
uint8_t data[8];
|
||||
// snprintf((char *)data, 8, "%05.2f V", ampl);
|
||||
snprintf((char *)data, 8, "%02d.%02d V", ampl / 100, ampl % 100);
|
||||
DISP_writeString(disp, &font5x7Info, data, 76, 23, BM_NORMAL);
|
||||
}
|
||||
|
||||
void LAY_updateGraph(void)
|
||||
static void _drawOffsValue(GFX_display_t *disp, uint16_t offs)
|
||||
{
|
||||
isGraphChange = 1;
|
||||
// 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);
|
||||
}
|
||||
|
||||
void LAY_updateValues(void)
|
||||
static void _drawPhasValue(GFX_display_t *disp, uint16_t phase)
|
||||
{
|
||||
isValuesChange = 1;
|
||||
// uint32_t phase = getPhaseValue();
|
||||
uint8_t data[8];
|
||||
snprintf((char *)data, 8, "%03u'", phase);
|
||||
DISP_writeString(disp, &font5x7Info, data, 76, 43, BM_NORMAL);
|
||||
}
|
||||
|
||||
void LAY_updateButtons(void)
|
||||
static void _drawDutyValue(GFX_display_t *disp, uint8_t duty)
|
||||
{
|
||||
isButtonsChange = 1;
|
||||
// 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!!!!!!!!
|
||||
}
|
||||
|
||||
static void _drawFreqValue(GFX_display_t *disp)
|
||||
{
|
||||
uint32_t value = getFreqValue();
|
||||
uint8_t input[8];
|
||||
snprintf((char *)input, 8, "%07u", value);
|
||||
DISP_writeString(disp, &font5x7Info, input, 76, 13, BM_NORMAL);
|
||||
}
|
||||
|
||||
static void _drawAmplValue(GFX_display_t *disp)
|
||||
{
|
||||
float value = getAmplValue();
|
||||
uint8_t input[8];
|
||||
snprintf((char *)input, 8, "%05.2f V", value);
|
||||
DISP_writeString(disp, &font5x7Info, input, 76, 23, BM_NORMAL);
|
||||
}
|
||||
|
||||
static void _drawOffsValue(GFX_display_t *disp)
|
||||
{
|
||||
float value = getOffsetValue();
|
||||
uint8_t input[8];
|
||||
snprintf((char *)input, 8, "%+4.2f V", value);
|
||||
DISP_writeString(disp, &font5x7Info, input, 76, 33, BM_NORMAL);
|
||||
}
|
||||
|
||||
static void _drawPhasValue(GFX_display_t *disp)
|
||||
{
|
||||
uint32_t value = getPhaseValue();
|
||||
uint8_t input[8];
|
||||
snprintf((char *)input, 8, "%03u'", value);
|
||||
DISP_writeString(disp, &font5x7Info, input, 76, 43, BM_NORMAL);
|
||||
}
|
||||
|
||||
static void _drawDutyValue(GFX_display_t *disp)
|
||||
{
|
||||
uint32_t value = getDutyValue();
|
||||
uint8_t input[8];
|
||||
snprintf((char *)input, 8, "%03u%%", value);
|
||||
DISP_writeString(disp, &font5x7Info, input, 76, 43, BM_NORMAL); // zmien pozycje!!!!!!!!
|
||||
}
|
||||
|
||||
static void _blinkButtons(GFX_display_t *disp)
|
||||
static void _blinkButtons(GFX_display_t *disp, APP_data_t *app_data)
|
||||
{
|
||||
// input: display buttons, invert
|
||||
uint8_t done = 0;
|
||||
for (LAY_dispBtnName_t disp_btn = LAY_BTN_1; disp_btn < LAY_BTN_MAX; disp_btn++)
|
||||
BITMAP_buttonName_t bitmap_idx;
|
||||
for (LAY_dispBtnIdx_t btn_idx = LAY_BTN_1; btn_idx < LAY_BTN_MAX; btn_idx++)
|
||||
{
|
||||
if (timer_blink[disp_btn] > 0)
|
||||
if (!(app_data->isButtonBlink & (1 << btn_idx)))
|
||||
{
|
||||
DISP_drawBitmap(disp, &btn_bottom[disp_btns[curr_layout][disp_btn] + 1], btn_pos_x[disp_btn], 53, BM_NORMAL);
|
||||
timer_blink[disp_btn]--;
|
||||
continue;
|
||||
}
|
||||
else if (timer_blink[disp_btn] == 0)
|
||||
{
|
||||
DISP_drawBitmap(disp, &btn_bottom[disp_btns[curr_layout][disp_btn]], btn_pos_x[disp_btn], 53, BM_NORMAL);
|
||||
done++;
|
||||
timer_blink[disp_btn]--;
|
||||
}
|
||||
}
|
||||
|
||||
if (done == LAY_BTN_MAX)
|
||||
{
|
||||
isButtonsBlink = 0;
|
||||
bitmap_idx = btn_names[app_data->curr_layout][btn_idx];
|
||||
if (app_data->timer_blink[btn_idx] > 0)
|
||||
{
|
||||
DISP_drawBitmap(disp, &bitmap_btnBottom[bitmap_idx + 1], btn_pos_x[btn_idx], 53, BM_NORMAL);
|
||||
app_data->timer_blink[btn_idx]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
DISP_drawBitmap(disp, &bitmap_btnBottom[bitmap_idx], btn_pos_x[btn_idx], 53, BM_NORMAL);
|
||||
app_data->isButtonBlink &= ~(1 << btn_idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void _drawButtons(GFX_display_t *disp)
|
||||
static void _drawButtons(GFX_display_t *disp, APP_data_t *app_data)
|
||||
{
|
||||
// input: display buttons, invert
|
||||
BITMAP_buttonName_t bitmap_idx;
|
||||
DISP_clearRegion(disp, 0, 53, disp->width, 11);
|
||||
uint8_t pos_x = 0;
|
||||
|
||||
for (LAY_dispBtnName_t disp_btn = LAY_BTN_1; disp_btn < LAY_BTN_MAX; disp_btn++)
|
||||
for (LAY_dispBtnIdx_t btn_idx = LAY_BTN_1; btn_idx < LAY_BTN_MAX; btn_idx++)
|
||||
{
|
||||
BITMAP_buttonName_t btn_name = getBitmapName(disp_btn);
|
||||
|
||||
DISP_drawBitmap(disp, &bitmap_btnBottom[btn_name], pos_x, 53, BM_NORMAL);
|
||||
pos_x += bitmap_btnBottom[btn_name].width + 1;
|
||||
bitmap_idx = btn_names[app_data->curr_layout][btn_idx];
|
||||
DISP_drawBitmap(disp, &bitmap_btnBottom[bitmap_idx], btn_pos_x[btn_idx], 53, BM_NORMAL);
|
||||
}
|
||||
|
||||
isButtonsChange = 0;
|
||||
app_data->isButtonChange = 0;
|
||||
}
|
||||
|
||||
static void _drawFuncGenValues(GFX_display_t *disp)
|
||||
static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data)
|
||||
{
|
||||
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);
|
||||
|
||||
_drawFreqValue(disp);
|
||||
_drawAmplValue(disp);
|
||||
_drawOffsValue(disp);
|
||||
_drawPhasValue(disp);
|
||||
GEN_fg_t *fun_gen = (GEN_fg_t *)app_data->generator;
|
||||
switch (app_data->curr_layout)
|
||||
{
|
||||
case LAY_FG_FREQ:
|
||||
_drawFreqValue(disp, fun_gen->frequency);
|
||||
break;
|
||||
case LAY_FG_AMPL:
|
||||
_drawAmplValue(disp, fun_gen->amplitude);
|
||||
break;
|
||||
case LAY_FG_OFFS:
|
||||
_drawOffsValue(disp, fun_gen->offset);
|
||||
break;
|
||||
case LAY_FG_PHAS:
|
||||
_drawPhasValue(disp, fun_gen->phase);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void _drawPwmGenValues(GFX_display_t *disp)
|
||||
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);
|
||||
_drawAmplValue(disp);
|
||||
_drawOffsValue(disp);
|
||||
_drawPhasValue(disp);
|
||||
_drawDutyValue(disp);
|
||||
_drawFreqValue(disp, pwm_gen->frequency);
|
||||
_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)
|
||||
static void _drawValues(GFX_display_t *disp, APP_data_t *app_data)
|
||||
{
|
||||
// input: frequency(value), amplitiude(value), offset(value), phase(value), duty(value), invert(info), position(value)
|
||||
switch (getLayoutType())
|
||||
switch (app_data->gen_type)
|
||||
{
|
||||
case LT_TYPE_FG:
|
||||
_drawFuncGenValues(disp);
|
||||
case GEN_FG_TYPE:
|
||||
_drawFuncGenValues(disp, app_data);
|
||||
break;
|
||||
case LT_TYPE_PWM:
|
||||
_drawPwmGenValues(disp);
|
||||
case GEN_PWM_TYPE:
|
||||
_drawPwmGenValues(disp, app_data);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
isValuesChange = 0;
|
||||
app_data->isValueChange = 0;
|
||||
}
|
||||
|
||||
static void _drawGraph(GFX_display_t *disp)
|
||||
static void _drawGraph(GFX_display_t *disp, APP_data_t *app_data)
|
||||
{
|
||||
// input: graph type(sin, triangle, squere, pwm), frequency(info), amplitiude(value), offset(value), phase(value), invert(pwm),
|
||||
DISP_drawSin(disp, 4, 32, 16, 0, 0);
|
||||
// DISP_drawSin(disp, 4, 32, 16, 0, 0);
|
||||
DISP_drawHorizontalLine(disp, 2, 32, 56, GFX_WHITE);
|
||||
|
||||
isGraphChange = 0;
|
||||
app_data->isGraphChange = 0;
|
||||
}
|
||||
|
||||
static void _drawChannels(GFX_display_t *disp)
|
||||
static void _drawChannels(GFX_display_t *disp, APP_data_t *app_data)
|
||||
{
|
||||
// input: active channel
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH1", 2, 2, BM_INVERSE);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH2", 23, 2, BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH3", 44, 2, BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH4", 65, 2, BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH5", 86, 2, BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH6", 107, 2, BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH1", 2, 2, CHANNEL1 == app_data->curr_channel ? BM_INVERSE : BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH2", 23, 2, CHANNEL2 == app_data->curr_channel ? BM_INVERSE : BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH3", 44, 2, CHANNEL3 == app_data->curr_channel ? BM_INVERSE : BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH4", 65, 2, CHANNEL4 == app_data->curr_channel ? BM_INVERSE : BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH5", 86, 2, CHANNEL5 == app_data->curr_channel ? BM_INVERSE : BM_NORMAL);
|
||||
DISP_writeString(disp, &font5x7Info, (uint8_t *)"CH6", 107, 2, CHANNEL6 == app_data->curr_channel ? BM_INVERSE : BM_NORMAL);
|
||||
DISP_drawHorizontalLine(disp, 0, 10, 127, GFX_WHITE);
|
||||
|
||||
isChannelChange = 0;
|
||||
app_data->isChannelChange = 0;
|
||||
}
|
||||
|
||||
void LAY_drawDisplayLayout(GFX_display_t *disp)
|
||||
void LAY_drawDisplayLayout(GFX_display_t *disp, APP_data_t *app_data)
|
||||
{
|
||||
if (isChannelChange)
|
||||
_drawChannels(disp);
|
||||
if (app_data->isChannelChange)
|
||||
_drawChannels(disp, app_data);
|
||||
|
||||
if (isGraphChange)
|
||||
_drawGraph(disp);
|
||||
if (app_data->isGraphChange)
|
||||
_drawGraph(disp, app_data);
|
||||
|
||||
if (isValuesChange)
|
||||
_drawValues(disp);
|
||||
if (app_data->isValueChange)
|
||||
_drawValues(disp, app_data);
|
||||
|
||||
if (isButtonsChange)
|
||||
_drawButtons(disp);
|
||||
if (app_data->isButtonChange)
|
||||
_drawButtons(disp, app_data);
|
||||
|
||||
if (isButtonsBlink)
|
||||
_blinkButtons(disp);
|
||||
if (app_data->isButtonBlink)
|
||||
_blinkButtons(disp, app_data);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user