revised for lorawan config saving

This commit is contained in:
Yunhorn 2024-02-06 18:44:17 +08:00
parent 361e4216e9
commit cf22bc3499
3 changed files with 89 additions and 45 deletions

View File

@ -628,6 +628,8 @@ void OnStoreSTSCFGContextRequest(void);
*/
void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm);
void STS_REBOOT_GET_NVM_CONFIG(void);
void STS_REBOOT_CONFIG_Init(void);
/**

View File

@ -26,7 +26,7 @@
#include "stm32_seq.h"
/* USER CODE BEGIN Includes */
#include "yunhorn_sts_sensors.h"
/* USER CODE END Includes */
/* External variables ---------------------------------------------------------*/
@ -70,7 +70,7 @@ void MX_LoRaWAN_Init(void)
/* USER CODE END MX_LoRaWAN_Init_1 */
SystemApp_Init();
/* USER CODE BEGIN MX_LoRaWAN_Init_2 */
STS_REBOOT_GET_NVM_CONFIG();
/* USER CODE END MX_LoRaWAN_Init_2 */
LoRaWAN_Init();
/* USER CODE BEGIN MX_LoRaWAN_Init_3 */

View File

@ -728,14 +728,26 @@ static void OnRxData(LmHandlerAppData_t *appData, LmHandlerRxParams_t *params)
}
DeviceClass_t deviceClass = CLASS_A;
LmHandlerGetCurrentClass( &deviceClass );
// Save config to NVM
sts_cfg_nvm.mtmcode1 = (uint8_t)sts_mtmcode1;
sts_cfg_nvm.mtmcode2 = (uint8_t)sts_mtmcode2;
sts_cfg_nvm.version = (uint8_t)sts_version;
sts_cfg_nvm.hardware_ver = (uint8_t)sts_hardware_ver;
sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode;
sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask;
sts_cfg_nvm.p[NVM_LORA_CLASS_ABC-12]= deviceClass;
OnStoreSTSCFGContextRequest();
APP_LOG(TS_OFF, VLEVEL_H, "###### YUNHORN LoRa WAN Class Changed to [ %c ] \r\n", "ABC"[deviceClass]);
// Save config to NVM
uint8_t i=0;
outbuf[i++] = (uint8_t) 'L';
outbuf[i++] = (uint8_t) sts_mtmcode1;
outbuf[i++] = (uint8_t) sts_mtmcode2;
outbuf[i++] = (uint8_t) sts_version;
outbuf[i++] = (uint8_t) (0x41+ deviceClass); //translate to 'A','B','C'
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (char*)outbuf);
break;
case LORAWAN_USER_APP_PORT:
if (appData->BufferSize == 1)
@ -1549,6 +1561,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
outbuf[i++] = (uint8_t) sts_mtmcode2;
outbuf[i++] = (uint8_t) sts_version;
outbuf[i++] = (uint8_t) (0x41+ deviceClass); //translate to 'A','B','C'
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (char*)outbuf);
} else if ((char)tlv_buf[CFG_CMD3] == 'D') { // Distance Measure "YZD"
i=0;
@ -2134,9 +2147,7 @@ void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm)
/* USER CODE END OnRestoreSTSCFGContextRequest_Last */
}
void STS_REBOOT_CONFIG_Init(void)
void STS_REBOOT_GET_NVM_CONFIG(void)
{
/* USER CODE BEGIN OnRestoreContextRequest_1 */
uint8_t nvm_stored_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0};
@ -2180,6 +2191,11 @@ void STS_REBOOT_CONFIG_Init(void)
}
}
}
void STS_REBOOT_CONFIG_Init(void)
{
OnRestoreSTSCFGContextProcess();
/* USER CODE END OnRestoreContextRequest_Last */
@ -2250,6 +2266,32 @@ void OnRestoreSTSCFGContextProcess(void)
#endif
// NVM_LORA_RECONFIG ====================================================
// 1) LoRa Class A/B/C
DeviceClass_t deviceClass=sts_cfg_nvm.p[NVM_LORA_CLASS_ABC-12], defaultclass;
defaultclass = LORAWAN_DEFAULT_CLASS;
if (defaultclass != deviceClass){
OnClassChange(deviceClass);
APP_LOG(TS_OFF,VLEVEL_L,"\r\nSwitch LoRaWAN Class to %c \r\n", "ABC"[deviceClass]);
}
// 2) LoRa Region and Sub Channel Plan Group
// 3) Uplink and Heart-beat port
// 4) ADR and/or DR
// 5) Activation Type ABP/OTAA
// 6) TX Power
// NVM_LORA_RECONFIG ====================================================
#ifdef YUNHORN_STS_O6_ENABLED
sts_lamp_bar_color = STS_GREEN;
sts_fall_detection_acc_threshold = (uint8_t)sts_cfg_nvm.fall_detection_acc_threshold*10;