Просмотр исходного кода

Added separating active/inactive sensors

Victor 3 лет назад
Родитель
Сommit
3db6768c68
6 измененных файлов с 114 добавлено и 63 удалено
  1. 45 22
      Sensors.c
  2. 17 0
      Sensors.h
  3. 4 4
      interfaces/OneWireSensor.c
  4. 2 0
      unitemp.c
  5. 43 34
      views/General_view.c
  6. 3 3
      views/SensorEdit_view.c

+ 45 - 22
Sensors.c

@@ -191,11 +191,34 @@ const GPIO*
     return NULL;
     return NULL;
 }
 }
 
 
+Sensor* unitemp_sensor_getActive(uint8_t index) {
+    uint8_t aviable_index = 0;
+    for(uint8_t i = 0; i < app->sensors_count; i++) {
+        if(app->sensors[i]->status != UT_INACTIVE) {
+            if(aviable_index == index) {
+                return app->sensors[i];
+            } else {
+                aviable_index++;
+            }
+        }
+    }
+    return NULL;
+}
+
 uint8_t unitemp_sensors_getCount(void) {
 uint8_t unitemp_sensors_getCount(void) {
     if(app->sensors == NULL) return 0;
     if(app->sensors == NULL) return 0;
     return app->sensors_count;
     return app->sensors_count;
 }
 }
 
 
+uint8_t unitemp_sensors_getActiveCount(void) {
+    if(app->sensors == NULL) return 0;
+    uint8_t counter = 0;
+    for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
+        if(app->sensors[i]->status != UT_INACTIVE) counter++;
+    }
+    return counter;
+}
+
 void unitemp_sensors_add(Sensor* sensor) {
 void unitemp_sensors_add(Sensor* sensor) {
     app->sensors =
     app->sensors =
         (Sensor**)realloc(app->sensors, (unitemp_sensors_getCount() + 1) * sizeof(Sensor*));
         (Sensor**)realloc(app->sensors, (unitemp_sensors_getCount() + 1) * sizeof(Sensor*));
@@ -331,37 +354,37 @@ bool unitemp_sensors_save(void) {
 
 
     //Сохранение датчиков
     //Сохранение датчиков
     for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
     for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
-        if(app->sensors[i]->type->interface == &SINGLE_WIRE) {
+        if(unitemp_sensor_getActive(i)->type->interface == &SINGLE_WIRE) {
             stream_write_format(
             stream_write_format(
                 app->file_stream,
                 app->file_stream,
                 "%s %s %d\n",
                 "%s %s %d\n",
-                app->sensors[i]->name,
-                app->sensors[i]->type->typename,
-                unitemp_singlewire_sensorGetGPIO(app->sensors[i])->num);
+                unitemp_sensor_getActive(i)->name,
+                unitemp_sensor_getActive(i)->type->typename,
+                unitemp_singlewire_sensorGetGPIO(unitemp_sensor_getActive(i))->num);
         }
         }
-        if(app->sensors[i]->type->interface == &I2C) {
+        if(unitemp_sensor_getActive(i)->type->interface == &I2C) {
             stream_write_format(
             stream_write_format(
                 app->file_stream,
                 app->file_stream,
                 "%s %s %X\n",
                 "%s %s %X\n",
-                app->sensors[i]->name,
-                app->sensors[i]->type->typename,
-                ((I2CSensor*)app->sensors[i]->instance)->currentI2CAdr);
+                unitemp_sensor_getActive(i)->name,
+                unitemp_sensor_getActive(i)->type->typename,
+                ((I2CSensor*)unitemp_sensor_getActive(i)->instance)->currentI2CAdr);
         }
         }
-        if(app->sensors[i]->type->interface == &ONE_WIRE) {
+        if(unitemp_sensor_getActive(i)->type->interface == &ONE_WIRE) {
             stream_write_format(
             stream_write_format(
                 app->file_stream,
                 app->file_stream,
                 "%s %s %d %02X%02X%02X%02X%02X%02X%02X%02X\n",
                 "%s %s %d %02X%02X%02X%02X%02X%02X%02X%02X\n",
-                app->sensors[i]->name,
-                app->sensors[i]->type->typename,
-                ((OneWireSensor*)app->sensors[i]->instance)->bus->gpio->num,
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[0],
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[1],
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[2],
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[3],
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[4],
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[5],
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[6],
-                ((OneWireSensor*)app->sensors[i]->instance)->deviceID[7]);
+                unitemp_sensor_getActive(i)->name,
+                unitemp_sensor_getActive(i)->type->typename,
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->bus->gpio->num,
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[0],
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[1],
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[2],
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[3],
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[4],
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[5],
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[6],
+                ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->deviceID[7]);
         }
         }
     }
     }
 
 
@@ -382,7 +405,7 @@ void unitemp_sensors_reload(void) {
 
 
 bool unitemp_sensor_isContains(Sensor* sensor) {
 bool unitemp_sensor_isContains(Sensor* sensor) {
     for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
     for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
-        if(app->sensors[i] == sensor) return true;
+        if(unitemp_sensor_getActive(i) == sensor) return true;
     }
     }
     return false;
     return false;
 }
 }
