This commit is contained in:
Willy-JL
2024-02-15 22:48:18 +00:00
31 changed files with 495 additions and 276 deletions

View File

@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,56.0,,
Version,+,57.0,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
@@ -38,6 +38,7 @@ Header,+,applications/services/power/power_service/power.h,,
Header,+,applications/services/rpc/rpc_app.h,,
Header,+,applications/services/storage/storage.h,,
Header,+,lib/bit_lib/bit_lib.h,,
Header,+,lib/datetime/datetime.h,,
Header,+,lib/digital_signal/digital_sequence.h,,
Header,+,lib/digital_signal/digital_signal.h,,
Header,+,lib/drivers/cc1101_regs.h,,
@@ -730,6 +731,12 @@ Function,+,crc32_calc_buffer,uint32_t,"uint32_t, const void*, size_t"
Function,+,crc32_calc_file,uint32_t,"File*, const FileCrcProgressCb, void*"
Function,-,ctermid,char*,char*
Function,-,cuserid,char*,char*
Function,+,datetime_datetime_to_timestamp,uint32_t,DateTime*
Function,+,datetime_get_days_per_month,uint8_t,"_Bool, uint8_t"
Function,+,datetime_get_days_per_year,uint16_t,uint16_t
Function,+,datetime_is_leap_year,_Bool,uint16_t
Function,+,datetime_timestamp_to_datetime,void,"uint32_t, DateTime*"
Function,+,datetime_validate_datetime,_Bool,DateTime*
Function,+,dialog_ex_alloc,DialogEx*,
Function,+,dialog_ex_disable_extended_events,void,DialogEx*
Function,+,dialog_ex_enable_extended_events,void,DialogEx*
@@ -1263,12 +1270,9 @@ Function,-,furi_hal_resources_deinit_early,void,
Function,+,furi_hal_resources_get_ext_pin_number,int32_t,const GpioPin*
Function,-,furi_hal_resources_init,void,
Function,-,furi_hal_resources_init_early,void,
Function,+,furi_hal_rtc_datetime_to_timestamp,uint32_t,FuriHalRtcDateTime*
Function,-,furi_hal_rtc_deinit_early,void,
Function,+,furi_hal_rtc_get_boot_mode,FuriHalRtcBootMode,
Function,+,furi_hal_rtc_get_datetime,void,FuriHalRtcDateTime*
Function,+,furi_hal_rtc_get_days_per_month,uint8_t,"_Bool, uint8_t"
Function,+,furi_hal_rtc_get_days_per_year,uint16_t,uint16_t
Function,+,furi_hal_rtc_get_datetime,void,DateTime*
Function,+,furi_hal_rtc_get_fault_data,uint32_t,
Function,+,furi_hal_rtc_get_heap_track_mode,FuriHalRtcHeapTrackMode,
Function,+,furi_hal_rtc_get_locale_dateformat,FuriHalRtcLocaleDateFormat,
@@ -1283,11 +1287,10 @@ Function,+,furi_hal_rtc_get_timestamp,uint32_t,
Function,-,furi_hal_rtc_init,void,
Function,-,furi_hal_rtc_init_early,void,
Function,+,furi_hal_rtc_is_flag_set,_Bool,FuriHalRtcFlag
Function,+,furi_hal_rtc_is_leap_year,_Bool,uint16_t
Function,+,furi_hal_rtc_reset_flag,void,FuriHalRtcFlag
Function,+,furi_hal_rtc_reset_registers,void,
Function,+,furi_hal_rtc_set_boot_mode,void,FuriHalRtcBootMode
Function,+,furi_hal_rtc_set_datetime,void,FuriHalRtcDateTime*
Function,+,furi_hal_rtc_set_datetime,void,DateTime*
Function,+,furi_hal_rtc_set_fault_data,void,uint32_t
Function,+,furi_hal_rtc_set_flag,void,FuriHalRtcFlag
Function,+,furi_hal_rtc_set_heap_track_mode,void,FuriHalRtcHeapTrackMode
@@ -1300,8 +1303,6 @@ Function,+,furi_hal_rtc_set_log_level,void,uint8_t
Function,+,furi_hal_rtc_set_pin_fails,void,uint32_t
Function,+,furi_hal_rtc_set_register,void,"FuriHalRtcRegister, uint32_t"
Function,+,furi_hal_rtc_sync_shadow,void,
Function,+,furi_hal_rtc_timestamp_to_datetime,void,"uint32_t, FuriHalRtcDateTime*"
Function,+,furi_hal_rtc_validate_datetime,_Bool,FuriHalRtcDateTime*
Function,+,furi_hal_sd_get_card_state,FuriStatus,
Function,+,furi_hal_sd_info,FuriStatus,FuriHalSdInfo*
Function,+,furi_hal_sd_init,FuriStatus,_Bool
@@ -1698,8 +1699,8 @@ Function,+,loading_free,void,Loading*
Function,+,loading_get_view,View*,Loading*
Function,+,locale_celsius_to_fahrenheit,float,float
Function,+,locale_fahrenheit_to_celsius,float,float
Function,+,locale_format_date,void,"FuriString*, const FuriHalRtcDateTime*, const LocaleDateFormat, const char*"
Function,+,locale_format_time,void,"FuriString*, const FuriHalRtcDateTime*, const LocaleTimeFormat, const _Bool"
Function,+,locale_format_date,void,"FuriString*, const DateTime*, const LocaleDateFormat, const char*"
Function,+,locale_format_time,void,"FuriString*, const DateTime*, const LocaleTimeFormat, const _Bool"
Function,+,locale_get_date_format,LocaleDateFormat,
Function,+,locale_get_measurement_unit,LocaleMeasurementUnits,
Function,+,locale_get_time_format,LocaleTimeFormat,
1 entry status name type params
2 Version + 56.0 57.0
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/cli/cli.h
5 Header + applications/services/cli/cli_vcp.h
38 Header + applications/services/rpc/rpc_app.h
39 Header + applications/services/storage/storage.h
40 Header + lib/bit_lib/bit_lib.h
41 Header + lib/datetime/datetime.h
42 Header + lib/digital_signal/digital_sequence.h
43 Header + lib/digital_signal/digital_signal.h
44 Header + lib/drivers/cc1101_regs.h
731 Function + crc32_calc_file uint32_t File*, const FileCrcProgressCb, void*
732 Function - ctermid char* char*
733 Function - cuserid char* char*
734 Function + datetime_datetime_to_timestamp uint32_t DateTime*
735 Function + datetime_get_days_per_month uint8_t _Bool, uint8_t
736 Function + datetime_get_days_per_year uint16_t uint16_t
737 Function + datetime_is_leap_year _Bool uint16_t
738 Function + datetime_timestamp_to_datetime void uint32_t, DateTime*
739 Function + datetime_validate_datetime _Bool DateTime*
740 Function + dialog_ex_alloc DialogEx*
741 Function + dialog_ex_disable_extended_events void DialogEx*
742 Function + dialog_ex_enable_extended_events void DialogEx*
1270 Function + furi_hal_resources_get_ext_pin_number int32_t const GpioPin*
1271 Function - furi_hal_resources_init void
1272 Function - furi_hal_resources_init_early void
Function + furi_hal_rtc_datetime_to_timestamp uint32_t FuriHalRtcDateTime*
1273 Function - furi_hal_rtc_deinit_early void
1274 Function + furi_hal_rtc_get_boot_mode FuriHalRtcBootMode
1275 Function + furi_hal_rtc_get_datetime void FuriHalRtcDateTime* DateTime*
Function + furi_hal_rtc_get_days_per_month uint8_t _Bool, uint8_t
Function + furi_hal_rtc_get_days_per_year uint16_t uint16_t
1276 Function + furi_hal_rtc_get_fault_data uint32_t
1277 Function + furi_hal_rtc_get_heap_track_mode FuriHalRtcHeapTrackMode
1278 Function + furi_hal_rtc_get_locale_dateformat FuriHalRtcLocaleDateFormat
1287 Function - furi_hal_rtc_init void
1288 Function - furi_hal_rtc_init_early void
1289 Function + furi_hal_rtc_is_flag_set _Bool FuriHalRtcFlag
Function + furi_hal_rtc_is_leap_year _Bool uint16_t
1290 Function + furi_hal_rtc_reset_flag void FuriHalRtcFlag
1291 Function + furi_hal_rtc_reset_registers void
1292 Function + furi_hal_rtc_set_boot_mode void FuriHalRtcBootMode
1293 Function + furi_hal_rtc_set_datetime void FuriHalRtcDateTime* DateTime*
1294 Function + furi_hal_rtc_set_fault_data void uint32_t
1295 Function + furi_hal_rtc_set_flag void FuriHalRtcFlag
1296 Function + furi_hal_rtc_set_heap_track_mode void FuriHalRtcHeapTrackMode
1303 Function + furi_hal_rtc_set_pin_fails void uint32_t
1304 Function + furi_hal_rtc_set_register void FuriHalRtcRegister, uint32_t
1305 Function + furi_hal_rtc_sync_shadow void
Function + furi_hal_rtc_timestamp_to_datetime void uint32_t, FuriHalRtcDateTime*
Function + furi_hal_rtc_validate_datetime _Bool FuriHalRtcDateTime*
1306 Function + furi_hal_sd_get_card_state FuriStatus
1307 Function + furi_hal_sd_info FuriStatus FuriHalSdInfo*
1308 Function + furi_hal_sd_init FuriStatus _Bool
1699 Function + loading_get_view View* Loading*
1700 Function + locale_celsius_to_fahrenheit float float
1701 Function + locale_fahrenheit_to_celsius float float
1702 Function + locale_format_date void FuriString*, const FuriHalRtcDateTime*, const LocaleDateFormat, const char* FuriString*, const DateTime*, const LocaleDateFormat, const char*
1703 Function + locale_format_time void FuriString*, const FuriHalRtcDateTime*, const LocaleTimeFormat, const _Bool FuriString*, const DateTime*, const LocaleTimeFormat, const _Bool
1704 Function + locale_get_date_format LocaleDateFormat
1705 Function + locale_get_measurement_unit LocaleMeasurementUnits
1706 Function + locale_get_time_format LocaleTimeFormat

