| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "ravkav_lists.h"
- #include "../../../metroflip_i.h"
- #include "../../metroflip/metroflip_api.h"
- #include "../calypso_util.h"
- #include "ravkav_i.h"
- const char* get_ravkav_issuer(int issuer) {
- if(RAVKAV_ISSUERS_LIST[issuer]) {
- return RAVKAV_ISSUERS_LIST[issuer];
- } else {
- // Return hex
- char* issuer_str = malloc(9 * sizeof(char));
- if(!issuer_str) {
- return "Unknown";
- }
- snprintf(issuer_str, 9, "0x%02X", issuer);
- return issuer_str;
- }
- }
- void show_ravkav_contract_info(RavKavCardContract* contract, FuriString* parsed_data) {
- // Core contract validity period
- if(contract->balance != 0.0f) {
- furi_string_cat_printf(parsed_data, "Balance: %.2f ILS\n", (double)contract->balance);
- }
- furi_string_cat_printf(parsed_data, "Valid from: ");
- locale_format_datetime_cat(parsed_data, &contract->start_date, false);
- if(contract->end_date_available) {
- furi_string_cat_printf(parsed_data, "\nto: ");
- locale_format_datetime_cat(parsed_data, &contract->end_date, false);
- }
- furi_string_cat_printf(parsed_data, "\n");
- // Issuer information
- furi_string_cat_printf(parsed_data, "Issuer: %s\n", get_ravkav_issuer(contract->provider));
- // Sale details
- furi_string_cat_printf(parsed_data, "Sold on: ");
- locale_format_datetime_cat(parsed_data, &contract->sale_date, false);
- furi_string_cat_printf(parsed_data, "\nSale device: %d\n", contract->sale_device);
- furi_string_cat_printf(parsed_data, "Sale number: %d\n", contract->sale_number);
- // Restriction details
- if(contract->restrict_code_available) {
- furi_string_cat_printf(parsed_data, "Restriction code: %d\n", contract->restrict_code);
- }
- if(contract->restrict_duration_available) {
- furi_string_cat_printf(
- parsed_data, "Restriction duration: \n%d minutes\n", contract->restrict_duration);
- }
- // Additional metadata
- furi_string_cat_printf(parsed_data, "Contract version: %d\n", contract->version);
- furi_string_cat_printf(parsed_data, "Journey interchanges flag: %d\n", contract->interchange);
- }
- void show_ravkav_environment_info(RavKavCardEnv* environment, FuriString* parsed_data) {
- // Validity information
- furi_string_cat_printf(parsed_data, "End of validity:\n");
- locale_format_datetime_cat(parsed_data, &environment->end_dt, false);
- furi_string_cat_printf(parsed_data, "\n");
- // Issue date
- furi_string_cat_printf(parsed_data, "Issue date:\n");
- locale_format_datetime_cat(parsed_data, &environment->issue_dt, false);
- furi_string_cat_printf(parsed_data, "\n");
- // Application details
- furi_string_cat_printf(parsed_data, "App version: %d\n", environment->app_version);
- furi_string_cat_printf(parsed_data, "App number: %d\n", environment->app_num);
- // Payment and network details
- furi_string_cat_printf(parsed_data, "Pay method: %d\n", environment->pay_method);
- }
- void show_ravkav_event_info(RavKavCardEvent* event, FuriString* parsed_data) {
- // Essential details first
- if(event->location_id_available) {
- furi_string_cat_printf(parsed_data, "Location:\n%d\n", event->location_id);
- }
- furi_string_cat_printf(parsed_data, "Time:\n");
- locale_format_datetime_cat(parsed_data, &event->time, true);
- furi_string_cat_printf(parsed_data, "\n");
- furi_string_cat_printf(parsed_data, "Service provider: %d\n", event->service_provider);
- // Fare and route-related information
- if(event->fare_code_available) {
- furi_string_cat_printf(parsed_data, "Fare Code: %d\n", event->fare_code);
- }
- if(event->route_number_available) {
- furi_string_cat_printf(parsed_data, "Route Number: %d\n", event->route_number);
- }
- if(event->debit_amount_available) {
- furi_string_cat_printf(parsed_data, "Debit Amount: %.2f\n", (double)event->debit_amount);
- }
- if(event->stop_en_route_available) {
- furi_string_cat_printf(parsed_data, "Stop en Route: %d\n", event->stop_en_route);
- }
- // Remaining event metadata
- furi_string_cat_printf(parsed_data, "Area ID: %d\n", event->area_id);
- furi_string_cat_printf(parsed_data, "Contract ID: %d\n", event->contract_id);
- furi_string_cat_printf(parsed_data, "Event Type: %d\n", event->type);
- furi_string_cat_printf(parsed_data, "Event Interchange Flag: %d\n", event->interchange_flag);
- }
|