Dozingfiretruck 3 лет назад
Родитель
Сommit
8cbc8a4ac0
1 измененных файлов с 13 добавлено и 12 удалено
  1. 13 12
      components/mlx90640-library/luat_lib_mlx90640.c

+ 13 - 12
components/mlx90640-library/luat_lib_mlx90640.c

@@ -83,7 +83,7 @@ float map(float val, float I_Min, float I_Max, float O_Min, float O_Max){
 
 #define constrain(amt, low, high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
 
-static paramsMLX90640 mlx90640;
+static paramsMLX90640* mlx90640;
 uint8_t mlx90640_i2c_id;
 uint8_t mlx90640_i2c_speed;
 static uint8_t mlx90640_refresh_rate;
@@ -115,6 +115,7 @@ static int l_mlx90640_init(lua_State *L){
     mlx90640_refresh_rate = luaL_optinteger(L, 3 , 3);
     lcd_conf = luat_lcd_get_default();
     MLX90640_I2CInit();
+    mlx90640 = (paramsMLX90640*)luat_heap_malloc(sizeof(paramsMLX90640));
     MLX90640_SetRefreshRate(MLX90640_ADDR, mlx90640_refresh_rate);
     MLX90640_SetChessMode(MLX90640_ADDR); 
 	status = MLX90640_DumpEE(MLX90640_ADDR, eeMLX90640);
@@ -122,7 +123,7 @@ static int l_mlx90640_init(lua_State *L){
         LLOGW("load system parameters error with code:%d",status);
         return 0;
     } 
-	status = MLX90640_ExtractParameters(eeMLX90640, &mlx90640);
+	status = MLX90640_ExtractParameters(eeMLX90640, mlx90640);
 	if (status != 0) {
         LLOGW("Parameter extraction failed with error code:%d",status);
         return 0;
@@ -134,11 +135,11 @@ static int l_mlx90640_init(lua_State *L){
             LLOGD("GetFrame Error: %d",status);
             return 0;
         }
-        vdd = MLX90640_GetVdd(frame, &mlx90640);
-        Ta = MLX90640_GetTa(frame, &mlx90640);
-        MLX90640_CalculateTo(frame, &mlx90640, emissivity , Ta - TA_SHIFT, mlx90640To);
-        MLX90640_BadPixelsCorrection(mlx90640.brokenPixels, mlx90640To, 1, &mlx90640);
-        MLX90640_BadPixelsCorrection(mlx90640.outlierPixels, mlx90640To, 1, &mlx90640);
+        vdd = MLX90640_GetVdd(frame, mlx90640);
+        Ta = MLX90640_GetTa(frame, mlx90640);
+        MLX90640_CalculateTo(frame, mlx90640, emissivity , Ta - TA_SHIFT, mlx90640To);
+        MLX90640_BadPixelsCorrection(mlx90640->brokenPixels, mlx90640To, 1, mlx90640);
+        MLX90640_BadPixelsCorrection(mlx90640->outlierPixels, mlx90640To, 1, mlx90640);
         lua_pushboolean(L, 1);
     }
     return 1;
@@ -154,11 +155,11 @@ static int l_mlx90640_feed(lua_State *L) {
         LLOGD("GetFrame Error: %d",status);
         return 0;
     }
-    vdd = MLX90640_GetVdd(frame, &mlx90640);
-    Ta = MLX90640_GetTa(frame, &mlx90640); 
-    MLX90640_CalculateTo(frame, &mlx90640, emissivity , Ta - TA_SHIFT, mlx90640To);
-    MLX90640_BadPixelsCorrection(mlx90640.brokenPixels, mlx90640To, 1, &mlx90640);
-    MLX90640_BadPixelsCorrection(mlx90640.outlierPixels, mlx90640To, 1, &mlx90640);
+    vdd = MLX90640_GetVdd(frame, mlx90640);
+    Ta = MLX90640_GetTa(frame, mlx90640); 
+    MLX90640_CalculateTo(frame, mlx90640, emissivity , Ta - TA_SHIFT, mlx90640To);
+    MLX90640_BadPixelsCorrection(mlx90640->brokenPixels, mlx90640To, 1, mlx90640);
+    MLX90640_BadPixelsCorrection(mlx90640->outlierPixels, mlx90640To, 1, mlx90640);
     lua_pushboolean(L, 1);
     return 0;
 }