View File

@@ -37,7 +37,8 @@
"heatshrink",
"flipperformat",
"flipper18",
"bit_lib"
"bit_lib",
"datetime"
],
"excluded_sources": [
"furi_hal_infrared.c",
@@ -67,4 +68,4 @@
"ibutton",
"infrared"
]
}
}

View File

@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,56.0,,
Version,+,57.0,,
Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,,
Header,+,applications/main/archive/helpers/archive_helpers_ext.h,,
Header,+,applications/main/subghz/subghz_fap.h,,
@@ -50,6 +50,7 @@ Header,+,applications/services/rpc/rpc_app.h,,
Header,+,applications/services/storage/storage.h,,
Header,+,build/icons/assets_icons.h,,
Header,+,lib/bit_lib/bit_lib.h,,
Header,+,lib/datetime/datetime.h,,
Header,+,lib/digital_signal/digital_sequence.h,,
Header,+,lib/digital_signal/digital_signal.h,,
Header,+,lib/drivers/cc1101_regs.h,,
@@ -839,6 +840,12 @@ Function,+,crc32_calc_buffer,uint32_t,"uint32_t, const void*, size_t"
Function,+,crc32_calc_file,uint32_t,"File*, const FileCrcProgressCb, void*"
Function,-,ctermid,char*,char*
Function,-,cuserid,char*,char*
Function,+,datetime_datetime_to_timestamp,uint32_t,DateTime*
Function,+,datetime_get_days_per_month,uint8_t,"_Bool, uint8_t"
Function,+,datetime_get_days_per_year,uint16_t,uint16_t
Function,+,datetime_is_leap_year,_Bool,uint16_t
Function,+,datetime_timestamp_to_datetime,void,"uint32_t, DateTime*"
Function,+,datetime_validate_datetime,_Bool,DateTime*
Function,+,dialog_ex_alloc,DialogEx*,
Function,+,dialog_ex_disable_extended_events,void,DialogEx*
Function,+,dialog_ex_enable_extended_events,void,DialogEx*
@@ -1512,12 +1519,9 @@ Function,+,furi_hal_rfid_tim_read_continue,void,
Function,+,furi_hal_rfid_tim_read_pause,void,
Function,+,furi_hal_rfid_tim_read_start,void,"float, float"
Function,+,furi_hal_rfid_tim_read_stop,void,
Function,+,furi_hal_rtc_datetime_to_timestamp,uint32_t,FuriHalRtcDateTime*
Function,-,furi_hal_rtc_deinit_early,void,
Function,+,furi_hal_rtc_get_boot_mode,FuriHalRtcBootMode,
Function,+,furi_hal_rtc_get_datetime,void,FuriHalRtcDateTime*
Function,+,furi_hal_rtc_get_days_per_month,uint8_t,"_Bool, uint8_t"
Function,+,furi_hal_rtc_get_days_per_year,uint16_t,uint16_t
Function,+,furi_hal_rtc_get_datetime,void,DateTime*
Function,+,furi_hal_rtc_get_fault_data,uint32_t,
Function,+,furi_hal_rtc_get_heap_track_mode,FuriHalRtcHeapTrackMode,
Function,+,furi_hal_rtc_get_locale_dateformat,FuriHalRtcLocaleDateFormat,
@@ -1532,11 +1536,10 @@ Function,+,furi_hal_rtc_get_timestamp,uint32_t,
Function,-,furi_hal_rtc_init,void,
Function,-,furi_hal_rtc_init_early,void,
Function,+,furi_hal_rtc_is_flag_set,_Bool,FuriHalRtcFlag
Function,+,furi_hal_rtc_is_leap_year,_Bool,uint16_t
Function,+,furi_hal_rtc_reset_flag,void,FuriHalRtcFlag
Function,+,furi_hal_rtc_reset_registers,void,
Function,+,furi_hal_rtc_set_boot_mode,void,FuriHalRtcBootMode
Function,+,furi_hal_rtc_set_datetime,void,FuriHalRtcDateTime*
Function,+,furi_hal_rtc_set_datetime,void,DateTime*
Function,+,furi_hal_rtc_set_fault_data,void,uint32_t
Function,+,furi_hal_rtc_set_flag,void,FuriHalRtcFlag
Function,+,furi_hal_rtc_set_heap_track_mode,void,FuriHalRtcHeapTrackMode
@@ -1549,8 +1552,6 @@ Function,+,furi_hal_rtc_set_log_level,void,uint8_t
Function,+,furi_hal_rtc_set_pin_fails,void,uint32_t
Function,+,furi_hal_rtc_set_register,void,"FuriHalRtcRegister, uint32_t"
Function,+,furi_hal_rtc_sync_shadow,void,
Function,+,furi_hal_rtc_timestamp_to_datetime,void,"uint32_t, FuriHalRtcDateTime*"
Function,+,furi_hal_rtc_validate_datetime,_Bool,FuriHalRtcDateTime*
Function,+,furi_hal_sd_get_card_state,FuriStatus,
Function,+,furi_hal_sd_info,FuriStatus,FuriHalSdInfo*
Function,+,furi_hal_sd_init,FuriStatus,_Bool
@@ -2200,8 +2201,8 @@ Function,+,loading_free,void,Loading*
Function,+,loading_get_view,View*,Loading*
Function,+,locale_celsius_to_fahrenheit,float,float
Function,+,locale_fahrenheit_to_celsius,float,float
Function,+,locale_format_date,void,"FuriString*, const FuriHalRtcDateTime*, const LocaleDateFormat, const char*"
Function,+,locale_format_time,void,"FuriString*, const FuriHalRtcDateTime*, const LocaleTimeFormat, const _Bool"
Function,+,locale_format_date,void,"FuriString*, const DateTime*, const LocaleDateFormat, const char*"
Function,+,locale_format_time,void,"FuriString*, const DateTime*, const LocaleTimeFormat, const _Bool"
Function,+,locale_get_date_format,LocaleDateFormat,
Function,+,locale_get_measurement_unit,LocaleMeasurementUnits,
Function,+,locale_get_time_format,LocaleTimeFormat,
1 entry status name type params
2 Version + 56.0 57.0
3 Header + applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h
4 Header + applications/main/archive/helpers/archive_helpers_ext.h
5 Header + applications/main/subghz/subghz_fap.h
50 Header + applications/services/storage/storage.h
51 Header + build/icons/assets_icons.h
52 Header + lib/bit_lib/bit_lib.h
53 Header + lib/datetime/datetime.h
54 Header + lib/digital_signal/digital_sequence.h
55 Header + lib/digital_signal/digital_signal.h
56 Header + lib/drivers/cc1101_regs.h
840 Function + crc32_calc_file uint32_t File*, const FileCrcProgressCb, void*
841 Function - ctermid char* char*
842 Function - cuserid char* char*
843 Function + datetime_datetime_to_timestamp uint32_t DateTime*
844 Function + datetime_get_days_per_month uint8_t _Bool, uint8_t
845 Function + datetime_get_days_per_year uint16_t uint16_t
846 Function + datetime_is_leap_year _Bool uint16_t
847 Function + datetime_timestamp_to_datetime void uint32_t, DateTime*
848 Function + datetime_validate_datetime _Bool DateTime*
849 Function + dialog_ex_alloc DialogEx*
850 Function + dialog_ex_disable_extended_events void DialogEx*
851 Function + dialog_ex_enable_extended_events void DialogEx*
1519 Function + furi_hal_rfid_tim_read_pause void
1520 Function + furi_hal_rfid_tim_read_start void float, float
1521 Function + furi_hal_rfid_tim_read_stop void
Function + furi_hal_rtc_datetime_to_timestamp uint32_t FuriHalRtcDateTime*
1522 Function - furi_hal_rtc_deinit_early void
1523 Function + furi_hal_rtc_get_boot_mode FuriHalRtcBootMode
1524 Function + furi_hal_rtc_get_datetime void FuriHalRtcDateTime* DateTime*
Function + furi_hal_rtc_get_days_per_month uint8_t _Bool, uint8_t
Function + furi_hal_rtc_get_days_per_year uint16_t uint16_t
1525 Function + furi_hal_rtc_get_fault_data uint32_t
1526 Function + furi_hal_rtc_get_heap_track_mode FuriHalRtcHeapTrackMode
1527 Function + furi_hal_rtc_get_locale_dateformat FuriHalRtcLocaleDateFormat
1536 Function - furi_hal_rtc_init void
1537 Function - furi_hal_rtc_init_early void
1538 Function + furi_hal_rtc_is_flag_set _Bool FuriHalRtcFlag
Function + furi_hal_rtc_is_leap_year _Bool uint16_t
1539 Function + furi_hal_rtc_reset_flag void FuriHalRtcFlag
1540 Function + furi_hal_rtc_reset_registers void
1541 Function + furi_hal_rtc_set_boot_mode void FuriHalRtcBootMode
1542 Function + furi_hal_rtc_set_datetime void FuriHalRtcDateTime* DateTime*
1543 Function + furi_hal_rtc_set_fault_data void uint32_t
1544 Function + furi_hal_rtc_set_flag void FuriHalRtcFlag
1545 Function + furi_hal_rtc_set_heap_track_mode void FuriHalRtcHeapTrackMode
1552 Function + furi_hal_rtc_set_pin_fails void uint32_t
1553 Function + furi_hal_rtc_set_register void FuriHalRtcRegister, uint32_t
1554 Function + furi_hal_rtc_sync_shadow void
Function + furi_hal_rtc_timestamp_to_datetime void uint32_t, FuriHalRtcDateTime*
Function + furi_hal_rtc_validate_datetime _Bool FuriHalRtcDateTime*
1555 Function + furi_hal_sd_get_card_state FuriStatus
1556 Function + furi_hal_sd_info FuriStatus FuriHalSdInfo*
1557 Function + furi_hal_sd_init FuriStatus _Bool
2201 Function + loading_get_view View* Loading*
2202 Function + locale_celsius_to_fahrenheit float float
2203 Function + locale_fahrenheit_to_celsius float float
2204 Function + locale_format_date void FuriString*, const FuriHalRtcDateTime*, const LocaleDateFormat, const char* FuriString*, const DateTime*, const LocaleDateFormat, const char*
2205 Function + locale_format_time void FuriString*, const FuriHalRtcDateTime*, const LocaleTimeFormat, const _Bool FuriString*, const DateTime*, const LocaleTimeFormat, const _Bool
2206 Function + locale_get_date_format LocaleDateFormat
2207 Function + locale_get_measurement_unit LocaleMeasurementUnits
2208 Function + locale_get_time_format LocaleTimeFormat

