build fixed. finally, datetime

This commit is contained in:
Methodius
2024-02-16 00:32:30 +09:00
parent 2c5973be22
commit 913659325b
12 changed files with 82 additions and 87 deletions

View File

@@ -4,7 +4,7 @@
#include <nfc/protocols/mf_classic/mf_classic_poller_sync.h>
#include <bit_lib.h>
#include <furi_hal_rtc.h>
#include <datetime.h>
#define TAG "Troika"
@@ -62,24 +62,24 @@ static const MfClassicKeyPair troika_4k_keys[] = {
#define TOPBIT(X) (1 << ((X)-1))
void from_days_to_datetime(uint16_t days, FuriHalRtcDateTime* datetime, uint16_t start_year) {
void from_days_to_datetime(uint16_t days, DateTime* datetime, uint16_t start_year) {
uint32_t timestamp = days * 24 * 60 * 60;
FuriHalRtcDateTime start_datetime = {0};
DateTime start_datetime = {0};
start_datetime.year = start_year - 1;
start_datetime.month = 12;
start_datetime.day = 31;
timestamp += furi_hal_rtc_datetime_to_timestamp(&start_datetime);
furi_hal_rtc_timestamp_to_datetime(timestamp, datetime);
timestamp += datetime_datetime_to_timestamp(&start_datetime);
datetime_timestamp_to_datetime(timestamp, datetime);
}
void from_minutes_to_datetime(uint32_t minutes, FuriHalRtcDateTime* datetime, uint16_t start_year) {
void from_minutes_to_datetime(uint32_t minutes, DateTime* datetime, uint16_t start_year) {
uint32_t timestamp = minutes * 60;
FuriHalRtcDateTime start_datetime = {0};
DateTime start_datetime = {0};
start_datetime.year = start_year - 1;
start_datetime.month = 12;
start_datetime.day = 31;
timestamp += furi_hal_rtc_datetime_to_timestamp(&start_datetime);
furi_hal_rtc_timestamp_to_datetime(timestamp, datetime);
timestamp += datetime_datetime_to_timestamp(&start_datetime);
datetime_timestamp_to_datetime(timestamp, datetime);
}
bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
@@ -170,10 +170,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
if(card_valid_by_date == 0) {
return false;
}
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_valid_by_date, &card_use_before_date_s, 1992);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(
(card_start_trip_date)*24 * 60 + card_start_trip_time,
&card_start_trip_minutes_s,
@@ -247,10 +247,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_extended,
card_crc16_2);
card_validator = card_validator1 * 1024 + card_validator2;
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_valid_by_date, &card_use_before_date_s, 1992);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(
(card_start_trip_date)*24 * 60 + card_start_trip_time,
&card_start_trip_minutes_s,
@@ -309,7 +309,7 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_hash,
card_valid_from_date,
card_rfu3);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 1992);
furi_string_printf(
@@ -362,10 +362,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_transport_type3,
card_transport_type4,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 2016);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(card_start_trip_minutes, &card_start_trip_minutes_s, 2016);
furi_string_printf(
result,
@@ -422,9 +422,9 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_transport_type,
card_rfu3,
card_transfer_in_metro);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 1992);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(
(card_start_trip_date)*24 * 60 + card_start_trip_time,
&card_start_trip_minutes_s,
@@ -503,9 +503,9 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_transport_type2,
card_rfu5,
card_transfer_in_metro);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 1992);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(
(card_start_trip_date)*24 * 60 + card_start_trip_time,
&card_start_trip_minutes_s,
@@ -573,10 +573,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_blocked,
card_zoo,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 1992);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(card_start_trip_minutes, &card_start_trip_minutes_s, 1992);
furi_string_printf(
result,
@@ -642,10 +642,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_blocked,
card_extended,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 2016);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(
(card_valid_to_date)*24 * 60 + card_valid_for_minutes - card_start_trip_neg_minutes,
&card_start_trip_minutes_s,
@@ -707,10 +707,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_transport_type3,
card_transport_type4,
card_blocked);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 1992);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(card_start_trip_minutes, &card_start_trip_minutes_s, 2016);
furi_string_printf(
result,
@@ -783,10 +783,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_blocked,
card_extended,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 2016);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(
(card_use_before_date + 1) * 24 * 60 + card_valid_for_minutes -
card_start_trip_neg_minutes,
@@ -848,11 +848,11 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_route,
card_passages_ground_transport,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 2019);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(card_start_trip_minutes, &card_start_trip_minutes_s, 2019);
furi_string_printf(
result,
@@ -915,10 +915,10 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_extended,
card_route,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_use_before_date, &card_use_before_date_s, 2019);
FuriHalRtcDateTime card_start_trip_minutes_s = {0};
DateTime card_start_trip_minutes_s = {0};
from_minutes_to_datetime(
card_valid_from_date + card_valid_for_minutes - card_start_trip_neg_minutes,
&card_start_trip_minutes_s,
@@ -981,7 +981,7 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_app_code4,
card_type4,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_valid_by_date, &card_use_before_date_s, 1992);
furi_string_printf(
@@ -1017,7 +1017,7 @@ bool parse_transport_block(const MfClassicBlock* block, FuriString* result) {
card_valid_to_minutes,
card_valid_by_date,
card_hash);
FuriHalRtcDateTime card_use_before_date_s = {0};
DateTime card_use_before_date_s = {0};
from_days_to_datetime(card_valid_by_date, &card_use_before_date_s, 1992);
furi_string_printf(