diff --git a/Core/Inc/main.h b/Core/Inc/main.h
index 7e551a7..5d8ee64 100644
--- a/Core/Inc/main.h
+++ b/Core/Inc/main.h
@@ -31,7 +31,7 @@ extern "C" {
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
-
+#include "yunhorn_sts_prd_conf.h"
/* USER CODE END Includes */
/* Exported types ------------------------------------------------------------*/
@@ -75,10 +75,12 @@ void Error_Handler(void);
#define PROB1_Pin GPIO_PIN_12
#define PROB1_GPIO_Port GPIOB
-
+#if defined(STM32WL55xx)
#define BUT3_Pin GPIO_PIN_6
#define BUT3_GPIO_Port GPIOC
#define BUT3_EXTI_IRQn EXTI9_5_IRQn
+#endif
+#if defined(STM32WLE5xx)
#define BUT2_Pin GPIO_PIN_1
#define BUT2_GPIO_Port GPIOA
#define BUT2_EXTI_IRQn EXTI1_IRQn
@@ -94,8 +96,35 @@ void Error_Handler(void);
#define BUT1_GPIO_Port GPIOA
#define BUT1_EXTI_IRQn EXTI0_IRQn
+#define BUT2_Pin GPIO_PIN_1
+#define BUT2_GPIO_Port GPIOA
+#define BUT2_EXTI_IRQn EXTI1_IRQn
+
+#ifdef STS_O5
+// STS_O5 GPIO PORT PIN DEFINATION SINGLE BOARD
+/* --------------------------------------------------*/
+/* | HALL-2 (PA-10) [VCC-GPIO-PB-4]| */
+/* | | */
+/* | HALL-1 (PA-0) [VCC-GPIO-PB3] | */
+/* | | */
+/* |------------------------------------------------ */
+
+#define HALL1_Pin GPIO_PIN_0
+#define HALL1_GPIO_Port GPIOA
+#define HALL1_EXTI_IRQn EXTI0_IRQn
+
+#define HALL2_Pin GPIO_PIN_10
+#define HALL2_GPIO_Port GPIOA
+#define HALL2_EXTI_IRQn EXTI15_10_IRQn
+#define HALL1_STATE HAL_GPIO_ReadPin(HALL1_GPIO_Port, HALL1_Pin)
+#define HALL2_STATE HAL_GPIO_ReadPin(HALL2_GPIO_Port, HALL2_Pin)
+#endif
+
#define LED1_Pin GPIO_PIN_2
#define LED1_GPIO_Port GPIOB
+#endif
+#define BUT1_State HAL_GPIO_ReadPin(BUT1_GPIO_Port, BUT1_Pin)
+#define BUT2_State HAL_GPIO_ReadPin(BUT2_GPIO_Port, BUT2_Pin)
#define LED1_ON HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET )
#define LED1_OFF HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)
diff --git a/Core/Inc/utilities_def.h b/Core/Inc/utilities_def.h
index 16c631e..22653b4 100644
--- a/Core/Inc/utilities_def.h
+++ b/Core/Inc/utilities_def.h
@@ -82,7 +82,7 @@ typedef enum
/* USER CODE BEGIN CFG_SEQ_Task_Id_t */
CFG_SEQ_Task_YunhornSTSEventRFAC, /* RFAC */
-#if defined(STS_M1)||defined(STS_O6)
+#if defined(STS_M1)||defined(STS_O6)||defined(STS_O5)
CFG_SEQ_Task_YunhornSTSEventP1, /* REEDSWITCH, IO */
#endif
#if defined(STS_O6)
diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c
index 8f0d4aa..eb308e1 100644
--- a/Core/Src/gpio.c
+++ b/Core/Src/gpio.c
@@ -63,12 +63,26 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+#ifdef STS_O5
+ GPIO_InitStruct.Pin = HALL1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
+ HAL_GPIO_Init(HALL1_GPIO_Port, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = HALL2_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
+ HAL_GPIO_Init(HALL2_GPIO_Port, &GPIO_InitStruct);
+
+#else
/*Configure GPIO pins : PAPin PAPin */
GPIO_InitStruct.Pin = BUT1_Pin|BUT2_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+#endif
+#if defined(STM32WL55xx)
/*Configure GPIO pins : PBPin PBPin */
GPIO_InitStruct.Pin = PROB2_Pin|PROB1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@@ -81,7 +95,7 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(BUT3_GPIO_Port, &GPIO_InitStruct);
-
+#endif
#ifndef L8
/* STS-PME PB-4 */
/*Configure GPIO pins : PBPin PBPin PBPin */
@@ -171,6 +185,15 @@ void MX_GPIO_Init(void)
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
+#ifdef STS_O5
+ HAL_NVIC_SetPriority(HALL1_EXTI_IRQn, 10, 0);
+ HAL_NVIC_EnableIRQ(HALL1_EXTI_IRQn);
+
+ HAL_NVIC_SetPriority(HALL2_EXTI_IRQn, 10, 0);
+ HAL_NVIC_EnableIRQ(HALL2_EXTI_IRQn);
+#endif
+
+
#ifdef L8
HAL_NVIC_SetPriority(TOF_INT_EXTI_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TOF_INT_EXTI_IRQn);
diff --git a/Core/Src/stm32wlxx_it.c b/Core/Src/stm32wlxx_it.c
index 6f36a09..290f19e 100644
--- a/Core/Src/stm32wlxx_it.c
+++ b/Core/Src/stm32wlxx_it.c
@@ -227,7 +227,7 @@ void EXTI0_IRQHandler(void)
/* USER CODE BEGIN EXTI0_IRQn 0 */
/* USER CODE END EXTI0_IRQn 0 */
- HAL_GPIO_EXTI_IRQHandler(BUT1_Pin);
+ HAL_GPIO_EXTI_IRQHandler(HALL1_Pin);
/* USER CODE BEGIN EXTI0_IRQn 1 */
/* USER CODE END EXTI0_IRQn 1 */
@@ -374,7 +374,9 @@ void EXTI9_5_IRQHandler(void)
/* USER CODE END EXTI9_5_IRQn 0 */
#ifndef RM2
+#ifdef STM32WL55xx
HAL_GPIO_EXTI_IRQHandler(BUT3_Pin);
+#endif
#elif defined(RM2)&&(defined(VL53L0)||defined(VL53LX))
HAL_GPIO_EXTI_IRQHandler(TOF_INT_EXTI_PIN);
#endif
@@ -392,7 +394,9 @@ void EXTI15_10_IRQHandler(void)
/* USER CODE BEGIN EXTI15_10_IRQn 0 */
/* USER CODE END EXTI15_10_IRQn 0 */
-
+#ifdef STS_O5
+ HAL_GPIO_EXTI_IRQHandler(HALL2_Pin);
+#endif
#if defined(L8)||defined(STS_P2)||defined(STS_R1D)||defined(STS_R5)
HAL_GPIO_EXTI_IRQHandler(TOF_INT_EXTI_PIN);
#endif
diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c
index 63c3b8c..975f3cb 100644
--- a/LoRaWAN/App/lora_app.c
+++ b/LoRaWAN/App/lora_app.c
@@ -514,7 +514,7 @@ void LoRaWAN_Init(void)
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), UTIL_SEQ_RFU, STS_YunhornSTSEventRFAC_Process);
-#ifdef STS_M1
+#if defined(STS_M1)||defined(STS_O5)
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), UTIL_SEQ_RFU, STS_YunhornSTSEventP1_Process);
@@ -540,9 +540,9 @@ void LoRaWAN_Init(void)
UTIL_TIMER_Start(&YunhornSTSWakeUpScanTimer);
#endif
- //UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, 1000*STS_HeartBeatTimerPeriod_sec, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
+ UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, 1000*STS_HeartBeatTimerPeriod_sec, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
// UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, 1000*STS_HeartBeatTimerPeriod_sec, UTIL_TIMER_ONESHOT, OnYunhornSTSHeartBeatTimerEvent, NULL);
-// UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
+ UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
/* USER CODE END LoRaWAN_Init_Last */
}
@@ -553,21 +553,58 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
switch (GPIO_Pin)
{
+#ifdef STS_O5
+ case HALL1_Pin:
+
+ if (0 == HALL1_STATE)
+ {
+ HAL_Delay(20);
+ //if (0 == HALL1_STATE) APP_LOG(TS_OFF, VLEVEL_M, "\r\n Button 1 state == 0 \r\n");
+ } else if (1 == HALL1_STATE)
+ {
+ HAL_Delay(20);
+ //if (1 == HALL1_STATE) APP_LOG(TS_OFF, VLEVEL_M, "\r\n Button 1 state ==1 \r\n");
+ }
+ HAL_Delay(100);
+ __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
+ UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
+ break;
+ case HALL2_Pin:
+
+ if (0 == HALL2_STATE)
+ {
+ HAL_Delay(20);
+ APP_LOG(TS_OFF, VLEVEL_M, "\r\n Button 2 state == 0 \r\n");
+ } else
+ {
+ HAL_Delay(20);
+ APP_LOG(TS_OFF, VLEVEL_M, "\r\n Button 2 state ==1 \r\n");
+ }
+ HAL_Delay(100);
+ __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
+
+ UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
+ break;
+
+#else
case BUT1_Pin:
/* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */
if (EventType == TX_ON_EVENT)
{
- UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
+ UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
}
break;
+#endif
#ifndef STS_R4
case BUT2_Pin:
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0);
break;
#endif
+#ifdef STM32WL55xx
case BUT3_Pin:
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), CFG_SEQ_Prio_0);
break;
+#endif
#if (defined(VL53L0)||defined(VL53LX)||defined(L8))
case TOF_INT_EXTI_PIN:
ToF_EventDetected = 1;
@@ -764,6 +801,8 @@ static void SendTxData(void)
sts_r_sensor_data_t sts_r4_sensor_data={0};
#elif defined(STS_M1)
sts_r_sensor_data_t sts_m1_sensor_data={0};
+#elif defined(STS_O5)
+ STS_OO_SensorDataTypeDef oo_data;
#endif
if (LmHandlerIsBusy() == false)
@@ -785,6 +824,10 @@ static void SendTxData(void)
EnvSensors_Read(&sensor_data);
+#ifdef STS_O5
+ STS_O5_SENSOR_Read(&oo_data);
+#endif
+
#ifdef STS_R4
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), CFG_SEQ_Prio_0);
//STS_YunhornSTSEventP6_Process();
@@ -829,6 +872,9 @@ static void SendTxData(void)
#ifdef STS_M1 // WATER LEAKAGE SENSOR
AppData.Port = YUNHORN_STS_M1_LORA_APP_DATA_PORT; /* STS-M1 Data Port */
#endif
+#ifdef STS_O5
+ AppData.Port = YUNHORN_STS_O5_LORA_APP_DATA_PORT; /* STS-O5 Data Port */
+#endif
AppData.Buffer[i++] = (uint8_t) (AppLedStateOn|0x80); // for first byte, cannot be 0x0
AppData.Buffer[i++] = (uint8_t) sts_mtmcode1;
@@ -909,6 +955,11 @@ static void SendTxData(void)
#endif /* CAYENNE_LPP */
+#ifdef STS_O5
+ AppData.Buffer[i++] = 1;
+ AppData.Buffer[i++] = (uint8_t)(oo_data.state_sensor1_on_off);
+#endif
+
#ifdef VL53L0 //VL53L0
#if (defined(STS_R1)||defined(STS_R5))
@@ -1446,6 +1497,8 @@ static void OnYunhornSTSHeartBeatTimerEvent(void *context)
appHeartBeatDataPort = YUNHORN_STS_R4_LORA_APP_HTBT_PORT;
#elif defined(STS_T6)
appHeartBeatDataPort = YUNHORN_STS_T6_LORA_APP_HTBT_PORT;
+#elif defined(STS_O5)
+ appHeartBeatDataPort = YUNHORN_STS_O5_LORA_APP_HTBT_PORT;
#endif
appHeartBeatBufferSize = 2;
diff --git a/STM32CubeIDE/.cproject b/STM32CubeIDE/.cproject
index 521ff96..5bf6f2e 100644
--- a/STM32CubeIDE/.cproject
+++ b/STM32CubeIDE/.cproject
@@ -133,7 +133,7 @@