From 22aed14aa154eca200352b6a92c265979928094c Mon Sep 17 00:00:00 2001
From: YunHorn Technology <dp.s@yunhorn.com>
Date: Mon, 8 Jan 2024 17:35:31 +0800
Subject: [PATCH] revised with env temperature

---
 Core/Src/yunhorn_sts_process.c  |  3 +++
 LoRaWAN/App/lora_app.c          |  2 ++
 mlx90640/mlx90640_lcd_display.c | 19 +++++++++----------
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c
index c4ae997..55f6979 100644
--- a/Core/Src/yunhorn_sts_process.c
+++ b/Core/Src/yunhorn_sts_process.c
@@ -59,6 +59,7 @@ volatile uint8_t sts_reed_hall_result =0;
 volatile uint8_t sts_water_leakage_result=0;
 volatile uint8_t sts_water_leakage_changed_flag=0;
 extern volatile uint8_t sensor_data_ready;
+extern volatile float env_temperature;
 #ifdef YUNHORN_STS_O5_ENABLED
 
 #endif
@@ -413,6 +414,8 @@ void STS_YunhornSTSEventP9_Process(void)
 {
 	APP_LOG(TS_OFF, VLEVEL_L, "\r\n P9 Testing Process start\r\n");
   	//MX_I2C2_Init();
+	env_temperature = (SYS_GetTemperatureLevel() >> 8);
+
   	mlx90640_display_init();
 	mlx90640_display_process();
 }
diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c
index f65b959..2c01a12 100644
--- a/LoRaWAN/App/lora_app.c
+++ b/LoRaWAN/App/lora_app.c
@@ -62,6 +62,7 @@ volatile uint32_t HeartBeatPeriodicity = 120000; 		//unit ms
 volatile uint8_t STS_LoRa_WAN_Joined = 0;
 
 #ifdef STS_TMG
+volatile float env_temperature= 25.0;
 extern volatile uint8_t waterTempThreshold;
 extern volatile uint8_t humanTempThreshold;
 extern volatile uint8_t averageTempThreshold;
@@ -818,6 +819,7 @@ static void SendTxData(void)
 	  //r0_data.battery_Pct = batteryLevel; //(uint8_t)(99*batteryLevel/254);
 
 //    EnvSensors_Read(&sensor_data);
+//env_temperature = (SYS_GetTemperatureLevel() >> 8);
 //    APP_LOG(TS_ON, VLEVEL_M, "\r\nVDDA: %d\r\n", batteryLevel);
 //    APP_LOG(TS_ON, VLEVEL_M, "\r\ntemp: %d\r\n", (int16_t)(sensor_data.temperature));
 
diff --git a/mlx90640/mlx90640_lcd_display.c b/mlx90640/mlx90640_lcd_display.c
index 3db0d8c..e460df6 100644
--- a/mlx90640/mlx90640_lcd_display.c
+++ b/mlx90640/mlx90640_lcd_display.c
@@ -42,6 +42,7 @@ volatile float averageTemp=0.0f;
 volatile float averageTempInner=0.0f;
 volatile uint16_t waterSpillCount=0;
 extern volatile uint8_t sensor_data_ready;
+extern volatile float env_temperature;
 char tempBuffer[256];
 // variables for interpolated colors
 uint8_t red, green, blue;
@@ -209,7 +210,7 @@ static void sortFocusAreas(void)
 			{
 				temp1  = (float)tempValues[(x)   + (y*COL)];
 
-				if ((temp1 + (float)(waterTempThreshold / 10.0)) <  averageTemp )   // was max(averageTemp, normalWaterTemp))
+				if ((temp1 + (float)(waterTempThreshold / 10.0)) <  (float)env_temperature )   // was max(averageTemp, env_temperature))
 				{
 					if (blackOutTag == 0) {
 						zoneMask[y*COL+x] ++;
@@ -221,7 +222,6 @@ static void sortFocusAreas(void)
 			}
 	  }
 
-
 }
 
 
