pre-production-r2

This commit is contained in:
YunHorn Technology 2022-10-28 19:11:15 +08:00
parent dc59907fa7
commit e6e6680177
7 changed files with 146 additions and 128 deletions

View File

@ -223,12 +223,16 @@
#define YUNHORN_STS_M7_LORA_APP_DATA_PORT 20U
#define YUNHORN_STS_M7_LORA_APP_HTBT_PORT 21U
#define YUNHORN_STS_M7_USER_APP_CTRL_PORT 2U
#define sts_mtmcode1 0U
#define sts_mtmcode2 9U
#define sts_version 1U
#define sts_senddataport YUNHORN_STS_M7_LORA_APP_DATA_PORT
#define sts_sendhtbtport YUNHORN_STS_M7_LORA_APP_HTBT_PORT
#define sts_appctrlport YUNHORN_STS_M7_USER_APP_CTRL_PORT
#define YUNHORN_STS_M7_USER_APP_CTRL_REPLY_PORT 1U
#define sts_mtmcode1 0U
#define sts_mtmcode2 9U
#define sts_hardware_ver 0U
#define sts_version 1U
#define sts_senddataport YUNHORN_STS_M7_LORA_APP_DATA_PORT
#define sts_sendhtbtport YUNHORN_STS_M7_LORA_APP_HTBT_PORT
#define sts_appctrlport YUNHORN_STS_M7_USER_APP_CTRL_PORT
#define sts_appctrl_reply_port YUNHORN_STS_M7_USER_APP_CTRL_REPLY_PORT
#define NVM_CFG_PARAMETER_SIZE YUNHORN_STS_M7_NVM_CFG_SIZE
#define CFG_CMD_PARAMETER_SIZE YUNHORN_STS_M7_CFG_CMD_SIZE
#define MEMS_POWER_Pin GPIO_PIN_4

View File

