Using newlib-specific sniprintf in place of snprintf
Using the newlib's printing functions without floating point support in order to reduce the overall binary size. This allows to free up around 15kB of space in the .text section.
This commit is contained in:
parent
44385b3b25
commit
1791e70eef
|
|
@ -285,6 +285,7 @@ pulse_dep = dependency('libpulse', required: false)
|
||||||
linux_src += openrtx_src
|
linux_src += openrtx_src
|
||||||
linux_inc += openrtx_inc
|
linux_inc += openrtx_inc
|
||||||
linux_def += openrtx_def
|
linux_def += openrtx_def
|
||||||
|
linux_def += {'sniprintf':'snprintf', 'vsniprintf':'vsnprintf'}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Standard UI
|
# Standard UI
|
||||||
|
|
|
||||||
|
|
@ -566,7 +566,7 @@ point_t gfx_print(point_t start, fontSize_t size, textAlign_t alignment,
|
||||||
// Get format string and arguments from var char
|
// Get format string and arguments from var char
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vsnprintf(text, sizeof(text)-1, fmt, ap);
|
vsniprintf(text, sizeof(text)-1, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
return gfx_printBuffer(start, size, alignment, color, text);
|
return gfx_printBuffer(start, size, alignment, color, text);
|
||||||
|
|
@ -579,7 +579,7 @@ point_t gfx_printLine(uint8_t cur, uint8_t tot, int16_t startY, int16_t endY,
|
||||||
// Get format string and arguments from var char
|
// Get format string and arguments from var char
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vsnprintf(text, sizeof(text)-1, fmt, ap);
|
vsniprintf(text, sizeof(text)-1, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
// Estimate font height by reading the gliph | height
|
// Estimate font height by reading the gliph | height
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ void vp_announceChannelName(const channel_t* channel,
|
||||||
// Only queue the name if it is not the same as the raw number.
|
// Only queue the name if it is not the same as the raw number.
|
||||||
// Otherwise the radio will repeat channel 1 channel 1 for channel 1.
|
// Otherwise the radio will repeat channel 1 channel 1 for channel 1.
|
||||||
char numAsStr[16] = "\0";
|
char numAsStr[16] = "\0";
|
||||||
snprintf(numAsStr, 16, "Channel%d", channelNumber);
|
sniprintf(numAsStr, 16, "Channel%d", channelNumber);
|
||||||
|
|
||||||
if (strcmp(numAsStr, channel->name) != 0)
|
if (strcmp(numAsStr, channel->name) != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -94,7 +94,7 @@ void vp_queueFrequency(const freq_t freq)
|
||||||
int MHz = (freq / 1000000);
|
int MHz = (freq / 1000000);
|
||||||
int kHz = ((freq % 1000000) / 100);
|
int kHz = ((freq % 1000000) / 100);
|
||||||
|
|
||||||
snprintf(buffer, 16, "%d.%05d", MHz, kHz);
|
sniprintf(buffer, 16, "%d.%05d", MHz, kHz);
|
||||||
|
|
||||||
stripTrailingZeroes(buffer);
|
stripTrailingZeroes(buffer);
|
||||||
|
|
||||||
|
|
@ -177,7 +177,7 @@ void vp_announcePower(const uint32_t power, const vpQueueFlags_t flags)
|
||||||
// Compute x.y format avoiding to pull in floating point math.
|
// Compute x.y format avoiding to pull in floating point math.
|
||||||
// Remember that power is expressed in mW!
|
// Remember that power is expressed in mW!
|
||||||
char buffer[16] = "\0";
|
char buffer[16] = "\0";
|
||||||
snprintf(buffer, 16, "%lu.%lu", (power / 1000), (power % 1000) / 100);
|
sniprintf(buffer, 16, "%lu.%lu", (power / 1000), (power % 1000) / 100);
|
||||||
|
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
||||||
vp_queuePrompt(PROMPT_WATTS);
|
vp_queuePrompt(PROMPT_WATTS);
|
||||||
|
|
@ -367,7 +367,7 @@ void vp_announceCTCSS(const bool rxToneEnabled, const uint8_t rxTone,
|
||||||
vp_queuePrompt(PROMPT_TONE);
|
vp_queuePrompt(PROMPT_TONE);
|
||||||
|
|
||||||
uint16_t tone = ctcss_tone[rxTone];
|
uint16_t tone = ctcss_tone[rxTone];
|
||||||
snprintf(buffer, sizeof(buffer), "%d.%d", (tone / 10), (tone % 10));
|
sniprintf(buffer, sizeof(buffer), "%d.%d", (tone / 10), (tone % 10));
|
||||||
|
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
||||||
vp_queuePrompt(PROMPT_HERTZ);
|
vp_queuePrompt(PROMPT_HERTZ);
|
||||||
|
|
@ -386,7 +386,7 @@ void vp_announceCTCSS(const bool rxToneEnabled, const uint8_t rxTone,
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t tone = ctcss_tone[rxTone];
|
uint16_t tone = ctcss_tone[rxTone];
|
||||||
snprintf(buffer, sizeof(buffer), "%d.%d", (tone / 10), (tone % 10));
|
sniprintf(buffer, sizeof(buffer), "%d.%d", (tone / 10), (tone % 10));
|
||||||
|
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
||||||
vp_queuePrompt(PROMPT_HERTZ);
|
vp_queuePrompt(PROMPT_HERTZ);
|
||||||
|
|
@ -400,7 +400,7 @@ void vp_announceCTCSS(const bool rxToneEnabled, const uint8_t rxTone,
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t tone = ctcss_tone[txTone];
|
uint16_t tone = ctcss_tone[txTone];
|
||||||
snprintf(buffer, sizeof(buffer), "%d.%d", (tone / 10), (tone % 10));
|
sniprintf(buffer, sizeof(buffer), "%d.%d", (tone / 10), (tone % 10));
|
||||||
|
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
||||||
vp_queuePrompt(PROMPT_HERTZ);
|
vp_queuePrompt(PROMPT_HERTZ);
|
||||||
|
|
@ -637,7 +637,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags)
|
||||||
vp_queuePrompt(PROMPT_COMPASS);
|
vp_queuePrompt(PROMPT_COMPASS);
|
||||||
if (!IsCompassCloseEnoughToCardinalPoint())
|
if (!IsCompassCloseEnoughToCardinalPoint())
|
||||||
{
|
{
|
||||||
snprintf(buffer, 16, "%3.1f", state.gps_data.tmg_true);
|
sniprintf(buffer, 16, "%3.1f", state.gps_data.tmg_true);
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
||||||
vp_queuePrompt(PROMPT_DEGREES);
|
vp_queuePrompt(PROMPT_DEGREES);
|
||||||
}
|
}
|
||||||
|
|
@ -672,7 +672,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags)
|
||||||
if ((gpsInfoFlags & vpGPSSpeed) != 0)
|
if ((gpsInfoFlags & vpGPSSpeed) != 0)
|
||||||
{
|
{
|
||||||
// speed/altitude:
|
// speed/altitude:
|
||||||
snprintf(buffer, 16, "%4.1fkm/h", state.gps_data.speed);
|
sniprintf(buffer, 16, "%4.1fkm/h", state.gps_data.speed);
|
||||||
vp_queuePrompt(PROMPT_SPEED);
|
vp_queuePrompt(PROMPT_SPEED);
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols |
|
vp_queueString(buffer, vpAnnounceCommonSymbols |
|
||||||
vpAnnounceLessCommonSymbols);
|
vpAnnounceLessCommonSymbols);
|
||||||
|
|
@ -682,7 +682,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags)
|
||||||
{
|
{
|
||||||
vp_queuePrompt(PROMPT_ALTITUDE);
|
vp_queuePrompt(PROMPT_ALTITUDE);
|
||||||
|
|
||||||
snprintf(buffer, 16, "%4.1fm", state.gps_data.altitude);
|
sniprintf(buffer, 16, "%4.1fm", state.gps_data.altitude);
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
||||||
addSilenceIfNeeded(flags);
|
addSilenceIfNeeded(flags);
|
||||||
}
|
}
|
||||||
|
|
@ -690,7 +690,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags)
|
||||||
if ((gpsInfoFlags & vpGPSLatitude) != 0)
|
if ((gpsInfoFlags & vpGPSLatitude) != 0)
|
||||||
{
|
{
|
||||||
// lat/long
|
// lat/long
|
||||||
snprintf(buffer, 16, "%8.6f", state.gps_data.latitude);
|
sniprintf(buffer, 16, "%8.6f", state.gps_data.latitude);
|
||||||
stripTrailingZeroes(buffer);
|
stripTrailingZeroes(buffer);
|
||||||
vp_queuePrompt(PROMPT_LATITUDE);
|
vp_queuePrompt(PROMPT_LATITUDE);
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
vp_queueString(buffer, vpAnnounceCommonSymbols);
|
||||||
|
|
@ -702,7 +702,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags)
|
||||||
float longitude = state.gps_data.longitude;
|
float longitude = state.gps_data.longitude;
|
||||||
voicePrompt_t direction = (longitude < 0) ? PROMPT_WEST : PROMPT_EAST;
|
voicePrompt_t direction = (longitude < 0) ? PROMPT_WEST : PROMPT_EAST;
|
||||||
longitude = (longitude < 0) ? -longitude : longitude;
|
longitude = (longitude < 0) ? -longitude : longitude;
|
||||||
snprintf(buffer, 16, "%8.6f", longitude);
|
sniprintf(buffer, 16, "%8.6f", longitude);
|
||||||
stripTrailingZeroes(buffer);
|
stripTrailingZeroes(buffer);
|
||||||
|
|
||||||
vp_queuePrompt(PROMPT_LONGITUDE);
|
vp_queuePrompt(PROMPT_LONGITUDE);
|
||||||
|
|
@ -775,7 +775,7 @@ void vp_announceSettingsTimeDate()
|
||||||
state.settings.utc_timezone);
|
state.settings.utc_timezone);
|
||||||
|
|
||||||
char buffer[16] = "\0";
|
char buffer[16] = "\0";
|
||||||
snprintf(buffer, 16, "%02d/%02d/%02d", local_time.date, local_time.month,
|
sniprintf(buffer, 16, "%02d/%02d/%02d", local_time.date, local_time.month,
|
||||||
local_time.year);
|
local_time.year);
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols |
|
vp_queueString(buffer, vpAnnounceCommonSymbols |
|
||||||
vpAnnounceLessCommonSymbols);
|
vpAnnounceLessCommonSymbols);
|
||||||
|
|
@ -783,7 +783,7 @@ void vp_announceSettingsTimeDate()
|
||||||
vp_queuePrompt(PROMPT_SILENCE);
|
vp_queuePrompt(PROMPT_SILENCE);
|
||||||
vp_queuePrompt(PROMPT_SILENCE);
|
vp_queuePrompt(PROMPT_SILENCE);
|
||||||
|
|
||||||
snprintf(buffer, 16, "%02d:%02d:%02d", local_time.hour, local_time.minute,
|
sniprintf(buffer, 16, "%02d:%02d:%02d", local_time.hour, local_time.minute,
|
||||||
local_time.second);
|
local_time.second);
|
||||||
vp_queueString(buffer, vpAnnounceCommonSymbols |
|
vp_queueString(buffer, vpAnnounceCommonSymbols |
|
||||||
vpAnnounceLessCommonSymbols);
|
vpAnnounceLessCommonSymbols);
|
||||||
|
|
|
||||||
|
|
@ -520,7 +520,7 @@ void vp_queueInteger(const int value)
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
vp_queuePrompt(PROMPT_MINUS);
|
vp_queuePrompt(PROMPT_MINUS);
|
||||||
|
|
||||||
snprintf(buf, 12, "%d", value);
|
sniprintf(buf, 12, "%d", value);
|
||||||
vp_queueString(buf, 0);
|
vp_queueString(buf, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,24 +82,24 @@ void _ui_drawModeInfo(ui_state_t* ui_state)
|
||||||
|
|
||||||
// Get Bandwidth string
|
// Get Bandwidth string
|
||||||
if(last_state.channel.bandwidth == BW_12_5)
|
if(last_state.channel.bandwidth == BW_12_5)
|
||||||
snprintf(bw_str, 8, "NFM");
|
sniprintf(bw_str, 8, "NFM");
|
||||||
else if(last_state.channel.bandwidth == BW_20)
|
else if(last_state.channel.bandwidth == BW_20)
|
||||||
snprintf(bw_str, 8, "FM20");
|
sniprintf(bw_str, 8, "FM20");
|
||||||
else if(last_state.channel.bandwidth == BW_25)
|
else if(last_state.channel.bandwidth == BW_25)
|
||||||
snprintf(bw_str, 8, "FM");
|
sniprintf(bw_str, 8, "FM");
|
||||||
|
|
||||||
// Get encdec string
|
// Get encdec string
|
||||||
bool tone_tx_enable = last_state.channel.fm.txToneEn;
|
bool tone_tx_enable = last_state.channel.fm.txToneEn;
|
||||||
bool tone_rx_enable = last_state.channel.fm.rxToneEn;
|
bool tone_rx_enable = last_state.channel.fm.rxToneEn;
|
||||||
|
|
||||||
if (tone_tx_enable && tone_rx_enable)
|
if (tone_tx_enable && tone_rx_enable)
|
||||||
snprintf(encdec_str, 9, "ED");
|
sniprintf(encdec_str, 9, "ED");
|
||||||
else if (tone_tx_enable && !tone_rx_enable)
|
else if (tone_tx_enable && !tone_rx_enable)
|
||||||
snprintf(encdec_str, 9, " E");
|
sniprintf(encdec_str, 9, " E");
|
||||||
else if (!tone_tx_enable && tone_rx_enable)
|
else if (!tone_tx_enable && tone_rx_enable)
|
||||||
snprintf(encdec_str, 9, " D");
|
sniprintf(encdec_str, 9, " D");
|
||||||
else
|
else
|
||||||
snprintf(encdec_str, 9, " ");
|
sniprintf(encdec_str, 9, " ");
|
||||||
|
|
||||||
// Print Bandwidth, Tone and encdec info
|
// Print Bandwidth, Tone and encdec info
|
||||||
if (tone_tx_enable || tone_rx_enable)
|
if (tone_tx_enable || tone_rx_enable)
|
||||||
|
|
@ -195,7 +195,7 @@ void _ui_drawFrequency()
|
||||||
|
|
||||||
// Print big numbers frequency
|
// Print big numbers frequency
|
||||||
char freq_str[16] = {0};
|
char freq_str[16] = {0};
|
||||||
snprintf(freq_str, sizeof(freq_str), "%lu.%lu", (freq / 1000000), (freq % 1000000));
|
sniprintf(freq_str, sizeof(freq_str), "%lu.%lu", (freq / 1000000), (freq % 1000000));
|
||||||
stripTrailingZeroes(freq_str);
|
stripTrailingZeroes(freq_str);
|
||||||
|
|
||||||
gfx_print(layout.line3_large_pos, layout.line3_large_font, TEXT_ALIGN_CENTER,
|
gfx_print(layout.line3_large_pos, layout.line3_large_font, TEXT_ALIGN_CENTER,
|
||||||
|
|
|
||||||
|
|
@ -246,21 +246,21 @@ void _ui_drawMenuListValue(ui_state_t* ui_state, uint8_t selected,
|
||||||
int _ui_getMenuTopEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getMenuTopEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= menu_num) return -1;
|
if(index >= menu_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", menu_items[index]);
|
sniprintf(buf, max_len, "%s", menu_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _ui_getSettingsEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getSettingsEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= settings_num) return -1;
|
if(index >= settings_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", settings_items[index]);
|
sniprintf(buf, max_len, "%s", settings_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _ui_getDisplayEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getDisplayEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= display_num) return -1;
|
if(index >= display_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", display_items[index]);
|
sniprintf(buf, max_len, "%s", display_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -281,11 +281,11 @@ int _ui_getDisplayValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case D_TIMER:
|
case D_TIMER:
|
||||||
snprintf(buf, max_len, "%s",
|
sniprintf(buf, max_len, "%s",
|
||||||
display_timer_values[last_state.settings.display_timer]);
|
display_timer_values[last_state.settings.display_timer]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
snprintf(buf, max_len, "%d", value);
|
sniprintf(buf, max_len, "%d", value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -293,7 +293,7 @@ int _ui_getDisplayValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
int _ui_getSettingsGPSEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getSettingsGPSEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= settings_gps_num) return -1;
|
if(index >= settings_gps_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", settings_gps_items[index]);
|
sniprintf(buf, max_len, "%s", settings_gps_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -303,12 +303,12 @@ int _ui_getSettingsGPSValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
case G_ENABLED:
|
case G_ENABLED:
|
||||||
snprintf(buf, max_len, "%s", (last_state.settings.gps_enabled) ?
|
sniprintf(buf, max_len, "%s", (last_state.settings.gps_enabled) ?
|
||||||
currentLanguage->on :
|
currentLanguage->on :
|
||||||
currentLanguage->off);
|
currentLanguage->off);
|
||||||
break;
|
break;
|
||||||
case G_SET_TIME:
|
case G_SET_TIME:
|
||||||
snprintf(buf, max_len, "%s", (last_state.gps_set_time) ?
|
sniprintf(buf, max_len, "%s", (last_state.gps_set_time) ?
|
||||||
currentLanguage->on :
|
currentLanguage->on :
|
||||||
currentLanguage->off);
|
currentLanguage->off);
|
||||||
break;
|
break;
|
||||||
|
|
@ -329,7 +329,7 @@ int _ui_getSettingsGPSValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
tz_mn *= (-1);
|
tz_mn *= (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, max_len, "%c%d.%d", sign, tz_hr, tz_mn);
|
sniprintf(buf, max_len, "%c%d.%d", sign, tz_hr, tz_mn);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -340,7 +340,7 @@ int _ui_getSettingsGPSValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
int _ui_getRadioEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getRadioEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= settings_radio_num) return -1;
|
if(index >= settings_radio_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", settings_radio_items[index]);
|
sniprintf(buf, max_len, "%s", settings_radio_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -397,12 +397,12 @@ int _ui_getRadioValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: casts are there only to squelch -Wformat warnings on the
|
// NOTE: casts are there only to squelch -Wformat warnings on the
|
||||||
// snprintf.
|
// sniprintf.
|
||||||
char str[16];
|
char str[16];
|
||||||
snprintf(str, sizeof(str), "%u.%u", (unsigned int)(value / div),
|
sniprintf(str, sizeof(str), "%u.%u", (unsigned int)(value / div),
|
||||||
(unsigned int)(value % div));
|
(unsigned int)(value % div));
|
||||||
stripTrailingZeroes(str);
|
stripTrailingZeroes(str);
|
||||||
snprintf(buf, max_len, "%s%cHz", str, prefix);
|
sniprintf(buf, max_len, "%s%cHz", str, prefix);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -411,7 +411,7 @@ int _ui_getRadioValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
int _ui_getM17EntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getM17EntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= settings_m17_num) return -1;
|
if(index >= settings_m17_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", settings_m17_items[index]);
|
sniprintf(buf, max_len, "%s", settings_m17_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -423,14 +423,14 @@ int _ui_getM17ValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
case M17_CALLSIGN:
|
case M17_CALLSIGN:
|
||||||
snprintf(buf, max_len, "%s", last_state.settings.callsign);
|
sniprintf(buf, max_len, "%s", last_state.settings.callsign);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M17_CAN:
|
case M17_CAN:
|
||||||
snprintf(buf, max_len, "%d", last_state.settings.m17_can);
|
sniprintf(buf, max_len, "%d", last_state.settings.m17_can);
|
||||||
break;
|
break;
|
||||||
case M17_CAN_RX:
|
case M17_CAN_RX:
|
||||||
snprintf(buf, max_len, "%s", (last_state.settings.m17_can_rx) ?
|
sniprintf(buf, max_len, "%s", (last_state.settings.m17_can_rx) ?
|
||||||
currentLanguage->on :
|
currentLanguage->on :
|
||||||
currentLanguage->off);
|
currentLanguage->off);
|
||||||
break;
|
break;
|
||||||
|
|
@ -443,7 +443,7 @@ int _ui_getM17ValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
int _ui_getAccessibilityEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getAccessibilityEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= settings_accessibility_num) return -1;
|
if(index >= settings_accessibility_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", settings_accessibility_items[index]);
|
sniprintf(buf, max_len, "%s", settings_accessibility_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -459,22 +459,22 @@ int _ui_getAccessibilityValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
switch (value)
|
switch (value)
|
||||||
{
|
{
|
||||||
case vpNone:
|
case vpNone:
|
||||||
snprintf(buf, max_len, "%s", currentLanguage->off);
|
sniprintf(buf, max_len, "%s", currentLanguage->off);
|
||||||
break;
|
break;
|
||||||
case vpBeep:
|
case vpBeep:
|
||||||
snprintf(buf, max_len, "%s", currentLanguage->beep);
|
sniprintf(buf, max_len, "%s", currentLanguage->beep);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf(buf, max_len, "%d", (value-vpBeep));
|
sniprintf(buf, max_len, "%d", (value-vpBeep));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case A_PHONETIC:
|
case A_PHONETIC:
|
||||||
snprintf(buf, max_len, "%s", last_state.settings.vpPhoneticSpell ? currentLanguage->on : currentLanguage->off);
|
sniprintf(buf, max_len, "%s", last_state.settings.vpPhoneticSpell ? currentLanguage->on : currentLanguage->off);
|
||||||
break;
|
break;
|
||||||
case A_MACRO_LATCH:
|
case A_MACRO_LATCH:
|
||||||
snprintf(buf, max_len, "%s", last_state.settings.macroMenuLatch ? currentLanguage->on : currentLanguage->off);
|
sniprintf(buf, max_len, "%s", last_state.settings.macroMenuLatch ? currentLanguage->on : currentLanguage->off);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -483,14 +483,14 @@ int _ui_getAccessibilityValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
int _ui_getBackupRestoreEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getBackupRestoreEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= backup_restore_num) return -1;
|
if(index >= backup_restore_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", backup_restore_items[index]);
|
sniprintf(buf, max_len, "%s", backup_restore_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _ui_getInfoEntryName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getInfoEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
if(index >= info_num) return -1;
|
if(index >= info_num) return -1;
|
||||||
snprintf(buf, max_len, "%s", info_items[index]);
|
sniprintf(buf, max_len, "%s", info_items[index]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -501,7 +501,7 @@ int _ui_getInfoValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
case 0: // Git Version
|
case 0: // Git Version
|
||||||
snprintf(buf, max_len, "%s", GIT_VERSION);
|
sniprintf(buf, max_len, "%s", GIT_VERSION);
|
||||||
break;
|
break;
|
||||||
case 1: // Battery voltage
|
case 1: // Battery voltage
|
||||||
{
|
{
|
||||||
|
|
@ -509,29 +509,29 @@ int _ui_getInfoValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
// to mantissa for rounding to nearest integer
|
// to mantissa for rounding to nearest integer
|
||||||
uint16_t volt = (last_state.v_bat + 50) / 1000;
|
uint16_t volt = (last_state.v_bat + 50) / 1000;
|
||||||
uint16_t mvolt = ((last_state.v_bat - volt * 1000) + 50) / 100;
|
uint16_t mvolt = ((last_state.v_bat - volt * 1000) + 50) / 100;
|
||||||
snprintf(buf, max_len, "%d.%dV", volt, mvolt);
|
sniprintf(buf, max_len, "%d.%dV", volt, mvolt);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2: // Battery charge
|
case 2: // Battery charge
|
||||||
snprintf(buf, max_len, "%d%%", last_state.charge);
|
sniprintf(buf, max_len, "%d%%", last_state.charge);
|
||||||
break;
|
break;
|
||||||
case 3: // RSSI
|
case 3: // RSSI
|
||||||
snprintf(buf, max_len, "%ddBm", last_state.rssi);
|
sniprintf(buf, max_len, "%ddBm", last_state.rssi);
|
||||||
break;
|
break;
|
||||||
case 4: // Heap usage
|
case 4: // Heap usage
|
||||||
snprintf(buf, max_len, "%dB", getHeapSize() - getCurrentFreeHeap());
|
sniprintf(buf, max_len, "%dB", getHeapSize() - getCurrentFreeHeap());
|
||||||
break;
|
break;
|
||||||
case 5: // Band
|
case 5: // Band
|
||||||
snprintf(buf, max_len, "%s %s", hwinfo->vhf_band ? currentLanguage->VHF : "", hwinfo->uhf_band ? currentLanguage->UHF : "");
|
sniprintf(buf, max_len, "%s %s", hwinfo->vhf_band ? currentLanguage->VHF : "", hwinfo->uhf_band ? currentLanguage->UHF : "");
|
||||||
break;
|
break;
|
||||||
case 6: // VHF
|
case 6: // VHF
|
||||||
snprintf(buf, max_len, "%d - %d", hwinfo->vhf_minFreq, hwinfo->vhf_maxFreq);
|
sniprintf(buf, max_len, "%d - %d", hwinfo->vhf_minFreq, hwinfo->vhf_maxFreq);
|
||||||
break;
|
break;
|
||||||
case 7: // UHF
|
case 7: // UHF
|
||||||
snprintf(buf, max_len, "%d - %d", hwinfo->uhf_minFreq, hwinfo->uhf_maxFreq);
|
sniprintf(buf, max_len, "%d - %d", hwinfo->uhf_minFreq, hwinfo->uhf_maxFreq);
|
||||||
break;
|
break;
|
||||||
case 8: // LCD Type
|
case 8: // LCD Type
|
||||||
snprintf(buf, max_len, "%d", hwinfo->hw_version);
|
sniprintf(buf, max_len, "%d", hwinfo->hw_version);
|
||||||
break;
|
break;
|
||||||
#ifdef PLATFORM_TTWRPLUS
|
#ifdef PLATFORM_TTWRPLUS
|
||||||
case 9: // Radio model
|
case 9: // Radio model
|
||||||
|
|
@ -544,7 +544,7 @@ int _ui_getInfoValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
const char *fwVer = sa8x8_getFwVersion();
|
const char *fwVer = sa8x8_getFwVersion();
|
||||||
|
|
||||||
sscanf(fwVer, "sa8x8-fw/v%hhu.%hhu.%hhu.r%hhu", &major, &minor, &patch, &release);
|
sscanf(fwVer, "sa8x8-fw/v%hhu.%hhu.%hhu.r%hhu", &major, &minor, &patch, &release);
|
||||||
snprintf(buf, max_len,"v%hhu.%hhu.%hhu.r%hhu", major, minor, patch, release);
|
sniprintf(buf, max_len,"v%hhu.%hhu.%hhu.r%hhu", major, minor, patch, release);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -565,7 +565,7 @@ int _ui_getBankName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
bankHdr_t bank;
|
bankHdr_t bank;
|
||||||
result = cps_readBankHeader(&bank, index - 1);
|
result = cps_readBankHeader(&bank, index - 1);
|
||||||
if(result != -1)
|
if(result != -1)
|
||||||
snprintf(buf, max_len, "%s", bank.name);
|
sniprintf(buf, max_len, "%s", bank.name);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -575,7 +575,7 @@ int _ui_getChannelName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
channel_t channel;
|
channel_t channel;
|
||||||
int result = cps_readChannel(&channel, index);
|
int result = cps_readChannel(&channel, index);
|
||||||
if(result != -1)
|
if(result != -1)
|
||||||
snprintf(buf, max_len, "%s", channel.name);
|
sniprintf(buf, max_len, "%s", channel.name);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -584,7 +584,7 @@ int _ui_getContactName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
contact_t contact;
|
contact_t contact;
|
||||||
int result = cps_readContact(&contact, index);
|
int result = cps_readContact(&contact, index);
|
||||||
if(result != -1)
|
if(result != -1)
|
||||||
snprintf(buf, max_len, "%s", contact.name);
|
sniprintf(buf, max_len, "%s", contact.name);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1019,8 +1019,8 @@ void _ui_drawSettingsRadio(ui_state_t* ui_state)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: casts are there only to squelch -Wformat warnings on the
|
// NOTE: casts are there only to squelch -Wformat warnings on the
|
||||||
// snprintf.
|
// sniprintf.
|
||||||
snprintf(buf, sizeof(buf), "%u.%u", (unsigned int)(ui_state->new_offset / div),
|
sniprintf(buf, sizeof(buf), "%u.%u", (unsigned int)(ui_state->new_offset / div),
|
||||||
(unsigned int)(ui_state->new_offset % div));
|
(unsigned int)(ui_state->new_offset % div));
|
||||||
stripTrailingZeroes(buf);
|
stripTrailingZeroes(buf);
|
||||||
|
|
||||||
|
|
@ -1113,13 +1113,13 @@ bool _ui_drawMacroMenu(ui_state_t* ui_state)
|
||||||
bool tone_tx_enable = last_state.channel.fm.txToneEn;
|
bool tone_tx_enable = last_state.channel.fm.txToneEn;
|
||||||
bool tone_rx_enable = last_state.channel.fm.rxToneEn;
|
bool tone_rx_enable = last_state.channel.fm.rxToneEn;
|
||||||
if (tone_tx_enable && tone_rx_enable)
|
if (tone_tx_enable && tone_rx_enable)
|
||||||
snprintf(encdec_str, 9, " E+D");
|
sniprintf(encdec_str, 9, " E+D");
|
||||||
else if (tone_tx_enable && !tone_rx_enable)
|
else if (tone_tx_enable && !tone_rx_enable)
|
||||||
snprintf(encdec_str, 9, " E ");
|
sniprintf(encdec_str, 9, " E ");
|
||||||
else if (!tone_tx_enable && tone_rx_enable)
|
else if (!tone_tx_enable && tone_rx_enable)
|
||||||
snprintf(encdec_str, 9, " D ");
|
sniprintf(encdec_str, 9, " D ");
|
||||||
else
|
else
|
||||||
snprintf(encdec_str, 9, " ");
|
sniprintf(encdec_str, 9, " ");
|
||||||
gfx_print(layout.line1_pos, layout.top_font, TEXT_ALIGN_RIGHT,
|
gfx_print(layout.line1_pos, layout.top_font, TEXT_ALIGN_RIGHT,
|
||||||
color_white, encdec_str);
|
color_white, encdec_str);
|
||||||
}
|
}
|
||||||
|
|
@ -1149,13 +1149,13 @@ bool _ui_drawMacroMenu(ui_state_t* ui_state)
|
||||||
switch (last_state.channel.bandwidth)
|
switch (last_state.channel.bandwidth)
|
||||||
{
|
{
|
||||||
case BW_12_5:
|
case BW_12_5:
|
||||||
snprintf(bw_str, 12, " BW 12.5");
|
sniprintf(bw_str, 12, " BW 12.5");
|
||||||
break;
|
break;
|
||||||
case BW_20:
|
case BW_20:
|
||||||
snprintf(bw_str, 12, " BW 20 ");
|
sniprintf(bw_str, 12, " BW 20 ");
|
||||||
break;
|
break;
|
||||||
case BW_25:
|
case BW_25:
|
||||||
snprintf(bw_str, 12, " BW 25 ");
|
sniprintf(bw_str, 12, " BW 25 ");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1181,14 +1181,14 @@ bool _ui_drawMacroMenu(ui_state_t* ui_state)
|
||||||
switch(last_state.channel.mode)
|
switch(last_state.channel.mode)
|
||||||
{
|
{
|
||||||
case OPMODE_FM:
|
case OPMODE_FM:
|
||||||
snprintf(mode_str, 12," FM");
|
sniprintf(mode_str, 12," FM");
|
||||||
break;
|
break;
|
||||||
case OPMODE_DMR:
|
case OPMODE_DMR:
|
||||||
snprintf(mode_str, 12," DMR");
|
sniprintf(mode_str, 12," DMR");
|
||||||
break;
|
break;
|
||||||
#ifdef CONFIG_M17
|
#ifdef CONFIG_M17
|
||||||
case OPMODE_M17:
|
case OPMODE_M17:
|
||||||
snprintf(mode_str, 12," M17");
|
sniprintf(mode_str, 12," M17");
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,3 +20,4 @@ CONFIG_GEN_ISR_TABLES=y
|
||||||
CONFIG_GEN_IRQ_VECTOR_TABLE=n
|
CONFIG_GEN_IRQ_VECTOR_TABLE=n
|
||||||
CONFIG_CLOCK_CONTROL=y
|
CONFIG_CLOCK_CONTROL=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
|
CONFIG_NEWLIB_LIBC=y
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ CONFIG_SPI=y
|
||||||
CONFIG_LED_STRIP=y
|
CONFIG_LED_STRIP=y
|
||||||
CONFIG_WS2812_STRIP=y
|
CONFIG_WS2812_STRIP=y
|
||||||
CONFIG_WS2812_STRIP_SPI=y
|
CONFIG_WS2812_STRIP_SPI=y
|
||||||
CONFIG_PICOLIBC_IO_FLOAT=y
|
|
||||||
CONFIG_POSIX_API=y
|
CONFIG_POSIX_API=y
|
||||||
CONFIG_FLASH=y
|
CONFIG_FLASH=y
|
||||||
CONFIG_FLASH_MAP=y
|
CONFIG_FLASH_MAP=y
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue