add code
This commit is contained in:
parent
4cad199e7f
commit
06b9fe215e
@ -284,7 +284,7 @@ long SensorScheduler::CalcNextTimestamp(int id, uint16_t short_addr) {
|
|||||||
return available_ts;
|
return available_ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SensorScheduler::GetNextDuration(int short_addr) {
|
int SensorScheduler::GetNextDuration(int short_addr,int next_taskID) {
|
||||||
int id = 0;
|
int id = 0;
|
||||||
auto iter = short_addr_map_.find(short_addr);
|
auto iter = short_addr_map_.find(short_addr);
|
||||||
if (iter == short_addr_map_.end()) {
|
if (iter == short_addr_map_.end()) {
|
||||||
|
|||||||
@ -39,7 +39,7 @@ public:
|
|||||||
// 上面4个结束,调GetNextDuration()获取休眠时间
|
// 上面4个结束,调GetNextDuration()获取休眠时间
|
||||||
// 如果是kScheduleWrongTime, 此函数next_duration表明休眠时间
|
// 如果是kScheduleWrongTime, 此函数next_duration表明休眠时间
|
||||||
int StartSchedule(int short_addr, int &next_duration);
|
int StartSchedule(int short_addr, int &next_duration);
|
||||||
int GetNextDuration(int short_addr);
|
int GetNextDuration(int short_addr,int next_taskID = 3);
|
||||||
|
|
||||||
int WaveError(uint16_t short_addr);
|
int WaveError(uint16_t short_addr);
|
||||||
void WaveSuccess(uint16_t short_addr);
|
void WaveSuccess(uint16_t short_addr);
|
||||||
|
|||||||
@ -339,12 +339,6 @@ int Uart::DealAskTask(uint16_t ushortAdd){
|
|||||||
zlog_info(zct, "taskID = %d ", taskID);
|
zlog_info(zct, "taskID = %d ", taskID);
|
||||||
if (taskID == kScheduleEigenValue) //1.特征值
|
if (taskID == kScheduleEigenValue) //1.特征值
|
||||||
{
|
{
|
||||||
char localtimestamp[32] = {0x00};
|
|
||||||
int millisecond = 0;
|
|
||||||
std::string rtcTime = GetRTC(localtimestamp, millisecond);
|
|
||||||
scheduleTask.cmd = MEAS_EVAL;
|
|
||||||
scheduleTask.shortAddr = ushortAdd;
|
|
||||||
scheduleTask.timeStamp = atoi(localtimestamp);
|
|
||||||
TaskResp(scheduleTask);
|
TaskResp(scheduleTask);
|
||||||
}
|
}
|
||||||
else if (taskID == kScheduleWaveForm) //2.波形
|
else if (taskID == kScheduleWaveForm) //2.波形
|
||||||
@ -392,13 +386,19 @@ int Uart::DealException(const char* pData){
|
|||||||
|
|
||||||
int Uart::DealReviveDuration(uint16_t ushortAdd){
|
int Uart::DealReviveDuration(uint16_t ushortAdd){
|
||||||
|
|
||||||
|
char localtimestamp[32] = {0x00};
|
||||||
ScheduleTask scheduleTask;
|
ScheduleTask scheduleTask;
|
||||||
uint16_t next_duration = scheduler::instance().GetNextDuration(ushortAdd);
|
int next_taskID = 0;
|
||||||
|
uint16_t next_duration = scheduler::instance().GetNextDuration(ushortAdd,next_taskID);
|
||||||
zlog_info(zct, "next_duration = %d ", next_duration);
|
zlog_info(zct, "next_duration = %d ", next_duration);
|
||||||
scheduleTask.cmd = REVIVE_DURATION;
|
scheduleTask.cmd = REVIVE_DURATION;
|
||||||
scheduleTask.shortAddr = ushortAdd;
|
scheduleTask.shortAddr = ushortAdd;
|
||||||
scheduleTask.duration = next_duration;
|
scheduleTask.duration = next_duration;
|
||||||
|
scheduleTask.next_taskID = next_taskID & 0xFF;
|
||||||
|
int millisecond = 0;
|
||||||
|
std::string rtcTime = GetRTC(localtimestamp, millisecond);
|
||||||
|
scheduleTask.timeStamp = atoi(localtimestamp);
|
||||||
|
scheduleTask.millisecond = millisecond;
|
||||||
TaskResp(scheduleTask);
|
TaskResp(scheduleTask);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -416,6 +416,7 @@ int Uart::DealConfig(uint16_t ushortAdd){
|
|||||||
int Uart::DealWaveCompress(const char *pData,uint16_t ushortAdd){
|
int Uart::DealWaveCompress(const char *pData,uint16_t ushortAdd){
|
||||||
|
|
||||||
zlog_info(zct, "DealWaveCompress ");
|
zlog_info(zct, "DealWaveCompress ");
|
||||||
|
now_task = WAVE_CMD;
|
||||||
char buf[20] = {0x00};
|
char buf[20] = {0x00};
|
||||||
sprintf(buf, "%02x%02x", (ushortAdd >> 8) & 0xFF, ushortAdd & 0xFF);
|
sprintf(buf, "%02x%02x", (ushortAdd >> 8) & 0xFF, ushortAdd & 0xFF);
|
||||||
std::string strShortAddr = std::string(buf);
|
std::string strShortAddr = std::string(buf);
|
||||||
@ -430,6 +431,37 @@ int Uart::DealWaveCompress(const char *pData,uint16_t ushortAdd){
|
|||||||
|
|
||||||
g_mapCompress[strShortAddr] = tempchannel;
|
g_mapCompress[strShortAddr] = tempchannel;
|
||||||
|
|
||||||
|
char sensor_rssi[10] = {0x00};
|
||||||
|
sprintf(sensor_rssi, "%02d", pData[22] & 0xFF);
|
||||||
|
if (!strcmp(sensor_rssi, "00") || !strcmp(sensor_rssi, "0")) {
|
||||||
|
char errorInfo[100] = {0x00};
|
||||||
|
sprintf(errorInfo, "No RSSI %s", sensor_rssi);
|
||||||
|
zlog_error(zct, errorInfo);
|
||||||
|
} else {
|
||||||
|
char tableName[100] = {0x00};
|
||||||
|
char whereCon[100] = {0};
|
||||||
|
char updateSql[100] = {0};
|
||||||
|
sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd));
|
||||||
|
vec_t vecDataNodeNo = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " MeasurementID,RSSI ", whereCon);
|
||||||
|
sprintf(tableName, "t_dataStatic_%s", (char *)vecDataNodeNo[0].c_str());
|
||||||
|
memset(whereCon,0,sizeof(whereCon));
|
||||||
|
sprintf(whereCon, "dataNodeNo='%s' order by timeStamp desc limit 1", vecDataNodeNo[0].c_str());
|
||||||
|
std::string timestamp_last = sqlite_db_ctrl::instance().GetData(tableName, " timeStamp ", whereCon);
|
||||||
|
sprintf(updateSql, "zigbeeSignalNode = '%02d' ",atoi(sensor_rssi));
|
||||||
|
memset(whereCon,0,sizeof(whereCon));
|
||||||
|
sprintf(whereCon, "dataNodeNo='%s' and timeStamp = '%s'", (char*)vecDataNodeNo[0].c_str(),timestamp_last.c_str());
|
||||||
|
sqlite_db_ctrl::instance().UpdateTableData(tableName, updateSql, whereCon);
|
||||||
|
|
||||||
|
std::vector<std::string> vParamRSSI;
|
||||||
|
boost::split(vParamRSSI, vecDataNodeNo[1], boost::is_any_of(","), boost::token_compress_on);
|
||||||
|
memset(updateSql,0,sizeof(updateSql));
|
||||||
|
memset(whereCon,0,sizeof(whereCon));
|
||||||
|
if (vParamRSSI.size() > 0) {
|
||||||
|
sprintf(updateSql, "RSSI = '%s,%02d' ", vParamRSSI[0].c_str(), pData[7] & 0xFF);
|
||||||
|
sprintf(whereCon, "dataNodeNo='%s'", (char *)vecDataNodeNo[0].c_str());
|
||||||
|
sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), updateSql, whereCon);
|
||||||
|
}
|
||||||
|
}
|
||||||
zlog_info(zct, "count X = %d,Y = %d,Z = %d ", tempchannel.CountX, tempchannel.CountY, tempchannel.CountZ);
|
zlog_info(zct, "count X = %d,Y = %d,Z = %d ", tempchannel.CountX, tempchannel.CountY, tempchannel.CountZ);
|
||||||
zlog_info(zct, "compress X = %d,Y = %d,Z = %d ", tempchannel.compressChannelX, tempchannel.compressChannelY, tempchannel.compressChannelZ);
|
zlog_info(zct, "compress X = %d,Y = %d,Z = %d ", tempchannel.compressChannelX, tempchannel.compressChannelY, tempchannel.compressChannelZ);
|
||||||
return 0;
|
return 0;
|
||||||
@ -529,19 +561,17 @@ void Uart::DealRecvData(const char *pData) {
|
|||||||
break;
|
break;
|
||||||
case UPGRADE:
|
case UPGRADE:
|
||||||
if (recvcode == 0){
|
if (recvcode == 0){
|
||||||
DealUpgrade(ushortAdd,2);
|
zlog_info(zbt, "[UPLOAD SUCCESS] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
|
||||||
scheduler::instance().UpgradeResult(ushortAdd,0);
|
|
||||||
zlog_info(zbt, "[UPGRADE SUCCESS] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
|
|
||||||
}else if (recvcode == 5)
|
}else if (recvcode == 5)
|
||||||
{
|
{
|
||||||
DealUpgrade(ushortAdd,2);
|
DealUpgrade(ushortAdd,2);
|
||||||
scheduler::instance().UpgradeResult(ushortAdd,0);
|
scheduler::instance().UpgradeResult(ushortAdd,0);
|
||||||
zlog_warn(zbt, "[UPGRADE ALREADY] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
|
zlog_warn(zbt, "[UPLOAD ALREADY] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
DealUpgrade(ushortAdd,3);
|
DealUpgrade(ushortAdd,3);
|
||||||
scheduler::instance().UpgradeResult(ushortAdd,recvcode);
|
scheduler::instance().UpgradeResult(ushortAdd,recvcode);
|
||||||
zlog_warn(zbt, "[UPGRADE FAILED] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
|
zlog_warn(zbt, "[UPLOAD FAILED] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CONFIG:
|
case CONFIG:
|
||||||
@ -581,7 +611,14 @@ void Uart::DealDataNodeName(const char *pData) {
|
|||||||
}
|
}
|
||||||
char MeasurementID[100] = {0x00};
|
char MeasurementID[100] = {0x00};
|
||||||
sprintf(MeasurementID, "%02x%02x%02x%02x%02x%02x%02x%02x", pData[71], pData[72], pData[73], pData[74], pData[75], pData[76], pData[77], pData[78]);
|
sprintf(MeasurementID, "%02x%02x%02x%02x%02x%02x%02x%02x", pData[71], pData[72], pData[73], pData[74], pData[75], pData[76], pData[77], pData[78]);
|
||||||
sprintf(nodeWaveSend, "%d,%d,%d", GET_BIT(pData[79], 0), GET_BIT(pData[79], 1), GET_BIT(pData[79], 2));
|
uint8_t upgrade = pData[79] & 0xFF;
|
||||||
|
if (upgrade == 1)
|
||||||
|
{
|
||||||
|
uint16_t ushortAdd = BUILD_UINT16(pData[3] & 0xFF, pData[4] & 0xFF);
|
||||||
|
DealUpgrade(ushortAdd,2);
|
||||||
|
scheduler::instance().UpgradeResult(ushortAdd,0);
|
||||||
|
}
|
||||||
|
|
||||||
char gbkNodeName[128] = {0x00};
|
char gbkNodeName[128] = {0x00};
|
||||||
sprintf(whereCon, "zigbeeShortAddr='%s'", szShortAdd);
|
sprintf(whereCon, "zigbeeShortAddr='%s'", szShortAdd);
|
||||||
zlog_info(zct, "whereCon = %s", whereCon);
|
zlog_info(zct, "whereCon = %s", whereCon);
|
||||||
|
|||||||
@ -118,11 +118,17 @@ typedef struct ScheduleTask_{
|
|||||||
uint16_t shortAddr;
|
uint16_t shortAddr;
|
||||||
uint16_t duration;
|
uint16_t duration;
|
||||||
uint32_t timeStamp;
|
uint32_t timeStamp;
|
||||||
|
uint16_t millisecond;
|
||||||
|
uint8_t next_taskID;
|
||||||
|
uint8_t acc_z;
|
||||||
ScheduleTask_(){
|
ScheduleTask_(){
|
||||||
cmd = 0;
|
cmd = 0;
|
||||||
shortAddr = 0;
|
shortAddr = 0;
|
||||||
duration = 0;
|
duration = 0;
|
||||||
timeStamp = 0;
|
timeStamp = 0;
|
||||||
|
millisecond = 0;
|
||||||
|
next_taskID = 0;
|
||||||
|
acc_z = 0;
|
||||||
}
|
}
|
||||||
} ScheduleTask;
|
} ScheduleTask;
|
||||||
|
|
||||||
|
|||||||
@ -1040,7 +1040,9 @@ void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChan
|
|||||||
}
|
}
|
||||||
//传感器发来的数据包中的表示设备信息的数据转化为json格式后,通过调用data_publish将数据传给mqttclient : Topic:wireless/cmd/60294D203717
|
//传感器发来的数据包中的表示设备信息的数据转化为json格式后,通过调用data_publish将数据传给mqttclient : Topic:wireless/cmd/60294D203717
|
||||||
|
|
||||||
int iRet = data_publish(WaveData.c_str(), GlobalConfig::Topic_G.mPubWaveData.c_str());
|
int iRet = data_publish(WaveData.c_str(
|
||||||
|
|
||||||
|
), GlobalConfig::Topic_G.mPubWaveData.c_str());
|
||||||
if (iRet != 0) {
|
if (iRet != 0) {
|
||||||
char whereCon[1024] = {0x00};
|
char whereCon[1024] = {0x00};
|
||||||
char updateSql[1024] = {0x00};
|
char updateSql[1024] = {0x00};
|
||||||
|
|||||||
@ -562,12 +562,15 @@ int Uart::TaskResp(ScheduleTask scheduleTask){
|
|||||||
{
|
{
|
||||||
UpdateData[7] = UINT16_LOW(scheduleTask.duration);
|
UpdateData[7] = UINT16_LOW(scheduleTask.duration);
|
||||||
UpdateData[8] = UINT16_HIGH(scheduleTask.duration);
|
UpdateData[8] = UINT16_HIGH(scheduleTask.duration);
|
||||||
}else if (scheduleTask.cmd == MEAS_EVAL)
|
|
||||||
{
|
|
||||||
UpdateData[9] = UINT32_LOW_2(scheduleTask.timeStamp);
|
UpdateData[9] = UINT32_LOW_2(scheduleTask.timeStamp);
|
||||||
UpdateData[10] = UINT32_LOW_1(scheduleTask.timeStamp);
|
UpdateData[10] = UINT32_LOW_1(scheduleTask.timeStamp);
|
||||||
UpdateData[11] = UINT32_HIGH_2(scheduleTask.timeStamp);
|
UpdateData[11] = UINT32_HIGH_2(scheduleTask.timeStamp);
|
||||||
UpdateData[12] = UINT32_HIGH_1(scheduleTask.timeStamp);
|
UpdateData[12] = UINT32_HIGH_1(scheduleTask.timeStamp);
|
||||||
|
UpdateData[20] = UINT16_HIGH(scheduleTask.acc_z);
|
||||||
|
UpdateData[21] = UINT16_HIGH(scheduleTask.next_taskID);
|
||||||
|
UpdateData[22] = UINT32_LOW_2(scheduleTask.millisecond);
|
||||||
|
UpdateData[23] = UINT32_LOW_1(scheduleTask.millisecond);
|
||||||
|
|
||||||
}else if (scheduleTask.cmd == WAVE_CMD)
|
}else if (scheduleTask.cmd == WAVE_CMD)
|
||||||
{
|
{
|
||||||
uint8_t x,y,z;
|
uint8_t x,y,z;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user