Use union for data convert

pull/4/head
DiSlord 6 years ago
parent 815dff4b48
commit 5f5bdbcbbe

@ -887,7 +887,7 @@ static void menu_storage_cb(int item, uint8_t data)
toggle_waterfall(); toggle_waterfall();
break; break;
} }
menu_move_back_and_leave_ui(); // menu_move_back_and_leave_ui();
// draw_cal_status(); // draw_cal_status();
} }
@ -1588,37 +1588,38 @@ int menu_is_form(const menuitem_t *menu)
static void fetch_numeric_target(void); static void fetch_numeric_target(void);
#define P_TEXT(data) (data)
#define P_INT(data) ((void*)((int32_t)data))
#define P_UINT(data) ((void*)((uint32_t)data))
#define P_FLOAT(data) ((void*)((float)data))
static void menu_item_modify_attribute( static void menu_item_modify_attribute(
const menuitem_t *menu, int item, ui_button_t *button) const menuitem_t *menu, int item, ui_button_t *button)
{ {
int mark = false; int mark = false;
int m_auto = false; int m_auto = false;
int data = menu[item].data; int data = menu[item].data;
const void *param_1 = 0; // void data 1 for printf
const void *param_2 = 0; // void data 2 for printf union {
int32_t i;
uint32_t u;
const char *text;
} param_1, param_2; // void data for printf
param_1.u = 0;
param_2.u = 0;
if (menu == menu_mode) { if (menu == menu_mode) {
if (item == setting.mode) { if (item == setting.mode) {
param_1 = P_TEXT("RETURN"); param_1.text = "RETURN";
mark = true; mark = true;
} else if (item < 4){ } else if (item < 4){
param_1 = P_TEXT("SWITCH"); param_1.text = "SWITCH";
} else if (item == 4) { } else if (item == 4) {
param_1 = P_TEXT(menu_reffer_text[setting.refer+1]); param_1.text = menu_reffer_text[setting.refer+1];
} }
} else if (menu == menu_highoutputmode && item == 2) { } else if (menu == menu_highoutputmode && item == 2) {
param_1 = P_INT(menu_drive_value[setting.drive]); param_1.i = menu_drive_value[setting.drive];
} else if (menu == menu_lowoutputmode || menu == menu_highoutputmode) { } else if (menu == menu_lowoutputmode || menu == menu_highoutputmode) {
if (item == 0) { if (item == 0) {
param_1 = P_TEXT(setting.mute ? "OFF" : "ON"); param_1.text = setting.mute ? "OFF" : "ON";
mark = true; mark = true;
} }
else if (item == 3) { else if (item == 3) {
param_1 = P_TEXT(menu_modulation_text[setting.modulation]); param_1.text = menu_modulation_text[setting.modulation];
} }
} else if (menu == menu_reffer) { } else if (menu == menu_reffer) {
if (item < 5 && item == setting.refer + 1){ if (item < 5 && item == setting.refer + 1){
@ -1636,7 +1637,7 @@ static void menu_item_modify_attribute(
if (item == setting.average){ if (item == setting.average){
mark = true; mark = true;
} }
} else if (menu == menu_scale_per) { } else if (menu == menu_scale_per || menu == menu_scale_per2) {
if (menu_scale_per_value[data] == setting.scale){ if (menu_scale_per_value[data] == setting.scale){
mark = true; mark = true;
} }
@ -1645,7 +1646,7 @@ static void menu_item_modify_attribute(
mark = true; mark = true;
} }
} else if (menu == menu_rbw) { } else if (menu == menu_rbw) {
param_1 = P_INT(rbwsel_x10[data]/10); param_1.u = rbwsel_x10[data]/10;
if (rbwsel_x10[data] == setting.rbw_x10){ if (rbwsel_x10[data] == setting.rbw_x10){
mark = true; mark = true;
} }
@ -1654,7 +1655,7 @@ static void menu_item_modify_attribute(
mark = true; mark = true;
} }
} else if (MT_MASK(menu[item].type) == MT_CALLBACK && (menu == menu_drive || menu == menu_drive_wide || menu == menu_drive_wide2|| menu == menu_drive_wide3)) { } else if (MT_MASK(menu[item].type) == MT_CALLBACK && (menu == menu_drive || menu == menu_drive_wide || menu == menu_drive_wide2|| menu == menu_drive_wide3)) {
param_1 = P_INT(menu_drive_value[data]); param_1.i = menu_drive_value[data];
if (data == setting.drive){ if (data == setting.drive){
mark = true; mark = true;
} }
@ -1732,7 +1733,7 @@ static void menu_item_modify_attribute(
if (item == 4 && markers[active_marker].mtype & M_TRACKING) if (item == 4 && markers[active_marker].mtype & M_TRACKING)
mark = true; mark = true;
} else if (menu == menu_marker_sel || menu == menu_marker_select) { } else if (menu == menu_marker_sel || menu == menu_marker_select) {
param_1 = P_INT(data); param_1.i = data;
if (item < 4 && markers[item].enabled) if (item < 4 && markers[item].enabled)
mark = true; mark = true;
else if (item == 4 && uistat.marker_delta) else if (item == 4 && uistat.marker_delta)
@ -1760,10 +1761,10 @@ static void menu_item_modify_attribute(
if (menu[item].type & MT_FORM && MT_MASK(menu[item].type) == MT_KEYPAD) { if (menu[item].type & MT_FORM && MT_MASK(menu[item].type) == MT_KEYPAD) {
keypad_mode = menu[item].data; keypad_mode = menu[item].data;
fetch_numeric_target(); fetch_numeric_target();
param_1 = P_TEXT(uistat.text); param_1.text = uistat.text;
} }
// Prepare button label // Prepare button label
plot_printf(button->text, sizeof button->text, menu[item].label, param_1, param_2); plot_printf(button->text, sizeof button->text, menu[item].label, param_1.u, param_2.u);
if (m_auto) { if (m_auto) {
button->bg = LIGHT_GREY; button->bg = LIGHT_GREY;

Loading…
Cancel
Save

Powered by TurnKey Linux.