Victor пре 3 година
родитељ
комит
7f26345b23
2 измењених фајлова са 5 додато и 40 уклоњено
  1. 4 39
      interfaces/OneWireSensor.c
  2. 1 1
      interfaces/OneWireSensor.h

+ 4 - 39
interfaces/OneWireSensor.c

@@ -41,7 +41,7 @@ OneWireBus* uintemp_onewire_bus_alloc(const GPIO* gpio) {
 
 bool unitemp_onewire_bus_init(OneWireBus* bus) {
     if(bus == NULL) return false;
-    if(bus->device_count != 0) return true;
+    if(bus->device_count > 0) return true;
 
     unitemp_gpio_lock(bus->gpio, &ONE_WIRE);
     //Высокий уровень по умолчанию
@@ -58,7 +58,8 @@ bool unitemp_onewire_bus_init(OneWireBus* bus) {
 }
 bool unitemp_onewire_bus_deinit(OneWireBus* bus) {
     bus->device_count--;
-    if(bus->device_count == 0) {
+    if(bus->device_count <= 0) {
+        bus->device_count = 0;
         unitemp_gpio_lock(bus->gpio, &ONE_WIRE);
         //Режим работы - аналог, подтяжка выключена
         furi_hal_gpio_init(
@@ -336,43 +337,6 @@ bool unitemp_OneWire_sensor_init(Sensor* sensor) {
     unitemp_onewire_bus_init(instance->bus);
     furi_delay_ms(1);
 
-    // onewire_enum_init();
-    // uint8_t* ids = onewire_enum_next(instance);
-
-    // while(ids != NULL) {
-    //     FURI_LOG_D(
-    //         APP_NAME,
-    //         "Found sensor's ID: %02X%02X%02X%02X%02X%02X%02X%02X",
-    //         ids[0],
-    //         ids[1],
-    //         ids[2],
-    //         ids[3],
-    //         ids[4],
-    //         ids[5],
-    //         ids[6],
-    //         ids[7]);
-    //     ids = onewire_enum_next(instance);
-    // }
-    //Если ID не инициализирован, то чтение ID из датчика
-    // furi_delay_ms(1);
-    // if(instance->familyCode == 0) {
-    //     if(!oneWire_sensor_readID(instance)) {
-    //         return false;
-    //     }
-    //     FURI_LOG_D(
-    //         APP_NAME,
-    //         "%s sensor ID: %02X%02X%02X%02X%02X%02X%02X%02X",
-    //         sensor->name,
-    //         instance->deviceID[0],
-    //         instance->deviceID[1],
-    //         instance->deviceID[2],
-    //         instance->deviceID[3],
-    //         instance->deviceID[4],
-    //         instance->deviceID[5],
-    //         instance->deviceID[6],
-    //         instance->deviceID[7]);
-    // }
-
     if(instance->familyCode == FC_DS18B20 || instance->familyCode == FC_DS1822) {
         //Установка разрядности в 10 бит
         if(!unitemp_onewire_bus_start(instance->bus)) return false;
@@ -425,6 +389,7 @@ UnitempStatus unitemp_OneWire_sensor_update(Sensor* sensor) {
         uint8_t buff[9];
         oneWire_readBytes(instance->bus, buff, 9);
         if(!onewire_CRC_check(buff, 9)) {
+            FURI_LOG_D(APP_NAME, "Failed CRC check: %s", sensor->name);
             return UT_TIMEOUT;
         }
         int16_t raw = buff[0] | ((int16_t)buff[1] << 8);

+ 1 - 1
interfaces/OneWireSensor.h

@@ -21,7 +21,7 @@ typedef struct {
     const GPIO* gpio;
     //Количество устройств на шине
     //Обновляется при ручном добавлении датчика на эту шину
-    uint8_t device_count;
+    int8_t device_count;
     //Режим питания датчиков на шине
     PowerMode powerMode;
 } OneWireBus;