diff --git a/Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/Contents.json b/Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/Contents.json rename to Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/play_store_icon_114px-2.png similarity index 100% rename from Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/play_store_icon_114px-2.png rename to Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/play_store_icon_114px-2.png diff --git a/Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/play_store_icon_114px-3.png similarity index 100% rename from Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/play_store_icon_114px-3.png rename to Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/play_store_icon_114px-3.png diff --git a/Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/play_store_icon_114px-4.png similarity index 100% rename from Meshtastic/Assets.xcassets/ANDROIDSIM.imageset/play_store_icon_114px-4.png rename to Meshtastic/Assets.xcassets/ANDROID_SIM.imageset/play_store_icon_114px-4.png diff --git a/Meshtastic/Assets.xcassets/DIYV.imageset/Contents.json b/Meshtastic/Assets.xcassets/DIY_V1.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/DIYV.imageset/Contents.json rename to Meshtastic/Assets.xcassets/DIY_V1.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/DIYV.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/DIY_V1.imageset/play_store_icon_114px-2.png similarity index 100% rename from Meshtastic/Assets.xcassets/DIYV.imageset/play_store_icon_114px-2.png rename to Meshtastic/Assets.xcassets/DIY_V1.imageset/play_store_icon_114px-2.png diff --git a/Meshtastic/Assets.xcassets/DIYV.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/DIY_V1.imageset/play_store_icon_114px-3.png similarity index 100% rename from Meshtastic/Assets.xcassets/DIYV.imageset/play_store_icon_114px-3.png rename to Meshtastic/Assets.xcassets/DIY_V1.imageset/play_store_icon_114px-3.png diff --git a/Meshtastic/Assets.xcassets/DIYV.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/DIY_V1.imageset/play_store_icon_114px-4.png similarity index 100% rename from Meshtastic/Assets.xcassets/DIYV.imageset/play_store_icon_114px-4.png rename to Meshtastic/Assets.xcassets/DIY_V1.imageset/play_store_icon_114px-4.png diff --git a/Meshtastic/Assets.xcassets/LORARELAYV1.imageset/Contents.json b/Meshtastic/Assets.xcassets/DR_DEV.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/LORARELAYV1.imageset/Contents.json rename to Meshtastic/Assets.xcassets/DR_DEV.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/LORARELAYV1.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/DR_DEV.imageset/play_store_icon_114px-2.png similarity index 100% rename from Meshtastic/Assets.xcassets/LORARELAYV1.imageset/play_store_icon_114px-2.png rename to Meshtastic/Assets.xcassets/DR_DEV.imageset/play_store_icon_114px-2.png diff --git a/Meshtastic/Assets.xcassets/LORARELAYV1.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/DR_DEV.imageset/play_store_icon_114px-3.png similarity index 100% rename from Meshtastic/Assets.xcassets/LORARELAYV1.imageset/play_store_icon_114px-3.png rename to Meshtastic/Assets.xcassets/DR_DEV.imageset/play_store_icon_114px-3.png diff --git a/Meshtastic/Assets.xcassets/LORARELAYV1.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/DR_DEV.imageset/play_store_icon_114px-4.png similarity index 100% rename from Meshtastic/Assets.xcassets/LORARELAYV1.imageset/play_store_icon_114px-4.png rename to Meshtastic/Assets.xcassets/DR_DEV.imageset/play_store_icon_114px-4.png diff --git a/Meshtastic/Assets.xcassets/HELTECV20.imageset/Contents.json b/Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV20.imageset/Contents.json rename to Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/HELTECV20.imageset/Heltec_turq-1.jpg b/Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Heltec_turq-1.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV20.imageset/Heltec_turq-1.jpg rename to Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Heltec_turq-1.jpg diff --git a/Meshtastic/Assets.xcassets/HELTECV20.imageset/Heltec_turq-2.jpg b/Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Heltec_turq-2.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV20.imageset/Heltec_turq-2.jpg rename to Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Heltec_turq-2.jpg diff --git a/Meshtastic/Assets.xcassets/HELTECV20.imageset/Heltec_turq.jpg b/Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Heltec_turq.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV20.imageset/Heltec_turq.jpg rename to Meshtastic/Assets.xcassets/HELTEC_V1.imageset/Heltec_turq.jpg diff --git a/Meshtastic/Assets.xcassets/HELTECV21.imageset/Contents.json b/Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV21.imageset/Contents.json rename to Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/HELTECV21.imageset/Heltec_turq-1.jpg b/Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Heltec_turq-1.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV21.imageset/Heltec_turq-1.jpg rename to Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Heltec_turq-1.jpg diff --git a/Meshtastic/Assets.xcassets/HELTECV21.imageset/Heltec_turq-2.jpg b/Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Heltec_turq-2.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV21.imageset/Heltec_turq-2.jpg rename to Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Heltec_turq-2.jpg diff --git a/Meshtastic/Assets.xcassets/HELTECV21.imageset/Heltec_turq.jpg b/Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Heltec_turq.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/HELTECV21.imageset/Heltec_turq.jpg rename to Meshtastic/Assets.xcassets/HELTEC_V2_1.imageset/Heltec_turq.jpg diff --git a/Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/Contents.json b/Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/Contents.json rename to Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/play_store_icon_114px-2.png similarity index 100% rename from Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/play_store_icon_114px-2.png rename to Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/play_store_icon_114px-2.png diff --git a/Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/play_store_icon_114px-3.png similarity index 100% rename from Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/play_store_icon_114px-3.png rename to Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/play_store_icon_114px-3.png diff --git a/Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/play_store_icon_114px-4.png similarity index 100% rename from Meshtastic/Assets.xcassets/NRF52UNKNOWN.imageset/play_store_icon_114px-4.png rename to Meshtastic/Assets.xcassets/LILYGO_TBEAM_S3_CORE.imageset/play_store_icon_114px-4.png diff --git a/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/Contents.json b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/Contents.json new file mode 100644 index 00000000..06ebbbb1 --- /dev/null +++ b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "play_store_icon_114px-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "play_store_icon_114px-3.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "play_store_icon_114px-4.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-2.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-2.png differ diff --git a/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-3.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-3.png differ diff --git a/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-4.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/LORA_RELAY_V1.imageset/play_store_icon_114px-4.png differ diff --git a/Meshtastic/Assets.xcassets/M5STACK.imageset/Contents.json b/Meshtastic/Assets.xcassets/M5STACK.imageset/Contents.json new file mode 100644 index 00000000..06ebbbb1 --- /dev/null +++ b/Meshtastic/Assets.xcassets/M5STACK.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "play_store_icon_114px-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "play_store_icon_114px-3.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "play_store_icon_114px-4.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-2.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-2.png differ diff --git a/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-3.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-3.png differ diff --git a/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-4.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/M5STACK.imageset/play_store_icon_114px-4.png differ diff --git a/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 1.jpg b/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 1.jpg new file mode 100644 index 00000000..7bfdfe5d Binary files /dev/null and b/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 1.jpg differ diff --git a/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 2.jpg b/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 2.jpg new file mode 100644 index 00000000..7bfdfe5d Binary files /dev/null and b/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 2.jpg differ diff --git a/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1.jpg b/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1.jpg new file mode 100644 index 00000000..7bfdfe5d Binary files /dev/null and b/Meshtastic/Assets.xcassets/NANO_G1.imageset/2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1.jpg differ diff --git a/Meshtastic/Assets.xcassets/NANO_G1.imageset/Contents.json b/Meshtastic/Assets.xcassets/NANO_G1.imageset/Contents.json new file mode 100644 index 00000000..2c63607f --- /dev/null +++ b/Meshtastic/Assets.xcassets/NANO_G1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 2.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1 1.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "2022-04-01T18-01-04.120Z-meshtastic_mesh_device_nano_edition_G1_P1.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/Contents.json b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/Contents.json new file mode 100644 index 00000000..06ebbbb1 --- /dev/null +++ b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "play_store_icon_114px-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "play_store_icon_114px-3.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "play_store_icon_114px-4.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-2.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-2.png differ diff --git a/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-3.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-3.png differ diff --git a/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-4.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/NRF52840_PCA10059.imageset/play_store_icon_114px-4.png differ diff --git a/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/Contents.json b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/Contents.json new file mode 100644 index 00000000..06ebbbb1 --- /dev/null +++ b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "play_store_icon_114px-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "play_store_icon_114px-3.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "play_store_icon_114px-4.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-2.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-2.png differ diff --git a/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-3.png b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-3.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-3.png differ diff --git a/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-4.png b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-4.png new file mode 100644 index 00000000..79cf0e00 Binary files /dev/null and b/Meshtastic/Assets.xcassets/PRIVATE_HW.imageset/play_store_icon_114px-4.png differ diff --git a/Meshtastic/Assets.xcassets/TECHO.imageset/Contents.json b/Meshtastic/Assets.xcassets/RAK11200.imageset/Contents.json similarity index 69% rename from Meshtastic/Assets.xcassets/TECHO.imageset/Contents.json rename to Meshtastic/Assets.xcassets/RAK11200.imageset/Contents.json index aeb16a23..f231e71f 100644 --- a/Meshtastic/Assets.xcassets/TECHO.imageset/Contents.json +++ b/Meshtastic/Assets.xcassets/RAK11200.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "techo-2.jpg", + "filename" : "RAK_DEV_KIT.jpg", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "techo-1.jpg", + "filename" : "RAK_DEV_KIT-1.jpg", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "techo.jpg", + "filename" : "RAK_DEV_KIT-2.jpg", "idiom" : "universal", "scale" : "3x" } diff --git a/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT-1.jpg b/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT-1.jpg new file mode 100644 index 00000000..9300bed0 Binary files /dev/null and b/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT-1.jpg differ diff --git a/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT-2.jpg b/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT-2.jpg new file mode 100644 index 00000000..9300bed0 Binary files /dev/null and b/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT-2.jpg differ diff --git a/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT.jpg b/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT.jpg new file mode 100644 index 00000000..9300bed0 Binary files /dev/null and b/Meshtastic/Assets.xcassets/RAK11200.imageset/RAK_DEV_KIT.jpg differ diff --git a/Meshtastic/Assets.xcassets/STATION_G1.imageset/Contents.json b/Meshtastic/Assets.xcassets/STATION_G1.imageset/Contents.json new file mode 100644 index 00000000..786a16b8 --- /dev/null +++ b/Meshtastic/Assets.xcassets/STATION_G1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "meshtastic_mesh_device_station_edition_overview 2.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "meshtastic_mesh_device_station_edition_overview 1.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "meshtastic_mesh_device_station_edition_overview.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview 1.jpg b/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview 1.jpg new file mode 100644 index 00000000..2983437a Binary files /dev/null and b/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview 1.jpg differ diff --git a/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview 2.jpg b/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview 2.jpg new file mode 100644 index 00000000..2983437a Binary files /dev/null and b/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview 2.jpg differ diff --git a/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview.jpg b/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview.jpg new file mode 100644 index 00000000..2983437a Binary files /dev/null and b/Meshtastic/Assets.xcassets/STATION_G1.imageset/meshtastic_mesh_device_station_edition_overview.jpg differ diff --git a/Meshtastic/Assets.xcassets/TBEAM0P7.imageset/Contents.json b/Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/TBEAM0P7.imageset/Contents.json rename to Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/TBEAM0P7.imageset/tbeam-1.jpg b/Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/tbeam-1.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TBEAM0P7.imageset/tbeam-1.jpg rename to Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/tbeam-1.jpg diff --git a/Meshtastic/Assets.xcassets/TBEAM0P7.imageset/tbeam-2.jpg b/Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/tbeam-2.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TBEAM0P7.imageset/tbeam-2.jpg rename to Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/tbeam-2.jpg diff --git a/Meshtastic/Assets.xcassets/TBEAM0P7.imageset/tbeam.jpg b/Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/tbeam.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TBEAM0P7.imageset/tbeam.jpg rename to Meshtastic/Assets.xcassets/TBEAM_V0P7.imageset/tbeam.jpg diff --git a/Meshtastic/Assets.xcassets/TECHO.imageset/techo-1.jpg b/Meshtastic/Assets.xcassets/TECHO.imageset/techo-1.jpg deleted file mode 100644 index 0f1ce811..00000000 Binary files a/Meshtastic/Assets.xcassets/TECHO.imageset/techo-1.jpg and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/TECHO.imageset/techo-2.jpg b/Meshtastic/Assets.xcassets/TECHO.imageset/techo-2.jpg deleted file mode 100644 index 0f1ce811..00000000 Binary files a/Meshtastic/Assets.xcassets/TECHO.imageset/techo-2.jpg and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/TECHO.imageset/techo.jpg b/Meshtastic/Assets.xcassets/TECHO.imageset/techo.jpg deleted file mode 100644 index 0f1ce811..00000000 Binary files a/Meshtastic/Assets.xcassets/TECHO.imageset/techo.jpg and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/TLORAV1.imageset/Contents.json b/Meshtastic/Assets.xcassets/TLORA_V1.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV1.imageset/Contents.json rename to Meshtastic/Assets.xcassets/TLORA_V1.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_gray-1.jpg b/Meshtastic/Assets.xcassets/TLORA_V1.imageset/TLORA_gray-1.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_gray-1.jpg rename to Meshtastic/Assets.xcassets/TLORA_V1.imageset/TLORA_gray-1.jpg diff --git a/Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_gray.jpg b/Meshtastic/Assets.xcassets/TLORA_V1.imageset/TLORA_gray.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_gray.jpg rename to Meshtastic/Assets.xcassets/TLORA_V1.imageset/TLORA_gray.jpg diff --git a/Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_olive.jpg b/Meshtastic/Assets.xcassets/TLORA_V1.imageset/TLORA_olive.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_olive.jpg rename to Meshtastic/Assets.xcassets/TLORA_V1.imageset/TLORA_olive.jpg diff --git a/Meshtastic/Assets.xcassets/TLORAV11P3.imageset/Contents.json b/Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV11P3.imageset/Contents.json rename to Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/TLORAV11P3.imageset/TLORA_gray-1.jpg b/Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/TLORA_gray-1.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV11P3.imageset/TLORA_gray-1.jpg rename to Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/TLORA_gray-1.jpg diff --git a/Meshtastic/Assets.xcassets/TLORAV11P3.imageset/TLORA_gray-2.jpg b/Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/TLORA_gray-2.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV11P3.imageset/TLORA_gray-2.jpg rename to Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/TLORA_gray-2.jpg diff --git a/Meshtastic/Assets.xcassets/TLORAV11P3.imageset/TLORA_olive.jpg b/Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/TLORA_olive.jpg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV11P3.imageset/TLORA_olive.jpg rename to Meshtastic/Assets.xcassets/TLORA_V1_1P3.imageset/TLORA_olive.jpg diff --git a/Meshtastic/Assets.xcassets/TLORAV2.imageset/Contents.json b/Meshtastic/Assets.xcassets/TLORA_V2.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV2.imageset/Contents.json rename to Meshtastic/Assets.xcassets/TLORA_V2.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/TLORAV2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg rename to Meshtastic/Assets.xcassets/TLORA_V2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg diff --git a/Meshtastic/Assets.xcassets/TLORAV2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg rename to Meshtastic/Assets.xcassets/TLORA_V2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg diff --git a/Meshtastic/Assets.xcassets/TLORAV2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg rename to Meshtastic/Assets.xcassets/TLORA_V2.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg diff --git a/Meshtastic/Assets.xcassets/TLORAV211P6.imageset/Contents.json b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/Contents.json similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV211P6.imageset/Contents.json rename to Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/Contents.json diff --git a/Meshtastic/Assets.xcassets/TLORAV211P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV211P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg rename to Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg diff --git a/Meshtastic/Assets.xcassets/TLORAV211P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV211P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg rename to Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg diff --git a/Meshtastic/Assets.xcassets/TLORAV211P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg similarity index 100% rename from Meshtastic/Assets.xcassets/TLORAV211P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg rename to Meshtastic/Assets.xcassets/TLORA_V2_1_1P6.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg diff --git a/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/Contents.json b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/Contents.json new file mode 100644 index 00000000..38e3dcb7 --- /dev/null +++ b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg new file mode 100644 index 00000000..211ca924 Binary files /dev/null and b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-1.jpeg differ diff --git a/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg new file mode 100644 index 00000000..211ca924 Binary files /dev/null and b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp-2.jpeg differ diff --git a/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg new file mode 100644 index 00000000..211ca924 Binary files /dev/null and b/Meshtastic/Assets.xcassets/TLORA_V2_1_1P8.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.jpeg differ diff --git a/Meshtastic/Assets.xcassets/T_ECHO.imageset/Contents.json b/Meshtastic/Assets.xcassets/T_ECHO.imageset/Contents.json new file mode 100644 index 00000000..42c7a8fb --- /dev/null +++ b/Meshtastic/Assets.xcassets/T_ECHO.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 1.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 2.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 1.jpg b/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 1.jpg new file mode 100644 index 00000000..c6b11b66 Binary files /dev/null and b/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 1.jpg differ diff --git a/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 2.jpg b/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 2.jpg new file mode 100644 index 00000000..c6b11b66 Binary files /dev/null and b/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1 2.jpg differ diff --git a/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.jpg b/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.jpg new file mode 100644 index 00000000..c6b11b66 Binary files /dev/null and b/Meshtastic/Assets.xcassets/T_ECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.jpg differ diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 8246453e..c495c295 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -587,10 +587,13 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph MeshLogger.log("ℹ️ MESH PACKET received for ATAK Forwarder App UNHANDLED \(try! decodedInfo.packet.jsonString())") case .simulatorApp: MeshLogger.log("ℹ️ MESH PACKET received for Simulator App UNHANDLED \(try! decodedInfo.packet.jsonString())") + case .audioApp: + MeshLogger.log("ℹ️ MESH PACKET received for Audio App UNHANDLED \(try! decodedInfo.packet.jsonString())") case .UNRECOGNIZED(_): MeshLogger.log("ℹ️ MESH PACKET received for Other App UNHANDLED \(try! decodedInfo.packet.jsonString())") case .max: print("MAX PORT NUM OF 511") + } // MARK: Check for an All / Broadcast User and delete it as a transition to multi channel diff --git a/Meshtastic/Protobufs/admin.pb.swift b/Meshtastic/Protobufs/admin.pb.swift index 83169e01..a8dbfaae 100644 --- a/Meshtastic/Protobufs/admin.pb.swift +++ b/Meshtastic/Protobufs/admin.pb.swift @@ -628,6 +628,10 @@ struct AdminMessage { /// /// TODO: REPLACE case cannedmsgConfig // = 6 + + /// + /// TODO: REPLACE + case audioConfig // = 7 case UNRECOGNIZED(Int) init() { @@ -643,6 +647,7 @@ struct AdminMessage { case 4: self = .rangetestConfig case 5: self = .telemetryConfig case 6: self = .cannedmsgConfig + case 7: self = .audioConfig default: self = .UNRECOGNIZED(rawValue) } } @@ -656,6 +661,7 @@ struct AdminMessage { case .rangetestConfig: return 4 case .telemetryConfig: return 5 case .cannedmsgConfig: return 6 + case .audioConfig: return 7 case .UNRECOGNIZED(let i): return i } } @@ -690,6 +696,7 @@ extension AdminMessage.ModuleConfigType: CaseIterable { .rangetestConfig, .telemetryConfig, .cannedmsgConfig, + .audioConfig, ] } @@ -1155,5 +1162,6 @@ extension AdminMessage.ModuleConfigType: SwiftProtobuf._ProtoNameProviding { 4: .same(proto: "RANGETEST_CONFIG"), 5: .same(proto: "TELEMETRY_CONFIG"), 6: .same(proto: "CANNEDMSG_CONFIG"), + 7: .same(proto: "AUDIO_CONFIG"), ] } diff --git a/Meshtastic/Protobufs/config.pb.swift b/Meshtastic/Protobufs/config.pb.swift index a70a48aa..1bdbd1eb 100644 --- a/Meshtastic/Protobufs/config.pb.swift +++ b/Meshtastic/Protobufs/config.pb.swift @@ -471,46 +471,6 @@ struct Config { var unknownFields = SwiftProtobuf.UnknownStorage() - enum WiFiMode: SwiftProtobuf.Enum { - typealias RawValue = Int - - /// - /// This mode is used to connect to an external WiFi network - case client // = 0 - - /// - /// In this mode the node will operate as an AP (and DHCP server) - case accessPoint // = 1 - - /// - /// If set, the node AP will broadcast as a hidden SSID - case accessPointHidden // = 2 - case UNRECOGNIZED(Int) - - init() { - self = .client - } - - init?(rawValue: Int) { - switch rawValue { - case 0: self = .client - case 1: self = .accessPoint - case 2: self = .accessPointHidden - default: self = .UNRECOGNIZED(rawValue) - } - } - - var rawValue: Int { - switch self { - case .client: return 0 - case .accessPoint: return 1 - case .accessPointHidden: return 2 - case .UNRECOGNIZED(let i): return i - } - } - - } - enum EthMode: SwiftProtobuf.Enum { typealias RawValue = Int @@ -610,6 +570,10 @@ struct Config { /// Perferred display units var units: Config.DisplayConfig.DisplayUnits = .metric + /// + /// Override auto-detect in screen + var oled: Config.DisplayConfig.OledType = .oledAuto + var unknownFields = SwiftProtobuf.UnknownStorage() /// @@ -715,6 +679,48 @@ struct Config { } + /// + /// Override OLED outo detect with this if it fails. + enum OledType: SwiftProtobuf.Enum { + typealias RawValue = Int + + /// + /// Default / Auto + case oledAuto // = 0 + + /// + /// Default / Auto + case oledSsd1306 // = 1 + + /// + /// Default / Auto + case oledSh1106 // = 2 + case UNRECOGNIZED(Int) + + init() { + self = .oledAuto + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .oledAuto + case 1: self = .oledSsd1306 + case 2: self = .oledSh1106 + default: self = .UNRECOGNIZED(rawValue) + } + } + + var rawValue: Int { + switch self { + case .oledAuto: return 0 + case .oledSsd1306: return 1 + case .oledSh1106: return 2 + case .UNRECOGNIZED(let i): return i + } + } + + } + init() {} } @@ -1069,15 +1075,6 @@ extension Config.PositionConfig.PositionFlags: CaseIterable { ] } -extension Config.NetworkConfig.WiFiMode: CaseIterable { - // The compiler won't synthesize support with the UNRECOGNIZED case. - static var allCases: [Config.NetworkConfig.WiFiMode] = [ - .client, - .accessPoint, - .accessPointHidden, - ] -} - extension Config.NetworkConfig.EthMode: CaseIterable { // The compiler won't synthesize support with the UNRECOGNIZED case. static var allCases: [Config.NetworkConfig.EthMode] = [ @@ -1106,6 +1103,15 @@ extension Config.DisplayConfig.DisplayUnits: CaseIterable { ] } +extension Config.DisplayConfig.OledType: CaseIterable { + // The compiler won't synthesize support with the UNRECOGNIZED case. + static var allCases: [Config.DisplayConfig.OledType] = [ + .oledAuto, + .oledSsd1306, + .oledSh1106, + ] +} + extension Config.LoRaConfig.RegionCode: CaseIterable { // The compiler won't synthesize support with the UNRECOGNIZED case. static var allCases: [Config.LoRaConfig.RegionCode] = [ @@ -1159,12 +1165,12 @@ extension Config.PositionConfig: @unchecked Sendable {} extension Config.PositionConfig.PositionFlags: @unchecked Sendable {} extension Config.PowerConfig: @unchecked Sendable {} extension Config.NetworkConfig: @unchecked Sendable {} -extension Config.NetworkConfig.WiFiMode: @unchecked Sendable {} extension Config.NetworkConfig.EthMode: @unchecked Sendable {} extension Config.NetworkConfig.IpV4Config: @unchecked Sendable {} extension Config.DisplayConfig: @unchecked Sendable {} extension Config.DisplayConfig.GpsCoordinateFormat: @unchecked Sendable {} extension Config.DisplayConfig.DisplayUnits: @unchecked Sendable {} +extension Config.DisplayConfig.OledType: @unchecked Sendable {} extension Config.LoRaConfig: @unchecked Sendable {} extension Config.LoRaConfig.RegionCode: @unchecked Sendable {} extension Config.LoRaConfig.ModemPreset: @unchecked Sendable {} @@ -1617,14 +1623,6 @@ extension Config.NetworkConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImp } } -extension Config.NetworkConfig.WiFiMode: SwiftProtobuf._ProtoNameProviding { - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 0: .same(proto: "CLIENT"), - 1: .same(proto: "ACCESS_POINT"), - 2: .same(proto: "ACCESS_POINT_HIDDEN"), - ] -} - extension Config.NetworkConfig.EthMode: SwiftProtobuf._ProtoNameProviding { static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ 0: .same(proto: "DHCP"), @@ -1691,6 +1689,7 @@ extension Config.DisplayConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImp 4: .standard(proto: "compass_north_top"), 5: .standard(proto: "flip_screen"), 6: .same(proto: "units"), + 7: .same(proto: "oled"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -1705,6 +1704,7 @@ extension Config.DisplayConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImp case 4: try { try decoder.decodeSingularBoolField(value: &self.compassNorthTop) }() case 5: try { try decoder.decodeSingularBoolField(value: &self.flipScreen) }() case 6: try { try decoder.decodeSingularEnumField(value: &self.units) }() + case 7: try { try decoder.decodeSingularEnumField(value: &self.oled) }() default: break } } @@ -1729,6 +1729,9 @@ extension Config.DisplayConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImp if self.units != .metric { try visitor.visitSingularEnumField(value: self.units, fieldNumber: 6) } + if self.oled != .oledAuto { + try visitor.visitSingularEnumField(value: self.oled, fieldNumber: 7) + } try unknownFields.traverse(visitor: &visitor) } @@ -1739,6 +1742,7 @@ extension Config.DisplayConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImp if lhs.compassNorthTop != rhs.compassNorthTop {return false} if lhs.flipScreen != rhs.flipScreen {return false} if lhs.units != rhs.units {return false} + if lhs.oled != rhs.oled {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -1762,6 +1766,14 @@ extension Config.DisplayConfig.DisplayUnits: SwiftProtobuf._ProtoNameProviding { ] } +extension Config.DisplayConfig.OledType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "OLED_AUTO"), + 1: .same(proto: "OLED_SSD1306"), + 2: .same(proto: "OLED_SH1106"), + ] +} + extension Config.LoRaConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = Config.protoMessageName + ".LoRaConfig" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ diff --git a/Meshtastic/Protobufs/localonly.pb.swift b/Meshtastic/Protobufs/localonly.pb.swift index 8ad6ccf6..2c89a577 100644 --- a/Meshtastic/Protobufs/localonly.pb.swift +++ b/Meshtastic/Protobufs/localonly.pb.swift @@ -200,6 +200,17 @@ struct LocalModuleConfig { /// Clears the value of `cannedMessage`. Subsequent reads from it will return its default value. mutating func clearCannedMessage() {_uniqueStorage()._cannedMessage = nil} + /// + /// The part of the config that is specific to the Audio module + var audio: ModuleConfig.AudioConfig { + get {return _storage._audio ?? ModuleConfig.AudioConfig()} + set {_uniqueStorage()._audio = newValue} + } + /// Returns true if `audio` has been explicitly set. + var hasAudio: Bool {return _storage._audio != nil} + /// Clears the value of `audio`. Subsequent reads from it will return its default value. + mutating func clearAudio() {_uniqueStorage()._audio = nil} + /// /// A version integer used to invalidate old save files when we make /// incompatible changes This integer is set at build time and is private to @@ -357,6 +368,7 @@ extension LocalModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem 5: .standard(proto: "range_test"), 6: .same(proto: "telemetry"), 7: .standard(proto: "canned_message"), + 9: .same(proto: "audio"), 8: .same(proto: "version"), ] @@ -368,6 +380,7 @@ extension LocalModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem var _rangeTest: ModuleConfig.RangeTestConfig? = nil var _telemetry: ModuleConfig.TelemetryConfig? = nil var _cannedMessage: ModuleConfig.CannedMessageConfig? = nil + var _audio: ModuleConfig.AudioConfig? = nil var _version: UInt32 = 0 static let defaultInstance = _StorageClass() @@ -382,6 +395,7 @@ extension LocalModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem _rangeTest = source._rangeTest _telemetry = source._telemetry _cannedMessage = source._cannedMessage + _audio = source._audio _version = source._version } } @@ -409,6 +423,7 @@ extension LocalModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem case 6: try { try decoder.decodeSingularMessageField(value: &_storage._telemetry) }() case 7: try { try decoder.decodeSingularMessageField(value: &_storage._cannedMessage) }() case 8: try { try decoder.decodeSingularUInt32Field(value: &_storage._version) }() + case 9: try { try decoder.decodeSingularMessageField(value: &_storage._audio) }() default: break } } @@ -445,6 +460,9 @@ extension LocalModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem if _storage._version != 0 { try visitor.visitSingularUInt32Field(value: _storage._version, fieldNumber: 8) } + try { if let v = _storage._audio { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } }() } try unknownFields.traverse(visitor: &visitor) } @@ -461,6 +479,7 @@ extension LocalModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem if _storage._rangeTest != rhs_storage._rangeTest {return false} if _storage._telemetry != rhs_storage._telemetry {return false} if _storage._cannedMessage != rhs_storage._cannedMessage {return false} + if _storage._audio != rhs_storage._audio {return false} if _storage._version != rhs_storage._version {return false} return true } diff --git a/Meshtastic/Protobufs/mesh.pb.swift b/Meshtastic/Protobufs/mesh.pb.swift index 8735aca7..6d64e08e 100644 --- a/Meshtastic/Protobufs/mesh.pb.swift +++ b/Meshtastic/Protobufs/mesh.pb.swift @@ -90,6 +90,10 @@ enum HardwareModel: SwiftProtobuf.Enum { /// B&Q Consulting Nano Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:nano case nanoG1 // = 14 + /// + /// TODO: REPLACE + case tloraV211P8 // = 15 + /// /// B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station case stationG1 // = 25 @@ -164,6 +168,7 @@ enum HardwareModel: SwiftProtobuf.Enum { case 12: self = .lilygoTbeamS3Core case 13: self = .rak11200 case 14: self = .nanoG1 + case 15: self = .tloraV211P8 case 25: self = .stationG1 case 32: self = .loraRelayV1 case 33: self = .nrf52840Dk @@ -198,6 +203,7 @@ enum HardwareModel: SwiftProtobuf.Enum { case .lilygoTbeamS3Core: return 12 case .rak11200: return 13 case .nanoG1: return 14 + case .tloraV211P8: return 15 case .stationG1: return 25 case .loraRelayV1: return 32 case .nrf52840Dk: return 33 @@ -237,6 +243,7 @@ extension HardwareModel: CaseIterable { .lilygoTbeamS3Core, .rak11200, .nanoG1, + .tloraV211P8, .stationG1, .loraRelayV1, .nrf52840Dk, @@ -1129,7 +1136,7 @@ struct MeshPacket { /// /// The sending node number. /// Note: Our crypto implementation uses this field as well. - /// See [crypto](/docs/developers/firmware/encryption) for details. + /// See [crypto](/docs/overview/encryption) for details. /// FIXME - really should be fixed32 instead, this encoding only hurts the ble link though. var from: UInt32 { get {return _storage._from} @@ -1190,7 +1197,7 @@ struct MeshPacket { /// needs to be unique for a few minutes (long enough to last for the length of /// any ACK or the completion of a mesh broadcast flood). /// Note: Our crypto implementation uses this id as well. - /// See [crypto](/docs/developers/firmware/encryption) for details. + /// See [crypto](/docs/overview/encryption) for details. /// FIXME - really should be fixed32 instead, this encoding only /// hurts the ble link though. var id: UInt32 { @@ -2124,6 +2131,7 @@ extension HardwareModel: SwiftProtobuf._ProtoNameProviding { 12: .same(proto: "LILYGO_TBEAM_S3_CORE"), 13: .same(proto: "RAK11200"), 14: .same(proto: "NANO_G1"), + 15: .same(proto: "TLORA_V2_1_1P8"), 25: .same(proto: "STATION_G1"), 32: .same(proto: "LORA_RELAY_V1"), 33: .same(proto: "NRF52840DK"), diff --git a/Meshtastic/Protobufs/module_config.pb.swift b/Meshtastic/Protobufs/module_config.pb.swift index ca381640..4911431e 100644 --- a/Meshtastic/Protobufs/module_config.pb.swift +++ b/Meshtastic/Protobufs/module_config.pb.swift @@ -101,6 +101,16 @@ struct ModuleConfig { set {payloadVariant = .cannedMessage(newValue)} } + /// + /// TODO: REPLACE + var audio: ModuleConfig.AudioConfig { + get { + if case .audio(let v)? = payloadVariant {return v} + return ModuleConfig.AudioConfig() + } + set {payloadVariant = .audio(newValue)} + } + var unknownFields = SwiftProtobuf.UnknownStorage() /// @@ -127,6 +137,9 @@ struct ModuleConfig { /// /// TODO: REPLACE case cannedMessage(ModuleConfig.CannedMessageConfig) + /// + /// TODO: REPLACE + case audio(ModuleConfig.AudioConfig) #if !swift(>=4.1) static func ==(lhs: ModuleConfig.OneOf_PayloadVariant, rhs: ModuleConfig.OneOf_PayloadVariant) -> Bool { @@ -162,6 +175,10 @@ struct ModuleConfig { guard case .cannedMessage(let l) = lhs, case .cannedMessage(let r) = rhs else { preconditionFailure() } return l == r }() + case (.audio, .audio): return { + guard case .audio(let l) = lhs, case .audio(let r) = rhs else { preconditionFailure() } + return l == r + }() default: return false } } @@ -213,6 +230,89 @@ struct ModuleConfig { init() {} } + /// + /// Audio Config for codec2 voice + struct AudioConfig { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// + /// Whether Audio is enabled + var codec2Enabled: Bool = false + + /// + /// ADC where Microphone is connected + var micChan: UInt32 = 0 + + /// + /// DAC where Speaker is connected + var ampPin: UInt32 = 0 + + /// + /// PTT Pin + var pttPin: UInt32 = 0 + + /// + /// The audio sample rate to use for codec2 + var bitrate: ModuleConfig.AudioConfig.Audio_Baud = .codec2Default + + var unknownFields = SwiftProtobuf.UnknownStorage() + + /// + /// Baudrate for codec2 voice + enum Audio_Baud: SwiftProtobuf.Enum { + typealias RawValue = Int + case codec2Default // = 0 + case codec23200 // = 1 + case codec22400 // = 2 + case codec21600 // = 3 + case codec21400 // = 4 + case codec21300 // = 5 + case codec21200 // = 6 + case codec2700 // = 7 + case codec2700B // = 8 + case UNRECOGNIZED(Int) + + init() { + self = .codec2Default + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .codec2Default + case 1: self = .codec23200 + case 2: self = .codec22400 + case 3: self = .codec21600 + case 4: self = .codec21400 + case 5: self = .codec21300 + case 6: self = .codec21200 + case 7: self = .codec2700 + case 8: self = .codec2700B + default: self = .UNRECOGNIZED(rawValue) + } + } + + var rawValue: Int { + switch self { + case .codec2Default: return 0 + case .codec23200: return 1 + case .codec22400: return 2 + case .codec21600: return 3 + case .codec21400: return 4 + case .codec21300: return 5 + case .codec21200: return 6 + case .codec2700: return 7 + case .codec2700B: return 8 + case .UNRECOGNIZED(let i): return i + } + } + + } + + init() {} + } + /// /// Serial Config struct SerialConfig { @@ -627,6 +727,21 @@ struct ModuleConfig { #if swift(>=4.2) +extension ModuleConfig.AudioConfig.Audio_Baud: CaseIterable { + // The compiler won't synthesize support with the UNRECOGNIZED case. + static var allCases: [ModuleConfig.AudioConfig.Audio_Baud] = [ + .codec2Default, + .codec23200, + .codec22400, + .codec21600, + .codec21400, + .codec21300, + .codec21200, + .codec2700, + .codec2700B, + ] +} + extension ModuleConfig.SerialConfig.Serial_Baud: CaseIterable { // The compiler won't synthesize support with the UNRECOGNIZED case. static var allCases: [ModuleConfig.SerialConfig.Serial_Baud] = [ @@ -680,6 +795,8 @@ extension ModuleConfig.CannedMessageConfig.InputEventChar: CaseIterable { extension ModuleConfig: @unchecked Sendable {} extension ModuleConfig.OneOf_PayloadVariant: @unchecked Sendable {} extension ModuleConfig.MQTTConfig: @unchecked Sendable {} +extension ModuleConfig.AudioConfig: @unchecked Sendable {} +extension ModuleConfig.AudioConfig.Audio_Baud: @unchecked Sendable {} extension ModuleConfig.SerialConfig: @unchecked Sendable {} extension ModuleConfig.SerialConfig.Serial_Baud: @unchecked Sendable {} extension ModuleConfig.SerialConfig.Serial_Mode: @unchecked Sendable {} @@ -703,6 +820,7 @@ extension ModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementat 5: .standard(proto: "range_test"), 6: .same(proto: "telemetry"), 7: .standard(proto: "canned_message"), + 8: .same(proto: "audio"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -802,6 +920,19 @@ extension ModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementat self.payloadVariant = .cannedMessage(v) } }() + case 8: try { + var v: ModuleConfig.AudioConfig? + var hadOneofValue = false + if let current = self.payloadVariant { + hadOneofValue = true + if case .audio(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v { + if hadOneofValue {try decoder.handleConflictingOneOf()} + self.payloadVariant = .audio(v) + } + }() default: break } } @@ -841,6 +972,10 @@ extension ModuleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementat guard case .cannedMessage(let v)? = self.payloadVariant else { preconditionFailure() } try visitor.visitSingularMessageField(value: v, fieldNumber: 7) }() + case .audio?: try { + guard case .audio(let v)? = self.payloadVariant else { preconditionFailure() } + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + }() case nil: break } try unknownFields.traverse(visitor: &visitor) @@ -915,6 +1050,76 @@ extension ModuleConfig.MQTTConfig: SwiftProtobuf.Message, SwiftProtobuf._Message } } +extension ModuleConfig.AudioConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = ModuleConfig.protoMessageName + ".AudioConfig" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "codec2_enabled"), + 2: .standard(proto: "mic_chan"), + 3: .standard(proto: "amp_pin"), + 4: .standard(proto: "ptt_pin"), + 5: .same(proto: "bitrate"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBoolField(value: &self.codec2Enabled) }() + case 2: try { try decoder.decodeSingularUInt32Field(value: &self.micChan) }() + case 3: try { try decoder.decodeSingularUInt32Field(value: &self.ampPin) }() + case 4: try { try decoder.decodeSingularUInt32Field(value: &self.pttPin) }() + case 5: try { try decoder.decodeSingularEnumField(value: &self.bitrate) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if self.codec2Enabled != false { + try visitor.visitSingularBoolField(value: self.codec2Enabled, fieldNumber: 1) + } + if self.micChan != 0 { + try visitor.visitSingularUInt32Field(value: self.micChan, fieldNumber: 2) + } + if self.ampPin != 0 { + try visitor.visitSingularUInt32Field(value: self.ampPin, fieldNumber: 3) + } + if self.pttPin != 0 { + try visitor.visitSingularUInt32Field(value: self.pttPin, fieldNumber: 4) + } + if self.bitrate != .codec2Default { + try visitor.visitSingularEnumField(value: self.bitrate, fieldNumber: 5) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: ModuleConfig.AudioConfig, rhs: ModuleConfig.AudioConfig) -> Bool { + if lhs.codec2Enabled != rhs.codec2Enabled {return false} + if lhs.micChan != rhs.micChan {return false} + if lhs.ampPin != rhs.ampPin {return false} + if lhs.pttPin != rhs.pttPin {return false} + if lhs.bitrate != rhs.bitrate {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension ModuleConfig.AudioConfig.Audio_Baud: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "CODEC2_DEFAULT"), + 1: .same(proto: "CODEC2_3200"), + 2: .same(proto: "CODEC2_2400"), + 3: .same(proto: "CODEC2_1600"), + 4: .same(proto: "CODEC2_1400"), + 5: .same(proto: "CODEC2_1300"), + 6: .same(proto: "CODEC2_1200"), + 7: .same(proto: "CODEC2_700"), + 8: .same(proto: "CODEC2_700B"), + ] +} + extension ModuleConfig.SerialConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = ModuleConfig.protoMessageName + ".SerialConfig" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ diff --git a/Meshtastic/Protobufs/portnums.pb.swift b/Meshtastic/Protobufs/portnums.pb.swift index efeea5d4..7f58fd3e 100644 --- a/Meshtastic/Protobufs/portnums.pb.swift +++ b/Meshtastic/Protobufs/portnums.pb.swift @@ -82,6 +82,10 @@ enum PortNum: SwiftProtobuf.Enum { /// Payload is a [Waypoint](/docs/developers/protobufs/api#waypoint) message case waypointApp // = 8 + /// Audio Payloads. + /// Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now + case audioApp // = 9 + /// /// Provides a 'ping' service that replies to any packet it receives. /// Also serves as a small example module. @@ -129,7 +133,7 @@ enum PortNum: SwiftProtobuf.Enum { /// /// Private applications should use portnums >= 256. /// To simplify initial development and testing you can use "PRIVATE_APP" - /// in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/Meshtastic-device/blob/master/bin/regen-protos.sh)) + /// in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) case privateApp // = 256 /// @@ -156,6 +160,7 @@ enum PortNum: SwiftProtobuf.Enum { case 6: self = .adminApp case 7: self = .textMessageCompressedApp case 8: self = .waypointApp + case 9: self = .audioApp case 32: self = .replyApp case 33: self = .ipTunnelApp case 64: self = .serialApp @@ -182,6 +187,7 @@ enum PortNum: SwiftProtobuf.Enum { case .adminApp: return 6 case .textMessageCompressedApp: return 7 case .waypointApp: return 8 + case .audioApp: return 9 case .replyApp: return 32 case .ipTunnelApp: return 33 case .serialApp: return 64 @@ -213,6 +219,7 @@ extension PortNum: CaseIterable { .adminApp, .textMessageCompressedApp, .waypointApp, + .audioApp, .replyApp, .ipTunnelApp, .serialApp, @@ -246,6 +253,7 @@ extension PortNum: SwiftProtobuf._ProtoNameProviding { 6: .same(proto: "ADMIN_APP"), 7: .same(proto: "TEXT_MESSAGE_COMPRESSED_APP"), 8: .same(proto: "WAYPOINT_APP"), + 9: .same(proto: "AUDIO_APP"), 32: .same(proto: "REPLY_APP"), 33: .same(proto: "IP_TUNNEL_APP"), 64: .same(proto: "SERIAL_APP"), diff --git a/Meshtastic/Views/Nodes/NodeDetail.swift b/Meshtastic/Views/Nodes/NodeDetail.swift index 6d052431..2940cbda 100644 --- a/Meshtastic/Views/Nodes/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/NodeDetail.swift @@ -26,17 +26,11 @@ struct NodeDetail: View { let hwModelString = node.user?.hwModel ?? "UNSET" NavigationStack { - GeometryReader { bounds in - VStack { - if node.positions?.count ?? 0 > 0 { - let mostRecent = node.positions?.lastObject as! PositionEntity - if mostRecent.coordinate != nil { - let nodeCoordinatePosition = CLLocationCoordinate2D(latitude: mostRecent.latitude!, longitude: mostRecent.longitude!) let regionBinding = Binding( @@ -45,9 +39,7 @@ struct NodeDetail: View { }, set: { _ in } ) - ZStack { - let annotations = node.positions?.array as! [PositionEntity] Map(coordinateRegion: regionBinding, @@ -73,7 +65,6 @@ struct NodeDetail: View { } } else { - HStack { } @@ -81,25 +72,16 @@ struct NodeDetail: View { } ScrollView { - Divider() - if UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac { - - HStack { - VStack(alignment: .center) { - CircleText(text: node.user?.shortName ?? "???", color: .accentColor, circleSize: 75, fontSize: 26) } - Divider() - VStack { - if node.user != nil { - + Image(hwModelString) .resizable() .aspectRatio(contentMode: .fill) @@ -112,7 +94,6 @@ struct NodeDetail: View { } } - if node.snr > 0 { Divider() VStack(alignment: .center) { @@ -127,23 +108,15 @@ struct NodeDetail: View { .font(.largeTitle) .foregroundColor(.gray) .fixedSize() - - } - - } if node.telemetries?.count ?? 0 >= 1 { let mostRecent = node.telemetries?.lastObject as! TelemetryEntity - Divider() - VStack(alignment: .center) { - BatteryGauge(batteryLevel: Double(mostRecent.batteryLevel)) - if mostRecent.voltage > 0 { Text(String(format: "%.2f", mostRecent.voltage) + " V") @@ -154,7 +127,6 @@ struct NodeDetail: View { } .padding() } - } .padding() diff --git a/Meshtastic/Views/Nodes/NodeList.swift b/Meshtastic/Views/Nodes/NodeList.swift index 1c1758dc..6e6654e8 100644 --- a/Meshtastic/Views/Nodes/NodeList.swift +++ b/Meshtastic/Views/Nodes/NodeList.swift @@ -1,8 +1,8 @@ // // NodeList.swift -// MeshtasticApple +// Meshtastic // -// Created by Garth Vander Houwen on 8/7/21. +// Copyright(c) Garth Vander Houwen 8/7/21. // // Abstract: @@ -42,24 +42,17 @@ struct NodeList: View { let connected: Bool = (bleManager.connectedPeripheral != nil && bleManager.connectedPeripheral.num == node.num) VStack(alignment: .leading) { HStack { - CircleText(text: node.user?.shortName ?? "???", color: .blue).offset(y: 1).padding(.trailing, 5) + CircleText(text: node.user?.shortName ?? "???", color: .blue, circleSize: 52, fontSize: 16).offset(y: 1).padding(.trailing, 5) .offset(x: -15) - if UIDevice.current.userInterfaceIdiom == .pad { Text(node.user?.longName ?? "Unknown").font(.headline) - .offset(x: -15) - } else { - Text(node.user?.longName ?? "Unknown").font(.title2).offset(x: -15) - } + + Text(node.user?.longName ?? "Unknown").font(.headline).offset(x: -15) } .padding(.bottom, 5) if connected { HStack(alignment: .bottom) { Image(systemName: "repeat.circle.fill").font(.title2) .foregroundColor(.accentColor).symbolRenderingMode(.hierarchical) - if UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac { - Text("Currently Connected").font(.callout).foregroundColor(Color.accentColor) - } else { - Text("Currently Connected").font(.title3).foregroundColor(Color.accentColor) - } + Text("Currently Connected").font(.callout).foregroundColor(Color.accentColor) } .padding(.bottom, 2) } @@ -72,11 +65,8 @@ struct NodeList: View { let metersAway = nodeCoord.distance(from: myCoord) Image(systemName: "lines.measurement.horizontal").font(.title3) .foregroundColor(.accentColor).symbolRenderingMode(.hierarchical) - if UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac { - DistanceText(meters: metersAway).font(.subheadline).foregroundColor(.gray) - } else { - DistanceText(meters: metersAway).font(.title3).foregroundColor(.gray) - } + + DistanceText(meters: metersAway).font(.subheadline).foregroundColor(.gray) } } .padding(.bottom, 2) diff --git a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift index 1ccecd4b..4567bcd5 100644 --- a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift @@ -112,7 +112,7 @@ struct TelemetryConfig: View { Section(header: Text("Sensor Options")) { - Text("Supported I2C Connected sensors will be detected automatically, sensors are BMP280, BME280, BME680, MCP9808, INA219 and INA260.") + Text("Supported I2C Connected sensors will be detected automatically, sensors are BMP280, BME280, BME680, MCP9808, INA219, INA260, LPS22 and SHTC3.") .font(.caption) Toggle(isOn: $environmentMeasurementEnabled) {