@@ -540,6 +563,6 @@ UnitempStatus unitemp_sensor_updateData(Sensor* sensor) {
 
 
 void unitemp_sensors_updateValues(void) {
 void unitemp_sensors_updateValues(void) {
     for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
     for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
-        unitemp_sensor_updateData(app->sensors[i]);
+        unitemp_sensor_updateData(unitemp_sensor_getActive(i));
     }
     }
 }
 }

+ 17 - 0
Sensors.h

@@ -24,6 +24,8 @@ typedef enum {
     UT_BADCRC, //Неверная контрольная сумма
     UT_BADCRC, //Неверная контрольная сумма
     UT_ERROR, //Прочие ошибки
     UT_ERROR, //Прочие ошибки
     UT_POLLING, //В датчике происходит преобразование
     UT_POLLING, //В датчике происходит преобразование
+    UT_INACTIVE, //Датчик на редактировании или удалён
+
 } UnitempStatus;
 } UnitempStatus;
 
 
 //Порт ввода/вывода Flipper Zero
 //Порт ввода/вывода Flipper Zero
@@ -147,6 +149,14 @@ UnitempStatus unitemp_sensor_updateData(Sensor* sensor);
  */
  */
 bool unitemp_sensor_isContains(Sensor* sensor);
 bool unitemp_sensor_isContains(Sensor* sensor);
 
 
+/**
+ * @brief Получить датчик из списка по индексу
+ * 
+ * @param index Индекс датчика (0 - unitemp_sensors_getCount())
+ * @return Указатель на датчик при успехе, NULL при неудаче
+ */
+Sensor* unitemp_sensor_getActive(uint8_t index);
+
 /**
 /**
  * @brief Загрузка датчиков с SD-карты
  * @brief Загрузка датчиков с SD-карты
  * @return Истина если загрузка прошла успешно
  * @return Истина если загрузка прошла успешно
@@ -225,6 +235,13 @@ const SensorType* unitemp_sensors_getTypeFromInt(uint8_t index);
  */
  */
 const SensorType* unitemp_sensors_getTypeFromStr(char* str);
 const SensorType* unitemp_sensors_getTypeFromStr(char* str);
 
 
