revised for MTM2 code to 26

This commit is contained in:
Yunhorn 2023-11-10 12:10:11 +08:00
parent 3820bc8e40
commit 377f4583b6
5 changed files with 32 additions and 23 deletions

View File

@ -52,7 +52,7 @@ extern "C" {
/** /**
* @brief Enable trace logs * @brief Enable trace logs
*/ */
#define APP_LOG_ENABLED 0 #define APP_LOG_ENABLED 1
/** /**
* @brief Activate monitoring (probes) of some internal RF signals for debug purpose * @brief Activate monitoring (probes) of some internal RF signals for debug purpose

View File

@ -42,7 +42,7 @@
*/ */
//#define USE_OLED_SSD1306 //#define USE_OLED_SSD1306
//#define USE_TOF_VL53L1X //#define USE_TOF_VL53L1X
#define STS_USE_TOF_VL53L0X 1U //#define STS_USE_TOF_VL53L0X 1U
//#define YUNHORN_STS_R5_ENABLED //#define YUNHORN_STS_R5_ENABLED
@ -235,7 +235,7 @@
#define MajorVer 23U #define MajorVer 23U
#define MinorVer 11U #define MinorVer 11U
#define SubMinorVer 02U #define SubMinorVer 10U
#define FirmwareVersion 3U #define FirmwareVersion 3U
#define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U #define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U
#define YUNHORN_STS_AC_CODE_SIZE 20U #define YUNHORN_STS_AC_CODE_SIZE 20U
@ -265,7 +265,7 @@
#ifdef STS_O5 #ifdef STS_O5
#define YUNHORN_STS_O5_ENABLED 1U #define YUNHORN_STS_O5_ENABLED 1U
#define sts_mtmcode1 0U #define sts_mtmcode1 0U
#define sts_mtmcode2 5U #define sts_mtmcode2 24U
#define sts_hardware_ver 1U #define sts_hardware_ver 1U
#define sts_version 1U #define sts_version 1U
#define sts_senddataport (YUNHORN_STS_O5_LORA_APP_DATA_PORT) #define sts_senddataport (YUNHORN_STS_O5_LORA_APP_DATA_PORT)

View File

@ -41,13 +41,12 @@ extern volatile uint8_t sts_ac_code[20];
volatile uint8_t sts_service_mask; volatile uint8_t sts_service_mask;
volatile uint32_t rfac_timer; volatile uint32_t rfac_timer;
extern volatile uint8_t sensor_data_ready; extern volatile uint8_t sensor_data_ready;
extern volatile uint8_t sts_work_mode;
volatile uint8_t sts_reed_hall_result, last_sts_reed_hall_result,sts_reed_hall_changed_flag; volatile uint8_t sts_reed_hall_result, last_sts_reed_hall_result,sts_reed_hall_changed_flag;
volatile uint32_t event_start_time, event_stop_time; volatile uint32_t event_start_time, event_stop_time;
volatile uint8_t sts_soap_level_state; volatile uint8_t sts_soap_level_state;
extern volatile uint8_t sts_reed_hall_result, sts_work_mode, sts_service_mask; extern volatile uint8_t sts_work_mode, sts_service_mask;
volatile uint8_t sts_reed_hall_ext_int = 0; volatile uint8_t sts_reed_hall_ext_int = 0;
volatile uint8_t sts_occupancy_status; volatile uint8_t sts_occupancy_status;
volatile uint8_t sts_reed_hall_changed_flag = 0; volatile uint8_t sts_reed_hall_changed_flag = 0;
@ -581,6 +580,9 @@ void STS_SENSOR_NVM_CFG_SIMPLE(void)
void STS_O5_SENSOR_Read(STS_OO_SensorDataTypeDef *oo_data) void STS_O5_SENSOR_Read(STS_OO_SensorDataTypeDef *oo_data)
{ {
sts_reed_hall_result = (STS_Reed_Hall_State==0)?1:0;
oo_data->state_sensor1_on_off = sts_reed_hall_result; oo_data->state_sensor1_on_off = sts_reed_hall_result;

View File

@ -580,7 +580,9 @@ void LoRaWAN_Init(void)
// UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), UTIL_SEQ_RFU, STS_YunhornSTSEventP2_Process); // UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), UTIL_SEQ_RFU, STS_YunhornSTSEventP2_Process);
// UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP3), UTIL_SEQ_RFU, STS_YunhornSTSEventP3_Process); // UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP3), UTIL_SEQ_RFU, STS_YunhornSTSEventP3_Process);
#if defined(TOF_1)||defined(TOF_2)||defined(TOF_3)
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP4), UTIL_SEQ_RFU, STS_YunhornSTSEventP4_Process); UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP4), UTIL_SEQ_RFU, STS_YunhornSTSEventP4_Process);
#endif
// UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP5), UTIL_SEQ_RFU, STS_YunhornSTSEventP5_Process); // UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP5), UTIL_SEQ_RFU, STS_YunhornSTSEventP5_Process);
// UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), UTIL_SEQ_RFU, STS_YunhornSTSEventP6_Process); // UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), UTIL_SEQ_RFU, STS_YunhornSTSEventP6_Process);
// UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP7), UTIL_SEQ_RFU, STS_YunhornSTSEventP7_Process); // UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP7), UTIL_SEQ_RFU, STS_YunhornSTSEventP7_Process);
@ -614,7 +616,7 @@ void LoRaWAN_Init(void)
// Heart Beat Timer // Heart Beat Timer
// FOR Event trigger type sensor, use this as Heart Beat Timer, such as O1/O2/O3/M1 // FOR Event trigger type sensor, use this as Heart Beat Timer, such as O1/O2/O3/M1
#if (defined(YUNHORN_STS_R0_ENABLED)||defined(YUNHORN_STS_R5_ENABLED)) #if (defined(YUNHORN_STS_R0_ENABLED)||defined(YUNHORN_STS_R5_ENABLED)||defined(YUNHORN_STS_O5_ENABLED))
UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, HeartBeatPeriodicity, UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, HeartBeatPeriodicity,
UTIL_TIMER_ONESHOT, OnYunhornSTSHeartBeatTimerEvent, NULL); UTIL_TIMER_ONESHOT, OnYunhornSTSHeartBeatTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
@ -634,16 +636,16 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
case BUT1_Pin: case BUT1_Pin:
#if (defined(STS_USE_STM32WL55)||defined(STS_USE_STM32WLE5)) #if (defined(STS_USE_STM32WL55)||defined(STS_USE_STM32WLE5))
#ifdef YUNHORN_STS_O5_ENABLED #ifdef YUNHORN_STS_O5_ENABLED
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
uint8_t pinstate = (STS_Reed_Hall_State== 0)?1:0;
APP_LOG(TS_OFF, VLEVEL_L, "## BUTTON-1 DETECTED: %2d \r\n", pinstate);
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
#elif
uint8_t pinstate = HAL_GPIO_ReadPin(BUT1_GPIO_Port,BUT1_Pin);
APP_LOG(TS_OFF, VLEVEL_H, "## BUTTON-1 DETECTED: %2d \r\n", pinstate);
//if (EventType == TX_ON_EVENT) //if (EventType == TX_ON_EVENT)
if (pinstate == 1) if (pinstate == 1)
{ {
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); //UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
} else } else
{ {
#ifdef LED_ONBOARD #ifdef LED_ONBOARD
@ -785,7 +787,7 @@ static void SendTxData(void)
LmHandlerErrorStatus_t status = LORAMAC_HANDLER_ERROR; LmHandlerErrorStatus_t status = LORAMAC_HANDLER_ERROR;
uint8_t batteryLevel = GetBatteryLevel(); uint8_t batteryLevel = GetBatteryLevel();
//uint16_t batteryLevelmV = SYS_GetBatteryLevel(); //uint16_t batteryLevelmV = SYS_GetBatteryLevel();
sensor_t sensor_data; //sensor_t sensor_data;
#if defined(YUNHORN_STS_R0_ENABLED)||defined(YUNHORN_STS_R5_ENABLED) #if defined(YUNHORN_STS_R0_ENABLED)||defined(YUNHORN_STS_R5_ENABLED)
STS_R0_SensorDataTypeDef r0_data; STS_R0_SensorDataTypeDef r0_data;
#endif #endif
@ -794,10 +796,10 @@ static void SendTxData(void)
#endif #endif
UTIL_TIMER_Time_t nextTxIn = 0; UTIL_TIMER_Time_t nextTxIn = 0;
APP_LOG(TS_ON, VLEVEL_H, "\r\n Flag: Heart-beat-timer = %u \r\n upload_message_timer %u \r\n sensor_data_ready = %u \r\n", //APP_LOG(TS_ON, VLEVEL_H, "\r\n Flag: Heart-beat-timer = %u \r\n upload_message_timer %u \r\n sensor_data_ready = %u \r\n",
heart_beat_timer, upload_message_timer, sensor_data_ready); //heart_beat_timer, upload_message_timer, sensor_data_ready);
APP_LOG(TS_ON, VLEVEL_H, "\r\nVDDA: %4d (mV)\r\n", batteryLevelmV);
//if (LmHandlerIsBusy() == false) //if (LmHandlerIsBusy() == false)
{ {
uint8_t i = 0; uint8_t i = 0;
@ -819,7 +821,7 @@ static void SendTxData(void)
#endif #endif
//r0_data.battery_Pct = batteryLevel; //(uint8_t)(99*batteryLevel/254); //r0_data.battery_Pct = batteryLevel; //(uint8_t)(99*batteryLevel/254);
EnvSensors_Read(&sensor_data); // EnvSensors_Read(&sensor_data);
// APP_LOG(TS_ON, VLEVEL_M, "\r\nVDDA: %d\r\n", batteryLevel); // 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)); // APP_LOG(TS_ON, VLEVEL_M, "\r\ntemp: %d\r\n", (int16_t)(sensor_data.temperature));
@ -841,6 +843,7 @@ static void SendTxData(void)
if (heart_beat_timer != 0U) if (heart_beat_timer != 0U)
{ {
heart_beat_timer = 0U; heart_beat_timer = 0U;
AppData.Buffer[0] = AppLedStateOn|0x80; // For heartbeat message indication
AppData.Port = LORAWAN_USER_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; AppData.Port = LORAWAN_USER_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
#ifdef ROCTEC_R5 #ifdef ROCTEC_R5
AppData.Buffer[i++] = AppLedStateOn; AppData.Buffer[i++] = AppLedStateOn;
@ -856,6 +859,7 @@ static void SendTxData(void)
AppData.Buffer[i++] = (uint8_t)(r0_data.distance1_mm)&0xff; //#06 AppData.Buffer[i++] = (uint8_t)(r0_data.distance1_mm)&0xff; //#06
#elif defined(STS_O5) #elif defined(STS_O5)
AppData.Buffer[i++] = (uint8_t)(0x01)&0xff; // length of the following bytes
AppData.Buffer[i++] = (uint8_t)(oo_data.state_sensor1_on_off)&0xff; AppData.Buffer[i++] = (uint8_t)(oo_data.state_sensor1_on_off)&0xff;
#elif defined(YUNHORN_STS_R0_ENABLED) #elif defined(YUNHORN_STS_R0_ENABLED)

View File

@ -48,15 +48,18 @@ extern "C" {
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
#define TIMING_BUDGET (30U) /* 16 ms < TimingBudget < 500 ms */ #define TIMING_BUDGET (30U) /* 16 ms < TimingBudget < 500 ms */
#define POLLING_PERIOD (250U) /* refresh rate for polling mode (milliseconds, shall be consistent with TimingBudget value) */ #define POLLING_PERIOD (250U) /* refresh rate for polling mode (milliseconds, shall be consistent with TimingBudget value) */
#define MAX_TOF_COUNT (03U)
/* Private variables ---------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/
//static RANGING_SENSOR_Capabilities_t Cap; //static RANGING_SENSOR_Capabilities_t Cap;
//static RANGING_SENSOR_ProfileConfig_t Profile; //static RANGING_SENSOR_ProfileConfig_t Profile;
//static int32_t status = 0; //static int32_t status = 0;
volatile uint8_t ToF_EventDetected = 0;
extern volatile uint8_t sensor_data_ready; extern volatile uint8_t sensor_data_ready;
#if (defined(TOF_1)|| defined(TOF_2) || defined(TOF_3))
volatile uint8_t ToF_EventDetected = 0;
extern volatile int sts_tof_distance_data[MAX_TOF_COUNT]; extern volatile int sts_tof_distance_data[MAX_TOF_COUNT];
#endif
//volatile uint8_t sensor_data_ready=0; //volatile uint8_t sensor_data_ready=0;
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
#ifdef STS_USE_TOF_VL53L1X #ifdef STS_USE_TOF_VL53L1X
@ -76,9 +79,9 @@ void MX_TOF_Init(void)
/* Initialize the peripherals and the TOF components */ /* Initialize the peripherals and the TOF components */
APP_LOG(TS_OFF,VLEVEL_L,"\r\n###################### MX TOF Init... \r\n"); APP_LOG(TS_OFF,VLEVEL_L,"\r\n###################### MX TOF Init... \r\n");
#if (defined(TOF_1)|| defined(TOF_2) || defined(TOF_3))
XWL55_WLE5_53L0X_Init(); XWL55_WLE5_53L0X_Init();
#endif
//MX_53L1A2_SimpleRanging_Init(); //MX_53L1A2_SimpleRanging_Init();
/* USER CODE BEGIN TOF_Init_PostTreatment */ /* USER CODE BEGIN TOF_Init_PostTreatment */
@ -160,9 +163,9 @@ uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *mems_Dev_ID)
{ {
uint16_t Id = 0xEEAA; //0xeeaa for VL53L0X uint16_t Id = 0xEEAA; //0xeeaa for VL53L0X
uint8_t cnt =0; uint8_t cnt =0;
#if (defined(TOF_1)|| defined(TOF_2) || defined(TOF_3))
cnt = sts_tof_vl53l0x_DetectSensors(); cnt = sts_tof_vl53l0x_DetectSensors();
#endif
if (cnt > 0) if (cnt > 0)
mems_Dev_ID[0] = (Id >>8)&0xff; mems_Dev_ID[0] = (Id >>8)&0xff;
mems_Dev_ID[1] = (Id & 0xff); mems_Dev_ID[1] = (Id & 0xff);