mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 02:27:39 -04:00
Undo hacks to meant to get around string formatting limitations
The new vuprintf makes unnecessary workarounds due to formatting limitations. I checked grep output for whatever appeared to fit but it's possible I missed some instances because they weren't so obvious. Also, this means sound settings can dynamically work with any number of decimals rather than the current assumption of one or two. Add an ipow() function to help and take advantage of dynamic field width and precision. Consolidate string formatting of sound settings. Change-Id: I46caf534859dfd1916cd440cd25e5206b192fcd8
This commit is contained in:
parent
5c9688961e
commit
aced667f48
13 changed files with 110 additions and 142 deletions
|
@ -1053,9 +1053,10 @@ static bool view_battery(void)
|
||||||
|
|
||||||
st = power_input_status() &
|
st = power_input_status() &
|
||||||
(POWER_INPUT_CHARGER | POWER_INPUT_BATTERY);
|
(POWER_INPUT_CHARGER | POWER_INPUT_BATTERY);
|
||||||
lcd_putsf(0, line++, "%s%s",
|
|
||||||
(st & POWER_INPUT_MAIN_CHARGER) ? " Main" : "",
|
lcd_putsf(0, line++, "%.*s%.*s",
|
||||||
(st & POWER_INPUT_USB_CHARGER) ? " USB" : "");
|
!!(st & POWER_INPUT_MAIN_CHARGER)*5, " Main",
|
||||||
|
!!(st & POWER_INPUT_USB_CHARGER)*4, " USB");
|
||||||
|
|
||||||
y = ARRAYLEN(chrgstate_strings) - 1;
|
y = ARRAYLEN(chrgstate_strings) - 1;
|
||||||
|
|
||||||
|
@ -1084,22 +1085,18 @@ static bool view_battery(void)
|
||||||
y / 1000, y % 1000);
|
y / 1000, y % 1000);
|
||||||
|
|
||||||
y = battery_adc_charge_current();
|
y = battery_adc_charge_current();
|
||||||
if (y < 0) x = '-', y = -y;
|
lcd_putsf(0, line++, "CHRGISN:% d mA", y);
|
||||||
else x = ' ';
|
|
||||||
lcd_putsf(0, line++, "CHRGISN:%c%d mA", x, y);
|
|
||||||
|
|
||||||
y = cccv_regulator_dissipation();
|
y = cccv_regulator_dissipation();
|
||||||
lcd_putsf(0, line++, "P CCCV : %d mW", y);
|
lcd_putsf(0, line++, "P CCCV : %d mW", y);
|
||||||
|
|
||||||
y = battery_charge_current();
|
y = battery_charge_current();
|
||||||
if (y < 0) x = '-', y = -y;
|
lcd_putsf(0, line++, "I Charge:% d mA", y);
|
||||||
else x = ' ';
|
|
||||||
lcd_putsf(0, line++, "I Charge:%c%d mA", x, y);
|
|
||||||
|
|
||||||
y = battery_adc_temp();
|
y = battery_adc_temp();
|
||||||
|
|
||||||
if (y != INT_MIN) {
|
if (y != INT_MIN) {
|
||||||
lcd_putsf(0, line++, "T Battery: %dC (%dF)", y,
|
lcd_putsf(0, line++, "T Battery: %d\u00b0C (%d\u00b0F)", y,
|
||||||
(9*y + 160) / 5);
|
(9*y + 160) / 5);
|
||||||
} else {
|
} else {
|
||||||
/* Conversion disabled */
|
/* Conversion disabled */
|
||||||
|
@ -1371,6 +1368,8 @@ static int disk_callback(int btn, struct gui_synclist *lists)
|
||||||
#elif (CONFIG_STORAGE & STORAGE_ATA)
|
#elif (CONFIG_STORAGE & STORAGE_ATA)
|
||||||
static int disk_callback(int btn, struct gui_synclist *lists)
|
static int disk_callback(int btn, struct gui_synclist *lists)
|
||||||
{
|
{
|
||||||
|
static const char atanums[] = { " 0 1 2 3 4 5 6" };
|
||||||
|
|
||||||
(void)lists;
|
(void)lists;
|
||||||
int i;
|
int i;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
@ -1414,12 +1413,10 @@ static int disk_callback(int btn, struct gui_synclist *lists)
|
||||||
"Read-ahead: %s", i ? "enabled" : "unsupported");
|
"Read-ahead: %s", i ? "enabled" : "unsupported");
|
||||||
timing_info_present = identify_info[53] & (1<<1);
|
timing_info_present = identify_info[53] & (1<<1);
|
||||||
if(timing_info_present) {
|
if(timing_info_present) {
|
||||||
char pio3[2], pio4[2];pio3[1] = 0;
|
|
||||||
pio4[1] = 0;
|
|
||||||
pio3[0] = (identify_info[64] & (1<<0)) ? '3' : 0;
|
|
||||||
pio4[0] = (identify_info[64] & (1<<1)) ? '4' : 0;
|
|
||||||
simplelist_addline(
|
simplelist_addline(
|
||||||
"PIO modes: 0 1 2 %s %s", pio3, pio4);
|
"PIO modes: 0 1 2%.*s%.*s",
|
||||||
|
(identify_info[64] & (1<<0)) << 1, &atanums[3*2],
|
||||||
|
(identify_info[64] & (1<<1)) , &atanums[4*2]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
simplelist_addline(
|
simplelist_addline(
|
||||||
|
@ -1442,13 +1439,11 @@ static int disk_callback(int btn, struct gui_synclist *lists)
|
||||||
"Physical sector size: %d", sector_size);
|
"Physical sector size: %d", sector_size);
|
||||||
#ifdef HAVE_ATA_DMA
|
#ifdef HAVE_ATA_DMA
|
||||||
if (identify_info[63] & (1<<0)) {
|
if (identify_info[63] & (1<<0)) {
|
||||||
char mdma0[2], mdma1[2], mdma2[2];
|
|
||||||
mdma0[1] = mdma1[1] = mdma2[1] = 0;
|
|
||||||
mdma0[0] = (identify_info[63] & (1<<0)) ? '0' : 0;
|
|
||||||
mdma1[0] = (identify_info[63] & (1<<1)) ? '1' : 0;
|
|
||||||
mdma2[0] = (identify_info[63] & (1<<2)) ? '2' : 0;
|
|
||||||
simplelist_addline(
|
simplelist_addline(
|
||||||
"MDMA modes: %s %s %s", mdma0, mdma1, mdma2);
|
"MDMA modes:%.*s%.*s%.*s",
|
||||||
|
(identify_info[63] & (1<<0)) << 1, &atanums[0*2],
|
||||||
|
(identify_info[63] & (1<<1)) , &atanums[1*2],
|
||||||
|
(identify_info[63] & (1<<2)) >> 1, &atanums[2*2]);
|
||||||
simplelist_addline(
|
simplelist_addline(
|
||||||
"MDMA Cycle times %dns/%dns",
|
"MDMA Cycle times %dns/%dns",
|
||||||
identify_info[65],
|
identify_info[65],
|
||||||
|
@ -1459,18 +1454,15 @@ static int disk_callback(int btn, struct gui_synclist *lists)
|
||||||
"No MDMA mode info");
|
"No MDMA mode info");
|
||||||
}
|
}
|
||||||
if (identify_info[53] & (1<<2)) {
|
if (identify_info[53] & (1<<2)) {
|
||||||
char udma0[2], udma1[2], udma2[2], udma3[2], udma4[2], udma5[2], udma6[2];
|
|
||||||
udma0[1] = udma1[1] = udma2[1] = udma3[1] = udma4[1] = udma5[1] = udma6[1] = 0;
|
|
||||||
udma0[0] = (identify_info[88] & (1<<0)) ? '0' : 0;
|
|
||||||
udma1[0] = (identify_info[88] & (1<<1)) ? '1' : 0;
|
|
||||||
udma2[0] = (identify_info[88] & (1<<2)) ? '2' : 0;
|
|
||||||
udma3[0] = (identify_info[88] & (1<<3)) ? '3' : 0;
|
|
||||||
udma4[0] = (identify_info[88] & (1<<4)) ? '4' : 0;
|
|
||||||
udma5[0] = (identify_info[88] & (1<<5)) ? '5' : 0;
|
|
||||||
udma6[0] = (identify_info[88] & (1<<6)) ? '6' : 0;
|
|
||||||
simplelist_addline(
|
simplelist_addline(
|
||||||
"UDMA modes: %s %s %s %s %s %s %s", udma0, udma1, udma2,
|
"UDMA modes:%.*s%.*s%.*s%.*s%.*s%.*s%.*s",
|
||||||
udma3, udma4, udma5, udma6);
|
(identify_info[88] & (1<<0)) << 1, &atanums[0*2],
|
||||||
|
(identify_info[88] & (1<<1)) , &atanums[1*2],
|
||||||
|
(identify_info[88] & (1<<2)) >> 1, &atanums[2*2],
|
||||||
|
(identify_info[88] & (1<<3)) >> 2, &atanums[3*2],
|
||||||
|
(identify_info[88] & (1<<4)) >> 3, &atanums[4*2],
|
||||||
|
(identify_info[88] & (1<<5)) >> 4, &atanums[5*2],
|
||||||
|
(identify_info[88] & (1<<6)) >> 5, &atanums[6*2]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
simplelist_addline(
|
simplelist_addline(
|
||||||
|
@ -1691,7 +1683,7 @@ static int ata_smart_callback(int btn, struct gui_synclist *lists)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
simplelist_addline("ATA SMART error: 0x%x", rc);
|
simplelist_addline("ATA SMART error: %#x", rc);
|
||||||
}
|
}
|
||||||
read_done = true;
|
read_done = true;
|
||||||
}
|
}
|
||||||
|
@ -2165,7 +2157,7 @@ static int radio_callback(int btn, struct gui_synclist *lists)
|
||||||
|
|
||||||
tuner_get_rds_info(RADIO_RDS_NAME, buf, sizeof (buf));
|
tuner_get_rds_info(RADIO_RDS_NAME, buf, sizeof (buf));
|
||||||
tuner_get_rds_info(RADIO_RDS_PROGRAM_INFO, &pi, sizeof (pi));
|
tuner_get_rds_info(RADIO_RDS_PROGRAM_INFO, &pi, sizeof (pi));
|
||||||
simplelist_addline("PI:%04X PS:'%8s'", pi, buf);
|
simplelist_addline("PI:%04X PS:'%-8s'", pi, buf);
|
||||||
tuner_get_rds_info(RADIO_RDS_TEXT, buf, sizeof (buf));
|
tuner_get_rds_info(RADIO_RDS_TEXT, buf, sizeof (buf));
|
||||||
simplelist_addline("RT:%s", buf);
|
simplelist_addline("RT:%s", buf);
|
||||||
tuner_get_rds_info(RADIO_RDS_CURRENT_TIME, &seconds, sizeof (seconds));
|
tuner_get_rds_info(RADIO_RDS_CURRENT_TIME, &seconds, sizeof (seconds));
|
||||||
|
|
|
@ -106,23 +106,9 @@ const char *option_get_valuestring(const struct settings_list *setting,
|
||||||
}
|
}
|
||||||
else if ((setting->flags & F_T_SOUND) == F_T_SOUND)
|
else if ((setting->flags & F_T_SOUND) == F_T_SOUND)
|
||||||
{
|
{
|
||||||
char sign = ' ';
|
format_sound_value(buffer, buf_len,
|
||||||
const char *unit = sound_unit(setting->sound_setting->setting);
|
setting->sound_setting->setting,
|
||||||
int val = sound_val2phys(setting->sound_setting->setting, (int)temp_var);
|
temp_var);
|
||||||
if (sound_numdecimals(setting->sound_setting->setting))
|
|
||||||
{
|
|
||||||
int integer, dec;
|
|
||||||
if(val < 0)
|
|
||||||
{
|
|
||||||
sign = '-';
|
|
||||||
val = abs(val);
|
|
||||||
}
|
|
||||||
integer = val / 10;
|
|
||||||
dec = val % 10;
|
|
||||||
snprintf(buffer, buf_len, "%c%d.%d %s", sign, integer, dec, unit);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
snprintf(buffer, buf_len, "%d %s", val, unit);
|
|
||||||
}
|
}
|
||||||
else if ((setting->flags & F_CHOICE_SETTING) == F_CHOICE_SETTING)
|
else if ((setting->flags & F_CHOICE_SETTING) == F_CHOICE_SETTING)
|
||||||
{
|
{
|
||||||
|
|
|
@ -70,6 +70,7 @@
|
||||||
#if CONFIG_TUNER
|
#if CONFIG_TUNER
|
||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
#include "tuner.h"
|
#include "tuner.h"
|
||||||
|
#include "fixedpoint.h"
|
||||||
#endif
|
#endif
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
|
|
||||||
|
@ -432,23 +433,11 @@ const char *get_id3_token(struct wps_token *token, struct mp3entry *id3,
|
||||||
/* Returns buf */
|
/* Returns buf */
|
||||||
static char *format_freq_MHz(int freq, int freq_step, char *buf, int buf_size)
|
static char *format_freq_MHz(int freq, int freq_step, char *buf, int buf_size)
|
||||||
{
|
{
|
||||||
int scale, div;
|
int decimals = (freq_step < 100000) + 1;
|
||||||
char *fmt;
|
int scale = ipow(10, 6 - decimals);
|
||||||
if (freq_step < 100000)
|
int div = 1000000 / scale;
|
||||||
{
|
|
||||||
/* Format with two digits after decimal point */
|
|
||||||
scale = 10000;
|
|
||||||
fmt = "%d.%02d";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Format with one digit after decimal point */
|
|
||||||
scale = 100000;
|
|
||||||
fmt = "%d.%d";
|
|
||||||
}
|
|
||||||
div = 1000000 / scale;
|
|
||||||
freq = freq / scale;
|
freq = freq / scale;
|
||||||
snprintf(buf, buf_size, fmt, freq/div, freq%div);
|
snprintf(buf, buf_size, "%d.%.*d", freq/div, decimals, freq%div);
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
38
apps/misc.c
38
apps/misc.c
|
@ -62,6 +62,7 @@
|
||||||
#include "yesno.h"
|
#include "yesno.h"
|
||||||
#include "viewport.h"
|
#include "viewport.h"
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
|
#include "fixedpoint.h"
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
@ -1060,21 +1061,13 @@ char* skip_whitespace(char* const str)
|
||||||
*/
|
*/
|
||||||
void format_time(char* buf, int buf_size, long t)
|
void format_time(char* buf, int buf_size, long t)
|
||||||
{
|
{
|
||||||
int const time = abs(t / 1000);
|
unsigned long time = labs(t / 1000);
|
||||||
int const hours = time / 3600;
|
unsigned long hours = time / 3600;
|
||||||
int const minutes = time / 60 - hours * 60;
|
unsigned long minutes = time / 60 - hours * 60;
|
||||||
int const seconds = time % 60;
|
unsigned long seconds = time % 60;
|
||||||
const char * const sign = &"-"[t < 0 ? 0 : 1];
|
int hashours = hours > 0;
|
||||||
|
snprintf(buf, buf_size, "%.*s%.0lu%.*s%.*lu:%.2lu",
|
||||||
if ( hours == 0 )
|
t < 0, "-", hours, hashours, ":", hashours+1, minutes, seconds);
|
||||||
{
|
|
||||||
snprintf(buf, buf_size, "%s%d:%02d", sign, minutes, seconds);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
snprintf(buf, buf_size, "%s%d:%02d:%02d", sign, hours, minutes,
|
|
||||||
seconds);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1260,3 +1253,18 @@ enum current_activity get_current_activity(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* format a sound value like: -1.05 dB */
|
||||||
|
int format_sound_value(char *buf, size_t size, int snd, int val)
|
||||||
|
{
|
||||||
|
int numdec = sound_numdecimals(snd);
|
||||||
|
const char *unit = sound_unit(snd);
|
||||||
|
int physval = sound_val2phys(snd, val);
|
||||||
|
|
||||||
|
unsigned int factor = ipow(10, numdec);
|
||||||
|
unsigned int av = abs(physval);
|
||||||
|
unsigned int i = av / factor;
|
||||||
|
unsigned int d = av - i*factor;
|
||||||
|
return snprintf(buf, size, "%c%u%.*s%.*u %s", " -"[physval < 0],
|
||||||
|
i, numdec, ".", numdec, d, unit);
|
||||||
|
}
|
||||||
|
|
|
@ -167,5 +167,7 @@ void push_current_activity(enum current_activity screen);
|
||||||
void pop_current_activity(void);
|
void pop_current_activity(void);
|
||||||
enum current_activity get_current_activity(void);
|
enum current_activity get_current_activity(void);
|
||||||
|
|
||||||
|
/* format a sound value like: -1.05 dB */
|
||||||
|
int format_sound_value(char *buf, size_t len, int snd, int val);
|
||||||
|
|
||||||
#endif /* MISC_H */
|
#endif /* MISC_H */
|
||||||
|
|
|
@ -311,14 +311,14 @@ void HU_Init(void)
|
||||||
{
|
{
|
||||||
snprintf(buffer, sizeof(buffer), "DIG%d",j-48);
|
snprintf(buffer, sizeof(buffer), "DIG%d",j-48);
|
||||||
R_SetPatchNum(hu_font2 +i, buffer);
|
R_SetPatchNum(hu_font2 +i, buffer);
|
||||||
snprintf(buffer, sizeof(buffer), "STCFN%s%d", (j/10>0?"0":"00"), j); //NOTE ROCKHACK: "STCFN%.3d"
|
snprintf(buffer, sizeof(buffer), "STCFN%.3d", j);
|
||||||
R_SetPatchNum(&hu_font[i], buffer);
|
R_SetPatchNum(&hu_font[i], buffer);
|
||||||
}
|
}
|
||||||
else if ('A'<=j && j<='Z')
|
else if ('A'<=j && j<='Z')
|
||||||
{
|
{
|
||||||
snprintf(buffer, sizeof(buffer), "DIG%c",j);
|
snprintf(buffer, sizeof(buffer), "DIG%c",j);
|
||||||
R_SetPatchNum(hu_font2 +i, buffer);
|
R_SetPatchNum(hu_font2 +i, buffer);
|
||||||
snprintf(buffer, sizeof(buffer), "STCFN%s%d", (j/10>0?"0":"00"), j); //NOTE ROCKHACK: "STCFN%.3d"
|
snprintf(buffer, sizeof(buffer), "STCFN%.3d", j);
|
||||||
R_SetPatchNum(&hu_font[i], buffer);
|
R_SetPatchNum(&hu_font[i], buffer);
|
||||||
}
|
}
|
||||||
else if (j=='-')
|
else if (j=='-')
|
||||||
|
@ -348,14 +348,14 @@ void HU_Init(void)
|
||||||
}
|
}
|
||||||
else if (j<97)
|
else if (j<97)
|
||||||
{
|
{
|
||||||
snprintf(buffer, sizeof(buffer), "STCFN%s%d", (j/10>0?"0":"00"), j); //NOTE ROCKHACK: "STCFN%.3d"
|
snprintf(buffer, sizeof(buffer), "STCFN%.3d", j);
|
||||||
R_SetPatchNum(hu_font2 +i, buffer);
|
R_SetPatchNum(hu_font2 +i, buffer);
|
||||||
R_SetPatchNum(&hu_font[i], buffer);
|
R_SetPatchNum(&hu_font[i], buffer);
|
||||||
//jff 2/23/98 make all font chars defined, useful or not
|
//jff 2/23/98 make all font chars defined, useful or not
|
||||||
}
|
}
|
||||||
else if (j>122)
|
else if (j>122)
|
||||||
{
|
{
|
||||||
snprintf(buffer, sizeof(buffer), "STBR%d", j); //NOTE: "STBR%.3d"
|
snprintf(buffer, sizeof(buffer), "STBR%.3d", j);
|
||||||
R_SetPatchNum(hu_font2 +i, buffer);
|
R_SetPatchNum(hu_font2 +i, buffer);
|
||||||
R_SetPatchNum(&hu_font[i], buffer);
|
R_SetPatchNum(&hu_font[i], buffer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -397,8 +397,7 @@ void WI_unloadData(void);
|
||||||
void WI_levelNameLump(int epis, int map, char* buf, int bsize)
|
void WI_levelNameLump(int epis, int map, char* buf, int bsize)
|
||||||
{
|
{
|
||||||
if (gamemode == commercial) {
|
if (gamemode == commercial) {
|
||||||
snprintf(buf, bsize,"CWILV%s%d",(map/10>0?"":"0"), map); //ANOTHER ROCKHACK "CWILV%2.2d"
|
snprintf(buf,bsize, "CWILV%2.2d", map);
|
||||||
//snprintf(buf,bsize, "CWILV%2.2d", map);
|
|
||||||
} else {
|
} else {
|
||||||
snprintf(buf,bsize, "WILV%d%d", epis, map);
|
snprintf(buf,bsize, "WILV%d%d", epis, map);
|
||||||
}
|
}
|
||||||
|
@ -1829,8 +1828,7 @@ void WI_loadData(void)
|
||||||
if (wbs->epsd != 1 || j != 8)
|
if (wbs->epsd != 1 || j != 8)
|
||||||
{
|
{
|
||||||
// animations
|
// animations
|
||||||
snprintf(name, sizeof(name),"WIA%d%s%d%s%d", wbs->epsd, (j/10>0?"":"0"), j,(i/10>0?"":"0"), i); //ANOTHER ROCKHACK
|
snprintf(name, sizeof(name),"WIA%d%.2d%.2d", wbs->epsd, j, i);
|
||||||
//snprintf(name, sizeof(name),"WIA%d%.2d%.2d", wbs->epsd, j, i);
|
|
||||||
a->p[i] = W_CacheLumpName(name);
|
a->p[i] = W_CacheLumpName(name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1872,8 +1870,7 @@ void WI_unloadData(void)
|
||||||
// MONDO HACK!
|
// MONDO HACK!
|
||||||
if (wbs->epsd != 1 || j != 8) {
|
if (wbs->epsd != 1 || j != 8) {
|
||||||
// animations
|
// animations
|
||||||
snprintf(name, sizeof(name),"WIA%d%s%d%s%d", wbs->epsd, (j/10>0?"":"0"), j,(i/10>0?"":"0"), i); //ANOTHER ROCKHACK
|
snprintf(name,sizeof(name), "WIA%d%.2d%.2d", wbs->epsd, j, i);
|
||||||
//snprintf(name,sizeof(name), "WIA%d%.2d%.2d", wbs->epsd, j, i);
|
|
||||||
W_UnlockLumpName(name);
|
W_UnlockLumpName(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,12 +516,10 @@ static void add_acct(void)
|
||||||
|
|
||||||
static void show_code(int acct)
|
static void show_code(int acct)
|
||||||
{
|
{
|
||||||
/* rockbox's printf doesn't support a variable field width afaik */
|
|
||||||
char format_buf[64];
|
|
||||||
if(!accounts[acct].is_totp)
|
if(!accounts[acct].is_totp)
|
||||||
{
|
{
|
||||||
rb->snprintf(format_buf, sizeof(format_buf), "%%0%dd", accounts[acct].digits);
|
rb->splashf(0, "%0*d", accounts[acct].digits,
|
||||||
rb->splashf(0, format_buf, HOTP(accounts[acct].secret,
|
HOTP(accounts[acct].secret,
|
||||||
accounts[acct].sec_len,
|
accounts[acct].sec_len,
|
||||||
accounts[acct].hotp_counter,
|
accounts[acct].hotp_counter,
|
||||||
accounts[acct].digits));
|
accounts[acct].digits));
|
||||||
|
@ -530,8 +528,8 @@ static void show_code(int acct)
|
||||||
#if CONFIG_RTC
|
#if CONFIG_RTC
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rb->snprintf(format_buf, sizeof(format_buf), "%%0%dd (%%ld second(s) left)", accounts[acct].digits);
|
rb->splashf(0, "%0*d (%ld seconds(s) left)", accounts[acct].digits,
|
||||||
rb->splashf(0, format_buf, TOTP(accounts[acct].secret,
|
TOTP(accounts[acct].secret,
|
||||||
accounts[acct].sec_len,
|
accounts[acct].sec_len,
|
||||||
accounts[acct].totp_period,
|
accounts[acct].totp_period,
|
||||||
accounts[acct].digits),
|
accounts[acct].digits),
|
||||||
|
|
|
@ -548,39 +548,9 @@ static void auto_gain_control(int *peak_l, int *peak_r, int *balance)
|
||||||
}
|
}
|
||||||
#endif /* HAVE_AGC */
|
#endif /* HAVE_AGC */
|
||||||
|
|
||||||
static const char* const fmtstr[] =
|
|
||||||
{
|
|
||||||
"%c%d %s", /* no decimals */
|
|
||||||
"%c%d.%d %s ", /* 1 decimal */
|
|
||||||
"%c%d.%02d %s " /* 2 decimals */
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char factor[] = {1, 10, 100};
|
|
||||||
|
|
||||||
static char *fmt_gain(int snd, int val, char *str, int len)
|
static char *fmt_gain(int snd, int val, char *str, int len)
|
||||||
{
|
{
|
||||||
int i, d, numdec;
|
format_sound_value(str, len, snd, val);
|
||||||
const char *unit;
|
|
||||||
char sign = ' ';
|
|
||||||
|
|
||||||
val = sound_val2phys(snd, val);
|
|
||||||
if(val < 0)
|
|
||||||
{
|
|
||||||
sign = '-';
|
|
||||||
val = -val;
|
|
||||||
}
|
|
||||||
numdec = sound_numdecimals(snd);
|
|
||||||
unit = sound_unit(snd);
|
|
||||||
|
|
||||||
if(numdec)
|
|
||||||
{
|
|
||||||
i = val / factor[numdec];
|
|
||||||
d = val % factor[numdec];
|
|
||||||
snprintf(str, len, fmtstr[numdec], sign, i, d, unit);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
snprintf(str, len, fmtstr[numdec], sign, val, unit);
|
|
||||||
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,6 @@ char *create_numbered_filename(char *buffer, const char *path,
|
||||||
int pathlen;
|
int pathlen;
|
||||||
int prefixlen = strlen(prefix);
|
int prefixlen = strlen(prefix);
|
||||||
int suffixlen = strlen(suffix);
|
int suffixlen = strlen(suffix);
|
||||||
char fmtstring[12];
|
|
||||||
|
|
||||||
if (buffer != path)
|
if (buffer != path)
|
||||||
strlcpy(buffer, path, MAX_PATH);
|
strlcpy(buffer, path, MAX_PATH);
|
||||||
|
@ -152,9 +151,8 @@ char *create_numbered_filename(char *buffer, const char *path,
|
||||||
|
|
||||||
max_num++;
|
max_num++;
|
||||||
|
|
||||||
snprintf(fmtstring, sizeof(fmtstring), "/%%s%%0%dd%%s", numberlen);
|
snprintf(buffer + pathlen, MAX_PATH - pathlen, "/%s%0*d%s", prefix,
|
||||||
snprintf(buffer + pathlen, MAX_PATH - pathlen, fmtstring, prefix,
|
numberlen, max_num, suffix);
|
||||||
max_num, suffix);
|
|
||||||
|
|
||||||
#ifdef IF_CNFN_NUM
|
#ifdef IF_CNFN_NUM
|
||||||
if (num)
|
if (num)
|
||||||
|
|
|
@ -211,6 +211,35 @@ long fp_sqrt(long x, unsigned int fracbits)
|
||||||
return g;
|
return g;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* raise an integer to an integer power */
|
||||||
|
long ipow(long x, long y)
|
||||||
|
{
|
||||||
|
/* y[k] = bit k of y, 0 or 1; k=0...n; n=|_ lg(y) _|
|
||||||
|
*
|
||||||
|
* x^y = x^(y[0]*2^0 + y[1]*2^1 + ... + y[n]*2^n)
|
||||||
|
* = x^(y[0]*2^0) * x^(y[1]*2^1) * ... * x^(y[n]*2^n)
|
||||||
|
*/
|
||||||
|
long a = 1;
|
||||||
|
|
||||||
|
if (y < 0 && x != -1)
|
||||||
|
{
|
||||||
|
a = 0; /* would be < 1 or +inf if x == 0 */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (y)
|
||||||
|
{
|
||||||
|
if (y & 1)
|
||||||
|
a *= x;
|
||||||
|
|
||||||
|
y /= 2;
|
||||||
|
x *= x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fixed point sinus using a lookup table
|
* Fixed point sinus using a lookup table
|
||||||
* don't forget to divide the result by 16384 to get the actual sinus value
|
* don't forget to divide the result by 16384 to get the actual sinus value
|
||||||
|
|
|
@ -85,6 +85,8 @@ long fp14_sin(int val);
|
||||||
long fp16_log(int x);
|
long fp16_log(int x);
|
||||||
long fp16_exp(int x);
|
long fp16_exp(int x);
|
||||||
|
|
||||||
|
long ipow(long x, long y);
|
||||||
|
|
||||||
/* fast unsigned multiplication (16x16bit->32bit or 32x32bit->32bit,
|
/* fast unsigned multiplication (16x16bit->32bit or 32x32bit->32bit,
|
||||||
* whichever is faster for the architecture) */
|
* whichever is faster for the architecture) */
|
||||||
#ifdef CPU_ARM
|
#ifdef CPU_ARM
|
||||||
|
|
|
@ -13,11 +13,8 @@ FIXEDPOINTLIB_OBJ := $(call c2obj, $(FIXEDPOINTLIB_SRC))
|
||||||
INCLUDES += -I$(FIXEDPOINTLIB_DIR)
|
INCLUDES += -I$(FIXEDPOINTLIB_DIR)
|
||||||
OTHER_SRC += $(FIXEDPOINTLIB_SRC)
|
OTHER_SRC += $(FIXEDPOINTLIB_SRC)
|
||||||
|
|
||||||
# If not SOFTWARECODECS, then only plugins depend upon us
|
|
||||||
ifdef SOFTWARECODECS
|
|
||||||
CORE_LIBS += $(FIXEDPOINTLIB)
|
CORE_LIBS += $(FIXEDPOINTLIB)
|
||||||
CORE_GCSECTIONS := yes
|
CORE_GCSECTIONS := yes
|
||||||
endif
|
|
||||||
|
|
||||||
FIXEDPOINTLIB_FLAGS := $(CFLAGS) $(SHARED_CFLAGS)
|
FIXEDPOINTLIB_FLAGS := $(CFLAGS) $(SHARED_CFLAGS)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue