Code cleanup

Add base definition for menu callback and adv_callback functions
adv_callback - allow more better mod menu draw and process in one place (less error and less code size)
pull/4/head
DiSlord 6 years ago
parent a94e9cd820
commit cb3b0af6ee

@ -480,6 +480,7 @@ void redraw_frame(void);
void request_to_draw_cells_behind_menu(void);
void request_to_draw_cells_behind_numeric_input(void);
void redraw_marker(int marker);
void markmap_all_markers(void);
void plot_into_index(measurement_t measured);
void force_set_markmap(void);
void draw_frequencies(void);
@ -568,6 +569,7 @@ void ili9341_set_background(uint16_t fg);
void ili9341_clear_screen(void);
void blit8BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *bitmap);
void blit16BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint16_t *bitmap);
void ili9341_drawchar(uint8_t ch, int x, int y);
void ili9341_drawstring(const char *str, int x, int y);
void ili9341_drawstring_7x13(const char *str, int x, int y);
@ -578,7 +580,6 @@ void ili9341_drawfont(uint8_t ch, int x, int y);
void ili9341_read_memory(int x, int y, int w, int h, int len, uint16_t* out);
void ili9341_line(int x0, int y0, int x1, int y1);
void show_version(void);
void show_logo(void);
/*
* flash.c
@ -793,7 +794,6 @@ extern void ui_init(void);
extern void ui_process(void);
int current_menu_is_form(void);
void menu_mode_cb(int, uint8_t);
void ui_mode_normal(void);
void ui_mode_menu(void);
void menu_push_lowoutput(void);
@ -836,6 +836,8 @@ typedef struct uistat {
typedef struct ui_button {
uint16_t fg;
uint16_t bg;
uint8_t border;
int8_t icon;
char text[32];
} ui_button_t;

40
ui.c

@ -108,12 +108,6 @@ static int8_t last_touch_status = EVT_TOUCH_NONE;
static int16_t last_touch_x;
static int16_t last_touch_y;
//int16_t touch_cal[4] = { 1000, 1000, 10*16, 12*16 };
//int16_t touch_cal[4] = { 620, 600, 130, 180 };
//int awd_count;
//int touch_x, touch_y;
#define KP_CONTINUE 0
#define KP_DONE 1
#define KP_CANCEL 2
@ -444,9 +438,9 @@ enum {
MT_BLANK, // blank menu (nothing draw)
MT_SUBMENU, // enter to submenu
MT_CALLBACK, // call user function
MT_ADV_CALLBACK, // adv call user function
MT_CANCEL, // menu, step back on one level up
MT_TITLE, // Title
MT_CLOSE,
MT_KEYPAD,
MT_ICON = 0x10,
MT_HIGH = 0x20, // Only applicable to high mode
@ -457,7 +451,12 @@ enum {
#define MT_LEAVE 0x20
#define MT_MASK(x) (0xF & (x))
typedef void (*menuaction_cb_t)(int item, uint8_t data);
// Call back functions for MT_CALLBACK type
typedef void (*menuaction_cb_t)(int item, uint16_t data);
#define UI_FUNCTION_CALLBACK(ui_function_name) void ui_function_name(int item, uint16_t data)
typedef void (*menuaction_acb_t)(int item, uint16_t data, ui_button_t *b);
#define UI_FUNCTION_ADV_CALLBACK(ui_function_name) void ui_function_name(int item, uint16_t data, ui_button_t *b)
#ifdef __VNA__
static void
@ -731,8 +730,7 @@ get_marker_frequency(int marker)
return frequencies[markers[marker].index];
}
static void
menu_marker_op_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_marker_op_cb)
{
(void)item;
uint32_t freq = get_marker_frequency(active_marker);
@ -783,8 +781,7 @@ menu_marker_op_cb(int item, uint8_t data)
//redraw_all();
}
static void
menu_marker_search_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_marker_search_cb)
{
(void)item;
int i = -1;
@ -1229,7 +1226,6 @@ menu_invoke(int item)
switch (MT_MASK(menu->type)) {
case MT_NONE:
case MT_BLANK:
case MT_CLOSE:
ui_mode_normal();
break;
@ -1239,14 +1235,18 @@ menu_invoke(int item)
case MT_CALLBACK: {
menuaction_cb_t cb = (menuaction_cb_t)menu->reference;
if (cb == NULL)
return;
(*cb)(item, menu->data);
if (cb) (*cb)(item, menu->data);
// if (!(menu->type & MT_FORM))
redraw_request |= REDRAW_CAL_STATUS;
break;
}
case MT_ADV_CALLBACK: {
menuaction_acb_t cb = (menuaction_acb_t)menu->reference;
if (cb) (*cb)(item, menu->data, NULL);
// if (!(menu->type & MT_FORM))
redraw_request |= REDRAW_CAL_STATUS;
break;
}
case MT_SUBMENU:
menu_push_submenu((const menuitem_t*)menu->reference);
break;
@ -1612,8 +1612,14 @@ draw_menu_buttons(const menuitem_t *menu)
uint16_t old_bg = button.bg;
// Need replace this obsolete bad function on new MT_ADV_CALLBACK variant
menu_item_modify_attribute(menu, i, &button); // before plot_printf to create status text
// MT_ADV_CALLBACK - allow change button data in callback, more easy and correct
if (menu[i].type == MT_ADV_CALLBACK){
menuaction_acb_t cb = (menuaction_acb_t)menu[i].reference;
if (cb) (*cb)(i, menu[i].data, &button);
}
ili9341_set_foreground(button.fg);
ili9341_set_background(button.bg);
if (menu[i].type & MT_FORM) {

@ -17,19 +17,6 @@
* Boston, MA 02110-1301, USA.
*/
void markmap_all_markers(void);
static void menu_marker_modify_cb(int item, uint8_t data);
extern const menuitem_t menu_marker_modify[];
void set_sweep_frequency(int type, uint32_t frequency);
uint32_t get_sweep_frequency(int type);
void clearDisplay(void);
void blit16BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height,
const uint16_t *bitmap);
const uint16_t left_icons [] =
{
#define I_EMPTY 0*16
@ -534,7 +521,7 @@ extern const menuitem_t menu_top[];
extern const menuitem_t menu_tophigh[];
extern const menuitem_t menu_topultra[];
void menu_mode_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_mode_cb)
{
(void)data;
set_mode(item);
@ -565,7 +552,7 @@ extern const menuitem_t menu_topultra[];
redraw_request |= REDRAW_CAL_STATUS;
}
void menu_load_preset_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_load_preset_cb)
{
(void)item;
if (caldata_recall(data) == -1) {
@ -579,7 +566,7 @@ void menu_load_preset_cb(int item, uint8_t data)
menu_move_back_and_leave_ui();
}
void menu_store_preset_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_store_preset_cb)
{
(void)item;
if (data == 100) {
@ -593,7 +580,7 @@ void menu_store_preset_cb(int item, uint8_t data)
extern int dirty;
void menu_autosettings_cb(int item, uint8_t data)
UI_FUNCTION_CALLBACK(menu_autosettings_cb)
{
(void)item;
(void)data;
@ -616,7 +603,7 @@ void menu_autosettings_cb(int item, uint8_t data)
// draw_cal_status();
}
static void menu_calibrate_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_calibrate_cb)
{
(void)data;
switch (item) {
@ -631,7 +618,7 @@ static void menu_calibrate_cb(int item, uint8_t data)
}
}
static void menu_scanning_speed_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_scanning_speed_cb)
{
(void)item;
set_step_delay(data);
@ -639,7 +626,7 @@ static void menu_scanning_speed_cb(int item, uint8_t data)
ui_mode_normal();
}
static void menu_config_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_config_cb)
{
(void)data;
switch (item) {
@ -670,20 +657,18 @@ static void menu_config_cb(int item, uint8_t data)
}
}
static void menu_dfu_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_dfu_cb)
{
(void)data;
switch (item) {
case 0:
(void)item;
enter_dfu();
}
}
// const int menu_modulation_value[]={MO_NONE,MO_AM_1, MO_NFM, MO_WFM, MO_EXTERNAL};
const char *menu_modulation_text[]={"NONE","AM 1kHz","AM 10Hz","NARROW FM","WIDE FM", "EXTERNAL"};
static void menu_modulation_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_modulation_cb)
{
(void)item;
//Serial.println(item);
@ -697,7 +682,7 @@ static void menu_modulation_cb(int item, uint8_t data)
// draw_cal_status();
}
static void menu_reffer_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_reffer_cb)
{
(void)item;
//Serial.println(item);
@ -707,7 +692,7 @@ static void menu_reffer_cb(int item, uint8_t data)
// draw_cal_status();
}
static void menu_drive_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_drive_cb)
{
(void)item;
//Serial.println(item);
@ -720,7 +705,7 @@ static void menu_drive_cb(int item, uint8_t data)
#ifdef __SPUR__
static void menu_spur_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_spur_cb)
{
(void)data;
(void)item;
@ -733,7 +718,7 @@ static void menu_spur_cb(int item, uint8_t data)
}
#endif
static void menu_measure_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_measure_cb)
{
(void)item;
menu_move_back();
@ -843,7 +828,7 @@ static void menu_measure_cb(int item, uint8_t data)
// draw_cal_status();
}
static void menu_atten_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_atten_cb)
{
(void)item;
(void)data;
@ -851,7 +836,7 @@ static void menu_atten_cb(int item, uint8_t data)
menu_move_back_and_leave_ui();
}
static void menu_atten_high_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_atten_high_cb)
{
(void)item;
setting.auto_attenuation = false;
@ -859,7 +844,7 @@ static void menu_atten_high_cb(int item, uint8_t data)
menu_move_back_and_leave_ui();
}
static void menu_reflevel_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_reflevel_cb)
{
(void)item;
(void)data;
@ -867,7 +852,7 @@ static void menu_reflevel_cb(int item, uint8_t data)
menu_move_back_and_leave_ui();
}
static void menu_storage_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_storage_cb)
{
(void)item;
switch(data) {
@ -891,15 +876,15 @@ static void menu_storage_cb(int item, uint8_t data)
// draw_cal_status();
}
static void menu_average_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_average_cb)
{
(void)data;
set_average(item);
menu_move_back_and_leave_ui();
}
static void
menu_marker_select_cb(int item, uint8_t data)
extern const menuitem_t menu_marker_modify[];
static UI_FUNCTION_CALLBACK(menu_marker_select_cb)
{
(void)data;
// int t;
@ -912,7 +897,7 @@ menu_marker_select_cb(int item, uint8_t data)
}
}
static void menu_marker_modify_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_marker_modify_cb)
{
(void)item;
if (markers[active_marker].enabled == M_ENABLED)
@ -949,14 +934,14 @@ static void menu_marker_modify_cb(int item, uint8_t data)
// last index - for item back button!!
static const uint16_t rbwsel_x10[]={0,30,100,300,1000,3000,6000, -1};
static void menu_rbw_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_rbw_cb)
{
(void)item;
set_RBW(rbwsel_x10[data]);
menu_move_back_and_leave_ui();
}
static void menu_unit_cb (int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_unit_cb)
{
(void)item;
set_unit(data);
@ -975,7 +960,7 @@ enum {
// menu_move_back_and_leave_ui();
//}
static void menu_trigger_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_trigger_cb)
{
(void)item;
set_trigger(data);
@ -1010,7 +995,7 @@ static void choose_active_marker(void)
}
#ifdef __ULTRA__
static void menu_harmonic_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_harmonic_cb)
{
(void)item;
set_harmonic(data);
@ -1018,7 +1003,7 @@ static void menu_harmonic_cb(int item, uint8_t data)
}
#endif
static void menu_settings2_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_settings2_cb)
{
(void)item;
switch(data) {
@ -1042,7 +1027,7 @@ static void menu_settings2_cb(int item, uint8_t data)
// draw_cal_status();
}
static void menu_pause_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_pause_cb)
{
(void) data;
(void) item;
@ -1053,7 +1038,7 @@ static void menu_pause_cb(int item, uint8_t data)
// draw_cal_status();
}
static void menu_outputmode_cb(int item, uint8_t data)
static UI_FUNCTION_CALLBACK(menu_outputmode_cb)
{
(void) data;
(void) item;
@ -1062,7 +1047,7 @@ static void menu_outputmode_cb(int item, uint8_t data)
}
static const uint16_t points_setting[] = {145, 290, -1};
static void menu_points_cb(int item, uint8_t data){
static UI_FUNCTION_CALLBACK(menu_points_cb){
(void)item;
set_sweep_points(points_setting[data]);
draw_menu();
@ -1776,7 +1761,7 @@ static void menu_item_modify_attribute(
if (menu[item].type & MT_FORM && MT_MASK(menu[item].type) == MT_KEYPAD) {
keypad_mode = menu[item].data;
fetch_numeric_target();
param_1.text = uistat.text;
param_1.text = button->text;
}
// Prepare button label
plot_printf(button->text, sizeof button->text, menu[item].label, param_1.u, param_2.u);

Loading…
Cancel
Save

Powered by TurnKey Linux.