113 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#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;
 | 
						|
}
 |