diff --git a/meson.build b/meson.build index 7d4b5bc9..20ddeb57 100644 --- a/meson.build +++ b/meson.build @@ -285,6 +285,7 @@ pulse_dep = dependency('libpulse', required: false) linux_src += openrtx_src linux_inc += openrtx_inc linux_def += openrtx_def +linux_def += {'sniprintf':'snprintf', 'vsniprintf':'vsnprintf'} # # Standard UI diff --git a/openrtx/src/core/graphics.c b/openrtx/src/core/graphics.c index 6190f49f..1dad20df 100644 --- a/openrtx/src/core/graphics.c +++ b/openrtx/src/core/graphics.c @@ -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 va_list ap; va_start(ap, fmt); - vsnprintf(text, sizeof(text)-1, fmt, ap); + vsniprintf(text, sizeof(text)-1, fmt, ap); va_end(ap); 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 va_list ap; va_start(ap, fmt); - vsnprintf(text, sizeof(text)-1, fmt, ap); + vsniprintf(text, sizeof(text)-1, fmt, ap); va_end(ap); // Estimate font height by reading the gliph | height diff --git a/openrtx/src/core/voicePromptUtils.c b/openrtx/src/core/voicePromptUtils.c index 94694c04..31cd96de 100644 --- a/openrtx/src/core/voicePromptUtils.c +++ b/openrtx/src/core/voicePromptUtils.c @@ -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. // Otherwise the radio will repeat channel 1 channel 1 for channel 1. char numAsStr[16] = "\0"; - snprintf(numAsStr, 16, "Channel%d", channelNumber); + sniprintf(numAsStr, 16, "Channel%d", channelNumber); if (strcmp(numAsStr, channel->name) != 0) { @@ -94,7 +94,7 @@ void vp_queueFrequency(const freq_t freq) int MHz = (freq / 1000000); int kHz = ((freq % 1000000) / 100); - snprintf(buffer, 16, "%d.%05d", MHz, kHz); + sniprintf(buffer, 16, "%d.%05d", MHz, kHz); 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. // Remember that power is expressed in mW! 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_queuePrompt(PROMPT_WATTS); @@ -367,7 +367,7 @@ void vp_announceCTCSS(const bool rxToneEnabled, const uint8_t rxTone, vp_queuePrompt(PROMPT_TONE); 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_queuePrompt(PROMPT_HERTZ); @@ -386,7 +386,7 @@ void vp_announceCTCSS(const bool rxToneEnabled, const uint8_t 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_queuePrompt(PROMPT_HERTZ); @@ -400,7 +400,7 @@ void vp_announceCTCSS(const bool rxToneEnabled, const uint8_t rxTone, } 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_queuePrompt(PROMPT_HERTZ); @@ -637,7 +637,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags) vp_queuePrompt(PROMPT_COMPASS); 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_queuePrompt(PROMPT_DEGREES); } @@ -672,7 +672,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags) if ((gpsInfoFlags & vpGPSSpeed) != 0) { // 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_queueString(buffer, vpAnnounceCommonSymbols | vpAnnounceLessCommonSymbols); @@ -682,7 +682,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags) { 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); addSilenceIfNeeded(flags); } @@ -690,7 +690,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags) if ((gpsInfoFlags & vpGPSLatitude) != 0) { // lat/long - snprintf(buffer, 16, "%8.6f", state.gps_data.latitude); + sniprintf(buffer, 16, "%8.6f", state.gps_data.latitude); stripTrailingZeroes(buffer); vp_queuePrompt(PROMPT_LATITUDE); vp_queueString(buffer, vpAnnounceCommonSymbols); @@ -702,7 +702,7 @@ void vp_announceGPSInfo(vpGPSInfoFlags_t gpsInfoFlags) float longitude = state.gps_data.longitude; voicePrompt_t direction = (longitude < 0) ? PROMPT_WEST : PROMPT_EAST; longitude = (longitude < 0) ? -longitude : longitude; - snprintf(buffer, 16, "%8.6f", longitude); + sniprintf(buffer, 16, "%8.6f", longitude); stripTrailingZeroes(buffer); vp_queuePrompt(PROMPT_LONGITUDE); @@ -775,7 +775,7 @@ void vp_announceSettingsTimeDate() state.settings.utc_timezone); 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); vp_queueString(buffer, vpAnnounceCommonSymbols | vpAnnounceLessCommonSymbols); @@ -783,7 +783,7 @@ void vp_announceSettingsTimeDate() 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); vp_queueString(buffer, vpAnnounceCommonSymbols | vpAnnounceLessCommonSymbols); diff --git a/openrtx/src/core/voicePrompts.c b/openrtx/src/core/voicePrompts.c index 35f33316..e43e98b2 100644 --- a/openrtx/src/core/voicePrompts.c +++ b/openrtx/src/core/voicePrompts.c @@ -520,7 +520,7 @@ void vp_queueInteger(const int value) if (value < 0) vp_queuePrompt(PROMPT_MINUS); - snprintf(buf, 12, "%d", value); + sniprintf(buf, 12, "%d", value); vp_queueString(buf, 0); } diff --git a/openrtx/src/ui/default/ui_main.c b/openrtx/src/ui/default/ui_main.c index 0ace3509..fe8a7089 100644 --- a/openrtx/src/ui/default/ui_main.c +++ b/openrtx/src/ui/default/ui_main.c @@ -82,24 +82,24 @@ void _ui_drawModeInfo(ui_state_t* ui_state) // Get Bandwidth string 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) - snprintf(bw_str, 8, "FM20"); + sniprintf(bw_str, 8, "FM20"); else if(last_state.channel.bandwidth == BW_25) - snprintf(bw_str, 8, "FM"); + sniprintf(bw_str, 8, "FM"); // Get encdec string bool tone_tx_enable = last_state.channel.fm.txToneEn; bool tone_rx_enable = last_state.channel.fm.rxToneEn; 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) - snprintf(encdec_str, 9, " E"); + sniprintf(encdec_str, 9, " E"); else if (!tone_tx_enable && tone_rx_enable) - snprintf(encdec_str, 9, " D"); + sniprintf(encdec_str, 9, " D"); else - snprintf(encdec_str, 9, " "); + sniprintf(encdec_str, 9, " "); // Print Bandwidth, Tone and encdec info if (tone_tx_enable || tone_rx_enable) @@ -195,7 +195,7 @@ void _ui_drawFrequency() // Print big numbers frequency 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); gfx_print(layout.line3_large_pos, layout.line3_large_font, TEXT_ALIGN_CENTER, diff --git a/openrtx/src/ui/default/ui_menu.c b/openrtx/src/ui/default/ui_menu.c index 1074414c..e530bd78 100644 --- a/openrtx/src/ui/default/ui_menu.c +++ b/openrtx/src/ui/default/ui_menu.c @@ -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) { if(index >= menu_num) return -1; - snprintf(buf, max_len, "%s", menu_items[index]); + sniprintf(buf, max_len, "%s", menu_items[index]); return 0; } int _ui_getSettingsEntryName(char *buf, uint8_t max_len, uint8_t index) { if(index >= settings_num) return -1; - snprintf(buf, max_len, "%s", settings_items[index]); + sniprintf(buf, max_len, "%s", settings_items[index]); return 0; } int _ui_getDisplayEntryName(char *buf, uint8_t max_len, uint8_t index) { if(index >= display_num) return -1; - snprintf(buf, max_len, "%s", display_items[index]); + sniprintf(buf, max_len, "%s", display_items[index]); return 0; } @@ -281,11 +281,11 @@ int _ui_getDisplayValueName(char *buf, uint8_t max_len, uint8_t index) break; #endif case D_TIMER: - snprintf(buf, max_len, "%s", + sniprintf(buf, max_len, "%s", display_timer_values[last_state.settings.display_timer]); return 0; } - snprintf(buf, max_len, "%d", value); + sniprintf(buf, max_len, "%d", value); 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) { 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; } @@ -303,12 +303,12 @@ int _ui_getSettingsGPSValueName(char *buf, uint8_t max_len, uint8_t index) switch(index) { 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->off); break; 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->off); break; @@ -329,7 +329,7 @@ int _ui_getSettingsGPSValueName(char *buf, uint8_t max_len, uint8_t index) 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; } @@ -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) { 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; } @@ -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 - // snprintf. + // sniprintf. 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)); stripTrailingZeroes(str); - snprintf(buf, max_len, "%s%cHz", str, prefix); + sniprintf(buf, max_len, "%s%cHz", str, prefix); 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) { 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; } @@ -423,14 +423,14 @@ int _ui_getM17ValueName(char *buf, uint8_t max_len, uint8_t index) switch(index) { case M17_CALLSIGN: - snprintf(buf, max_len, "%s", last_state.settings.callsign); + sniprintf(buf, max_len, "%s", last_state.settings.callsign); break; case M17_CAN: - snprintf(buf, max_len, "%d", last_state.settings.m17_can); + sniprintf(buf, max_len, "%d", last_state.settings.m17_can); break; 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->off); 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) { 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; } @@ -459,22 +459,22 @@ int _ui_getAccessibilityValueName(char *buf, uint8_t max_len, uint8_t index) switch (value) { case vpNone: - snprintf(buf, max_len, "%s", currentLanguage->off); + sniprintf(buf, max_len, "%s", currentLanguage->off); break; case vpBeep: - snprintf(buf, max_len, "%s", currentLanguage->beep); + sniprintf(buf, max_len, "%s", currentLanguage->beep); break; default: - snprintf(buf, max_len, "%d", (value-vpBeep)); + sniprintf(buf, max_len, "%d", (value-vpBeep)); break; } break; } 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; 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; } 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) { 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; } int _ui_getInfoEntryName(char *buf, uint8_t max_len, uint8_t index) { if(index >= info_num) return -1; - snprintf(buf, max_len, "%s", info_items[index]); + sniprintf(buf, max_len, "%s", info_items[index]); return 0; } @@ -501,7 +501,7 @@ int _ui_getInfoValueName(char *buf, uint8_t max_len, uint8_t index) switch(index) { case 0: // Git Version - snprintf(buf, max_len, "%s", GIT_VERSION); + sniprintf(buf, max_len, "%s", GIT_VERSION); break; 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 uint16_t volt = (last_state.v_bat + 50) / 1000; 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; case 2: // Battery charge - snprintf(buf, max_len, "%d%%", last_state.charge); + sniprintf(buf, max_len, "%d%%", last_state.charge); break; case 3: // RSSI - snprintf(buf, max_len, "%ddBm", last_state.rssi); + sniprintf(buf, max_len, "%ddBm", last_state.rssi); break; case 4: // Heap usage - snprintf(buf, max_len, "%dB", getHeapSize() - getCurrentFreeHeap()); + sniprintf(buf, max_len, "%dB", getHeapSize() - getCurrentFreeHeap()); break; 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; 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; 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; case 8: // LCD Type - snprintf(buf, max_len, "%d", hwinfo->hw_version); + sniprintf(buf, max_len, "%d", hwinfo->hw_version); break; #ifdef PLATFORM_TTWRPLUS 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(); 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; #endif @@ -565,7 +565,7 @@ int _ui_getBankName(char *buf, uint8_t max_len, uint8_t index) bankHdr_t bank; result = cps_readBankHeader(&bank, index - 1); if(result != -1) - snprintf(buf, max_len, "%s", bank.name); + sniprintf(buf, max_len, "%s", bank.name); } return result; } @@ -575,7 +575,7 @@ int _ui_getChannelName(char *buf, uint8_t max_len, uint8_t index) channel_t channel; int result = cps_readChannel(&channel, index); if(result != -1) - snprintf(buf, max_len, "%s", channel.name); + sniprintf(buf, max_len, "%s", channel.name); return result; } @@ -584,7 +584,7 @@ int _ui_getContactName(char *buf, uint8_t max_len, uint8_t index) contact_t contact; int result = cps_readContact(&contact, index); if(result != -1) - snprintf(buf, max_len, "%s", contact.name); + sniprintf(buf, max_len, "%s", contact.name); 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 - // snprintf. - snprintf(buf, sizeof(buf), "%u.%u", (unsigned int)(ui_state->new_offset / div), + // sniprintf. + sniprintf(buf, sizeof(buf), "%u.%u", (unsigned int)(ui_state->new_offset / div), (unsigned int)(ui_state->new_offset % div)); 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_rx_enable = last_state.channel.fm.rxToneEn; 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) - snprintf(encdec_str, 9, " E "); + sniprintf(encdec_str, 9, " E "); else if (!tone_tx_enable && tone_rx_enable) - snprintf(encdec_str, 9, " D "); + sniprintf(encdec_str, 9, " D "); else - snprintf(encdec_str, 9, " "); + sniprintf(encdec_str, 9, " "); gfx_print(layout.line1_pos, layout.top_font, TEXT_ALIGN_RIGHT, color_white, encdec_str); } @@ -1149,13 +1149,13 @@ bool _ui_drawMacroMenu(ui_state_t* ui_state) switch (last_state.channel.bandwidth) { case BW_12_5: - snprintf(bw_str, 12, " BW 12.5"); + sniprintf(bw_str, 12, " BW 12.5"); break; case BW_20: - snprintf(bw_str, 12, " BW 20 "); + sniprintf(bw_str, 12, " BW 20 "); break; case BW_25: - snprintf(bw_str, 12, " BW 25 "); + sniprintf(bw_str, 12, " BW 25 "); break; } @@ -1181,14 +1181,14 @@ bool _ui_drawMacroMenu(ui_state_t* ui_state) switch(last_state.channel.mode) { case OPMODE_FM: - snprintf(mode_str, 12," FM"); + sniprintf(mode_str, 12," FM"); break; case OPMODE_DMR: - snprintf(mode_str, 12," DMR"); + sniprintf(mode_str, 12," DMR"); break; #ifdef CONFIG_M17 case OPMODE_M17: - snprintf(mode_str, 12," M17"); + sniprintf(mode_str, 12," M17"); break; #endif } diff --git a/platform/mcu/ESP32S3/zephyr.conf b/platform/mcu/ESP32S3/zephyr.conf index 5bad2a51..d7d586d0 100644 --- a/platform/mcu/ESP32S3/zephyr.conf +++ b/platform/mcu/ESP32S3/zephyr.conf @@ -20,3 +20,4 @@ CONFIG_GEN_ISR_TABLES=y CONFIG_GEN_IRQ_VECTOR_TABLE=n CONFIG_CLOCK_CONTROL=y CONFIG_I2C=y +CONFIG_NEWLIB_LIBC=y diff --git a/platform/targets/ttwrplus/ttwrplus_defconfig b/platform/targets/ttwrplus/ttwrplus_defconfig index 96084876..48e0acdc 100644 --- a/platform/targets/ttwrplus/ttwrplus_defconfig +++ b/platform/targets/ttwrplus/ttwrplus_defconfig @@ -19,7 +19,6 @@ CONFIG_SPI=y CONFIG_LED_STRIP=y CONFIG_WS2812_STRIP=y CONFIG_WS2812_STRIP_SPI=y -CONFIG_PICOLIBC_IO_FLOAT=y CONFIG_POSIX_API=y CONFIG_FLASH=y CONFIG_FLASH_MAP=y