diff --git a/firmware/application/apps/ui_looking_glass_app.cpp b/firmware/application/apps/ui_looking_glass_app.cpp index ca19aac92..ab9ed3d71 100644 --- a/firmware/application/apps/ui_looking_glass_app.cpp +++ b/firmware/application/apps/ui_looking_glass_app.cpp @@ -24,6 +24,7 @@ #include "ui_looking_glass_app.hpp" #include "convert.hpp" #include "file_reader.hpp" +#include "file.hpp" #include "string_format.hpp" #include "audio.hpp" #include "file_path.hpp" @@ -603,34 +604,39 @@ void GlassView::on_freqchg(int64_t freq) { } void GlassView::load_presets() { - File presets_file; - auto error = presets_file.open(looking_glass_dir / u"PRESETS.TXT"); presets_db.clear(); // Add the "Manual" entry. presets_db.push_back({0, 0, "Manual"}); - if (!error) { - auto reader = FileLineReader(presets_file); - for (const auto& line : reader) { - if (line.length() == 0 || line[0] == '#') - continue; + scan_root_files(looking_glass_dir, u"*.TXT", [this](const std::filesystem::path& path) { + if (path.empty() || path.native()[0] == u'.') + return; - auto cols = split_string(line, ','); - if (cols.size() != 3) - continue; + File presets_file; + auto error = presets_file.open(looking_glass_dir / path); + if (!error) { + auto reader = FileLineReader(presets_file); + for (const auto& line : reader) { + if (line.length() == 0 || line[0] == '#') + continue; - preset_entry entry{}; - parse_int(cols[0], entry.min); - parse_int(cols[1], entry.max); - entry.label = trimr(cols[2]); + auto cols = split_string(line, ','); + if (cols.size() != 3) + continue; - if (entry.min == 0 || entry.max == 0 || entry.min >= entry.max) - continue; // Invalid line. + preset_entry entry{}; + parse_int(cols[0], entry.min); + parse_int(cols[1], entry.max); + entry.label = trimr(cols[2]); - presets_db.emplace_back(std::move(entry)); + if (entry.min == 0 || entry.max == 0 || entry.min >= entry.max) + continue; // Invalid line. + + presets_db.emplace_back(std::move(entry)); + } } - } + }); populate_presets(); } diff --git a/sdcard/LOOKINGGLASS/433_MHz_BAND.TXT b/sdcard/LOOKINGGLASS/433_MHz_BAND.TXT new file mode 100644 index 000000000..3d506504b --- /dev/null +++ b/sdcard/LOOKINGGLASS/433_MHz_BAND.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# 433 MHz BAND +423,443,433 BAND diff --git a/sdcard/LOOKINGGLASS/AUS_UHF_CB.TXT b/sdcard/LOOKINGGLASS/AUS_UHF_CB.TXT new file mode 100644 index 000000000..9f8bbd4e2 --- /dev/null +++ b/sdcard/LOOKINGGLASS/AUS_UHF_CB.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# AUS UHF CB +476,478,AUS UHF CB diff --git a/sdcard/LOOKINGGLASS/AVIATION.TXT b/sdcard/LOOKINGGLASS/AVIATION.TXT new file mode 100644 index 000000000..2b46e3789 --- /dev/null +++ b/sdcard/LOOKINGGLASS/AVIATION.TXT @@ -0,0 +1,10 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# AVIATION +108,118,AVIATION 108 NAVAIDS +118,137,AVIATION 118 VOICE +960,1215,AVIATION 960 +1089,1091,ADS-B 1090 +128,137,ACARS diff --git a/sdcard/LOOKINGGLASS/BROADCAST_RADIO.TXT b/sdcard/LOOKINGGLASS/BROADCAST_RADIO.TXT new file mode 100644 index 000000000..b069de7f8 --- /dev/null +++ b/sdcard/LOOKINGGLASS/BROADCAST_RADIO.TXT @@ -0,0 +1,9 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# BROADCAST RADIO +87,108,FM BROADCAST USA +76,108,FM BROADCAST BRAZIL +76,95,FM BROADCAST JAPAN +65,74,FM OIRT EAST EU diff --git a/sdcard/LOOKINGGLASS/CITIZENS_BAND_RADIO.TXT b/sdcard/LOOKINGGLASS/CITIZENS_BAND_RADIO.TXT new file mode 100644 index 000000000..020c769f0 --- /dev/null +++ b/sdcard/LOOKINGGLASS/CITIZENS_BAND_RADIO.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# CITIZENS BAND RADIO +26,28,CB RADIO diff --git a/sdcard/LOOKINGGLASS/COMMON_PUBLIC_SERVICE_BANDS.TXT b/sdcard/LOOKINGGLASS/COMMON_PUBLIC_SERVICE_BANDS.TXT new file mode 100644 index 000000000..9b605c8cd --- /dev/null +++ b/sdcard/LOOKINGGLASS/COMMON_PUBLIC_SERVICE_BANDS.TXT @@ -0,0 +1,8 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# COMMON PUBLIC SERVICE BANDS +150,160,PUBLIC SERVICE 155 +450,470,PUBLIC SERVICE 460 +769,775,PUBLIC SERVICE 770 diff --git a/sdcard/LOOKINGGLASS/CubeSats.TXT b/sdcard/LOOKINGGLASS/CubeSats.TXT new file mode 100644 index 000000000..67801a79c --- /dev/null +++ b/sdcard/LOOKINGGLASS/CubeSats.TXT @@ -0,0 +1,7 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# CubeSats +144,146,145 CubeSats +435,438,436 CubeSats diff --git a/sdcard/LOOKINGGLASS/DECT.TXT b/sdcard/LOOKINGGLASS/DECT.TXT new file mode 100644 index 000000000..8bca10b2a --- /dev/null +++ b/sdcard/LOOKINGGLASS/DECT.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# DECT +1879,1931,DECT diff --git a/sdcard/LOOKINGGLASS/FRSGMRS.TXT b/sdcard/LOOKINGGLASS/FRSGMRS.TXT new file mode 100644 index 000000000..45cb84918 --- /dev/null +++ b/sdcard/LOOKINGGLASS/FRSGMRS.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# FRS/GMRS +462,468,FRS/GMRS diff --git a/sdcard/LOOKINGGLASS/FULL.TXT b/sdcard/LOOKINGGLASS/FULL.TXT new file mode 100644 index 000000000..9001f737d --- /dev/null +++ b/sdcard/LOOKINGGLASS/FULL.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# FULL +10,7250,FULL RANGE diff --git a/sdcard/LOOKINGGLASS/HAM_RADIO.TXT b/sdcard/LOOKINGGLASS/HAM_RADIO.TXT new file mode 100644 index 000000000..edb481f64 --- /dev/null +++ b/sdcard/LOOKINGGLASS/HAM_RADIO.TXT @@ -0,0 +1,12 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# HAM RADIO +28,30,HAM 10-METER +50,54,HAM 6-METER +144,148,HAM 2-METER +219,225,HAM 1.25-METER +420,450,HAM 70-CM +902,928,HAM 33-CM +1240,1300,HAM 23-CM diff --git a/sdcard/LOOKINGGLASS/ITU_DEFINED_BANDS.TXT b/sdcard/LOOKINGGLASS/ITU_DEFINED_BANDS.TXT new file mode 100644 index 000000000..2add740bb --- /dev/null +++ b/sdcard/LOOKINGGLASS/ITU_DEFINED_BANDS.TXT @@ -0,0 +1,10 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# ITU-DEFINED BANDS +1,3,MF BAND +3,30,HF BAND +30,300,VHF BAND +300,3000,UHF BAND +3000,7250,SHF BAND diff --git a/sdcard/LOOKINGGLASS/KEYFOBS.TXT b/sdcard/LOOKINGGLASS/KEYFOBS.TXT new file mode 100644 index 000000000..f7898f84d --- /dev/null +++ b/sdcard/LOOKINGGLASS/KEYFOBS.TXT @@ -0,0 +1,11 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# KEYFOBS +305,325,315 MHz KEYFOBS +380,400,390 MHz KEYFOBS +423,443,433 MHz KEYFOBS +858,878,868 MHz KEYFOBS +902,929,915 MHz KEYFOBS +# 260,500,315/433 MHz KEYFOBS diff --git a/sdcard/LOOKINGGLASS/LoRa.TXT b/sdcard/LOOKINGGLASS/LoRa.TXT new file mode 100644 index 000000000..15dbd918e --- /dev/null +++ b/sdcard/LOOKINGGLASS/LoRa.TXT @@ -0,0 +1,9 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# LoRa +433,435,LoRa 443EU +863,870,LoRa 868EU +902,928,LoRa 915US +779,787,LoRa 780CN diff --git a/sdcard/LOOKINGGLASS/MARINE_BAND.TXT b/sdcard/LOOKINGGLASS/MARINE_BAND.TXT new file mode 100644 index 000000000..6f52c7bcb --- /dev/null +++ b/sdcard/LOOKINGGLASS/MARINE_BAND.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# MARINE BAND +155,163,MARINE VHF diff --git a/sdcard/LOOKINGGLASS/MICS.TXT b/sdcard/LOOKINGGLASS/MICS.TXT new file mode 100644 index 000000000..50e8a10b1 --- /dev/null +++ b/sdcard/LOOKINGGLASS/MICS.TXT @@ -0,0 +1,8 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# MICS +140,380,MICS (VHF) AND MARINE +420,660,MICS (UHF) +169,172,MICS COMMON diff --git a/sdcard/LOOKINGGLASS/MULTI_USE_RADIO_SERVICE_MURS.TXT b/sdcard/LOOKINGGLASS/MULTI_USE_RADIO_SERVICE_MURS.TXT new file mode 100644 index 000000000..ad60539b2 --- /dev/null +++ b/sdcard/LOOKINGGLASS/MULTI_USE_RADIO_SERVICE_MURS.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# MULTI-USE RADIO SERVICE - MURS +151,155,MULTI-USE RADIO SRVS diff --git a/sdcard/LOOKINGGLASS/NOAA_WEATHER_RADIO.TXT b/sdcard/LOOKINGGLASS/NOAA_WEATHER_RADIO.TXT new file mode 100644 index 000000000..f1343c5d2 --- /dev/null +++ b/sdcard/LOOKINGGLASS/NOAA_WEATHER_RADIO.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# NOAA WEATHER RADIO +161,164,NOAA WEATHER RADIO diff --git a/sdcard/LOOKINGGLASS/PAGERS.TXT b/sdcard/LOOKINGGLASS/PAGERS.TXT new file mode 100644 index 000000000..18aceffb1 --- /dev/null +++ b/sdcard/LOOKINGGLASS/PAGERS.TXT @@ -0,0 +1,11 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# PAGERS https://www.fcc.gov/wireless/bureau-divisions/mobility-division/paging +34,36,USA PAGERS 35 +43,45,USA PAGERS 44 +151,153,USA PAGERS 152 +157,159,USA PAGERS 158 +453,454,USA PAGERS 454 +929,931,USA PAGERS 930 diff --git a/sdcard/LOOKINGGLASS/PRESETS.TXT b/sdcard/LOOKINGGLASS/PRESETS.TXT deleted file mode 100644 index 13177a846..000000000 --- a/sdcard/LOOKINGGLASS/PRESETS.TXT +++ /dev/null @@ -1,87 +0,0 @@ -# INI,END,DESCRIPTION -# (Freq range in MHz, min separation 3MHz) -# (Description up to 20 char) -# (fields comma delimiter) -# 433 MHz BAND -423,443,433 BAND -# AVIATION -108,118,AVIATION 108 NAVAIDS -118,137,AVIATION 118 VOICE -960,1215,AVIATION 960 -1089,1091,ADS-B 1090 -128,137,ACARS -# BROADCAST RADIO -87,108,FM BROADCAST USA -76,108,FM BROADCAST BRAZIL -76,95,FM BROADCAST JAPAN -65,74,FM OIRT EAST EU -# CITIZENS BAND RADIO -26,28,CB RADIO -# COMMON PUBLIC SERVICE BANDS -150,160, PUBLIC SERVICE 155 -450,470,PUBLIC SERVICE 460 -769,775,PUBLIC SERVICE 770 -# CubeSats -144,146,145 CubeSats -435,438,436 CubeSats -# DECT -1879,1931,DECT -# FRS/GMRS -462,468,FRS/GMRS -# AUS UHF CB -476,478,AUS UHF CB -# HAM RADIO -28,30,HAM 10-METER -50,54,HAM 6-METER -144,148,HAM 2-METER -219,225,HAM 1.25-METER -420,450,HAM 70-CM -902,928,HAM 33-CM -1240,1300,HAM 23-CM -# KEYFOBS -305,325,315 MHz KEYFOBS -380,400,390 MHz KEYFOBS -423,443,433 MHz KEYFOBS -858,878,868 MHz KEYFOBS -902,929,915 MHz KEYFOBS -# 260,500,315/433 MHz KEYFOBS -# LoRa -433,435,LoRa 443EU -863,870,LoRa 868EU -902,928,LoRa 915US -779,787,LoRa 780CN -# MARINE BAND -155,163,MARINE VHF -# MICS -140,380,MICS (VHF) AND MARINE -420,660,MICS (UHF) -169,172,MICS COMMON -# MULTI-USE RADIO SERVICE - MURS -151,155,MULTI-USE RADIO SRVS -# NOAA WEATHER RADIO -161,164,NOAA WEATHER RADIO -# PAGERS https://www.fcc.gov/wireless/bureau-divisions/mobility-division/paging -34,36,USA PAGERS 35 -43,45,USA PAGERS 44 -151,153,USA PAGERS 152 -157,159,USA PAGERS 158 -453,454,USA PAGERS 454 -929,931,USA PAGERS 930 -# RADIOSONDES -390,420,RADIOSONDES -# RAILROAD -159,162,RAILROAD -# WATER METERS -850,900,Water meters -902,928,ISM 900MHz -# WIFI -2320,2560,BL / WIFI 2.4GHz -5160,5900,WIFI 5GHz -# ITU-DEFINED BANDS -1,3,MF BAND -3,30,HF BAND -30,300,VHF BAND -300,3000,UHF BAND -3000,7250,SHF BAND -# FULL -10,7250,FULL RANGE diff --git a/sdcard/LOOKINGGLASS/RADIOSONDES.TXT b/sdcard/LOOKINGGLASS/RADIOSONDES.TXT new file mode 100644 index 000000000..c4006a485 --- /dev/null +++ b/sdcard/LOOKINGGLASS/RADIOSONDES.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# RADIOSONDES +390,420,RADIOSONDES diff --git a/sdcard/LOOKINGGLASS/RAILROAD.TXT b/sdcard/LOOKINGGLASS/RAILROAD.TXT new file mode 100644 index 000000000..05b2098b8 --- /dev/null +++ b/sdcard/LOOKINGGLASS/RAILROAD.TXT @@ -0,0 +1,6 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# RAILROAD +159,162,RAILROAD diff --git a/sdcard/LOOKINGGLASS/WATER_METERS.TXT b/sdcard/LOOKINGGLASS/WATER_METERS.TXT new file mode 100644 index 000000000..9915b8ff5 --- /dev/null +++ b/sdcard/LOOKINGGLASS/WATER_METERS.TXT @@ -0,0 +1,7 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# WATER METERS +850,900,Water meters +902,928,ISM 900MHz diff --git a/sdcard/LOOKINGGLASS/WIFI.TXT b/sdcard/LOOKINGGLASS/WIFI.TXT new file mode 100644 index 000000000..5a9752a01 --- /dev/null +++ b/sdcard/LOOKINGGLASS/WIFI.TXT @@ -0,0 +1,7 @@ +# INI,END,DESCRIPTION +# (Freq range in MHz, min separation 3MHz) +# (Description up to 20 char) +# (fields comma delimiter) +# WIFI +2320,2560,BL / WIFI 2.4GHz +5160,5900,WIFI 5GHz