diff --git a/Core/Inc/sys_conf.h b/Core/Inc/sys_conf.h index d4a50ca..3611754 100644 --- a/Core/Inc/sys_conf.h +++ b/Core/Inc/sys_conf.h @@ -52,7 +52,7 @@ extern "C" { /** * @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 diff --git a/Core/Inc/yunhorn_sts_sensors.h b/Core/Inc/yunhorn_sts_sensors.h index e64b7dd..4b6bc13 100644 --- a/Core/Inc/yunhorn_sts_sensors.h +++ b/Core/Inc/yunhorn_sts_sensors.h @@ -477,6 +477,7 @@ void STS_SENSOR_Function_Test_Process(void); void STS_YunhornSTSEventRFAC_Process(void); void STS_YunhornAuthenticationCode_Process(void); + /* USER CODE BEGIN Private defines */ /* In this example TIM2 input clock (TIM2CLK) is set to APB1 clock (PCLK1), diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 1a2c8cf..bbfa846 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -279,6 +279,7 @@ static void OnYunhornSTSHeartBeatTimerEvent(void *context); */ static void STS_YUNHORN_RFAC_HANDLE_PROCESS(void); + /* USER CODE END PFP */ /* Private variables ---------------------------------------------------------*/ @@ -440,6 +441,11 @@ void LoRaWAN_Init(void) UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL); UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL); + if (FLASH_IF_Init(NULL) != FLASH_IF_OK) + { + Error_Handler(); + } + /* USER CODE END LoRaWAN_Init_1 */ UTIL_TIMER_Create(&StopJoinTimer, JOIN_TIME, UTIL_TIMER_ONESHOT, OnStopJoinTimerEvent, NULL); @@ -480,13 +486,13 @@ void LoRaWAN_Init(void) /* USER CODE BEGIN LoRaWAN_Init_Last */ - + STS_REBOOT_CONFIG_Init(); UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), UTIL_SEQ_RFU, STS_MOTION_SENSOR_WakeUp_Process); UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), UTIL_SEQ_RFU, STS_SENSOR_Function_Test_Process); UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), UTIL_SEQ_RFU, STS_YunhornSTSEventRFAC_Process); - STS_REBOOT_CONFIG_Init(); + UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, HeartBeatPeriodicity, UTIL_TIMER_ONESHOT, OnYunhornSTSHeartBeatTimerEvent, NULL); UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); /* USER CODE END LoRaWAN_Init_Last */ @@ -678,8 +684,14 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) OnSystemReset(); } else if ((char)tlv_buf[CFG_CMD3] == 'S') { // Self Function Testing "YZS" - + i=0; + memset(outbuf,0x30,sizeof(outbuf)); + STS_SENSOR_Function_Test_Process(); + + HAL_Delay(5000); + i=21; + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); } else if ((char)tlv_buf[CFG_CMD3] == 'C') { // Self Function Testing "YZC" LORAWAN CLASS A/B/C @@ -731,7 +743,8 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) uint8_t cfg_in_nvm[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0}; OnRestoreSTSCFGContextRequest((uint8_t *)cfg_in_nvm); - + i = 0; + memset(outbuf,0x30,sizeof(outbuf)); outbuf[i++] = (uint8_t) 'C'; outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_MTM1]; //MTM Code outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_MTM2]; //MTM Code @@ -843,7 +856,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) break; } } // END OF *** BOARD LEVEL CONTROL OR REPORT - else if (((char)tlv_buf[CFG_CMD1] == 'P') && (tlv_buf_size >= 4)) // BEGIN OF PARAMETER CONFIG + else if (((char)tlv_buf[CFG_CMD1] == 'P') && (tlv_buf_size >= 3)) // BEGIN OF PARAMETER CONFIG { /* * YUNHORN STS PRODUCT SUBMODULE, MEMS OR SENSOR HEAD LEVEL PARAMETER TUNING SECTION @@ -926,7 +939,42 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) STS_SENSOR_Upload_Config_Invalid_Message(); break; } - } else { + } else if (((char)tlv_buf[CFG_CMD1] == 'A') && ((char)tlv_buf[CFG_CMD2] == 'C') && (tlv_buf_size == (YUNHORN_STS_AC_CODE_SIZE+2))) // BEGIN OF *** BOARD LEVEL AUTHORIZATION CODE + { + // 'AC'+ AC_CODE(20bytes) + + for (uint8_t j=0; j< YUNHORN_STS_AC_CODE_SIZE; j++) + { + sts_ac_code[j] = (uint8_t) tlv_buf[2+j]; + } + + STS_YUNHORN_RFAC_HANDLE_PROCESS(); + + if ((hmac_result.ac_pass == 1U)) + { + for (uint8_t j=0; j < YUNHORN_STS_AC_CODE_SIZE; j++) + { + sts_cfg_nvm.ac[j] = sts_ac_code[j]; + } + + sts_service_mask = STS_SERVICE_MASK_L0; + + sts_cfg_nvm.sts_service_mask = sts_service_mask; + OnStoreSTSCFGContextRequest(); + + + } else { + sts_service_mask = STS_SERVICE_MASK_L2; + + } + + i=0; + for (uint8_t j=0; j <(tlv_buf_size) ; j++) { + outbuf[i++] = (uint8_t) tlv_buf[j]; + } + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (char*)outbuf); + + } else { STS_SENSOR_Upload_Config_Invalid_Message(); } @@ -937,6 +985,13 @@ void STS_SENSOR_Upload_Config_Invalid_Message(void) STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 5, "PVXXX"); } +static void STS_YUNHORN_RFAC_HANDLE_PROCESS(void) +{ + + STS_YunhornAuthenticationCode_Process(); + +} + void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, char *appDataBuffer) { LmHandlerErrorStatus_t status = LORAMAC_HANDLER_ERROR;