Przeglądaj źródła

Add SNCF sectors

DocSystem 11 miesięcy temu
rodzic
commit
c23fca6f38

+ 16 - 14
api/calypso/transit/navigo.c

@@ -284,11 +284,10 @@ char* get_navigo_station(
     }
 }
 
-const char* get_navigo_sncf_train_line(int station_group_id) {
-    if(station_group_id < 77) {
-        return NAVIGO_SNCF_TRAIN_LINES_LIST[station_group_id];
-    }
-    return "Unknown";
+char* get_navigo_sncf_sector(int station_group_id) {
+    // group id is in format XY where X is the sector
+    const char* station_name = NAVIGO_SNCF_SECTORS_LIST[station_group_id / 10];
+    return strdup(station_name);
 }
 
 const char* get_navigo_tram_line(int route_number) {
@@ -322,7 +321,12 @@ void show_navigo_event_info(
     }
     char* station = get_navigo_station(
         event->station_group_id, event->station_id, event->station_sub_id, event->service_provider);
-    char* sector = get_navigo_station(event->station_group_id, 0, 0, event->service_provider);
+    char* sector = NULL;
+    if(event->service_provider == NAVIGO_PROVIDER_SNCF) {
+        sector = get_navigo_sncf_sector(event->station_group_id);
+    } else {
+        sector = get_navigo_station(event->station_group_id, 0, 0, event->service_provider);
+    }
 
     if(event->transport_type == URBAN_BUS || event->transport_type == INTERURBAN_BUS ||
        event->transport_type == METRO || event->transport_type == TRAM) {
@@ -396,16 +400,15 @@ void show_navigo_event_info(
         } else {
             furi_string_cat_printf(
                 parsed_data,
-                "%s %s\n%s\n",
+                "%s\n%s\n",
                 get_intercode_string_transport_type(event->transport_type),
-                get_navigo_sncf_train_line(event->station_group_id),
                 get_intercode_string_transition_type(event->transition));
         }
         furi_string_cat_printf(
             parsed_data,
             "Transporter: %s\n",
             get_navigo_service_provider(event->service_provider));
-        furi_string_cat_printf(parsed_data, "Station: %s\n", station);
+        furi_string_cat_printf(parsed_data, "Station: %s\nSector: %s\n", station, sector);
         if(event->location_gate_available) {
             furi_string_cat_printf(parsed_data, "Gate: %d\n", event->location_gate);
         }
@@ -441,7 +444,7 @@ void show_navigo_event_info(
             parsed_data,
             "Transporter: %s\n",
             get_navigo_service_provider(event->service_provider));
-        furi_string_cat_printf(parsed_data, "Station: %s\n", station);
+        furi_string_cat_printf(parsed_data, "Station: %s\nSector: %s\n", station, sector);
         if(event->location_gate_available) {
             furi_string_cat_printf(parsed_data, "Gate: %d\n", event->location_gate);
         }
@@ -527,9 +530,8 @@ void show_navigo_special_event_info(NavigoCardSpecialEvent* event, FuriString* p
         } else {
             furi_string_cat_printf(
                 parsed_data,
-                "%s %s\n%s\n",
+                "%s\n%s\n",
                 get_intercode_string_transport_type(event->transport_type),
-                get_navigo_sncf_train_line(event->station_group_id),
                 get_intercode_string_transition_type(event->transition));
         }
         furi_string_cat_printf(
@@ -538,7 +540,7 @@ void show_navigo_special_event_info(NavigoCardSpecialEvent* event, FuriString* p
             parsed_data,
             "Transporter: %s\n",
             get_navigo_service_provider(event->service_provider));
-        furi_string_cat_printf(parsed_data, "Station: %s\n", station);
+        furi_string_cat_printf(parsed_data, "Station: %s\nSector: %s\n", station, sector);
         if(event->device_available) {
             if(event->service_provider == NAVIGO_PROVIDER_SNCF) {
                 furi_string_cat_printf(parsed_data, "Device: %d\n", event->device & 0xFF);
@@ -560,7 +562,7 @@ void show_navigo_special_event_info(NavigoCardSpecialEvent* event, FuriString* p
             parsed_data,
             "Transporter: %s\n",
             get_navigo_service_provider(event->service_provider));
-        furi_string_cat_printf(parsed_data, "Station: %s\n", station);
+        furi_string_cat_printf(parsed_data, "Station: %s\nSector: %s\n", station, sector);
         if(event->device_available) {
             furi_string_cat_printf(parsed_data, "Device: %d\n", event->device);
         }

+ 2 - 12
api/calypso/transit/navigo_lists.h

@@ -1,17 +1,7 @@
 #ifndef NAVIGO_LISTS_H
 #define NAVIGO_LISTS_H
 
-static const char* NAVIGO_SNCF_TRAIN_LINES_LIST[77] = {
-    [1] = "RER B",         [3] = "RER B",         [6] = "RER A",         [14] = "RER B",
-    [15] = "RER B",        [16] = "RER A",        [17] = "RER A",        [18] = "RER B",
-    [20] = "Transilien P", [21] = "Transilien P", [22] = "T4",           [23] = "Transilien P",
-    [26] = "RER A",        [28] = "RER B",        [30] = "Transilien L", [31] = "Transilien L",
-    [32] = "Transilien J", [33] = "RER A",        [35] = "Transilien J", [40] = "RER D",
-    [41] = "RER C",        [42] = "RER C",        [43] = "Transilien R", [44] = "Transilien R",
-    [45] = "RER D",        [50] = "Transilien H", [51] = "Transilien K", [52] = "RER D",
-    [53] = "Transilien H", [54] = "Transilien J", [55] = "RER C",        [56] = "Transilien H",
-    [57] = "Transilien H", [60] = "Transilien N", [61] = "Transilien N", [63] = "RER C",
-    [64] = "RER C",        [65] = "Transilien V", [70] = "RER B",        [72] = "Transilien J",
-    [73] = "Transilien J", [75] = "RER C",        [76] = "RER C"};
+static const char* NAVIGO_SNCF_SECTORS_LIST[8] =
+    {"RATP", "RATP", "Est", "St Lazare", "Sud-Est + Austerlitz", "Nord", "Montparnasse", "Unknown"};
 
 #endif

+ 1 - 0
files/navigo/stations/sncf/stations_60.txt

@@ -1,4 +1,5 @@
 1,1,Gare Montparnasse
+1,2,Paris Montparnasse3 Vaug.
 4,1,Clamart
 4,2,Vanves Malakoff
 5,1,Bellevue