| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #include "locale.h"
- #define TAG "LocaleSrv"
- LocaleMeasurementUnits locale_get_measurement_unit(void) {
- return (LocaleMeasurementUnits)furi_hal_rtc_get_locale_units();
- }
- void locale_set_measurement_unit(LocaleMeasurementUnits format) {
- furi_hal_rtc_set_locale_units((FuriHalRtcLocaleUnits)format);
- }
- LocaleTimeFormat locale_get_time_format(void) {
- return (LocaleTimeFormat)furi_hal_rtc_get_locale_timeformat();
- }
- void locale_set_time_format(LocaleTimeFormat format) {
- furi_hal_rtc_set_locale_timeformat((FuriHalRtcLocaleTimeFormat)format);
- }
- LocaleDateFormat locale_get_date_format(void) {
- return (LocaleDateFormat)furi_hal_rtc_get_locale_dateformat();
- }
- void locale_set_date_format(LocaleDateFormat format) {
- furi_hal_rtc_set_locale_dateformat((FuriHalRtcLocaleDateFormat)format);
- }
- float locale_fahrenheit_to_celsius(float temp_f) {
- return (temp_f - 32.f) / 1.8f;
- }
- float locale_celsius_to_fahrenheit(float temp_c) {
- return (temp_c * 1.8f + 32.f);
- }
- void locale_format_time(
- FuriString* out_str,
- const FuriHalRtcDateTime* datetime,
- const LocaleTimeFormat format,
- const bool show_seconds) {
- furi_assert(out_str);
- furi_assert(datetime);
- uint8_t hours = datetime->hour;
- uint8_t am_pm = 0;
- if(format == LocaleTimeFormat12h) {
- if(hours > 12) {
- hours -= 12;
- am_pm = 2;
- } else {
- am_pm = 1;
- }
- if(hours == 0) {
- hours = 12;
- }
- }
- if(show_seconds) {
- furi_string_printf(out_str, "%02u:%02u:%02u", hours, datetime->minute, datetime->second);
- } else {
- furi_string_printf(out_str, "%02u:%02u", hours, datetime->minute);
- }
- if(am_pm > 0) {
- furi_string_cat_printf(out_str, " %s", (am_pm == 1) ? ("AM") : ("PM"));
- }
- }
- void locale_format_date(
- FuriString* out_str,
- const FuriHalRtcDateTime* datetime,
- const LocaleDateFormat format,
- const char* separator) {
- furi_assert(out_str);
- furi_assert(datetime);
- furi_assert(separator);
- if(format == LocaleDateFormatDMY) {
- furi_string_printf(
- out_str,
- "%02u%s%02u%s%04u",
- datetime->day,
- separator,
- datetime->month,
- separator,
- datetime->year);
- } else if(format == LocaleDateFormatMDY) {
- furi_string_printf(
- out_str,
- "%02u%s%02u%s%04u",
- datetime->month,
- separator,
- datetime->day,
- separator,
- datetime->year);
- } else {
- furi_string_printf(
- out_str,
- "%04u%s%02u%s%02u",
- datetime->year,
- separator,
- datetime->month,
- separator,
- datetime->day);
- }
- }
- int32_t locale_on_system_start(void* p) {
- UNUSED(p);
- return 0;
- }
|