From 4b7e0d51a52c013103fa3b86d536cb00075b68a3 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Thu, 4 Jan 2024 14:06:21 +0800 Subject: [PATCH] enhanced for tx and heart-beat manage --- LoRaWAN/App/lora_app.c | 16 +++++++------- STM32CubeIDE/.project | 5 +++++ STM32CubeIDE/.settings/language.settings.xml | 4 ++-- decoder.js | 12 +++++++++- mlx90640/mlx90640_lcd_display.c | 23 +++++++++++--------- 5 files changed, 39 insertions(+), 21 deletions(-) diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 24dc4fc..f65b959 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -626,8 +626,9 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) #ifdef YUNHORN_STS_O5_ENABLED UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0); +#endif UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); -#else +#ifdef SOAP_LEVEL uint8_t pinstate = HAL_GPIO_ReadPin(BUT1_GPIO_Port,BUT1_Pin); APP_LOG(TS_OFF, VLEVEL_M, "## BUTTON-1 DETECTED: %2d \r\n", pinstate); @@ -637,11 +638,11 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); } else { -#ifdef LED_ONBOARD + #ifdef LED_ONBOARD LED_ON; HAL_Delay(20); LED_OFF; -#endif + #endif } #endif @@ -654,9 +655,9 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) break; case BUT3_Pin: -#if defined(STM32WL55xx) + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), CFG_SEQ_Prio_0); -#endif + break; #if (defined(STS_USE_TOF_VL53L1X) ||defined(STS_USE_TOF_VL53L0X)) case TOF_INT_EXTI_PIN: @@ -797,12 +798,12 @@ static void SendTxData(void) #endif #if defined(YUNHORN_STS_M1A_ENABLED) -// UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP9), CFG_SEQ_Prio_0); + //UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP9), CFG_SEQ_Prio_0); STS_M1A_SENSOR_Read(&m1a_data); m1a_data.battery_Pct = (uint8_t)(99*batteryLevel/254); -// STS_R0_SENSOR_Read(&r0_data); + #endif @@ -817,7 +818,6 @@ static void SendTxData(void) //r0_data.battery_Pct = batteryLevel; //(uint8_t)(99*batteryLevel/254); // EnvSensors_Read(&sensor_data); - // 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/STM32CubeIDE/.project b/STM32CubeIDE/.project index 304d6aa..89f7047 100644 --- a/STM32CubeIDE/.project +++ b/STM32CubeIDE/.project @@ -32,6 +32,11 @@ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + Doc/decoder.js + 1 + copy_PARENT/decoder.js + Doc/readme.txt 1 diff --git a/STM32CubeIDE/.settings/language.settings.xml b/STM32CubeIDE/.settings/language.settings.xml index cac1d19..7aa0e53 100644 --- a/STM32CubeIDE/.settings/language.settings.xml +++ b/STM32CubeIDE/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/decoder.js b/decoder.js index a26b65c..a753652 100644 --- a/decoder.js +++ b/decoder.js @@ -98,14 +98,24 @@ function Decode(fPort, data, variables) { } // 0x59,0x44 report configed heart-beat interval if (bytes[0] === 0x59) { - if (bytes[1] === 0x44) { + if (bytes[1] === 0x53) { return [ { + Type: "Heart Beat Interval", HB_interval: (bytes[2] - 0x30) * 10 + (bytes[3] - 0x30), HB_interval_unit: String.fromCharCode(bytes[4]), } ]; } + else if (bytes[1] === 0x44) { + return [ + { + Type: "Periodic Upload Interval", + Upload_interval: (bytes[2] - 0x30) * 10 + (bytes[3] - 0x30), + Upload_interval_unit: String.fromCharCode(bytes[4]), + } + ]; + } } } diff --git a/mlx90640/mlx90640_lcd_display.c b/mlx90640/mlx90640_lcd_display.c index d0336a7..dc6b562 100644 --- a/mlx90640/mlx90640_lcd_display.c +++ b/mlx90640/mlx90640_lcd_display.c @@ -323,15 +323,15 @@ static void readTempValues(void) void blackOutFilter(void) { float temp1=0.0, temph1=0.0, tempv1=0.0; -/* - if (maxTemp < normalPeopleTemp) + + if (maxTemp > humanTempThreshold) { - blackOutTag =0; + blackOutTag =1; } else { - blackOutTag =1; + blackOutTag =0; } -*/ + // ignore edge of FOV waterSpillCount =0; detectCycle = 0; @@ -415,7 +415,7 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data) //memset(order + m1a_data->spot_cnt, 0x0, sizeof(tempBuffer)-m1a_data->spot_cnt); // fill non-spot position to zero - memset(tempBuffer,0,sizeof(tempBuffer)); + memset(tempBuffer,0x0,sizeof(tempBuffer)); sprintf(tempBuffer,(char *)"\r\n## Read Sensor Spot CNT=%4d (areas) \r\n## V_cnt=%2d (lane) H_cnt=%2d (lane) \r\n## Spillage Level =%2.2f%% \r\n## averageTempInner=%2.2f C averageTemp=%2.2f C centerTemp=%2.2f C MinTemp=%2.2f C maxTemp=%2.2f C \r\n ######## Gap_Average= %2.2f Gap_Inner = %2.2f \r\n", m1a_data->waterSpillCount, v_water_cnt, h_water_cnt, (float)(m1a_data->spillage_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp, (float)(averageTemp - minTemp),(float)(averageTempInner - minTemp)); @@ -425,8 +425,8 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data) if (m1a_data->spot_cnt !=0 ) { for (uint8_t i=0; i< 4; i++) { - memset(tempBuffer,0,sizeof(tempBuffer)); - sprintf(tempBuffer, (char *) " Top {%1d} =order =%2u X=%2u : Y=%2u \r\n", i, order[i], + memset(tempBuffer,0x0,sizeof(tempBuffer)); + sprintf(tempBuffer, (char *) " Top {%2u} : order =%2u X=%2u : Y=%2u \r\n", (uint8_t)i, (uint8_t)(order[i]), (uint8_t)(order[i]%(10)), (uint8_t)(order[i]/10)); APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer); } @@ -446,7 +446,7 @@ void mlx90640_display_process(void) blackOutFilter(); drawPicture(); -#if 1 +#if 0 if (blackOutTag == 0) { //BSP_LCD_DisplayOn(); @@ -463,7 +463,10 @@ void mlx90640_display_process(void) //BSP_LCD_DisplayOff(); } #endif - APP_LOG(TS_OFF, VLEVEL_H, "Water Spill Detected Level = %d of 600 \r\n", waterSpillCount); + if (blackOutTag == 0) + { + APP_LOG(TS_OFF, VLEVEL_H, "Water Spill Detected Level = %u of 600 \r\n", waterSpillCount); + } } uint8_t mlx90640_bringup_test(void)