+/**
+ * @brief Получить количество активных датчиков
+ * 
+ * @return Количество активных датчиков
+ */
+uint8_t unitemp_sensors_getActiveCount(void);
+
 /* ============================= GPIO ============================= */
 /* ============================= GPIO ============================= */
 /**
 /**
  * @brief Конвертация номера порта на корпусе FZ в GPIO 
  * @brief Конвертация номера порта на корпусе FZ в GPIO 

+ 4 - 4
interfaces/OneWireSensor.c

@@ -28,11 +28,11 @@ OneWireBus* uintemp_onewire_bus_alloc(const GPIO* gpio) {
     }
     }
 
 
     //Проверка на наличие шины на этом порте
     //Проверка на наличие шины на этом порте
-    for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
-        if(app->sensors[i]->type->interface == &ONE_WIRE &&
-           ((OneWireSensor*)app->sensors[i]->instance)->bus->gpio->num == gpio->num) {
+    for(uint8_t i = 0; i < unitemp_sensors_getActiveCount(); i++) {
+        if(unitemp_sensor_getActive(i)->type->interface == &ONE_WIRE &&
+           ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->bus->gpio->num == gpio->num) {
             //Если шина на этом порту уже есть, то возврат указателя на шину
             //Если шина на этом порту уже есть, то возврат указателя на шину
-            return ((OneWireSensor*)app->sensors[i]->instance)->bus;
+            return ((OneWireSensor*)unitemp_sensor_getActive(i)->instance)->bus;
         }
         }
     }
     }
 
 

+ 2 - 0
unitemp.c

@@ -270,6 +270,8 @@ int32_t unitemp_app() {
 
 
     unitemp_General_switch();
     unitemp_General_switch();
 
 
+    app->sensors[0]->status = UT_INACTIVE;
+
     while(app->processing) {
     while(app->processing) {
         if(app->sensors_ready) unitemp_sensors_updateValues();
         if(app->sensors_ready) unitemp_sensors_updateValues();
         furi_delay_ms(100);
         furi_delay_ms(100);

+ 43 - 34
views/General_view.c

@@ -164,14 +164,15 @@ static void _draw_view_sensorsList(Canvas* canvas) {
     uint8_t page = sensor_index / 4;
     uint8_t page = sensor_index / 4;
     //Количество датчиков, которые будут отображаться на странице
     //Количество датчиков, которые будут отображаться на странице
     uint8_t page_sensors_count;
     uint8_t page_sensors_count;
-    if((app->sensors_count - page * 4) / 4) {
+    if((unitemp_sensors_getActiveCount() - page * 4) / 4) {
         page_sensors_count = 4;
         page_sensors_count = 4;
     } else {
     } else {
-        page_sensors_count = (app->sensors_count - page * 4) % 4;
+        page_sensors_count = (unitemp_sensors_getActiveCount() - page * 4) % 4;
     }
     }
 
 
     //Количество страниц
     //Количество страниц
-    uint8_t pages = app->sensors_count / 4 + (app->sensors_count % 4 ? 1 : 0);
+    uint8_t pages =
+        unitemp_sensors_getActiveCount() / 4 + (unitemp_sensors_getActiveCount() % 4 ? 1 : 0);
 
 
     //Стрелка вверх
     //Стрелка вверх
     if(page > 0) {
     if(page > 0) {
@@ -200,14 +201,14 @@ static void _draw_view_sensorsList(Canvas* canvas) {
     for(uint8_t i = 0; i < page_sensors_count; i++) {
     for(uint8_t i = 0; i < page_sensors_count; i++) {
         _draw_singleSensor(
         _draw_singleSensor(
             canvas,
             canvas,
-            app->sensors[page * 4 + i],
+            unitemp_sensor_getActive(page * 4 + i),
             value_positions[page_sensors_count - 1][i],
             value_positions[page_sensors_count - 1][i],
             ((i == sensor_index % 4) && selector ? ColorBlack : ColorWhite));
             ((i == sensor_index % 4) && selector ? ColorBlack : ColorWhite));
     }
     }
 }
 }
 
 
 static void _draw_carousel_values(Canvas* canvas) {
 static void _draw_carousel_values(Canvas* canvas) {
-    if(app->sensors[sensor_index]->status == UT_TIMEOUT) {
+    if(unitemp_sensor_getActive(sensor_index)->status == UT_TIMEOUT) {
         const Icon* frames[] = {&I_happy_2_78x46, &I_happy_78x46, &I_sad_78x46};
         const Icon* frames[] = {&I_happy_2_78x46, &I_happy_78x46, &I_sad_78x46};
         canvas_draw_icon(canvas, 24, 15, frames[furi_get_tick() % 2250 / 750]);
         canvas_draw_icon(canvas, 24, 15, frames[furi_get_tick() % 2250 / 750]);
         return;
         return;
@@ -216,11 +217,11 @@ static void _draw_carousel_values(Canvas* canvas) {
     static const uint8_t temp_positions[3][2] = {{37, 23}, {37, 16}, {9, 16}};
     static const uint8_t temp_positions[3][2] = {{37, 23}, {37, 16}, {9, 16}};
     static const uint8_t hum_positions[2][2] = {{37, 38}, {65, 16}};
     static const uint8_t hum_positions[2][2] = {{37, 38}, {65, 16}};
     //Селектор значений для отображения
     //Селектор значений для отображения
-    switch(app->sensors[sensor_index]->type->datatype) {
+    switch(unitemp_sensor_getActive(sensor_index)->type->datatype) {
     case UT_DATA_TYPE_TEMP:
     case UT_DATA_TYPE_TEMP:
         _draw_temperature(
         _draw_temperature(
             canvas,
             canvas,
-            app->sensors[sensor_index],
+            unitemp_sensor_getActive(sensor_index),
             temp_positions[0][0],
             temp_positions[0][0],
             temp_positions[0][1],
             temp_positions[0][1],
             ColorWhite);
             ColorWhite);
@@ -228,30 +229,30 @@ static void _draw_carousel_values(Canvas* canvas) {
     case UT_DATA_TYPE_TEMP_HUM:
     case UT_DATA_TYPE_TEMP_HUM:
         _draw_temperature(
         _draw_temperature(
             canvas,
             canvas,
-            app->sensors[sensor_index],
+            unitemp_sensor_getActive(sensor_index),
             temp_positions[1][0],
             temp_positions[1][0],
             temp_positions[1][1],
             temp_positions[1][1],
             ColorWhite);
             ColorWhite);
-        _draw_humidity(canvas, app->sensors[sensor_index], hum_positions[0]);
+        _draw_humidity(canvas, unitemp_sensor_getActive(sensor_index), hum_positions[0]);
         break;
         break;
     case UT_DATA_TYPE_TEMP_PRESS:
     case UT_DATA_TYPE_TEMP_PRESS:
         _draw_temperature(
         _draw_temperature(
             canvas,
             canvas,
-            app->sensors[sensor_index],
+            unitemp_sensor_getActive(sensor_index),
             temp_positions[1][0],
             temp_positions[1][0],
             temp_positions[1][1],
             temp_positions[1][1],
             ColorWhite);
             ColorWhite);
-        _draw_pressure(canvas, app->sensors[sensor_index]);
+        _draw_pressure(canvas, unitemp_sensor_getActive(sensor_index));
         break;
         break;
     case UT_DATA_TYPE_TEMP_HUM_PRESS:
     case UT_DATA_TYPE_TEMP_HUM_PRESS:
         _draw_temperature(
         _draw_temperature(
             canvas,
             canvas,
-            app->sensors[sensor_index],
+            unitemp_sensor_getActive(sensor_index),
             temp_positions[2][0],
             temp_positions[2][0],
             temp_positions[2][1],
             temp_positions[2][1],
             ColorWhite);
             ColorWhite);
-        _draw_humidity(canvas, app->sensors[sensor_index], hum_positions[1]);
-        _draw_pressure(canvas, app->sensors[sensor_index]);
+        _draw_humidity(canvas, unitemp_sensor_getActive(sensor_index), hum_positions[1]);
+        _draw_pressure(canvas, unitemp_sensor_getActive(sensor_index));
         break;
         break;
     }
     }
 }
 }
@@ -259,15 +260,18 @@ static void _draw_carousel_info(Canvas* canvas) {
     canvas_set_font(canvas, FontPrimary);
     canvas_set_font(canvas, FontPrimary);
     canvas_draw_str(canvas, 10, 23, "Type:");
     canvas_draw_str(canvas, 10, 23, "Type:");
 
 
-    if(app->sensors[sensor_index]->type->interface == &ONE_WIRE) {
-        OneWireSensor* s = app->sensors[sensor_index]->instance;
+    if(unitemp_sensor_getActive(sensor_index)->type->interface == &ONE_WIRE) {
+        OneWireSensor* s = unitemp_sensor_getActive(sensor_index)->instance;
         canvas_set_font(canvas, FontPrimary);
         canvas_set_font(canvas, FontPrimary);
         canvas_draw_str(canvas, 10, 35, "GPIO:");
         canvas_draw_str(canvas, 10, 35, "GPIO:");
         canvas_draw_str(canvas, 10, 47, "ID:");
         canvas_draw_str(canvas, 10, 47, "ID:");
 
 
         canvas_set_font(canvas, FontSecondary);
         canvas_set_font(canvas, FontSecondary);
         canvas_draw_str(
         canvas_draw_str(
-            canvas, 41, 23, unitemp_onewire_sensor_getModel(app->sensors[sensor_index]));
+            canvas,
+            41,
+            23,
+            unitemp_onewire_sensor_getModel(unitemp_sensor_getActive(sensor_index)));
         canvas_draw_str(canvas, 41, 35, s->bus->gpio->name);
         canvas_draw_str(canvas, 41, 35, s->bus->gpio->name);
         snprintf(
         snprintf(
             buff,
             buff,
@@ -284,27 +288,30 @@ static void _draw_carousel_info(Canvas* canvas) {
         canvas_draw_str(canvas, 24, 47, buff);
         canvas_draw_str(canvas, 24, 47, buff);
     }
     }
 
 
-    if(app->sensors[sensor_index]->type->interface == &SINGLE_WIRE) {
+    if(unitemp_sensor_getActive(sensor_index)->type->interface == &SINGLE_WIRE) {
         canvas_set_font(canvas, FontPrimary);
         canvas_set_font(canvas, FontPrimary);
         canvas_draw_str(canvas, 10, 35, "GPIO:");
         canvas_draw_str(canvas, 10, 35, "GPIO:");
 
 
         canvas_set_font(canvas, FontSecondary);
         canvas_set_font(canvas, FontSecondary);
-        canvas_draw_str(canvas, 41, 23, app->sensors[sensor_index]->type->typename);
+        canvas_draw_str(canvas, 41, 23, unitemp_sensor_getActive(sensor_index)->type->typename);
         canvas_draw_str(
         canvas_draw_str(
-            canvas, 41, 35, ((SingleWireSensor*)app->sensors[sensor_index]->instance)->gpio->name);
+            canvas,
+            41,
+            35,
+            ((SingleWireSensor*)unitemp_sensor_getActive(sensor_index)->instance)->gpio->name);
     }
     }
 
 
-    if(app->sensors[sensor_index]->type->interface == &I2C) {
+    if(unitemp_sensor_getActive(sensor_index)->type->interface == &I2C) {
         canvas_set_font(canvas, FontPrimary);
         canvas_set_font(canvas, FontPrimary);
         canvas_draw_str(canvas, 10, 35, "I2C addr:");
         canvas_draw_str(canvas, 10, 35, "I2C addr:");
 
 
         canvas_set_font(canvas, FontSecondary);
         canvas_set_font(canvas, FontSecondary);
-        canvas_draw_str(canvas, 41, 23, app->sensors[sensor_index]->type->typename);
+        canvas_draw_str(canvas, 41, 23, unitemp_sensor_getActive(sensor_index)->type->typename);
         snprintf(
         snprintf(
             buff,
             buff,
             BUFF_SIZE,
             BUFF_SIZE,
             "0x%02X",
             "0x%02X",
-            ((I2CSensor*)app->sensors[sensor_index]->instance)->currentI2CAdr);
+            ((I2CSensor*)unitemp_sensor_getActive(sensor_index)->instance)->currentI2CAdr);
         canvas_draw_str(canvas, 57, 35, buff);
         canvas_draw_str(canvas, 57, 35, buff);
     }
     }
 }
 }
@@ -316,13 +323,15 @@ static void _draw_view_sensorsCarousel(Canvas* canvas) {
     //Печать имени
     //Печать имени
     canvas_set_font(canvas, FontPrimary);
     canvas_set_font(canvas, FontPrimary);
     canvas_draw_str_aligned(
     canvas_draw_str_aligned(
-        canvas, 64, 7, AlignCenter, AlignCenter, app->sensors[sensor_index]->name);
+        canvas, 64, 7, AlignCenter, AlignCenter, unitemp_sensor_getActive(sensor_index)->name);
     //Подчёркивание
     //Подчёркивание
-    uint8_t line_len = canvas_string_width(canvas, app->sensors[sensor_index]->name) + 2;
+    uint8_t line_len =
+        canvas_string_width(canvas, unitemp_sensor_getActive(sensor_index)->name) + 2;
     canvas_draw_line(canvas, 64 - line_len / 2, 12, 64 + line_len / 2, 12);
     canvas_draw_line(canvas, 64 - line_len / 2, 12, 64 + line_len / 2, 12);
 
 
     //Стрелка вправо
     //Стрелка вправо
-    if(unitemp_sensors_getTypesCount() > 0 && sensor_index < unitemp_sensors_getCount() - 1) {
+    if(unitemp_sensors_getTypesCount() > 0 &&
+       sensor_index < unitemp_sensors_getActiveCount() - 1) {
         canvas_draw_icon(canvas, 120, 28, &I_arrow_right_5x9);
         canvas_draw_icon(canvas, 120, 28, &I_arrow_right_5x9);
     }
     }
     //Стрелка влево
     //Стрелка влево
@@ -345,7 +354,7 @@ static void _draw_callback(Canvas* canvas, void* _model) {
 
 
     app->sensors_ready = true;
     app->sensors_ready = true;
 
 
-    uint8_t sensors_count = unitemp_sensors_getCount();
+    uint8_t sensors_count = unitemp_sensors_getActiveCount();
 
 
     if(sensors_count == 0) {
     if(sensors_count == 0) {
         current_view = G_NO_SENSORS_VIEW;
         current_view = G_NO_SENSORS_VIEW;
@@ -377,7 +386,7 @@ static bool _input_callback(InputEvent* event, void* context) {
                 unitemp_MainMenu_switch();
                 unitemp_MainMenu_switch();
             }
             }
         } else if(current_view == G_CAROUSEL_VIEW) {
         } else if(current_view == G_CAROUSEL_VIEW) {
-            unitemp_SensorActions_switch(app->sensors[sensor_index]);
+            unitemp_SensorActions_switch(unitemp_sensor_getActive(sensor_index));
         }
         }
     }
     }
 
 
@@ -387,7 +396,7 @@ static bool _input_callback(InputEvent* event, void* context) {
         if(current_view == G_LIST_VIEW) {
         if(current_view == G_LIST_VIEW) {
             lastSelectTime = furi_get_tick();
             lastSelectTime = furi_get_tick();
             if(selector) sensor_index++;
             if(selector) sensor_index++;
-            if(sensor_index >= unitemp_sensors_getCount()) sensor_index = 0;
+            if(sensor_index >= unitemp_sensors_getActiveCount()) sensor_index = 0;
         }
         }
         if(current_view == G_CAROUSEL_VIEW) {
         if(current_view == G_CAROUSEL_VIEW) {
             carousel_info_selector = !carousel_info_selector;
             carousel_info_selector = !carousel_info_selector;
@@ -399,8 +408,8 @@ static bool _input_callback(InputEvent* event, void* context) {
         if(current_view == G_LIST_VIEW) {
         if(current_view == G_LIST_VIEW) {
             lastSelectTime = furi_get_tick();
             lastSelectTime = furi_get_tick();
             if(selector) sensor_index--;
             if(selector) sensor_index--;
-            if(sensor_index >= unitemp_sensors_getCount())
-                sensor_index = unitemp_sensors_getCount() - 1;
+            if(sensor_index >= unitemp_sensors_getActiveCount())
+                sensor_index = unitemp_sensors_getActiveCount() - 1;
         }
         }
         if(current_view == G_CAROUSEL_VIEW) {
         if(current_view == G_CAROUSEL_VIEW) {
             carousel_info_selector = !carousel_info_selector;
             carousel_info_selector = !carousel_info_selector;
@@ -412,7 +421,7 @@ static bool _input_callback(InputEvent* event, void* context) {
         //Пролистывание карусели вперёд
         //Пролистывание карусели вперёд
         if(current_view == G_CAROUSEL_VIEW) {
         if(current_view == G_CAROUSEL_VIEW) {
             carousel_info_selector = CAROUSEL_VALUES;
             carousel_info_selector = CAROUSEL_VALUES;
-            if(++sensor_index >= unitemp_sensors_getCount()) sensor_index = 0;
+            if(++sensor_index >= unitemp_sensors_getActiveCount()) sensor_index = 0;
         }
         }
         //Переход в карусель
         //Переход в карусель
         if(current_view == G_LIST_VIEW) current_view = G_CAROUSEL_VIEW;
         if(current_view == G_LIST_VIEW) current_view = G_CAROUSEL_VIEW;
@@ -422,8 +431,8 @@ static bool _input_callback(InputEvent* event, void* context) {
         //Пролистывание карусели назад
         //Пролистывание карусели назад
         if(current_view == G_CAROUSEL_VIEW) {
         if(current_view == G_CAROUSEL_VIEW) {
             carousel_info_selector = CAROUSEL_VALUES;
             carousel_info_selector = CAROUSEL_VALUES;
-            if(--sensor_index >= unitemp_sensors_getCount())
-                sensor_index = unitemp_sensors_getCount() - 1;
+            if(--sensor_index >= unitemp_sensors_getActiveCount())
+                sensor_index = unitemp_sensors_getActiveCount() - 1;
         }
         }
         //Переход в карусель
         //Переход в карусель
         if(current_view == G_LIST_VIEW) current_view = G_CAROUSEL_VIEW;
         if(current_view == G_LIST_VIEW) current_view = G_CAROUSEL_VIEW;

+ 3 - 3
views/SensorEdit_view.c

@@ -25,10 +25,10 @@ static VariableItem* onewire_type_item;
 
 
 bool _onewire_id_exist(uint8_t* id) {
 bool _onewire_id_exist(uint8_t* id) {
     if(id == NULL) return false;
     if(id == NULL) return false;
-    for(uint8_t i = 0; i < unitemp_sensors_getCount(); i++) {
-        if(app->sensors[i]->type == &DS18x2x) {
+    for(uint8_t i = 0; i < unitemp_sensors_getActiveCount(); i++) {
+        if(unitemp_sensor_getActive(i)->type == &DS18x2x) {
             if(unitemp_onewire_id_compare(
             if(unitemp_onewire_id_compare(
-                   id, ((OneWireSensor*)(app->sensors[i]->instance))->deviceID)) {
+                   id, ((OneWireSensor*)(unitemp_sensor_getActive(i)->instance))->deviceID)) {
                 return true;
                 return true;
             }
             }
         }
         }