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

Implicated saving one wire sensors

Victor 3 лет назад
Родитель
Сommit
f6a70276df
3 измененных файлов с 24 добавлено и 7 удалено
  1. 19 3
      Sensors.c
  2. 1 1
      interfaces/I2CSensor.c
  3. 4 3
      unitemp.c

+ 19 - 3
Sensors.c

@@ -326,16 +326,32 @@ bool unitemp_sensors_save(void) {
                 "%s %d %d\n",
                 "%s %d %d\n",
                 app->sensors[i]->name,
                 app->sensors[i]->name,
                 unitemp_getIntFromType(app->sensors[i]->type),
                 unitemp_getIntFromType(app->sensors[i]->type),
-                unitemp_gpio_toInt(unitemp_singlewire_sensorGetGPIO(app->sensors[i])));
+                unitemp_singlewire_sensorGetGPIO(app->sensors[i])->num);
         }
         }
         if(app->sensors[i]->type->interface == &I2C) {
         if(app->sensors[i]->type->interface == &I2C) {
             stream_write_format(
             stream_write_format(
                 app->file_stream,
                 app->file_stream,
-                "%s %d %d\n",
+                "%s %s %X\n",
                 app->sensors[i]->name,
                 app->sensors[i]->name,
-                unitemp_getIntFromType(app->sensors[i]->type),
+                app->sensors[i]->type->typename,
                 ((I2CSensor*)app->sensors[i]->instance)->currentI2CAdr);
                 ((I2CSensor*)app->sensors[i]->instance)->currentI2CAdr);
         }
         }
+        if(app->sensors[i]->type->interface == &ONE_WIRE) {
+            stream_write_format(
+                app->file_stream,
+                "%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]);
+        }
     }
     }
 
 
     //Закрытие потока и освобождение памяти
     //Закрытие потока и освобождение памяти

+ 1 - 1
interfaces/I2CSensor.c

@@ -42,7 +42,7 @@ bool unitemp_I2C_sensor_alloc(Sensor* sensor, char* args) {
     //Указание функций инициализации, деинициализации и обновления данных, а так же адреса на шине I2C
     //Указание функций инициализации, деинициализации и обновления данных, а так же адреса на шине I2C
     status = sensor->type->allocator(sensor, args);
     status = sensor->type->allocator(sensor, args);
     int i2c_addr;
     int i2c_addr;
-    sscanf(args, "%d", &i2c_addr);
+    sscanf(args, "%X", &i2c_addr);
 
 
     //Установка адреса шины I2C
     //Установка адреса шины I2C
     if(i2c_addr >= instance->minI2CAdr && i2c_addr <= instance->maxI2CAdr) {
     if(i2c_addr >= instance->minI2CAdr && i2c_addr <= instance->maxI2CAdr) {

+ 4 - 3
unitemp.c

@@ -7,10 +7,11 @@
 #include <m-string.h>
 #include <m-string.h>
 
 
 //TODO: Реализовать ограничение на добавление датчиков если интерфейс недоступен
 //TODO: Реализовать ограничение на добавление датчиков если интерфейс недоступен
-//TODO: Исправить падение при сохранении датчка
-//TODO: Реализовать сохранение ID DS18x2x
-//TODO: Тип датчика сохраняется в виде строки, а не числа
+//TODO: Исправить падения при добавлении и сохранении датчка
 //TODO: Исключить добавление датчиков DS18x2x с одинаковыми ID
 //TODO: Исключить добавление датчиков DS18x2x с одинаковыми ID
+//TODO: Проверка корректности параметров датчика перед аллокацией
+//TODO: Не выкидывать датчик в ошибку при первом же неудачном опросе
+//TODO: Запускать преобразование DS18x2x разом, затем поочерёдно считывать
 
 
 /* Переменные */
 /* Переменные */
 //Данные приложения
 //Данные приложения