Ver Fonte

Added numbering of new sensors. The name of the Dallas sensors has been changed. Fixed application crash when removing a sensor

Victor há 3 anos atrás
pai
commit
517d5361a9
4 ficheiros alterados com 14 adições e 7 exclusões
  1. 1 1
      interfaces/OneWireSensor.c
  2. 2 4
      unitemp.c
  3. 1 0
      views/General_view.c
  4. 10 2
      views/SensorsList_view.c

+ 1 - 1
interfaces/OneWireSensor.c

@@ -6,7 +6,7 @@
 #include <one_wire/one_wire_host.h>
 
 const SensorType DS18x2x = {
-    .typename = "DS18x2x",
+    .typename = "Dallas",
     .interface = &ONE_WIRE,
     .datatype = UT_DATA_TYPE_TEMP,
     .pollingInterval = 250,

+ 2 - 4
unitemp.c

@@ -7,10 +7,10 @@
 #include <m-string.h>
 
 /* ****************************** Интерфейс ****************************** */
-//TODO: Прибавлять цифру к стартовому имени датчка при наличии подобного
 //TODO: Вынести информирующих дельфинов в отдельную функцию
-//TODO: Ограничение на добавление датчика I2C с адресом уже имеющегося датчика
 //TODO: Реализовать ограничение на добавление датчиков если интерфейс недоступен
+//TODO: Ограничение на добавление датчика I2C с адресом уже имеющегося датчика
+
 //TODO: В меню выбора нового датчика добавить помогалку выбора датчика
 //TODO: Добавить настройку единицы измерения давления
 //TODO: Обновлять данные только с тех датчиков, которые присутствуют на экране
@@ -22,8 +22,6 @@
 //TODO: Исправить зависание BMP280
 //TODO: BMP280 SPI
 //TODO: Исправить сканирование one wire существующего датчика
-//TODO: Отловить и исправить BusFault при добавлении I2C датчика
-//TODO: Отловить и исправить HardFault при удалении I2C датчика
 
 /* Переменные */
 //Данные приложения

+ 1 - 0
views/General_view.c

@@ -389,6 +389,7 @@ static bool _input_callback(InputEvent* event, void* context) {
                 unitemp_MainMenu_switch();
             }
         } else if(current_view == G_CAROUSEL_VIEW) {
+            app->sensors_ready = false;
             unitemp_SensorActions_switch(unitemp_sensor_getActive(sensor_index));
         }
     }

+ 10 - 2
views/SensorsList_view.c

@@ -30,10 +30,18 @@ static uint32_t _exit_callback(void* context) {
 static void _enter_callback(void* context, uint32_t index) {
     UNUSED(context);
     const SensorType* type = unitemp_sensors_getTypes()[index];
+    uint8_t sensor_type_count = 0;
+    for(uint8_t i = 0; i < unitemp_sensors_getActiveCount(); i++) {
+        if(unitemp_sensor_getActive(i)->type == type) {
+            sensor_type_count++;
+        }
+    }
     //Имя датчка
     char sensor_name[11];
-    snprintf(sensor_name, 11, "%s", type->typename);
-
+    if(sensor_type_count == 0)
+        snprintf(sensor_name, 11, "%s", type->typename);
+    else
+        snprintf(sensor_name, 11, "%s_%d", type->typename, sensor_type_count);
     char args[22] = {0};
     //Выбор первого доступного порта для датчика single wire
     if(type->interface == &SINGLE_WIRE) {