From 7adb1031ee9ca1a70be85ad494553d7b5c43a99f Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Mon, 25 Mar 2024 12:58:57 +0800 Subject: [PATCH] improved only send changed status up, --- Core/Src/gpio.c | 2 +- LoRaWAN/App/lora_app.c | 32 +++++++++++++++++++++++++++++++- STM32CubeIDE/WL55JC_AS923.launch | 1 + 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index 9cd7e13..8234296 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -60,7 +60,7 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pin = BUT1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; - GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); #if 0 diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index fcc4c65..49697fb 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -448,6 +448,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) /* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */ //if (EventType == TX_ON_EVENT) { + door_changed_flag =1; UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); } break; @@ -557,6 +558,22 @@ static void SendTxData(void) sensor_t sensor_data; UTIL_TIMER_Time_t nextTxIn = 0; + door_status = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); + door_changed_flag = 0; + if (door_status != door_previous_status) + { + door_previous_status = door_status; + } + +#if 0 + if (door_changed_flag ==1 ) + { + door_changed_flag = 0; + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + UTIL_TIMER_Start(&TxTimer); + } +#endif + if (LmHandlerIsBusy() == false) { #ifdef CAYENNE_LPP @@ -611,7 +628,7 @@ static void SendTxData(void) AppData.Buffer[i++] = 0; AppData.Buffer[i++] = 0; AppData.Buffer[i++] = (uint8_t)(99*GetBatteryLevel()/255); /* 1 (very low) to 254 (fully charged) */ - AppData.Buffer[i++] = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); + AppData.Buffer[i++] = door_status; } else { @@ -666,6 +683,7 @@ static void SendTxData(void) static void OnTxTimerEvent(void *context) { /* USER CODE BEGIN OnTxTimerEvent_1 */ +#if 0 door_status = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); if (door_status != door_previous_status) { @@ -681,6 +699,18 @@ static void OnTxTimerEvent(void *context) /*Wait for next tx slot*/ UTIL_TIMER_Start(&TxTimer); } +#endif + door_status = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); + door_changed_flag = 0; + if (door_status != door_previous_status) + { + door_previous_status = door_status; + + + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + UTIL_TIMER_Start(&TxTimer); + + } /* USER CODE BEGIN OnTxTimerEvent_2 */ /* USER CODE END OnTxTimerEvent_2 */ diff --git a/STM32CubeIDE/WL55JC_AS923.launch b/STM32CubeIDE/WL55JC_AS923.launch index 9c1e726..4ffa9b7 100644 --- a/STM32CubeIDE/WL55JC_AS923.launch +++ b/STM32CubeIDE/WL55JC_AS923.launch @@ -78,5 +78,6 @@ +