@ -371,6 +371,7 @@ enum {
NVM_MTM1=0,
NVM_MTM2,
NVM_VER,
NVM_HWV,
NVM_PERIODICITY_H,
NVM_PERIODICITY_L,
NVM_UNIT,
@ -381,6 +382,7 @@ typedef struct sts_cfg_nvm {
uint8_t mtmcode1;
uint8_t mtmcode2;
uint8_t version;
uint8_t hardware_ver;
uint8_t periodicity_h; //count of duty cycle duration high {0,9}
uint8_t periodicity_l; //count of duty cycle duration low {0,9}
uint8_t unit; // time unit of duty cycle duration, in 'S', 'M','H' seconds, minutes, hours

View File

@ -95,7 +95,7 @@ int main(void)
MX_LoRaWAN_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */

View File

@ -45,7 +45,7 @@
/* USER CODE BEGIN EV */
volatile uint8_t mems_int1_detected = 0;
volatile uint8_t periodicity_level=0;
volatile sts_cfg_nvm_t sts_cfg_nvm={sts_mtmcode1,sts_mtmcode2, sts_version,0x01,0x05,'S',0x03,0x08,0x04,0x02};
volatile sts_cfg_nvm_t sts_cfg_nvm={sts_mtmcode1,sts_mtmcode2, sts_version, sts_hardware_ver, 0x01,0x05,'S',0x03,0x08,0x04,0x02};
#ifdef YUNHORN_STS_M7_ENABLED
extern volatile uint8_t sensor_data_ready;
extern volatile STS_M7_SensorDataTypeDef sts_m7_sensorData;
@ -354,8 +354,8 @@ void LoRaWAN_Init(void)
/* USER CODE END LoRaWAN_Init_LV */
/* USER CODE BEGIN LoRaWAN_Init_1 */
APP_LOG(TS_OFF, VLEVEL_M, "\r\n\n\n##### YUNHORN_STS_FW:%d HW:%d.%d.%d SW:%d.%d.%d####\r\n\n\n",
FirmwareVersion, sts_mtmcode1,sts_mtmcode2,sts_version, MajorVer, MinorVer, SubMinorVer);
APP_LOG(TS_OFF, VLEVEL_M, "\r\n\n\n##### YUNHORN_STS_FW:%d SWV%d HWV:%d MTM:%d.%d R:%d.%d.%d####\r\n\n\n",
FirmwareVersion, sts_version, sts_hardware_ver, sts_mtmcode1,sts_mtmcode2, MajorVer, MinorVer, SubMinorVer);
/* Get LoRaWAN APP version*/
APP_LOG(TS_OFF, VLEVEL_M, "APPLICATION_VERSION: V%X.%X.%X\r\n",
(uint8_t)(APP_VERSION_MAIN),
@ -604,7 +604,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
case 'Z': //"YZ"
if ((char)tlv_buf[CFG_CMD3] == 'H') { //BOARD SOFT RESET, REVIVE "YZH"
//BOARD REVIVE
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, 20, "!YunHorn STS Revive!");
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 20, "!YunHorn STS Revive!");
HAL_Delay(5000);
OnSystemReset();
@ -622,7 +622,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_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
}
break;
@ -637,7 +637,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
outbuf[i++] = (uint8_t) MajorVer;
outbuf[i++] = (uint8_t) MinorVer;
outbuf[i++] = (uint8_t) SubMinorVer;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
APP_LOG(TS_OFF, VLEVEL_L, "###### YUNHORN Report Version [ %10x ] \r\n", outbuf);
}
else
@ -658,7 +658,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
for (uint8_t j=1; j <= cfg_in_nvm[NVM_LEN]; j++) {
outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_LEN+j]);
}
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
APP_LOG(TS_OFF, VLEVEL_L, "###### YUNHORN Report Config in NVM [ %10x ] \r\n", outbuf);
}
@ -672,7 +672,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
} else {
STS_SENSOR_Upload_Config_Invalid_Message();
}
@ -685,7 +685,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
} else {
STS_SENSOR_Upload_Config_Invalid_Message();
}
@ -698,7 +698,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
} else {
STS_SENSOR_Upload_Config_Invalid_Message();
}
@ -728,11 +728,12 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
// Save config to NVM
sts_cfg_nvm.mtmcode1 = sts_mtmcode1;
sts_cfg_nvm.mtmcode2 = sts_mtmcode2;
sts_cfg_nvm.version = sts_version;
sts_cfg_nvm.hardware_ver = sts_hardware_ver;
sts_cfg_nvm.periodicity_h = tlv_buf[CFG_CMD3];
sts_cfg_nvm.periodicity_l = tlv_buf[CFG_CMD4];
sts_cfg_nvm.unit = periodicity_unit;
@ -782,6 +783,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
outbuf[i++] = sts_mtmcode1;
outbuf[i++] = sts_mtmcode2;
outbuf[i++] = sts_version;
outbuf[i++] = sts_hardware_ver;
outbuf[i++] = (uint8_t) act_threshold;
outbuf[i++] = (uint8_t) inact_threshold;
outbuf[i++] = (uint8_t) inact_duration;
@ -790,6 +792,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
sts_cfg_nvm.mtmcode1 = sts_mtmcode1;
sts_cfg_nvm.mtmcode2 = sts_mtmcode2;
sts_cfg_nvm.version = sts_version;
sts_cfg_nvm.hardware_ver = sts_hardware_ver;
sts_cfg_nvm.length = NVM_CFG_PARAMETER_SIZE;
sts_cfg_nvm.p[0] = (uint8_t) act_threshold;
@ -806,7 +809,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
}
#endif
// Step 3: Upload status update message
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
#if defined(YUNHORN_STS_R1_ENABLED) || defined(YUNHORN_STS_R2_ENABLED)|| defined(YUNHORN_STS_R3_ENABLED) || defined(YUNHORN_STS_R5_ENABLED)
#endif
@ -836,7 +839,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
void STS_SENSOR_Upload_Config_Invalid_Message(void)
{
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, 5, "PVXXX");
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 5, "PVXXX");
}
void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, char *appDataBuffer)
@ -847,7 +850,7 @@ void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, char
for (uint8_t i=0;i<appBufferSize; i++) {
AppData.Buffer[i] = appDataBuffer[i];
}
AppData.Port = LORAWAN_USER_APP_PORT;
AppData.Port = appDataPort;
AppData.BufferSize = appBufferSize;
status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false);
@ -936,37 +939,40 @@ static void SendTxData(void)
STS_MOTION_SENSOR_Read(&m7_data);
AppData.Port = LORAWAN_USER_APP_PORT;
AppData.Buffer[i++] = AppLedStateOn;
AppData.Buffer[i++] = AppLedStateOn; //#01
if (sensor_data_ready == 0L) return ;
if (sensor_data_ready != 0L)
{
sensor_data_ready =0;
AppData.Buffer[i++] = (uint8_t)(0xFF & sts_mtmcode1); //AppLedStateOn;
AppData.Buffer[i++] = (uint8_t)(0xFF & sts_mtmcode2); //AppLedStateOn;
sensor_data_ready =0;
AppData.Buffer[i++] = (uint8_t)(0xFF & sts_mtmcode1); //mtmcode1; //#02
AppData.Buffer[i++] = (uint8_t)(0xFF & sts_mtmcode2); //mtmcode2; //#03
AppData.Buffer[i++] = (uint8_t)(0xFF & sts_hardware_ver); //hardware_Ver; //#04
AppData.Buffer[i++] = (uint8_t)(99*batteryLevel/254); //#05 /* 99% (very low) to 254 (fully charged) */
AppData.Buffer[i++] = 0x00; //temp //#06
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vibration_duration); //03
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vibration_duration); //07
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_freq >> 8); //04 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_freq); //05 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_freq >> 8); //08 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_freq); //09 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_freq >> 8); //06 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_freq); //07 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_freq >> 8); //10 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_freq); //11 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_freq >> 8); //08 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_freq); //09 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_freq >> 8); //12 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_freq); //13 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_rms >> 8 ); //10 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_rms); //11
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_rms >> 8 ); //14 Freq Max 256 Hz Given sample rate & FFT Length 512
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_x_rms); //15
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_rms >> 8); //12
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_rms); //13
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_rms >> 8); //16
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_y_rms); //17
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_rms >>8 ); //14
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_rms); //15
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_rms >>8 ); //18
AppData.Buffer[i++] = (uint8_t)(0xFF & m7_data.vb_z_rms); //19
AppData.Buffer[i++] = (uint8_t)(99*batteryLevel/254); //16 /* 99% (very low) to 254 (fully charged) */
APP_LOG(TS_OFF, VLEVEL_H, "###### Duration:%02d seconds | FREQ_X:%d Hz | FREQ_Y:%d Hz | FREQ_Z:%d Hz |\r\n###### | RMS_X:%d | RMS_Y:%d | RMS_Z:%d | BATTERY_B:%02d%% |\r\n",
AppData.Buffer[3],
@ -986,7 +992,7 @@ static void SendTxData(void)
else
{
}
AppData.Buffer[5] = (uint8_t)(i-6); //size of appData
AppData.BufferSize = i;
if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET))
@ -1353,6 +1359,7 @@ void OnStoreSTSCFGContextRequest(void)
nvm_store_value[i++] = sts_mtmcode1;
nvm_store_value[i++] = sts_mtmcode2;
nvm_store_value[i++] = sts_cfg_nvm.version;
nvm_store_value[i++] = sts_hardware_ver;
nvm_store_value[i++] = sts_cfg_nvm.periodicity_h;
nvm_store_value[i++] = sts_cfg_nvm.periodicity_l;
nvm_store_value[i++] = sts_cfg_nvm.unit;
@ -1433,6 +1440,7 @@ void STS_REBOOT_CONFIG_Init(void)
sts_cfg_nvm.mtmcode1 = (uint8_t)nvm_stored_value[NVM_MTM1];
sts_cfg_nvm.mtmcode2 = (uint8_t)nvm_stored_value[NVM_MTM2];
sts_cfg_nvm.version = (uint8_t)nvm_stored_value[NVM_VER];
sts_cfg_nvm.hardware_ver = (uint8_t)nvm_stored_value[NVM_HWV];
sts_cfg_nvm.periodicity_h = (uint8_t)(nvm_stored_value[NVM_PERIODICITY_H]);
sts_cfg_nvm.periodicity_l = (uint8_t)(nvm_stored_value[NVM_PERIODICITY_L]);
sts_cfg_nvm.unit = (uint8_t)(nvm_stored_value[NVM_UNIT]);
@ -1488,7 +1496,7 @@ void OnRestoreSTSCFGContextProcess(void)
void STS_SENSOR_Function_Test_Process(void)
{
char outbuf[32] =""; uint8_t i=0, count=10;
int16_t self_test_result[9]={0,0,0, 0,0,0, 0,0,0};
int16_t self_test_result[9]={0,0,0,0, 0,0,0, 0,0};
#ifdef YUNHORN_STS_M7_ENABLED
STS_MOTION_SENSOR_Function_Test_Process(&self_test_result[0], count);
@ -1497,6 +1505,9 @@ void STS_SENSOR_Function_Test_Process(void)
outbuf[i++] = (uint8_t) sts_mtmcode1;
outbuf[i++] = (uint8_t) sts_mtmcode2;
outbuf[i++] = (uint8_t) sts_version;
outbuf[i++] = (uint8_t) sts_hardware_ver;
outbuf[i++] = (uint8_t) (99*((GetBatteryLevel()/254)&0xff));
outbuf[i++] = (uint8_t) (self_test_result[0]>>8)&0xff;
outbuf[i++] = (uint8_t) (self_test_result[0])&0xff;
@ -1525,7 +1536,7 @@ void STS_SENSOR_Function_Test_Process(void)
outbuf[i++] = (uint8_t) (self_test_result[8])&0xff;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_PORT, i, outbuf);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf);
#endif

View File

@ -57,6 +57,7 @@ extern "C" {
*/
#define LORAWAN_USER_APP_PORT sts_senddataport
#define LORAWAN_USER_APP_CTRL_PORT sts_appctrlport
#define LORAWAN_USER_APP_CTRL_REPLY_PORT sts_appctrl_reply_port
/*!
* LoRaWAN Switch class application port
* @note do not use 224. It is reserved for certification

File diff suppressed because one or more lines are too long

View File

@ -77,7 +77,7 @@
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>0</CpuCode>
<CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@ -433,7 +433,7 @@
<Group>
<GroupName>Application/User/LoRaWAN/App</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>