ソースを参照

add FC=calibration

Juraj Ďuďák 1 年間 前
コミット
1e1195a2f4
4 ファイル変更29 行追加3 行削除
  1. 1 0
      Inc/app_bridge.h
  2. 3 3
      Inc/nbus_types.h
  3. 10 0
      Src/nbus_slave_module_unicast.c
  4. 15 0
      Src/nbus_slave_sensor_unicast.c

+ 1 - 0
Inc/app_bridge.h

@@ -59,6 +59,7 @@ typedef struct
     void (*stop)(void);
     void (*read)(void);
     uint8_t (*store)(void);
+    uint8_t (*calibrate)(uint8_t subslaveIndex, uint8_t calibrationParamsNum, uint8_t *calibrationParams);
 } nBusAppInterface_t;
 
 #endif /* MODULES_NBUS_INC_APP_BRIDGE_H_ */

+ 3 - 3
Inc/nbus_types.h

@@ -136,9 +136,9 @@ typedef enum
 
 typedef enum
 {
-	CallbackType_UART,
-	CallbackType_SENSOR,
-}nBusStateCallbackType_t;
+    CallbackType_UART,
+    CallbackType_SENSOR,
+} nBusStateCallbackType_t;
 
 /**
  * @brief Dátová štruktúra pre implementáciu základných funkcií na aplikačnej

+ 10 - 0
Src/nbus_slave_module_unicast.c

@@ -162,6 +162,16 @@ void nbus_slave_unicastToModuleSet(nBus_TypeDef *nbus)
         nbus->tx_buffer[4] = OK_CODE;
         nbus->tx_length += 1;
     }
+    break;
+
+    case CMD_CALIBRATE: {
+        nbus->hw_platform->led_on();
+        nbus->tx_buffer[4] = nbus->interface->calibrate(0, 0, NULL);
+        nbus->tx_length += 1;
+        nbus->hw_platform->led_off();
+    }
+    break;
+
     case CMD_RESET: {
         // POZOR!  cas fomatovania: 0.3s (pri 1W pamati)
         memory_params_format();

+ 15 - 0
Src/nbus_slave_sensor_unicast.c

@@ -107,6 +107,21 @@ void nbus_slave_unicastToSensorSet(nBus_TypeDef *nbus)
     }
     break;
 
+    case CMD_CALIBRATE: {
+        nbus->hw_platform->led_on();
+        if (1 == nbus->interface->calibrate(nbus->sensorInfo.address, 0, NULL))
+        {
+            nbus->tx_buffer[4] = 1;
+            nbus->tx_length += 1;
+        }
+        else
+        {
+            setErrorResponse(nbus, ILLEGAL_DEVICE_ADDRESS);
+        }
+        nbus->hw_platform->led_off();
+        break;
+    }
+
     case CMD_DATA: {
         nbus->tx_buffer[4] = nbus->interface->setData(&nbus->rx_buffer[3]);
         if (nbus->tx_buffer[4] != OK_CODE)