View File

@@ -15,7 +15,7 @@ void fatfs_init(void) {
* @return Time in DWORD (toasters per square washing machine)
*/
DWORD get_fattime() {
FuriHalRtcDateTime furi_time;
DateTime furi_time;
furi_hal_rtc_get_datetime(&furi_time);
return ((uint32_t)(furi_time.year - 1980) << 25) | furi_time.month << 21 |

View File

@@ -42,18 +42,6 @@ typedef struct {
_Static_assert(sizeof(SystemReg) == 4, "SystemReg size mismatch");
#define FURI_HAL_RTC_SECONDS_PER_MINUTE 60
#define FURI_HAL_RTC_SECONDS_PER_HOUR (FURI_HAL_RTC_SECONDS_PER_MINUTE * 60)
#define FURI_HAL_RTC_SECONDS_PER_DAY (FURI_HAL_RTC_SECONDS_PER_HOUR * 24)
#define FURI_HAL_RTC_MONTHS_COUNT 12
#define FURI_HAL_RTC_EPOCH_START_YEAR 1970
static const uint8_t furi_hal_rtc_days_per_month[2][FURI_HAL_RTC_MONTHS_COUNT] = {
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
static const uint16_t furi_hal_rtc_days_per_year[] = {365, 366};
static const FuriHalSerialId furi_hal_rtc_log_devices[] = {
[FuriHalRtcLogDeviceUsart] = FuriHalSerialIdUsart,
[FuriHalRtcLogDeviceLpuart] = FuriHalSerialIdLpuart,
@@ -103,7 +91,7 @@ static bool furi_hal_rtc_start_clock_and_switch() {
}
static void furi_hal_rtc_recover() {
FuriHalRtcDateTime datetime = {0};
DateTime datetime = {0};
// Handle fixable LSE failure
if(LL_RCC_LSE_IsCSSDetected()) {
@@ -350,7 +338,7 @@ FuriHalRtcLocaleDateFormat furi_hal_rtc_get_locale_dateformat() {
return data->locale_dateformat;
}
void furi_hal_rtc_set_datetime(FuriHalRtcDateTime* datetime) {
void furi_hal_rtc_set_datetime(DateTime* datetime) {
furi_check(!FURI_IS_IRQ_MODE());
furi_assert(datetime);
@@ -389,7 +377,7 @@ void furi_hal_rtc_set_datetime(FuriHalRtcDateTime* datetime) {
FURI_CRITICAL_EXIT();
}
void furi_hal_rtc_get_datetime(FuriHalRtcDateTime* datetime) {
void furi_hal_rtc_get_datetime(DateTime* datetime) {
furi_check(!FURI_IS_IRQ_MODE());
furi_assert(datetime);
@@ -407,28 +395,6 @@ void furi_hal_rtc_get_datetime(FuriHalRtcDateTime* datetime) {
datetime->weekday = __LL_RTC_CONVERT_BCD2BIN((date >> 24) & 0xFF);
}
bool furi_hal_rtc_validate_datetime(FuriHalRtcDateTime* datetime) {
bool invalid = false;
invalid |= (datetime->second > 59);
invalid |= (datetime->minute > 59);
invalid |= (datetime->hour > 23);
invalid |= (datetime->year < 2000);
invalid |= (datetime->year > 2099);
invalid |= (datetime->month == 0);
invalid |= (datetime->month > 12);
invalid |= (datetime->day == 0);
invalid |= (datetime->day > 31);
invalid |= (datetime->weekday == 0);
invalid |= (datetime->weekday > 7);
return !invalid;
}
void furi_hal_rtc_set_fault_data(uint32_t value) {
furi_hal_rtc_set_register(FuriHalRtcRegisterFaultData, value);
}
@@ -446,76 +412,7 @@ uint32_t furi_hal_rtc_get_pin_fails() {
}
uint32_t furi_hal_rtc_get_timestamp() {
FuriHalRtcDateTime datetime = {0};
DateTime datetime = {0};
furi_hal_rtc_get_datetime(&datetime);
return furi_hal_rtc_datetime_to_timestamp(&datetime);
}
uint32_t furi_hal_rtc_datetime_to_timestamp(FuriHalRtcDateTime* datetime) {
uint32_t timestamp = 0;
uint8_t years = 0;
uint8_t leap_years = 0;
for(uint16_t y = FURI_HAL_RTC_EPOCH_START_YEAR; y < datetime->year; y++) {
if(furi_hal_rtc_is_leap_year(y)) {
leap_years++;
} else {
years++;
}
}
timestamp +=
((years * furi_hal_rtc_days_per_year[0]) + (leap_years * furi_hal_rtc_days_per_year[1])) *
FURI_HAL_RTC_SECONDS_PER_DAY;
bool leap_year = furi_hal_rtc_is_leap_year(datetime->year);
for(uint8_t m = 1; m < datetime->month; m++) {
timestamp += furi_hal_rtc_get_days_per_month(leap_year, m) * FURI_HAL_RTC_SECONDS_PER_DAY;
}
timestamp += (datetime->day - 1) * FURI_HAL_RTC_SECONDS_PER_DAY;
timestamp += datetime->hour * FURI_HAL_RTC_SECONDS_PER_HOUR;
timestamp += datetime->minute * FURI_HAL_RTC_SECONDS_PER_MINUTE;
timestamp += datetime->second;
return timestamp;
}
void furi_hal_rtc_timestamp_to_datetime(uint32_t timestamp, FuriHalRtcDateTime* datetime) {
uint32_t days = timestamp / FURI_HAL_RTC_SECONDS_PER_DAY;
uint32_t seconds_in_day = timestamp % FURI_HAL_RTC_SECONDS_PER_DAY;
datetime->year = FURI_HAL_RTC_EPOCH_START_YEAR;
while(days >= furi_hal_rtc_get_days_per_year(datetime->year)) {
days -= furi_hal_rtc_get_days_per_year(datetime->year);
(datetime->year)++;
}
datetime->month = 1;
while(days >= furi_hal_rtc_get_days_per_month(
furi_hal_rtc_is_leap_year(datetime->year), datetime->month)) {
days -= furi_hal_rtc_get_days_per_month(
furi_hal_rtc_is_leap_year(datetime->year), datetime->month);
(datetime->month)++;
}
datetime->day = days + 1;
datetime->hour = seconds_in_day / FURI_HAL_RTC_SECONDS_PER_HOUR;
datetime->minute =
(seconds_in_day % FURI_HAL_RTC_SECONDS_PER_HOUR) / FURI_HAL_RTC_SECONDS_PER_MINUTE;
datetime->second = seconds_in_day % FURI_HAL_RTC_SECONDS_PER_MINUTE;
}
uint16_t furi_hal_rtc_get_days_per_year(uint16_t year) {
return furi_hal_rtc_days_per_year[furi_hal_rtc_is_leap_year(year) ? 1 : 0];
}
bool furi_hal_rtc_is_leap_year(uint16_t year) {
return (((year) % 4 == 0) && ((year) % 100 != 0)) || ((year) % 400 == 0);
}
uint8_t furi_hal_rtc_get_days_per_month(bool leap_year, uint8_t month) {
return furi_hal_rtc_days_per_month[leap_year ? 1 : 0][month - 1];
return datetime_datetime_to_timestamp(&datetime);
}

View File

@@ -8,22 +8,12 @@
#include <stdint.h>
#include <stdbool.h>
#include <datetime/datetime.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
// Time
uint8_t hour; /**< Hour in 24H format: 0-23 */
uint8_t minute; /**< Minute: 0-59 */
uint8_t second; /**< Second: 0-59 */
// Date
uint8_t day; /**< Current day: 1-31 */
uint8_t month; /**< Current month: 1-12 */
uint16_t year; /**< Current year: 2000-2099 */
uint8_t weekday; /**< Current weekday: 1-7 */
} FuriHalRtcDateTime;
typedef enum {
FuriHalRtcFlagDebug = (1 << 0),
FuriHalRtcFlagStorageFormatInternal = (1 << 1),
@@ -247,21 +237,13 @@ FuriHalRtcLocaleDateFormat furi_hal_rtc_get_locale_dateformat(void);
*
* @param datetime The date time to set
*/
void furi_hal_rtc_set_datetime(FuriHalRtcDateTime* datetime);
void furi_hal_rtc_set_datetime(DateTime* datetime);
/** Get RTC Date Time
*
* @param datetime The datetime
*/
void furi_hal_rtc_get_datetime(FuriHalRtcDateTime* datetime);
/** Validate Date Time
*
* @param datetime The datetime to validate
*
* @return { description_of_the_return_value }
*/
bool furi_hal_rtc_validate_datetime(FuriHalRtcDateTime* datetime);
void furi_hal_rtc_get_datetime(DateTime* datetime);
/** Set RTC Fault Data
*
@@ -293,49 +275,6 @@ uint32_t furi_hal_rtc_get_pin_fails(void);
*/
uint32_t furi_hal_rtc_get_timestamp(void);
/** Convert DateTime to UNIX timestamp
*
* @warning Mind timezone when perform conversion
*
* @param datetime The datetime (UTC)
*
* @return UNIX Timestamp in seconds from UNIX epoch start
*/
uint32_t furi_hal_rtc_datetime_to_timestamp(FuriHalRtcDateTime* datetime);
/** Convert UNIX timestamp to DateTime
*
* @warning Mind timezone when perform conversion
*
* @param[in] timestamp UNIX Timestamp in seconds from UNIX epoch start
* @param[out] datetime The datetime (UTC)
*/
void furi_hal_rtc_timestamp_to_datetime(uint32_t timestamp, FuriHalRtcDateTime* datetime);
/** Gets the number of days in the year according to the Gregorian calendar.
*
* @param year Input year.
*
* @return number of days in `year`.
*/
uint16_t furi_hal_rtc_get_days_per_year(uint16_t year);
/** Check if a year a leap year in the Gregorian calendar.
*
* @param year Input year.
*
* @return true if `year` is a leap year.
*/
bool furi_hal_rtc_is_leap_year(uint16_t year);
/** Get the number of days in the month.
*
* @param leap_year true to calculate based on leap years
* @param month month to check, where 1 = January
* @return the number of days in the month
*/
uint8_t furi_hal_rtc_get_days_per_month(bool leap_year, uint8_t month);
#ifdef __cplusplus
}
#endif

View File

@@ -50,6 +50,7 @@
"heatshrink",
"flipperformat",
"flipper7",
"bit_lib"
"bit_lib",
"datetime"
]
}
}