From bc34fdb7adc6aa2cf0326d43858df123f1864499 Mon Sep 17 00:00:00 2001 From: DiSlord Date: Wed, 9 Jun 2021 20:10:43 +0300 Subject: [PATCH] Allow pass 32 bit float to printf --- chprintf.c | 8 +++++++- ui_sa.c | 14 +++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/chprintf.c b/chprintf.c index c6ce34e..3b9f66b 100644 --- a/chprintf.c +++ b/chprintf.c @@ -257,6 +257,7 @@ static char *ftoaS(char *p, float num, int precision) { #define PAD_ZERO 16 #define PLUS_SPACE 32 #define DEFAULT_PRESCISION 64 +#define _32_BIT_FLOAT 128 int chvprintf(BaseSequentialStream *chp, const char *fmt, va_list ap) { char *p, *s, c, filler=' '; @@ -308,6 +309,8 @@ int chvprintf(BaseSequentialStream *chp, const char *fmt, va_list ap) { else if (*fmt == ' ') state|=PLUS_SPACE; #endif + else if (*fmt == 'b') + state|=_32_BIT_FLOAT; else break; fmt++; @@ -405,7 +408,10 @@ int chvprintf(BaseSequentialStream *chp, const char *fmt, va_list ap) { #if CHPRINTF_USE_FLOAT case 'F': case 'f': - value.f = va_arg(ap, double); + if (state & _32_BIT_FLOAT) + value.u = va_arg(ap, uint32_t); + else + value.f = va_arg(ap, double); if (value.f < 0) { state|=NEGATIVE; *p++ = '-'; diff --git a/ui_sa.c b/ui_sa.c index 6dacaa1..9943ab4 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -1691,7 +1691,7 @@ static const uint16_t rbwsel_x10[]={0,30,100,300,1000,3000,6000}; #endif #ifdef __VBW__ static const uint16_t vbwsel_x100[]={0,100,30,10,3,1}; -static const char* vbwsel_text[]={"auto","0.01","0.03", "0.1", "0.3"," "}; +//static const char* vbwsel_text[]={"auto","0.01","0.03", "0.1", "0.3"," "}; #endif static UI_FUNCTION_ADV_CALLBACK(menu_rbw_acb) @@ -1715,7 +1715,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_vbw_acb) { (void)item; if (b){ - b->param_1.text = vbwsel_text[data]; + b->param_1.f = vbwsel_x100[data] > 0 ? 1.0f/vbwsel_x100[data] : 0; b->icon = setting.vbw_x100 == vbwsel_x100[data] ? BUTTON_ICON_GROUP_CHECKED : BUTTON_ICON_GROUP; return; } @@ -2256,11 +2256,11 @@ static const menuitem_t menu_rbw[] = { #ifdef __VBW__ static const menuitem_t menu_vbw[] = { { MT_ADV_CALLBACK, 0, " AUTO", menu_vbw_acb}, - { MT_ADV_CALLBACK, 1, "%s RBW", menu_vbw_acb}, - { MT_ADV_CALLBACK, 2, "%s RBW", menu_vbw_acb}, - { MT_ADV_CALLBACK, 3, "%s RBW", menu_vbw_acb}, - { MT_ADV_CALLBACK, 4, "%s RBW", menu_vbw_acb}, - { MT_ADV_CALLBACK, 5, "%s RBW", menu_vbw_acb}, + { MT_ADV_CALLBACK, 1, "%b.2f RBW", menu_vbw_acb}, + { MT_ADV_CALLBACK, 2, "%b.2f RBW", menu_vbw_acb}, + { MT_ADV_CALLBACK, 3, "%b.2f RBW", menu_vbw_acb}, + { MT_ADV_CALLBACK, 4, "%b.2f RBW", menu_vbw_acb}, + { MT_ADV_CALLBACK, 5, "%b.2f RBW", menu_vbw_acb}, { MT_NONE, 0, NULL, menu_back} // next-> menu_back }; #endif