@@ -229,7 +229,7 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data)
 {
 
     m1a_data->waterSpillCount = blackOutTag==0?waterSpillCount:0;
-    m1a_data->spillage_level = (uint8_t)((m1a_data->waterSpillCount)*99/560.0); //((ROW-2)*(COL-2)));   // (24-4) * (32 -4) minus edge dots
+    m1a_data->spillage_level = (uint8_t)((m1a_data->waterSpillCount)*99/768.0); //((ROW-2)*(COL-2)));   // (24-4) * (32 -4) minus edge dots
 	m1a_data->averageTemp = averageTemp;
 	m1a_data->averageTempInner = averageTempInner;
 	m1a_data->centerTemp = centerTemp;
@@ -257,8 +257,8 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data)
     memcpy((void *)m1a_data->order, (const void *)order, sizeof(order));
 	memset(tempBuffer,0x0,sizeof(tempBuffer));
 
-	sprintf(tempBuffer,(char *)"\r\n## Blackout=%u ######\n##Read Sensor Spot CNT=%4d (areas) \r\n## V_cnt=%2d (lane)  H_cnt=%2d (lane) \r\n## Spillage Level =%02.2f%% \r\n## averageTempInner=%02.2f C averageTemp=%02.2f C centerTemp=%.2f C MinTemp=%02.2f C maxTemp=%02.2f C \r\n ######## Gap_Average= %02.2f    Gap_Inner = %02.2f \r\n",
-			(uint8_t)blackOutTag, (int)m1a_data->waterSpillCount, (int)v_water_cnt, (int)h_water_cnt, (float)(m1a_data->spillage_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp, (float)(averageTemp - minTemp),(float)(averageTempInner - minTemp));
+	sprintf(tempBuffer,(char *)"\r\n## Blackout=%u ######\n##Read Sensor Spot CNT=%4d (areas), \r\n Env_Temp =%02.2f C,\r\n## V_cnt=%2d (lane),  H_cnt=%2d (lane), \r\n## Spillage Level =%u %, \r\n## averageTempInner=%02.2f C, averageTemp=%02.2f C, centerTemp=%.2f C, MinTemp=%02.2f C, maxTemp=%02.2f C, \r\n ######## Gap_Average= %02.2fC,    Gap_Inner = %02.2fC \r\n",
+			(uint8_t)blackOutTag, (uint16_t)(m1a_data->waterSpillCount), (float)env_temperature, (int)v_water_cnt, (int)h_water_cnt, (uint8_t)(m1a_data->spillage_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp, (float)(averageTemp - minTemp),(float)(averageTempInner - minTemp));
 	APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer);
 
 	if ((m1a_data->spot_cnt !=0 ) && (blackOutTag == 0))
@@ -284,24 +284,23 @@ void mlx90640_display_process(void)
 	 uint16_t spillcountTemp =0, spot_cntTemp=0;
 
 	 do {
-		 //APP_LOG(TS_OFF, VLEVEL_H, "Detection Cycle = %u \r\n", detectCycle);
 		readTempValues();
 		setTempScale();
 		sortFocusAreas();
 		findFocusArea();
 
-		spillcountTemp +=waterSpillCount;
+		spillcountTemp += waterSpillCount;
 		spot_cntTemp += spot_cnt;
 
-	 } while (detectCycle++ < DetectCycleCount);
+	 } while (++detectCycle < DetectCycleCount);
 
-	 waterSpillCount = spillcountTemp/DetectCycleCount;
+	 waterSpillCount = (uint16_t) (spillcountTemp/DetectCycleCount);
 	 spot_cnt /= DetectCycleCount ; //max(v_water_cnt, h_water_cnt);
 
 
 		if (blackOutTag == 0)
 		{
-			APP_LOG(TS_OFF, VLEVEL_H, "Water Spill Detected Level = %u of 600 \r\n", waterSpillCount);
+			APP_LOG(TS_OFF, VLEVEL_H, "Water Spill Detected Level = %u of 768 \r\n", (uint16_t)waterSpillCount);
 		}
 }