diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml index 893d1b4..1d893ec 100644 --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/common/common_func.cpp b/common/common_func.cpp index 6888fef..92c2754 100644 --- a/common/common_func.cpp +++ b/common/common_func.cpp @@ -74,7 +74,7 @@ std::string GetLocalTimeWithMs(void) { char buffer[80] = {0}; struct tm nowTime; - localtime_r(&curTime.tv_sec, &nowTime); //闂傚倷鑳堕、濠傗枖濞戙垺鏅濋柕?濇?椤?粙?洪鈧粔瀵哥矆閸℃稒鐓欐繛鍫濈仢閺??喖鏌i敐澶?喚闁哄?绋掔换婵?礋椤愵澀?梻浣割吔閺夊灝??悗瑙?礃椤ㄥ﹥淇婇悜钘壩ч柛婊€鐒︿簺闂傚倷绀侀幖?﹀?閸愭祴鏋栨繛鎴欏灩閸ㄥ倿骞?ǎ顒€濡介柣鎾亾闁??绠嶉崕鍗灻?敃鍌涘仼闂侇剙绉甸悡鏇㈡煙闁箑澧柛锝?秺閺岋絾骞婇柛鏂跨Ф缁瑦寰勯幇鍨櫍闂侀潧臎閸滀焦啸缂傚倸鍊烽悞锕€鐣峰Ο琛℃灃闁哄洢鍨归悡婵?煠濞村鏉归柛瀣崌閹兘鏌囬敂鍙?箓?洪崨濠?嚂闁瑰嚖鎷� + localtime_r(&curTime.tv_sec, &nowTime); //闂傚倷鑳堕、濠傗枖濞戙垺鏅濋柕�?濇�?�椤�?粙�?�洪鈧粔瀵哥矆閸℃稒鐓欐繛鍫濈仢閺�??喖鏌i敐澶�?�喚闁哄�?绋掔换婵�?礋椤愵澀�?梻浣割吔閺夊灝�?�?悗瑙�?礃椤ㄥ﹥淇婇悜钘壩ч柛婊€鐒︿簺闂傚倷绀侀幖�?�﹀�?閸愭祴鏋栨繛鎴欏灩閸ㄥ倿骞�?ǎ顒€濡介柣鎾亾闁�?��?�绠嶉崕鍗灻�?敃鍌涘仼闂侇剙绉甸悡鏇㈡煙闁箑澧柛锝�?秺閺岋絾骞婇柛鏂跨Ф缁瑦寰勯幇鍨櫍闂侀潧臎閸滀焦啸缂傚倸鍊烽悞锕€鐣峰Ο琛℃灃闁哄洢鍨归悡婵�?煠濞村鏉归柛瀣崌閹兘鏌囬敂鍙�?箓�?�洪崨濠�?嚂闁瑰嚖鎷� strftime(buffer, sizeof(buffer), "%Y%m%d%H%M%S", &nowTime); char currentTime[84] = {0}; @@ -110,13 +110,13 @@ int code_convert(const char *from_charset, const char *to_charset, char *inbuf, int InitGpio(unsigned int gpioN, unsigned int inout) { int fd = 0; char tmp[100] = {0}; - //闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵?劜椤洟鏌熸潏鈺佲偓宄闂備浇宕?慨鎶芥倿閿曞倸纾块柟璺哄閸?剦鏁嗛柛鏇ㄥ亝椤ユ繈姊洪幖鐐插姷闂傚?瀚伴、鏇㈡晸閿燂? + //闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵�?劜椤洟鏌熸潏鈺佲偓宄闂備浇宕�?慨鎶芥倿閿曞倸纾块柟璺哄閸�?剦鏁嗛柛鏇ㄥ亝椤ユ繈姊洪幖鐐插姷闂傚�?瀚伴、鏇㈡晸閿燂�? fd = open("/sys/class/gpio/export", O_WRONLY); if (-1 == fd) { zlog_error(zbt, "open gpio export file error"); return 1; } - //闂傚倷鐒﹂惇褰掑垂瑜版帗鍋柛銉墻閺佸鏌i悙??紬io + //闂傚倷鐒﹂惇褰掑垂瑜版帗鍋柛銉墻閺佸鏌i悙�?�?紬io sprintf(tmp, "%d", gpioN); if (write(fd, tmp, strlen(tmp)) < 0) { zlog_error(zbt, "write file operation error:%s", tmp); @@ -126,7 +126,7 @@ int InitGpio(unsigned int gpioN, unsigned int inout) { close(fd); sleep(1); -//闂傚倸鍊烽悞锕€??Ο鑲╃煋闁割偅娲橀崑?堟煕閻?彃鍘o闂傚倷绀侀幖?﹀磹婵犳艾绠犻柟鎹愵嚙缁犳牠鏌ㄩ悤鍌涘? +//闂傚倸鍊烽悞锕€�?�?Ο鑲╃煋闁割偅娲橀崑�?�堟煕閻�?彃鍘o闂傚倷绀侀幖�?�﹀磹婵犳艾绠犻柟鎹愵嚙缁犳牠鏌ㄩ悤鍌涘�? #ifdef G2UL_GATEWAY char tmp2[100] = {0}; if (gpioN == 507) @@ -234,15 +234,14 @@ int gpio_set(unsigned int gpioN, char x) { sprintf(tmp, "/sys/class/gpio/gpio%d/value", gpioN); #endif - zlog_info(zbt, "set GPIO = %s", tmp); - //闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖?﹀磹缁?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷 + //闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵�?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖�?�﹀磹缁�?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷 fd = open(tmp, O_WRONLY); if (-1 == fd) { zlog_error(zbt, "[%s] open gpio export file error", tmp); close(fd); return (-1); } - //闂備浇宕?慨宕囩矆娴h娅犲ù鐘?儐閸嬵亪鏌涢埄鍐?闁稿鍔戝濠?醇閻旂儤鍒涢梺褰掓交閹凤? + //闂備浇宕�?慨宕囩矆娴h娅犲ù鐘�?儐閸嬵亪鏌涢埄鍐�?�闁稿鍔戝濠�?醇閻旂儤鍒涢梺褰掓交閹凤�? if (x) { if (-1 == write(fd, "1", sizeof("1"))) { zlog_error(zbt, "%d write operation value error", gpioN); @@ -256,7 +255,6 @@ int gpio_set(unsigned int gpioN, char x) { return (-3); } } - zlog_info(zbt, "gpio%d set %d ok", gpioN, x); close(fd); return 0; } @@ -304,20 +302,19 @@ int gpio_read(unsigned int gpioN) { #ifdef IMX6UL_GATEWAY sprintf(tmp, "/sys/class/gpio/gpio%d/value", gpioN); #endif - //闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖?﹀磹缁?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷 + //闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵�?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖�?�﹀磹缁�?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷 fd = open(tmp, O_RDONLY); if (-1 == fd) { zlog_error(zbt, "%d open gpio export file error", gpioN); return (-1); } - //闂備浇宕?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鐗堟櫢闁跨噦鎷� value闂傚倷绀侀幖?﹀磹缁?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷 + //闂備浇宕�?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鐗堟櫢闁跨噦鎷� value闂傚倷绀侀幖�?�﹀磹缁�?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷 if (-1 == read(fd, &value, sizeof(value))) { zlog_error(zbt, "%d read gpiovalue is fail", gpioN); close(fd); return (-2); } close(fd); - zlog_info(zbt, "gpio%d get %d", gpioN, value); return value; } @@ -496,14 +493,14 @@ std::string GetRTC(char *timestamp, int &millisecond) { printf("RTC date/time is %d-%d-%d, %02d:%02d:%02d\n", rtc_tm.tm_year + 1900, rtc_tm.tm_mon + 1, rtc_tm.tm_mday, rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); sprintf(rtcTime, "%d-%d-%d, %02d:%02d:%02d", rtc_tm.tm_year + 1900, rtc_tm.tm_mon + 1, rtc_tm.tm_mday, rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); - // 闂備浇?х换鎰崲閹版澘鏋侀柛?囧发_time缂傚倸鍊搁崐鐑芥倿閿曞倸绠板┑鐘崇閸婂灚銇勯弽銊р姇濠殿垱鎸抽弻鐔煎?閹板灚缍堢紓浣风贰閸o綁??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鏂跨┘me_t闂傚倷绀侀幖?﹀?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈傚亾缂佺媴缍侀弻銊╂偆閸屾稑?� + // 闂備浇�?�х换鎰崲閹版澘鏋侀柛�?�囧发_time缂傚倸鍊搁崐鐑芥倿閿曞倸绠板┑鐘崇閸婂灚銇勯弽銊р姇濠殿垱鎸抽弻鐔煎�?�閹板灚缍堢紓浣风贰閸o綁�??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鏂跨┘me_t闂傚倷绀侀幖�?�﹀�?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈傚亾缂佺媴缍侀弻銊╂偆閸屾稑�?�� tm.tm_year = rtc_tm.tm_year; tm.tm_mon = rtc_tm.tm_mon; tm.tm_mday = rtc_tm.tm_mday; tm.tm_hour = rtc_tm.tm_hour; tm.tm_min = rtc_tm.tm_min; tm.tm_sec = rtc_tm.tm_sec; - tm.tm_isdst = -1; // 婵犵數鍋為崹?曞?閸濄儳?撻柧蹇e亞缁犻箖鏌涢妷?煎?闁?鍔戦弻鏇熺?閸喖?跺┑鈥冲级閸庢娊婀侀梺缁橈供閸犳牠鍩?椤掍胶澧い顏勫暣閺佹捇鏁撻敓锟? + tm.tm_isdst = -1; // 婵犵數鍋為崹�?曞�?�閸濄儳�?撻柧蹇e亞缁犻箖鏌涢妷�?�煎�?闁�?�鍔戦弻鏇熺�?�閸喖�?跺┑鈥冲级閸庢娊婀侀梺缁橈供閸犳牠鍩�?椤掍胶澧い顏勫暣閺佹捇鏁撻敓锟�? rtc_timestamp = mktime(&tm); @@ -719,8 +716,8 @@ void ImportConfig(std::string filename) { } int UpdataDataNodeConfig(std::string filename) { - std::vector vecDataNode; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸?亶鏌熺?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦?勯幇鍨櫆闂佸憡娲﹂崢浠??箟閼姐倗纾藉ù锝?嚃濞?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩?濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟? - //婵犵數鍋涢顓熸叏娴兼潙纾块柟缁㈠櫘閺佸霉閸忓吋缍戠紒鈧崒鐐寸厪濠㈣埖鐩顕€鏌i幘瀵告?闁逞屽?椤旀牠宕伴弽顐e床闁瑰鍋炲▍鐘绘煥閺囨浜惧銈嗘穿缂嶄線宕洪埀顒併亜閹烘垵顏╂俊?o耿閺屾盯濡烽鐐??嶅銈嗗姧閹凤拷 + std::vector vecDataNode; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸�?�亶鏌熺�?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦�?�勯幇鍨櫆闂佸憡娲﹂崢浠�??箟閼姐倗纾藉ù锝�?嚃濞�?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩�?�濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟�? + //婵犵數鍋涢顓熸叏娴兼潙纾块柟缁㈠櫘閺佸霉閸忓吋缍戠紒鈧崒鐐寸厪濠㈣埖鐩顕€鏌i幘瀵告�?闁逞屽�?椤旀牠宕伴弽顐e床闁瑰鍋炲▍鐘绘煥閺囨浜惧銈嗘穿缂嶄線宕洪埀顒併亜閹烘垵顏╂俊�?�o耿閺屾盯濡烽鐐�?�?嶅銈嗗姧閹凤拷 std::ifstream csv_data(filename, std::ios::in); int iRet = 0; if (!csv_data.is_open()) { @@ -728,16 +725,16 @@ int UpdataDataNodeConfig(std::string filename) { return -1; } std::string line; - std::vector words; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸?亶鏌熺?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦?勯幇鍨櫆闂佸憡娲﹂崢浠??箟閼姐倗纾藉ù锝?嚃濞?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩?濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟? + std::vector words; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸�?�亶鏌熺�?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦�?�勯幇鍨櫆闂佸憡娲﹂崢浠�??箟閼姐倗纾藉ù锝�?嚃濞�?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩�?�濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟�? std::string word; DataNodeInfo dataNode; - // ------------闂備浇宕?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞?ゆ巻鍋撻柡瀣╃窔閺岋絽螖閳ь剟鎮ч崱娆戠焾闁跨噦鎷?----------------- - // 闂備浇宕?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞?ゆ巻鍋撻柛鎰ㄥ亾闂備焦?堕崕娲礈閿曞倸姹叉い鏍仦閸?姵绻涢幋锝嗙彧閻庢熬鎷� + // ------------闂備浇宕�?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞�?�ゆ巻鍋撻柡瀣╃窔閺岋絽螖閳ь剟鎮ч崱娆戠焾闁跨噦鎷�?----------------- + // 闂備浇宕�?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞�?�ゆ巻鍋撻柛鎰ㄥ亾闂備焦�?堕崕娲礈閿曞倸姹叉い鏍仦閸�?姵绻涢幋锝嗙彧閻庢熬鎷� getline(csv_data, line); std::istringstream sin; - // 闂傚倷绀佸﹢杈ㄧ仚濡?倧闄?繛濠?Υ娓氣偓?炲鎮╅崘鑼酱闂佽崵?村ú锕併亹閸愵亜绶ら柛褎顨嗛悡娑樏归敐鍛儓?わ綀鍋愰埀顒冾潐閹碱偊骞忛敓锟? + // 闂傚倷绀佸﹢杈ㄧ仚濡�?倧闄�?繛濠�?Υ娓氣偓�?�炲鎮╅崘鑼酱闂佽崵�?村ú锕併亹閸愵亜绶ら柛褎顨嗛悡娑樏归敐鍛儓�?�わ綀鍋愰埀顒冾潐閹碱偊骞忛敓锟�? while (getline(csv_data, line)) { words.clear(); sin.clear(); @@ -1014,7 +1011,7 @@ std::string GetFileContent(std::string filename, int line) { return strFileContent; } -// BOOST闂傚倷鑳堕崕鐢?磻閹捐绀夌€广儱顦介?鍡?節婵犲倻澧曠紒鈧崱妯肩闁糕剝锚缁旈箖鏌嶈閸撴瑩宕姘肩劷闊洦绋戠粻?辨喐韫囨洘鍏滈柍?鍓?穱濠?Χ閸ヮ灝銏ゆ煟椤撴繄绐旈柟顖欑劍缁诲懘??弴銏♀拺闂傚牃鏅犲?界節閵忊埗?堚?﹂崶顒€绀冩い鏃囧琚濋梻浣?閸??棝宕伴幘璇参ラ柨鐕傛? +// BOOST闂傚倷鑳堕崕鐢�?�磻閹捐绀夌€广儱顦介�?鍡�?�節婵犲倻澧曠紒鈧崱妯肩闁糕剝锚缁旈箖鏌嶈閸撴瑩宕姘肩劷闊洦绋戠粻�?�辨喐韫囨洘鍏滈柍�?�鍓�?穱濠�?Χ閸ヮ灝銏ゆ煟椤撴繄绐旈柟顖欑劍缁诲懘�?�?弴銏♀拺闂傚牃鏅犲�?�界節閵忊埗�?�堚�?﹂崶顒€绀冩い鏃囧琚濋梻浣�?�閸�??棝宕伴幘璇参ラ柨鐕傛�? bool CheckIP(const char *ip) { boost::xpressive::cregex reg_ip = boost::xpressive::cregex::compile("(25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])[.](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[.](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[.](25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])"); @@ -1024,20 +1021,20 @@ bool CheckIP(const char *ip) { bool IsValidMask(std::string mask) { int iRet = -1; - // 闂備浇?х换鎰崲閹版澘绠查柛鎴︿憾?婃椽??埡鍛€嶅┑鐘?閿氭い?炴喘瀹曟﹢顢欓挊澶?紦闂備胶鎳撻崥鈧悹浣?叀瀹曟垿骞橀?銉ョ?闂佸憡渚楅崢娲礌閺嶎厽鈷戦柛娑橈工缁?帗淇婇锝庢當闁伙絿鍏樺畷鐔碱敆娴i攱鍞?繝鐢靛仦閸ㄥ爼鏁??梺缁樻尰閸ㄥ潡??诲澶娢ㄩ柨鏂垮⒔閻f儳鈹戦悙瀛?稇婵☆偅绻堥悰顕€骞??敃鈧~鍛存煃閵夈儳锛嶅ù婊愭? 闂傚倷鑳堕崑銊╁磿閼碱剙鍨濋柛?犲灱婵娊鏌嶉?鍕偓瑙?閵堝?绠鹃柟瀵镐紳椤忓牊鍋傞柟杈鹃??閻撴稑霉閿濆懏鎲搁柟鐣屽█閺岋繝宕卞▎蹇旂亪闂佹悶鍔戠粻鏍极閹剧粯鏅搁柨鐕傛?? + // 闂備浇�?�х换鎰崲閹版澘绠查柛鎴︿憾�?婃椽�?�?埡鍛€嶅┑鐘�?閿氭い�?�炴喘瀹曟﹢顢欓挊澶�?�紦闂備胶鎳撻崥鈧悹浣�?叀瀹曟垿骞橀�?銉ョ�?闂佸憡渚楅崢娲礌閺嶎厽鈷戦柛娑橈工缁�?�帗淇婇锝庢當闁伙絿鍏樺畷鐔碱敆娴i攱鍞�?�繝鐢靛仦閸ㄥ爼鏁�??梺缁樻尰閸ㄥ潡�??诲澶娢ㄩ柨鏂垮⒔閻f儳鈹戦悙瀛�?�稇婵☆偅绻堥悰顕€骞�??敃鈧~鍛存煃閵夈儳锛嶅ù婊愭�? 闂傚倷鑳堕崑銊╁磿閼碱剙鍨濋柛�?�犲灱婵娊鏌嶉�?鍕偓瑙�?閵堝�?�绠鹃柟瀵镐紳椤忓牊鍋傞柟杈鹃�??閻撴稑霉閿濆懏鎲搁柟鐣屽█閺岋繝宕卞▎蹇旂亪闂佹悶鍔戠粻鏍极閹剧粯鏅搁柨鐕傛�?? struct in_addr s; iRet = inet_pton(AF_INET, mask.c_str(), &s); - // 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺?箓鏌$仦璇插姎缂佺?缍侀弻鐔兼焽閿曗偓?ь喗銇勯銈?枅鐎殿喖鐖奸崺锟犲磼濞戞艾???繝鐢靛仩椤曟粓骞忛敓锟�1闂傚倷鐒︾€笛呯矙閹达附鍎?〒?e亾?ゃ垺宀搁崺锟犲川椤撶偛鎸ら梺鐟板悑閻n?宕归搹鍦噮闂傚倷绀侀幖?︽偋閸℃蛋鍥ㄥ閺夋垹鏌ч梺闈涱槴閺?粓宕曞澶??厱闁规惌鍘介惁浠?⒒娓氣偓濞煎?介崟?唵婵☆垯璀﹂悞浠??煥閻曞倹瀚� + // 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺�?箓鏌$仦璇插姎缂佺�?�缍侀弻鐔兼焽閿曗偓�?�ь喗銇勯銈�?枅鐎殿喖鐖奸崺锟犲磼濞戞艾�??�?繝鐢靛仩椤曟粓骞忛敓锟�1闂傚倷鐒︾€笛呯矙閹达附鍎�?�〒�?�e亾�?�ゃ垺宀搁崺锟犲川椤撶偛鎸ら梺鐟板悑閻n�?宕归搹鍦噮闂傚倷绀侀幖�?�︽偋閸℃蛋鍥ㄥ閺夋垹鏌ч梺闈涱槴閺�?粓宕曞澶�??厱闁规惌鍘介惁浠�?⒒娓氣偓濞煎�?�介崟�?�唵婵☆垯璀﹂悞浠�??煥閻曞倹瀚� if (iRet == 1) { - // 婵犵數鍋涢顓熸叏閺夋嚚瑙勵槹鎼达絿顦繝銏f硾閻偐澹曢崗鑲╃瘈濠电姴鍊搁弳鐔兼煙閻e?鏋涢柡灞诲€濆畷顐﹀礋椤?喎浜鹃柛褎顨呰繚闁瑰吋鐣崹娲磿閻旇偐鍙撻柛銉e?椤h尙绱掓笟鍥ф珝闁哄瞼鍠撻幏鐘诲焺閸愵亞鐛㈤梺鑽ゅУ閸旀宕伴幇顔剧煓濠㈣泛?肩?鍏间繆椤栨繂鍚归柣銊ヮ煼閺岋絾?旈?鈶╁濡?們鍔岄ˇ鐗堢┍婵犲浂鏁?柣鏃傜節缁ㄥ?洪崨濠?畵閻庢凹鍠氶崰濠囨晸閿燂? + // 婵犵數鍋涢顓熸叏閺夋嚚瑙勵槹鎼达絿顦繝銏f硾閻偐澹曢崗鑲╃瘈濠电姴鍊搁弳鐔兼煙閻e�?鏋涢柡灞诲€濆畷顐﹀礋椤�?喎浜鹃柛褎顨呰繚闁瑰吋鐣崹娲磿閻旇偐鍙撻柛銉e�?�椤h尙绱掓笟鍥ф珝闁哄瞼鍠撻幏鐘诲焺閸愵亞鐛㈤梺鑽ゅУ閸旀宕伴幇顔剧煓濠㈣泛�?肩�?�鍏间繆椤栨繂鍚归柣銊ヮ煼閺岋絾�?旈�?�鈶╁濡�?們鍔岄ˇ鐗堢┍婵犲浂鏁�?柣鏃傜節缁ㄥ�?�洪崨濠�?畵閻庢凹鍠氶崰濠囨晸閿燂�? unsigned int addr = ntohl(s.s_addr); - // 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺?箓鏌涘▎蹇fШ闁崇???鍫曟倷閺夋埈?嗛梺璋庡啰鐒哥€殿喖鐖奸崺锟犲磼濠х偓?嶉梻浣虹《閺?粓銆?崼銉ョ劦妞ゆ帊鑳堕埊鏇熴亜閵娿儳澧︽い銏$??閹峰懘宕烽娑欑亙闂備浇娉曢崳锕傚??閿燂? + // 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺�?箓鏌涘▎蹇fШ闁崇�?�?�?鍫曟倷閺夋埈�?嗛梺璋庡啰鐒哥€殿喖鐖奸崺锟犲磼濠х偓�?嶉梻浣虹《閺�?粓銆�?崼銉ョ劦妞ゆ帊鑳堕埊鏇熴亜閵娿儳澧︽い銏$�??閹峰懘宕烽娑欑亙闂備浇娉曢崳锕傚�??閿燂�? std::bitset<32> b((int)addr); std::string strMask = b.to_string(); - // 闂傚倷绀侀幖?ゆ偖椤愶箑纾块柛娆忣槺閻濊埖淇婇婵嗗惞?も晞灏欓埀顒€鍘滈崑鎾绘煕閹板吀绨芥い鏃??″娲川婵犲倻?勫┑鐐?槹閻╊垶骞冩ウ娆?Ь缂備緡鍣崣鍐极閸岀偞鍤?い鏍电稻閼哥懓鈹戦悙鏉戠仸闁瑰皷鏅犲畷銏ゅ箚瑜?弸鏃堟煥閻曞倹瀚�"01"闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍?亼閳ь剙鎳撻ˇ鍦偓娈垮枤鏋顏冨嵆閸┾偓妞ゆ帒鍊荤粻鏂?熆鐠哄?顦柛瀣?閳藉?鈻嶉?绨婚柨鏇樺灲椤㈡?宕奸悢鍛婄彨闁诲?鍘滈崑鎾绘煕閹邦厼鍔ゆ繛鍫灦?婃椽宕崟?患闁诲?绋堥弲娑樺?闂佸綊妫跨粈浣衡偓?槸椤法鎹勬笟?氬壉濠电偛鎳庣换?€?婚敐澶娢╅柕澶堝労娴犲ジ姊洪悜鈺佸⒉闁荤啙鍛潟闁哄?鐗嗙粻锝夋煟閹邦垰钄肩紒鈧?n喗鈷戞繛鑼额嚙濞呮瑩鏌熼崙銈嗗? + // 闂傚倷绀侀幖�?�ゆ偖椤愶箑纾块柛娆忣槺閻濊埖淇婇婵嗗惞�?�も晞灏欓埀顒€鍘滈崑鎾绘煕閹板吀绨芥い鏃�?�?″娲川婵犲倻�?�勫┑鐐�?槹閻╊垶骞冩ウ娆�?Ь缂備緡鍣崣鍐极閸岀偞鍤�?い鏍电稻閼哥懓鈹戦悙鏉戠仸闁瑰皷鏅犲畷銏ゅ箚瑜�?�弸鏃堟煥閻曞倹瀚�"01"闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍�?亼閳ь剙鎳撻ˇ鍦偓娈垮枤鏋顏冨嵆閸┾偓妞ゆ帒鍊荤粻鏂�?�熆鐠哄�?顦柛瀣�?閳藉�?鈻嶉�?�绨婚柨鏇樺灲椤㈡�?�宕奸悢鍛婄彨闁诲�?�鍘滈崑鎾绘煕閹邦厼鍔ゆ繛鍫灦�?婃椽宕崟�?�患闁诲�?�绋堥弲娑樺�?闂佸綊妫跨粈浣衡偓�?�槸椤法鎹勬笟�?�氬壉濠电偛鎳庣换�?�€�?婚敐澶娢╅柕澶堝労娴犲ジ姊洪悜鈺佸⒉闁荤啙鍛潟闁哄�?鐗嗙粻锝夋煟閹邦垰钄肩紒鈧�?n喗鈷戞繛鑼额嚙濞呮瑩鏌熼崙銈嗗�? return (strMask.find("01") == std::string::npos); } @@ -1148,24 +1145,24 @@ std::string GetSysStatus() { return strJson; } -// 闂備浇?х换鎰崲閹邦儵娑?旈埀顒勬偩閻戣姤鍋勯柛婵?劗閺?牠?虹捄銊ユ珢闁瑰嚖鎷?16闂備礁鎼ˇ?﹀疾濠婂懐?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁?鎸搁埥澶娾枎濡崵鏆俊鐐??崹鎶芥倿閿曗偓椤?顢旈崼?f櫌婵炶揪绲挎灙缂併劊鍎茬换娑㈠?閻?潙纰嶉梺鍦拡閸??銆佸棰濇晩闁兼亽鍎遍崝鍛存⒑閸濆??鏆欓柛濠傜秺閹箖鏌嗗鍡椻偓鍨?閹寸偟鎳愭繛鍫熺懃閳?垿鍩ラ崱妤??嶉悗瑙勬礃閸旀瑩??幘缁樻櫢闁跨噦鎷� +// 闂備浇�?�х换鎰崲閹邦儵娑�?�旈埀顒勬偩閻戣姤鍋勯柛婵�?劗閺�?牠�?�虹捄銊ユ珢闁瑰嚖鎷�?16闂備礁鎼ˇ�?�﹀疾濠婂懐�?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁�?�鎸搁埥澶娾枎濡崵鏆俊鐐�?�?崹鎶芥倿閿曗偓椤�?顢旈崼�?�f櫌婵炶揪绲挎灙缂併劊鍎茬换娑㈠�?�閻�?潙纰嶉梺鍦拡閸�?�?銆佸棰濇晩闁兼亽鍎遍崝鍛存⒑閸濆�??鏆欓柛濠傜秺閹箖鏌嗗鍡椻偓鍨�?�閹寸偟鎳愭繛鍫熺懃閳�?�垿鍩ラ崱妤�?�?嶉悗瑙勬礃閸旀瑩�??幘缁樻櫢闁跨噦鎷� unsigned char hexCharToByte(char c) { if (c >= '0' && c <= '9') return c - '0'; if (c >= 'A' && c <= 'F') return c - 'A' + 10; if (c >= 'a' && c <= 'f') return c - 'a' + 10; - return 0; // 闂備浇?уù鐑藉极婵犳艾鐒?い鎺嶈兌閵嗘帡鏌よぐ鎺旂?闁哄矉绻濆畷姗€顢旈崟鎴秮閺岋繝宕ㄩ銏犲Е闂佽鍨伴崯鏉戠暦閻旂⒈鏁冮柕鍫濇閸犳洜绱撻崒娆戝妽?ゃ劍鍔楅幏瀣晲閸?煈?熷┑鐘绘涧濞?附绂嶉妶澶?厸闁稿本绋戦?呯磼閳ь剟鍩?閿燂?0 + return 0; // 闂備浇�?�уù鐑藉极婵犳艾鐒�?い鎺嶈兌閵嗘帡鏌よぐ鎺旂�?闁哄矉绻濆畷姗€顢旈崟鎴秮閺岋繝宕ㄩ銏犲Е闂佽鍨伴崯鏉戠暦閻旂⒈鏁冮柕鍫濇閸犳洜绱撻崒娆戝妽�?�ゃ劍鍔楅幏瀣晲閸�?煈�?�熷┑鐘绘涧濞�?�附绂嶉妶澶�?厸闁稿本绋戦�?�呯磼閳ь剟鍩�?閿燂�?0 } -// 闂備浇?х换鎰殽韫囨稑绠柨鐕傛??16闂備礁鎼ˇ?﹀疾濠婂懐?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁?鎸搁埥澶娾枎濡崵鏆俊鐐??崹鎶芥倿閿斿墽?欏鑸靛姈閸ゆ垿鏌ら?銉︽毄闁靛牜鍣e铏规兜閸滀礁娈?┑鐘噰閸??捇鏌i悩鍐插闁哥姵鎹囬崺鈧い鎺嶈兌閳洘銇勯妸銉Ч濞e洤锕、?€??閻樺?鈧剟?虹憴鍕靛晱闁哥姵宀搁幆宀?晸閿燂拷 +// 闂備浇�?�х换鎰殽韫囨稑绠柨鐕傛�??16闂備礁鎼ˇ�?�﹀疾濠婂懐�?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁�?�鎸搁埥澶娾枎濡崵鏆俊鐐�?�?崹鎶芥倿閿斿墽�?欏鑸靛姈閸ゆ垿鏌ら�?銉︽毄闁靛牜鍣e铏规兜閸滀礁娈�?┑鐘噰閸�??捇鏌i悩鍐插闁哥姵鎹囬崺鈧い鎺嶈兌閳洘銇勯妸銉Ч濞e洤锕、�?�€�?�?閻樺�?鈧剟�?�虹憴鍕靛晱闁哥姵宀搁幆宀�?晸閿燂拷 int hexStringToBytes(const char *hexStr, unsigned char *bytes, size_t bytesSize) { size_t hexLen = strlen(hexStr); if (hexLen % 2 != 0) { zlog_error(zct, "hexLen:%d is odd", hexLen); - return -1; // Hex闂備浇?х€涒晝?欓幒妞尖偓鍐醇閵?喗鏅炴繛杈剧到濠€?嶅煝閺冨牊鐓涢悘鐐?嚙閸旀粍鎱ㄩ敐鍡?妤犵偞鐗?蹇涘?瑜忛弳鐘电磽娴i潧??閻忓繑鐟╅獮蹇涙偐鐠囧弬銊╂煥閺傚灝寤洪柨鏇炲€归悡鏇㈡倵閿濆?骞?柣鎾村?閺岋繝宕遍鐔奉伓 + return -1; // Hex闂備浇�?�х€涒晝�?欓幒妞尖偓鍐醇閵�?�喗鏅炴繛杈剧到濠€�?嶅煝閺冨牊鐓涢悘鐐�?�嚙閸旀粍鎱ㄩ敐鍡�?�妤犵偞鐗�?�蹇涘�?�瑜忛弳鐘电磽娴i潧�?�?閻忓繑鐟╅獮蹇涙偐鐠囧弬銊╂煥閺傚灝寤洪柨鏇炲€归悡鏇㈡倵閿濆�?�骞�?柣鎾村�?�閺岋繝宕遍鐔奉伓 } if (bytesSize < hexLen / 2) { zlog_error(zct, "bytesSize:%d < hexLen:%d", bytesSize, hexLen); - return -1; // 闂備浇?х€涒晝?欓幒妞尖偓鍐╁緞鐎b晝绠?銈嗘尪閸ㄥ綊??告笟鈧弻鐔封枔閸喗鐏撻梺娲?幖椤戝??婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥咁潰瀹€鈧悿鈧柟鑹版彧缁插潡骞?ぐ鎺撶厽闁斥晛鍟?鎺?煕濡崵澧紒鍌氱Ч楠炴帡??崫鍕闂佽崵鍠撴晶妤冩?閿熺姵鐓欓柟?嗗?鍊┑鐐碘拡娴滎?銆佸Δ浣瑰缂佸娉曢?搴ㄦ⒒娴e憡鍟為柤瑙?劤闇夌€瑰??澹??弸鏃堟煙鐎电ǹ袥闁稿鎸搁埥澶娾枎濡崵鏆┑鐘?暯濡插嫰骞忛敓锟� + return -1; // 闂備浇�?�х€涒晝�?欓幒妞尖偓鍐╁緞鐎b晝绠�?銈嗘尪閸ㄥ綊�??告笟鈧弻鐔封枔閸喗鐏撻梺娲�?�幖椤戝�??婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥咁潰瀹€鈧悿鈧柟鑹版彧缁插潡骞�?�ぐ鎺撶厽闁斥晛鍟�?鎺�?�煕濡崵澧紒鍌氱Ч楠炴帡�??崫鍕闂佽崵鍠撴晶妤冩�?�閿熺姵鐓欓柟�?�嗗�?鍊┑鐐碘拡娴滎�?銆佸Δ浣瑰缂佸娉曢�?搴ㄦ⒒娴e憡鍟為柤瑙�?劤闇夌€瑰�??澹�??弸鏃堟煙鐎电ǹ袥闁稿鎸搁埥澶娾枎濡崵鏆┑鐘�?�暯濡插嫰骞忛敓锟� } for (size_t i = 0; i < hexLen; i += 2) { @@ -1191,13 +1188,13 @@ void hexToAscii(const char *hexStr, char *asciiStr) { int i, j = 0; for (i = 0; i < len; i += 2) { - // 闂備浇宕?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞闁靛ě鈧弸鏍⒑闂堟稓澧曢悗?嵆瀹曠數鈧綆鍠?崐??閹寸偟鎳愭繛鍫熒戦妵鍕?濠婂懐鐛㈤梺缁樹緱閸犳岸骞戦崟顖涙?閻熸瑥瀚烽??ユ⒒娴e懙鍦崲閹达箑纾块柣鎾崇瘍瑜版帒骞㈡繛鎴烆焽椤斿???妶搴′航闁告瑢鍋撶紓浣插亾閻?綆鍠楅悡娑樏归敐鍛喐闁??濞€閺岋繝宕遍鐔?伓 + // 闂備浇宕�?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞闁靛ě鈧弸鏍⒑闂堟稓澧曢悗�?�嵆瀹曠數鈧綆鍠�?�崐�?�?�閹寸偟鎳愭繛鍫熒戦妵鍕�?�濠婂懐鐛㈤梺缁樹緱閸犳岸骞戦崟顖涙�?閻熸瑥瀚烽�?�?ユ⒒娴e懙鍦崲閹达箑纾块柣鎾崇瘍瑜版帒骞㈡繛鎴烆焽椤斿�?�?�?妶搴′航闁告瑢鍋撶紓浣插亾閻�?綆鍠楅悡娑樏归敐鍛喐闁�?�?濞€閺岋繝宕遍鐔�?�伓 int byte; sscanf(&hexStr[i], "%2x", &byte); - // 闂備浇?х换鎰崲閹邦儵娑樷枎閹捐櫕杈堥梺鎸庣箓椤︻垶??告笟鈧弻鐔风暋閻?牊鎷辩紓浣?贰閸o綁??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鐘虫崌閸┾偓妞ゆ帒鍊归弳鈺呮煙閾忣偅灏甸柤娲憾瀵濡烽敃鈧崜?㈡⒑閸涘﹤鐏﹂柍鐟伴拤II闂備浇?х€涒晝?欓幒妞尖偓鍐醇閵?喗鏅為梺璺ㄥ櫐閹凤? + // 闂備浇�?�х换鎰崲閹邦儵娑樷枎閹捐櫕杈堥梺鎸庣箓椤︻垶�??告笟鈧弻鐔风暋閻�?�牊鎷辩紓浣�?�贰閸o綁�??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鐘虫崌閸┾偓妞ゆ帒鍊归弳鈺呮煙閾忣偅灏甸柤娲憾瀵濡烽敃鈧崜�?�㈡⒑閸涘﹤鐏﹂柍鐟伴拤II闂備浇�?�х€涒晝�?欓幒妞尖偓鍐醇閵�?�喗鏅為梺璺ㄥ櫐閹凤�? asciiStr[j++] = (char)byte; } - // 濠电姷鏁搁崕鎴犵礊閳ь剚銇?弴鍡楀?閸欏繘鏌i幇顕呮毌闁稿鎸搁埥澶娾枎濡崵鏆俊鐐??崹鎶芥倿閿斿墽?欏鑸靛姈閸ゆ垶銇勯幒鎴濃偓鍦焊濠靛鈷戦柛婵嗗濡叉椽鏌涢悩铏磳?ゃ垺鐗犻弫鎾绘晸閿燂拷 + // 濠电姷鏁搁崕鎴犵礊閳ь剚銇�?弴鍡楀�?閸欏繘鏌i幇顕呮毌闁稿鎸搁埥澶娾枎濡崵鏆俊鐐�?�?崹鎶芥倿閿斿墽�?欏鑸靛姈閸ゆ垶銇勯幒鎴濃偓鍦焊濠靛鈷戦柛婵嗗濡叉椽鏌涢悩铏磳�?�ゃ垺鐗犻弫鎾绘晸閿燂拷 asciiStr[j] = '\0'; } @@ -1235,7 +1232,7 @@ void swap(char *data) { int OpenWatchDog() { int fd = -1; InitGpio(GlobalConfig::GPIO_G.hardWatchDog, 1); - gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); //婵犲痉鏉库偓鏇㈠磹瑜版巻鈧箓宕堕鈧弸渚?鏌熼梻纾?厡鐎规挷绶氶弻?绠涢敐鍛凹缂備胶?电敮锟犲蓟閳╁啰鐟瑰┑鐘插暙椤忥? + gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); //婵犲痉鏉库偓鏇㈠磹瑜版巻鈧箓宕堕鈧弸渚�?鏌熼梻纾�?厡鐎规挷绶氶弻�?�绠涢敐鍛凹缂備胶�?电敮锟犲蓟閳╁啰鐟瑰┑鐘插暙椤忥�? if (0 > (fd = open("/dev/watchdog", O_WRONLY))) { zlog_error(zbt, "fail to open /dev/watchdog"); } @@ -1296,7 +1293,7 @@ std::string GetOneContent(const char *szData, int nRow, const char *szSeparate) int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) { zlog_info(zbt, "[set_opt] speed:%d, bits:%d, event:%c, stop:%d", nSpeed, nBits, nEvent, nStop); struct termios newtio, oldtio; - if (tcgetattr(fd, &oldtio) != 0) { //濠电姷顣藉Σ鍛村磻閳ь剟鏌涚?n偅灏扮紒缁樼洴瀵爼骞?鐐插闂佽崵鍠?ú鏍涘┑鍡欐殾闁挎繂顦伴弲鏌ユ煕閳╁喚鐒?柨鏇炲€归悡鏇熸叏濡搫鈷旈柣锝堜含閹叉悂鎮ч崼銏犲绩闂佽鍠曠划娆撳极閹剧粯鏅搁柨鐕傛?? + if (tcgetattr(fd, &oldtio) != 0) { //濠电姷顣藉Σ鍛村磻閳ь剟鏌涚�?n偅灏扮紒缁樼洴瀵爼骞�?鐐插闂佽崵鍠�?ú鏍涘┑鍡欐殾闁挎繂顦伴弲鏌ユ煕閳╁喚鐒�?柨鏇炲€归悡鏇熸叏濡搫鈷旈柣锝堜含閹叉悂鎮ч崼銏犲绩闂佽鍠曠划娆撳极閹剧粯鏅搁柨鐕傛�?? zlog_error(zbt, "tcgetattr fail"); return -1; } @@ -1329,7 +1326,7 @@ int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) { break; } - switch (nSpeed) //闂備浇宕?慨宕囩矆娴h娅犲ù鐘?儐閸嬵亪鏌涢埄鍐︿粶闁哄鐗犻弻鏇$疀鐎n亞浠煎銈冨劜椤ㄥ﹪?婚敐鍛牚闁归偊鍘奸锟? + switch (nSpeed) //闂備浇宕�?慨宕囩矆娴h娅犲ù鐘�?儐閸嬵亪鏌涢埄鍐︿粶闁哄鐗犻弻鏇$疀鐎n亞浠煎銈冨劜椤ㄥ﹪�?婚敐鍛牚闁归偊鍘奸锟�? { case 2400: cfsetispeed(&newtio, B2400); @@ -1357,7 +1354,7 @@ int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) { zlog_error(zbt, "invalid speed:%d, use B9600", nSpeed); break; } - if (nStop == 1) //闂備浇宕?慨宕囩矆娴h娅犲ù鐘?儐閸嬵亪鏌涢埄鍐?缁惧墽?换婵囩節閸屾凹浼岄梺鍛婃尰閸庢娊婀侀梺鎸庣箓缁绘垹鈧熬鎷� + if (nStop == 1) //闂備浇宕�?慨宕囩矆娴h娅犲ù鐘�?儐閸嬵亪鏌涢埄鍐�?�缁惧墽�?换婵囩節閸屾凹浼岄梺鍛婃尰閸庢娊婀侀梺鎸庣箓缁绘垹鈧熬鎷� newtio.c_cflag &= ~CSTOPB; else if (nStop == 2) newtio.c_cflag |= CSTOPB; @@ -1532,15 +1529,15 @@ int writeIntValue(const char *section, const char *key, int val, const char *fil int getDiskInfo(char *diskTotal, char *diskFree) { DISK diskInfo; - /* 1.闂傚倷绀侀崥瀣磿閹惰?搴婇柤鑹扮?娴滃綊鏌ㄩ悤鍌涘?/home/婵犵數鍋為崹?曞?閹间緡鏁勫璺衡看閻掕棄霉閻撳海鎽犻柛搴$Ч閺屾???妸銉ュ?闂佺ǹ?嗛幐楣冨??閻樺樊鍟?い鏂?悑濞?秹??崒娆愮グ?ゆ洘绮撻獮蹇涙晸閿燂拷 */ + /* 1.闂傚倷绀侀崥瀣磿閹惰�?�搴婇柤鑹扮�?娴滃綊鏌ㄩ悤鍌涘�?/home/婵犵數鍋為崹�?曞�?�閹间緡鏁勫璺衡看閻掕棄霉閻撳海鎽犻柛搴$Ч閺屾�?�?�?妸銉ュ�?�闂佺ǹ�?�嗛幐楣冨�??閻樺樊鍟�?い鏂�?悑濞�?秹�?��?�崒娆愮グ�?�ゆ洘绮撻獮蹇涙晸閿燂拷 */ statfs("/", &diskInfo); unsigned long long blocksize = diskInfo.f_bsize; unsigned long long totalsize = blocksize * diskInfo.f_blocks; - /* 2.闂傚倷绀侀崥瀣磿閹惰?搴婇柤鑹扮?娴滃綊鏌涢妷锝呭闁崇粯??弻?堫檨闁告挻姘ㄧ划娆?緞鐏炵ǹ浜鹃柨婵嗙凹缁ㄥ鏌嶉柨瀣ⅹ闂囧鏌ㄥ┑鍡橆棤闁瑰啿鎳橀弻?囨喆閸曨厼鈷屽┑?硷工椤嘲顕i崼鏇炵闁绘劕妯婃?鍛存⒒娴e憡鍟為柣鐕佸灦瀹曞綊骞庨挊澶???梺闈涚墕濞层劑?屽顓犵鐎瑰?鍠曠花濂告煥濞戞艾鏋涢柡宀??婵℃悂濡烽妷顔绘偅闂備線娼уú銈吤洪妸锔绢洸闁归棿鐒﹂弲鎼佹煥閻曞倹瀚� */ - unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //闂傚倷绀侀幉锟犲?閹绢喖鐤炬繛鍡樺灩缁€濠囨煙鐎电ǹ啸闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犳牠?婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥??娴h娅㈤梺璺ㄥ櫐閹凤? -// unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //闂傚倷绀侀幉锟犳偡椤栫偛鍨傞柟?版閺?線鏌曢崼婵囧窛闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犲酣鈥﹂崸妤?閱囬柛鈩冾殔閺嗙喐鎱ㄩ敐蹇斿? + /* 2.闂傚倷绀侀崥瀣磿閹惰�?�搴婇柤鑹扮�?娴滃綊鏌涢妷锝呭闁崇粯�?�?弻�?�堫檨闁告挻姘ㄧ划娆�?緞鐏炵ǹ浜鹃柨婵嗙凹缁ㄥ鏌嶉柨瀣ⅹ闂囧鏌ㄥ┑鍡橆棤闁瑰啿鎳橀弻�?�囨喆閸曨厼鈷屽┑�?�硷工椤嘲顕i崼鏇炵闁绘劕妯婃�?�鍛存⒒娴e憡鍟為柣鐕佸灦瀹曞綊骞庨挊澶�??�?梺闈涚墕濞层劑�?屽顓犵鐎瑰�?�鍠曠花濂告煥濞戞艾鏋涢柡宀�?�?婵℃悂濡烽妷顔绘偅闂備線娼уú銈吤洪妸锔绢洸闁归棿鐒﹂弲鎼佹煥閻曞倹瀚� */ + unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //闂傚倷绀侀幉锟犲�?�閹绢喖鐤炬繛鍡樺灩缁€濠囨煙鐎电ǹ啸闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犳牠�?婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥�?��?�娴h娅㈤梺璺ㄥ櫐閹凤�? +// unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //闂傚倷绀侀幉锟犳偡椤栫偛鍨傞柟�?版閺�?�線鏌曢崼婵囧窛闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犲酣鈥﹂崸妤�?閱囬柛鈩冾殔閺嗙喐鎱ㄩ敐蹇斿�? sprintf(diskTotal, "%llu", totalsize >> 20); sprintf(diskFree, "%llu", freeDisk >> 20); @@ -1568,28 +1565,28 @@ unsigned short cal_chksum(unsigned short *addr, int len) { int socketHeart(const char *pSendData) { zlog_info(zct, "socketHeart"); - int sockfd; // Socket闂傚倷绀侀幖?﹀磹缁?5娲晲閸涱亝鐎婚梺闈涚箞閸婃洜?婚悽鍝ュ彄闁搞儯鍔忔竟?€鏌eΔ浣圭殤缂佽鲸?掕灃閻庯綆鍋?锟? - struct sockaddr_in serverAddr {}; // Server闂傚倷绶?濠?⒔閸曨偒鐔嗘俊?欒閻掍粙鏌涢幇鍏哥敖缁炬儳銈搁弻鐔煎箚瑜滈崵鐔兼煃瑜滈崜锕傚垂闁秴绠柛娑?摠閺呮悂鏌ㄩ悤鍌涘? + int sockfd; // Socket闂傚倷绀侀幖�?�﹀磹缁�?5娲晲閸涱亝鐎婚梺闈涚箞閸婃洜�?婚悽鍝ュ彄闁搞儯鍔忔竟�?�€鏌eΔ浣圭殤缂佽鲸�?掕灃閻庯綆鍋�?锟�? + struct sockaddr_in serverAddr {}; // Server闂傚倷绶�?濠�?⒔閸曨偒鐔嗘俊�?�欒閻掍粙鏌涢幇鍏哥敖缁炬儳銈搁弻鐔煎箚瑜滈崵鐔兼煃瑜滈崜锕傚垂闁秴绠柛娑�?�摠閺呮悂鏌ㄩ悤鍌涘�? - // 闂傚倷绀侀幉锛?暜濡ゅ啰?欓柟瀵?Х绾句粙鏌熺紒妯肩潉cket + // 闂傚倷绀侀幉锛�?暜濡ゅ啰�?欓柟瀵�?�Х绾句粙鏌熺紒妯肩潉cket if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { zlog_error(zct, "Failed to create socket."); return 1; } - // 闂備浇宕?慨宕囩矆娴h娅犲ù鐘?儐閸嬵亪鏌涘┑鍫濈€瑀ver闂傚倷绶?濠?⒔閸曨偒鐔嗘俊?欒閻掍粙鏌涢幇銊︽珖闁崇懓绉归弻宥?煛娴e憡娈ㄧ紓浣瑰敾閹凤拷 + // 闂備浇宕�?慨宕囩矆娴h娅犲ù鐘�?儐閸嬵亪鏌涘┑鍫濈€瑀ver闂傚倷绶�?濠�?⒔閸曨偒鐔嗘俊�?�欒閻掍粙鏌涢幇銊︽珖闁崇懓绉归弻宥�?�煛娴e憡娈ㄧ紓浣瑰敾閹凤拷 serverAddr.sin_family = AF_INET; - serverAddr.sin_port = htons(18393); // TCP婵犳鍠楃敮妤冪矙閹烘挾浠氭俊鐐€?幑浣哥暦閻㈤潧鍨濋柍鍝勬媼閺佸秵鎱ㄥ鍡楀?缂佸顦靛娲川婵犲??鍣┑鐐存尭濠€?嶅??瑜版帗鏅搁柨鐕傛?80 + serverAddr.sin_port = htons(18393); // TCP婵犳鍠楃敮妤冪矙閹烘挾浠氭俊鐐€�?幑浣哥暦閻㈤潧鍨濋柍鍝勬媼閺佸秵鎱ㄥ鍡楀�?缂佸顦靛娲川婵犲�??鍣┑鐐存尭濠€�?嶅�??瑜版帗鏅搁柨鐕傛�?80 inet_pton(AF_INET, "192.168.1.147", &serverAddr.sin_addr); - // 闂備礁鎼ˇ?﹀疾濠靛纾?柣鎰仛閺嗘粓鏌熺紒銏犳灈缂佲偓閸℃稒鐓熺憸搴f绾炬潳er + // 闂備礁鎼ˇ�?�﹀疾濠靛纾�?�柣鎰仛閺嗘粓鏌熺紒銏犳灈缂佲偓閸℃稒鐓熺憸搴f绾炬潳er if (connect(sockfd, reinterpret_cast(&serverAddr), sizeof(serverAddr)) == -1) { zlog_error(zct, "Failed to connect to the server."); close(sockfd); return 1; } - // 闂傚倷绀侀幉锟犳偡閿曞倸鍨傞柛褎顨呴悞?亜閹达絾纭舵い锔煎?缁辨帡宕崟顐熸寖闂佸湱鎳撶??即骞?ぐ鎺濇晝闁挎繂妫崯鈧梻鍌欒兌椤㈠?顢氶弽?炵獥闁哄稁鍋€閸??挾鍠婃径瀣? + // 闂傚倷绀侀幉锟犳偡閿曞倸鍨傞柛褎顨呴悞�?亜閹达絾纭舵い锔煎�?缁辨帡宕崟顐熸寖闂佸湱鎳撶�?�?即骞�?ぐ鎺濇晝闁挎繂妫崯鈧梻鍌欒兌椤㈠�?顢氶弽�?�炵獥闁哄稁鍋€閸�??挾鍠婃径瀣�? ssize_t bytesSent = send(sockfd, pSendData, strlen(pSendData), MSG_NOSIGNAL); if (bytesSent == -1) { @@ -1602,13 +1599,13 @@ int socketHeart(const char *pSendData) { return 1; } - // 闂傚倷鑳舵灙缂佺?鍨剁换娑欑節閸??姤绋撻崰濠囧煛閻滅€攅t闂備礁鎼ˇ?﹀疾濠靛纾?柣鎰仛閺嗘粓鏌ㄩ悤鍌涘 + // 闂傚倷鑳舵灙缂佺�?鍨剁换娑欑節閸�??姤绋撻崰濠囧煛閻滅€攅t闂備礁鎼ˇ�?�﹀疾濠靛纾�?�柣鎰仛閺嗘粓鏌ㄩ悤鍌涘 close(sockfd); return 0; } -// Ping闂傚倷绀侀幉锟犲垂閸忓吋鍙忛柕?濐槸?规煡鏌i???闁哄拋鍓熼幃妤呭捶椤撶偘姘eout婵犵數鍋為崹?曞?閸モ晝纾芥慨妯夸含閻捇鏌熺紒銏犳灈缂侇偄绉归弻銈囩矙鐠恒劋绮靛銇礁娲﹂埛鎺?煕鐏炲墽绠?憸鎶婂懐纾奸弶鍫涘?缁犵偟鈧娲╃换婵嗩嚕閺夋埈娼╅弶鍫?暕閵忋倖鈷戦柛婵嗗椤忣偅淇婇銈庢敵,10000 濠电姵?栭崳?滅礊閸℃稑纾?柛鈩冨喕缂嶆牠鏌ㄩ悤鍌涘=10 缂傚倸鍊风粈渚€篓閳ь剟鏌熼崙銈嗗? -//闂傚倷鑳堕幊鎾绘偤閵娾晛绀夐柡鍥╁枑閸欏繑绻涢幋娆忕仾闁哄拋鍓氶幈銊ノ熼搹鐧哥礊缂備胶?甸悡锟犲蓟濞戙垹?妞ゆ牗绋戦锟�0闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍?仜?呴梺鐟邦嚟婵數鈧艾?烽弻鏇熷緞濡?浠紓浣瑰姈椤ㄥ﹤顕i崼鏇炵厸闁?本绋撻崣鍡椻攽閻愰鍤?柟鍑ゆ??1闂傚倷鑳堕、濠囧?椤忓牆绠柨鐕傛??-1 +// Ping闂傚倷绀侀幉锟犲垂閸忓吋鍙忛柕�?濐槸�?规煡鏌i�?�?�?闁哄拋鍓熼幃妤呭捶椤撶偘姘eout婵犵數鍋為崹�?曞�?�閸モ晝纾芥慨妯夸含閻捇鏌熺紒銏犳灈缂侇偄绉归弻銈囩矙鐠恒劋绮靛銇礁娲﹂埛鎺�?�煕鐏炲墽绠�?憸鎶婂懐纾奸弶鍫涘�?�缁犵偟鈧娲╃换婵嗩嚕閺夋埈娼╅弶鍫�?暕閵忋倖鈷戦柛婵嗗椤忣偅淇婇銈庢敵,10000 濠电姵�?�栭崳�?�滅礊閸℃稑纾�?�柛鈩冨喕缂嶆牠鏌ㄩ悤鍌涘=10 缂傚倸鍊风粈渚€篓閳ь剟鏌熼崙銈嗗�? +//闂傚倷鑳堕幊鎾绘偤閵娾晛绀夐柡鍥╁枑閸欏繑绻涢幋娆忕仾闁哄拋鍓氶幈銊ノ熼搹鐧哥礊缂備胶�?甸悡锟犲蓟濞戙垹�?妞ゆ牗绋戦锟�0闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍�?仜�?�呴梺鐟邦嚟婵數鈧艾�?烽弻鏇熷緞濡�?�浠紓浣瑰姈椤ㄥ﹤顕i崼鏇炵厸闁�?�本绋撻崣鍡椻攽閻愰鍤�?柟鍑ゆ�??1闂傚倷鑳堕、濠囧�?�椤忓牆绠柨鐕傛�??-1 int Ping(const char *ips, int timeout) { struct timeval *tval; int maxfds = 0; @@ -1617,13 +1614,13 @@ int Ping(const char *ips, int timeout) { int iRet = 0; struct sockaddr_in addr; struct sockaddr_in from; - // 闂備浇宕?慨鎶芥倿閿曞倸纾块柟?板Г閸嬧晝绱撳搴㈡婵犵數鍎戠徊钘?洪悩璇??婵犻潧娲ら?嶆煥閻曞倹瀚� + // 闂備浇宕�?慨鎶芥倿閿曞倸纾块柟�?板Г閸嬧晝绱撳搴㈡婵犵數鍎戠徊钘�?�洪悩璇�?�?婵犻潧娲ら�?嶆煥閻曞倹瀚� bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr(ips); int sockfd; - // 闂傚倷绀侀幉锟犳偡閿曞倹鍋?柡鍥╁У椤?粙鏌i鍛傛溈ket 闂傚倷绶??螞閹绢喖绠柨鐕傛? 婵犵數濮烽。浠?焵椤掆偓閸熷潡鍩?椤掆偓缂嶅﹪骞冨Ο璇茬窞濠电偟鍋撻悡銏ゆ⒑閻愯棄鍔氶柛鐔锋健閿濈偤?缁犲垼o 闂備礁鎼ˇ?﹀疾濠婂牊鍋¢柍鍝?噹闂傤垶姊洪崹?呭剰?ゆ洝椴搁幈銊ヮ潨閸℃绠归悶?哺濮婄粯鎷呯粙璺ㄦ闂佺懓鍤?幏锟? + // 闂傚倷绀侀幉锟犳偡閿曞倹鍋�?柡鍥╁У椤�?粙鏌i鍛傛溈ket 闂傚倷绶�?�?�螞閹绢喖绠柨鐕傛�? 婵犵數濮烽。浠�?焵椤掆偓閸熷潡鍩�?椤掆偓缂嶅﹪骞冨Ο璇茬窞濠电偟鍋撻悡銏ゆ⒑閻愯棄鍔氶柛鐔锋健閿濈偤�?缁犲垼o 闂備礁鎼ˇ�?�﹀疾濠婂牊鍋¢柍鍝�?噹闂傤垶姊洪崹�?�呭剰�?�ゆ洝椴搁幈銊ヮ潨閸℃绠归悶�?�哺濮婄粯鎷呯粙璺ㄦ闂佺懓鍤�?幏锟�? sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); if (sockfd < 0) { zlog_error(zct, "ip:%s,socket error", ips); @@ -1631,7 +1628,7 @@ int Ping(const char *ips, int timeout) { } struct timeval timeo; - // 闂備浇宕?慨鎶芥倿閿曞倸纾块柟?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖?﹀?椤愶附鍋夐柣鎾冲濞戙垺鏅搁柨鐕傛?? + // 闂備浇宕�?慨鎶芥倿閿曞倸纾块柟�?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖�?�﹀�?椤愶附鍋夐柣鎾冲濞戙垺鏅搁柨鐕傛�?? timeo.tv_sec = timeout / 1000; timeo.tv_usec = timeout % 1000; @@ -1643,25 +1640,25 @@ int Ping(const char *ips, int timeout) { char sendpacket[2048]; char recvpacket[2048]; - // 闂備浇宕?慨鎶芥倿閿曞倸纾块柟?板Г閸嬧晝绱撳鍥х毇ng闂傚倷绀侀幉锟犳偋椤撱垹绠柨鐕傛? + // 闂備浇宕�?慨鎶芥倿閿曞倸纾块柟�?板Г閸嬧晝绱撳鍥х毇ng闂傚倷绀侀幉锟犳偋椤撱垹绠柨鐕傛�? memset(sendpacket, 0, sizeof(sendpacket)); pid_t pid; - // 闂傚倷绀侀幉锟犳偡閿曞倹鍋?柡鍥╁У椤?粙鏌i埡濠冿紬D闂傚倷鐒︾€笛呯矙閹寸偟闄勯柡鍐ㄥ€荤粈濠囨煛閸愶絽浜剧紓浣割儏椤﹀?顕h閵嗘帗鍒婂濠囨⒒娴e湱婀介柛鏂跨焸瀹曠敻鎮悥宄秂nce ID + // 闂傚倷绀侀幉锟犳偡閿曞倹鍋�?柡鍥╁У椤�?粙鏌i埡濠冿紬D闂傚倷鐒︾€笛呯矙閹寸偟闄勯柡鍐ㄥ€荤粈濠囨煛閸愶絽浜剧紓浣割儏椤﹀�?顕h閵嗘帗鍒婂濠囨⒒娴e湱婀介柛鏂跨焸瀹曠敻鎮悥宄秂nce ID pid = getpid(); struct ip *iph; struct icmp *icmp; icmp = (struct icmp *)sendpacket; - icmp->icmp_type = ICMP_ECHO; //闂傚倷鐒﹂幃?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悘鐐村劤閻濅即姊绘担鍝ヤ虎妞ゆ垵娲ら敃銏ゆ晸閿燂拷 + icmp->icmp_type = ICMP_ECHO; //闂傚倷鐒﹂幃�?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悘鐐村劤閻濅即姊绘担鍝ヤ虎妞ゆ垵娲ら敃銏ゆ晸閿燂拷 icmp->icmp_code = 0; icmp->icmp_cksum = 0; icmp->icmp_seq = 0; icmp->icmp_id = pid; tval = (struct timeval *)icmp->icmp_data; gettimeofday(tval, NULL); - icmp->icmp_cksum = cal_chksum((unsigned short *)icmp, sizeof(struct icmp)); //闂傚倷绀侀幖?ょ矙閸曨厽宕叉繝闈涱儐閸??﹢鏌ㄩ悤鍌涘? + icmp->icmp_cksum = cal_chksum((unsigned short *)icmp, sizeof(struct icmp)); //闂傚倷绀侀幖�?�ょ矙閸曨厽宕叉繝闈涱儐閸�??﹢鏌ㄩ悤鍌涘�? int n = sendto(sockfd, (char *)&sendpacket, sizeof(struct icmp), 0, (struct sockaddr *)&addr, sizeof(addr)); if (n < 1) { @@ -1670,11 +1667,11 @@ int Ping(const char *ips, int timeout) { return -1; } - // 闂傚倷娴?~澶?娴犲纾块弶鍫?亖娴滃綊鏌ㄩ悤鍌涘 - // 闂傚倷鐒﹂惇褰掑垂绾懌浜瑰璺虹焷婵櫕銇?幒鎴濐仼闁活厽顨嗛妵鍕冀閵娧?暤闂佸憡蓱閹告娊?婚悢鐓庣畳闁?儤鍨?慨搴ㄦ偡濠婂?绶查柣妤佹尭閻e嘲顫濈捄铏归獓闂佸?鐓堥崰鏍椤撶喓绠鹃悗鐢登?牎濠电?鍋撴い锝?礆g闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸?閸撴?鎳為柆?嗗殤?ゆ帒鍊块埞蹇涙⒑閸濆??鏆婇柛瀣尵缁辨帗寰勭仦钘夊?濡ょ姷鍋???躲?佸☉銏犖ч柛銉㈡櫓濡茬兘?绘担鍛婅?妞わ絼绮欏畷鎴﹀箻鐡掍?缍婇幃鈺咁敊閻撳??缂傚倷鑳剁划顖炴偋閻樿钃熼悘鐐?櫕閺嗗?鏌涢幇顔间壕闁活厽顨婂娲倻閳轰?澹曢梺鍛婃煥閻倿鐛崱妯肩瘈闁搞?鍔屾禒銏ゆ⒑鐠恒劌娅愰柟鍑ゆ? + // 闂傚倷娴�?~澶�?娴犲纾块弶鍫�?亖娴滃綊鏌ㄩ悤鍌涘 + // 闂傚倷鐒﹂惇褰掑垂绾懌浜瑰璺虹焷婵櫕銇�?幒鎴濐仼闁活厽顨嗛妵鍕冀閵娧�?暤闂佸憡蓱閹告娊�?婚悢鐓庣畳闁�?儤鍨�?慨搴ㄦ偡濠婂�?绶查柣妤佹尭閻e嘲顫濈捄铏归獓闂佸�?�鐓堥崰鏍椤撶喓绠鹃悗鐢登�?�牎濠电�?鍋撴い锝�?礆g闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸�?閸撴�?鎳為柆�?�嗗殤�?�ゆ帒鍊块埞蹇涙⒑閸濆�??鏆婇柛瀣尵缁辨帗寰勭仦钘夊�?�濡ょ姷鍋�?��?��?�躲�?佸☉銏犖ч柛銉㈡櫓濡茬兘�?�绘担鍛婅�?�妞わ絼绮欏畷鎴﹀箻鐡掍�?�缍婇幃鈺咁敊閻撳�?��?�缂傚倷鑳剁划顖炴偋閻樿钃熼悘鐐�?櫕閺嗗�?�鏌涢幇顔间壕闁活厽顨婂娲倻閳轰�?�澹曢梺鍛婃煥閻倿鐛崱妯肩瘈闁搞�?鍔屾禒銏ゆ⒑鐠恒劌娅愰柟鍑ゆ�? int cnt = 0; while (1) { - // 闂備浇宕?慨鎶芥倿閿曞倸纾块柟?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖?﹀?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈?劍濞?牠鎮楅崗澶婁壕闂佸憡鍔︽禍鐐?敊閹邦兘鏀介柣鎰级椤ユ垿鏌涢幘瀵哥畺闁哄懎鐖奸幃鈺冩嫚閹绘帒鎸ゆ俊鐐??悧妤冨垝瀹ュ?鏄ラ柛灞剧⊕閸欏繑绻濋崹顐e暗缂佸鍓熼弻鐔兼儌閸濄儳蓱闂佺懓鍢查幊搴ㄣ偑娴兼潙宸濇い鏃?Г椤撳綊?绘担瑙勩仧闁绘挸顦甸獮蹇涙晸閿燂拷 + // 闂備浇宕�?慨鎶芥倿閿曞倸纾块柟�?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖�?�﹀�?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈�?劍濞�?牠鎮楅崗澶婁壕闂佸憡鍔︽禍鐐�?敊閹邦兘鏀介柣鎰级椤ユ垿鏌涢幘瀵哥畺闁哄懎鐖奸幃鈺冩嫚閹绘帒鎸ゆ俊鐐�?�?悧妤冨垝瀹ュ�?鏄ラ柛灞剧⊕閸欏繑绻濋崹顐e暗缂佸鍓熼弻鐔兼儌閸濄儳蓱闂佺懓鍢查幊搴ㄣ偑娴兼潙宸濇い鏃�?Г椤撳綊�?�绘担瑙勩仧闁绘挸顦甸獮蹇涙晸閿燂拷 FD_ZERO(&readfds); FD_SET(sockfd, &readfds); maxfds = sockfd + 1; @@ -1686,7 +1683,7 @@ int Ping(const char *ips, int timeout) { break; } - // 闂傚倷娴?~澶?娴犲纾块弶鍫?亖娴滃綊鏌ㄩ悤鍌涘 + // 闂傚倷娴�?~澶�?娴犲纾块弶鍫�?亖娴滃綊鏌ㄩ悤鍌涘 memset(recvpacket, 0, sizeof(recvpacket)); int fromlen = sizeof(from); n = recvfrom(sockfd, recvpacket, sizeof(recvpacket), 0, (struct sockaddr *)&from, (socklen_t *)&fromlen); @@ -1698,7 +1695,7 @@ int Ping(const char *ips, int timeout) { } char *from_ip = (char *)inet_ntoa(from.sin_addr); - // 闂傚倷绀侀幉锛?暜閸?剙纾归柡宥庡幖閽?喖鏌涢妷顔煎闁告瑥锕ラ妵鍕冀閵娧屾?闂佺ǹ?搁敃?堝蓟閿熺姴绀?梻鍫熺〒娴犳挳姊洪幖鐐测偓鏍垝瀹€鍕垫晩闊洦绋掗崕搴?亜閿曗偓缁辨闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸?閸撴瑧鍙呴梺鍝勭Р閸斿瞼娆㈤悙鐑?叆闁绘洖鍊??氾拷 + // 闂傚倷绀侀幉锛�?暜閸�?剙纾归柡宥庡幖閽�?喖鏌涢妷顔煎闁告瑥锕ラ妵鍕冀閵娧屾�?�闂佺ǹ�?�搁敃�?�堝蓟閿熺姴绀�?梻鍫熺〒娴犳挳姊洪幖鐐测偓鏍垝瀹€鍕垫晩闊洦绋掗崕搴�?亜閿曗偓缁辨闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸�?閸撴瑧鍙呴梺鍝勭Р閸斿瞼娆㈤悙鐑�?�叆闁绘洖鍊�?�?氾拷 if (strcmp(from_ip, ips) != 0) { zlog_info(zct, "NowPingip:%s Fromip:%s NowPingip is not same to Fromip,so ping wrong!", ips, from_ip); close(sockfd); @@ -1710,14 +1707,14 @@ int Ping(const char *ips, int timeout) { icmp = (struct icmp *)(recvpacket + (iph->ip_hl << 2)); zlog_info(zct, "ip:%s,icmp->icmp_type:%d,icmp->icmp_id:%d\n", ips, icmp->icmp_type, icmp->icmp_id); - // 闂傚倷绀侀幉锛?暜閸?剙纾归柡宥庡幖閽?喖鏌涢?陇鎶梟g闂傚倷鐒﹂幃?曞磿閹惰棄纾绘繛鎴旀嚍閸?剙钃熼柕澶堝劤椤﹂亶姊洪崨濠佺繁闁搞劑浜堕幃楣冩焼瀹ュ棛鍘藉┑鈽嗗灠閻忔繈?¢幇鐗堢厓鐟滄粓宕滈妸鈺佺闁跨噦鎷? - if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) // ICMP_ECHOREPLY闂傚倷鐒﹂幃?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悗锝庡亜閸斿懘姊洪?鍕?闁?﹤?烽獮妤呮晸閿燂拷 + // 闂傚倷绀侀幉锛�?暜閸�?剙纾归柡宥庡幖閽�?喖鏌涢�?�陇鎶梟g闂傚倷鐒﹂幃�?曞磿閹惰棄纾绘繛鎴旀嚍閸�?剙钃熼柕澶堝劤椤﹂亶姊洪崨濠佺繁闁搞劑浜堕幃楣冩焼瀹ュ棛鍘藉┑鈽嗗灠閻忔繈�?¢幇鐗堢厓鐟滄粓宕滈妸鈺佺闁跨噦鎷�? + if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) // ICMP_ECHOREPLY闂傚倷鐒﹂幃�?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悗锝庡亜閸斿懘姊洪�?鍕�?闁�?�﹤�?烽獮妤呮晸閿燂拷 { - // 濠电姵?栭崰妤冩崲閹邦喖绶ゅù鐘?儐閸?鏌涢幘鍙?樂闁绘帒锕娲敆閳ь剛绮旈鈧畷鎴﹀箻鐠?尙鍔﹀銈嗗笒鐎氼剛绮堥崟顖涚厱婵犻潧?楅顏堟煕鎼?垺绀?柡宀?到?即骞?鐑嗕紦 + // 濠电姵�?�栭崰妤冩崲閹邦喖绶ゅù鐘�?儐閸�?鏌涢幘鍙�?�樂闁绘帒锕娲敆閳ь剛绮旈鈧畷鎴﹀箻鐠�?尙鍔﹀銈嗗笒鐎氼剛绮堥崟顖涚厱婵犻潧�?楅顏堟煕鎼�?垺绀�?柡宀�?到�?�即骞�?鐑嗕紦 zlog_info(zct, "icmp succecss ............. \n"); break; } else if (cnt < 3) { - // 闂傚倷绀侀幉锟犳偄椤掑倻涓嶉柟杈剧畱閸ㄥ倹銇?弽銊х煂缁?崘鍋愰幉姝岀疀濞戞瑥浠?梺鐓?潟閸婃銇欓幎鑺ョ叆闁绘洖鍊??氾拷 + // 闂傚倷绀侀幉锟犳偄椤掑倻涓嶉柟杈剧畱閸ㄥ倹銇�?弽銊х煂缁�?崘鍋愰幉姝岀疀濞戞瑥浠�?梺鐓�?潟閸婃銇欓幎鑺ョ叆闁绘洖鍊�?�?氾拷 cnt++; continue; } else { @@ -1749,41 +1746,41 @@ int get_netlink_status(const char *if_name) { return edata.data; } -// 闂備浇?х换鎰崲閹邦儵娑樷槈濞嗘劖鐝峰┑掳鍊曢幊搴b偓姘槹閵囧?骞掗崱妞惧闁荤喐?嶆刊钘?枖閺囥垹鐒?い鎺嶈兌閳洘銇?妸銉уⅵ?ゃ垺鐗楅幏鍛村捶椤撴稒鐏冮梻浣告啞閻熴儵藝椤栫儐鏁侀柡鍥ュ灪閻撴洟鏌熼悜?虹仸妞ゃ儲鐟╅幃褰掑箛椤斿吋鐏堥悗娈?櫘閸?棝鍩?椤掍胶鈯曢拑杈ㄧ箾閸繂顣崇紒杈ㄦ尰閹峰懐绮欏▎鍙ョ?闂備焦鎮堕崝宥呯暆閹间?绠氶柛鎰靛枛缁?瀣亜閹板?鍒伴柍褜鍓欓…宄邦潖閾忚瀚氱憸搴b偓姘炬? +// 闂備浇�?�х换鎰崲閹邦儵娑樷槈濞嗘劖鐝峰┑掳鍊曢幊搴b偓姘槹閵囧�?�骞掗崱妞惧闁荤喐�?嶆刊钘�?�枖閺囥垹鐒�?い鎺嶈兌閳洘銇�?妸銉уⅵ�?�ゃ垺鐗楅幏鍛村捶椤撴稒鐏冮梻浣告啞閻熴儵藝椤栫儐鏁侀柡鍥ュ灪閻撴洟鏌熼悜�?虹仸妞ゃ儲鐟╅幃褰掑箛椤斿吋鐏堥悗娈�?櫘閸�?棝鍩�?椤掍胶鈯曢拑杈ㄧ箾閸繂顣崇紒杈ㄦ尰閹峰懐绮欏▎鍙ョ�?闂備焦鎮堕崝宥呯暆閹间�?�绠氶柛鎰靛枛缁�?瀣亜閹板�?�鍒伴柍褜鍓欓…宄邦潖閾忚瀚氱憸搴b偓姘炬�? std::vector splitVersion(const std::string &version) { std::vector parts; std::stringstream ss(version); std::string part; - // 闂傚倷鑳堕崕鐢?磻閹捐绀夐幖娣妼绾惧鏌ㄥ┑鍡橆棡濠?垰鐡ㄧ换婵囩?閹傚闂佽崵?甸崝妤呭窗閺??殾婵ǹ娉涢獮銏$箾閹寸偟鎳愰柛?焽缁辨挻鎷呯拠鈩冾吅闁荤姳绶ょ徊?i幇?芥斀閻庯綆浜為ˇ?︽⒑缁洖澧叉い銊ユ嚇钘熼?鍥ㄧ⊕閻撶喐淇婇妶鍌?壕闂佺粯顨呴敃銈夋晝閵忊?愁嚤闁哄鍨归悡鎴︽⒑鐠恒劌娅愰柟鍑ゆ?? + // 闂傚倷鑳堕崕鐢�?�磻閹捐绀夐幖娣妼绾惧鏌ㄥ┑鍡橆棡濠�?�垰鐡ㄧ换婵囩�?�閹傚闂佽崵�?甸崝妤呭窗閺�?�?殾婵ǹ娉涢獮銏$箾閹寸偟鎳愰柛�?�焽缁辨挻鎷呯拠鈩冾吅闁荤姳绶ょ徊�?i幇�?�芥斀閻庯綆浜為ˇ�?�︽⒑缁洖澧叉い銊ユ嚇钘熼�?鍥ㄧ⊕閻撶喐淇婇妶鍌�?壕闂佺粯顨呴敃銈夋晝閵忊�?愁嚤闁哄鍨归悡鎴︽⒑鐠恒劌娅愰柟鍑ゆ�?? while (std::getline(ss, part, '.')) { - parts.push_back(std::stoi(part)); // 闂備浇?х换鎰崲閹邦儵娑?旈崨?炵?柟鍏肩暘閸斿瞼?堥崼銉︾厵缂備焦锚缁楁岸鏌涙繝鍕毈闁哄矉缍佹俊鎼佸Ψ閵?喕绱旈梻浣呵圭?涒晠骞愰崘鑼?婵ǹ娉涢獮銏℃叏濮楀棗骞橀柕鍫櫍?婅?娑甸崪浣告異濠电姭鎳囬崑鎾绘煟閻樺啿濮夐柛鐘崇?椤曪綁顢曢妶鍌氫壕婵炴垶顏伴幋婵冩灁闁跨噦鎷? + parts.push_back(std::stoi(part)); // 闂備浇�?�х换鎰崲閹邦儵娑�?�旈崨�?�炵�?柟鍏肩暘閸斿瞼�?堥崼銉︾厵缂備焦锚缁楁岸鏌涙繝鍕毈闁哄矉缍佹俊鎼佸Ψ閵�?�喕绱旈梻浣呵圭�?涒晠骞愰崘鑼�?�婵ǹ娉涢獮銏℃叏濮楀棗骞橀柕鍫櫍�?婅�?�娑甸崪浣告異濠电姭鎳囬崑鎾绘煟閻樺啿濮夐柛鐘崇�?椤曪綁顢曢妶鍌氫壕婵炴垶顏伴幋婵冩灁闁跨噦鎷�? } return parts; } -// 濠电姵?栭崳?滃緤閹灛娑欐媴閻戞﹩鍋ㄥ┑鐘绘涧濞层劑鍩㈤弮?熺厪闁割偅绻傞顓㈡煕閵堝拋鍎旈柡宀?到铻?柍?鍓熼幃褎绻濋崒锕佲偓鍨归崗鍏肩稇闁活厽顨婇弻銊╂偆閸屾稑顏� +// 濠电姵�?�栭崳�?�滃緤閹灛娑欐媴閻戞﹩鍋ㄥ┑鐘绘涧濞层劑鍩㈤弮�?熺厪闁割偅绻傞顓㈡煕閵堝拋鍎旈柡宀�?到铻�?柍�?�鍓熼幃褎绻濋崒锕佲偓鍨归崗鍏肩稇闁活厽顨婇弻銊╂偆閸屾稑顏� int compareVersions(const std::string &version1, const std::string &version2) { std::vector v1 = splitVersion(version1); std::vector v2 = splitVersion(version2); - // 闂傚倷鑳堕幊鎾绘倶濮樿泛纾块柟鎯版閺勩儳鈧厜鍋撻柛鏇ㄥ亜閻濇﹢姊洪柅鐐茶??у瓨鎱ㄦ繝鍌涜?闁圭懓瀚版俊鎼佹晜閻愵剚?忛梻鍌欒兌缁垶銆?崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨婇弻锝??閿濆棭??梺鍛婃煟閸庣敻??诲☉銏犵闁瑰鍎愬Λ锕傛⒑閸濆??顥″瀛樻倐?炲棝??崼鐔告闂佽法鍣﹂幏锟� + // 闂傚倷鑳堕幊鎾绘倶濮樿泛纾块柟鎯版閺勩儳鈧厜鍋撻柛鏇ㄥ亜閻濇﹢姊洪柅鐐茶�?��?�у瓨鎱ㄦ繝鍌涜�?�闁圭懓瀚版俊鎼佹晜閻愵剚�?�忛梻鍌欒兌缁垶銆�?崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨婇弻锝�?��?�閿濆棭�?�?梺鍛婃煟閸庣敻�??诲☉銏犵闁瑰鍎愬Λ锕傛⒑閸濆�??顥″瀛樻倐�?�炲棝�??崼鐔告闂佽法鍣﹂幏锟� size_t maxLength = std::max(v1.size(), v2.size()); for (size_t i = 0; i < maxLength; ++i) { - int num1 = i < v1.size() ? v1[i] : 0; // 婵犵數濮烽。浠?焵椤掆偓閸熷潡鍩?椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓濋幗鏇㈡⒑閸︻厼顣兼繝銏★耿瀹曟繈濡烽埡鍌滃幈闂佸湱鍎ら崹鍫曀夊▎鎴犵<婵°倐鍋撴い锕備憾閸┾偓妞ゆ帊鑳堕埊鏇㈡煥濮橆厾绡€闁逞屽墴椤㈡?宕奸悢鍛婄彨闁诲?鍘滈崑鎾绘煕閹邦喖浜剧紓?咃攻缁绘盯骞??悙瀛樺創闂佺懓鍤栭幏锟?0 + int num1 = i < v1.size() ? v1[i] : 0; // 婵犵數濮烽。浠�?焵椤掆偓閸熷潡鍩�?椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓濋幗鏇㈡⒑閸︻厼顣兼繝銏★耿瀹曟繈濡烽埡鍌滃幈闂佸湱鍎ら崹鍫曀夊▎鎴犵<婵°倐鍋撴い锕備憾閸┾偓妞ゆ帊鑳堕埊鏇㈡煥濮橆厾绡€闁逞屽墴椤㈡�?�宕奸悢鍛婄彨闁诲�?�鍘滈崑鎾绘煕閹邦喖浜剧紓�?�咃攻缁绘盯骞�??悙瀛樺創闂佺懓鍤栭幏锟�?0 int num2 = i < v2.size() ? v2[i] : 0; - if (num1 > num2) return 1; // version1 婵犵數濮伴崹褰掓偉閵忋倕纾兼繝濠傛椤?? version2 - if (num1 < num2) return -1; // version1 闂備浇?х换鎰崲閹邦喗宕查悗锝庡墲婵娊鏌ㄩ悤鍌涘? version2 + if (num1 > num2) return 1; // version1 婵犵數濮伴崹褰掓偉閵忋倕纾兼繝濠傛椤�?�? version2 + if (num1 < num2) return -1; // version1 闂備浇�?�х换鎰崲閹邦喗宕查悗锝庡墲婵娊鏌ㄩ悤鍌涘�? version2 } - return 0; // 闂傚倷鑳剁划顖炪??崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨呴—鍐偓锝庝簻椤掋垻绱掓担鍦弨闁哄?绋戦~婵?倷椤掆偓椤忥? + return 0; // 闂傚倷鑳剁划顖炪�?�?崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨呴—鍐偓锝庝簻椤掋垻绱掓担鍦弨闁哄�?绋戦~婵�?倷椤掆偓椤忥�? } void Binary_Bit(unsigned char *p_data, unsigned char position, int flag) { - //婵犵數鍋涢悺銊у垝瀹€鍕剹濞达絿鍎ゅ畷鍙夋叏濡炶浜鹃悗瑙勬礃瀹€鎼佸箠濠婂牊鍋ㄩ梻鍫熺☉缁傚繐鈹戦悙鑸靛涧缂佽尙鏅划鏃堝醇閺囩喎浠鹃梺?曞墲缁??帡鍩涢弽顓熺厾闁归棿鐒﹀☉?鏌h箛鏃戞疁闁哄??鍊濆鍫曞?鎼粹剝顏熺紓鍌欑劍濡垿骞忛敓锟� position婵犵數鍋為崹?曞?娴e?娴?柕濞у懐顦梺鍛婄⊕濞兼瑩?告笟鈧弻銊╂偆閸屾稑?�(婵犵數鍋涢顓熷垔閹绢喖绠柨鐕傛??0 闂佽瀛╅鏍窗閹烘纾婚柟鐐灱閺?鑺ャ亜閺囩偞顥為悗?炬?) + //婵犵數鍋涢悺銊у垝瀹€鍕剹濞达絿鍎ゅ畷鍙夋叏濡炶浜鹃悗瑙勬礃瀹€鎼佸箠濠婂牊鍋ㄩ梻鍫熺☉缁傚繐鈹戦悙鑸靛涧缂佽尙鏅划鏃堝醇閺囩喎浠鹃梺�?曞墲缁�??帡鍩涢弽顓熺厾闁归棿鐒﹀☉�?�鏌h箛鏃戞疁闁哄�??鍊濆鍫曞�?�鎼粹剝顏熺紓鍌欑劍濡垿骞忛敓锟� position婵犵數鍋為崹�?曞�?�娴e�?�娴�?柕濞у懐顦梺鍛婄⊕濞兼瑩�?告笟鈧弻銊╂偆閸屾稑�?��(婵犵數鍋涢顓熷垔閹绢喖绠柨鐕傛�??0 闂佽瀛╅鏍窗閹烘纾婚柟鐐灱閺�?鑺ャ亜閺囩偞顥為悗�?�炬�?) if (flag) { *p_data |= 0x01 << (position); } else { diff --git a/common/parameter_defination.hpp b/common/parameter_defination.hpp index 5615042..d9159b9 100644 --- a/common/parameter_defination.hpp +++ b/common/parameter_defination.hpp @@ -145,6 +145,7 @@ struct Param_41 { std::string mdataNodeName; std::string mdataNodeNo; std::string mMeasurementID; + std::string mShortAddr; int mfeatureInterVal; int mwaveInterVal; int msamplingRate; @@ -158,7 +159,7 @@ struct Param_41 { int ZigbeePower; int ZigbeeRetry; std::string nodeWaveSend; - Param_41() : mdataNodeName(""), mdataNodeNo(""), mMeasurementID{""}, mfeatureInterVal(0), mwaveInterVal(0), msamplingRate(0), mrange(0), + Param_41() : mdataNodeName(""), mdataNodeNo(""), mMeasurementID(""),mShortAddr("") ,mfeatureInterVal(0), mwaveInterVal(0), msamplingRate(0), mrange(0), mAccSampleTime(0), mstartBrands(""), mstopBrands(""), menvelopeBandPass(""), mviff(0), mfaultFrequency(""), nodeWaveSend{""} {}; }; @@ -321,8 +322,18 @@ struct Param_59 { struct Param_60 { std::string fileName; int product; + std::string mShortAddr; std::vector dataNodeNo; - Param_60() : fileName(""),product(0){}; + Param_60() : fileName(""),product(0),mShortAddr(""){}; +}; +struct Param_61 { + int mMode; + std::string MeasurementID; + std::string straxis; + std::string timeStart; + std::string timeEnd; + int mPackageFlag; + Param_61() : mMode(0),MeasurementID(""),straxis(""),mPackageFlag(0){}; }; #endif // PARAMETER_DEFINATION_HPP_ diff --git a/dbaccess/sql_db.cpp b/dbaccess/sql_db.cpp index aec3ab0..4dc8c88 100644 --- a/dbaccess/sql_db.cpp +++ b/dbaccess/sql_db.cpp @@ -212,6 +212,10 @@ void SqliteDB::SqliteInit(const char *pDbName) { if(iRet == 0){ CreateTable("ALTER TABLE t_data_waveSend ADD COLUMN 'save'"); } + iRet = GetTableRows(" sqlite_master "," name = 't_data_waveSend' and sql LIKE '%error_code%' "); + if(iRet == 0){ + CreateTable("ALTER TABLE t_data_waveSend ADD COLUMN 'error_code'"); + } memset(sql_exec, 0, 2048); sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s);", diff --git a/jsonparse/communication_cmd.hpp b/jsonparse/communication_cmd.hpp index 7a60398..eb75f6b 100644 --- a/jsonparse/communication_cmd.hpp +++ b/jsonparse/communication_cmd.hpp @@ -66,6 +66,7 @@ public: std::string JsonCmd_Cgi_58(Param_58 ¶m); std::string JsonCmd_Cgi_59(Param_59 ¶m); std::string JsonCmd_Cgi_60(Param_60 ¶m); + std::string JsonCmd_Cgi_61(Param_61 ¶m); std::string JsonCmd_Cgi_default(); private: diff --git a/jsonparse/web_cmd_parse.cpp b/jsonparse/web_cmd_parse.cpp index dfdc69c..245a97f 100644 --- a/jsonparse/web_cmd_parse.cpp +++ b/jsonparse/web_cmd_parse.cpp @@ -150,7 +150,7 @@ std::string JsonData::JsonCmd_Cgi_09(Param_09 ¶m) { char looseValue[10] = {0x00}; readStringValue("config", "loose", looseValue, (char *)GlobalConfig::Config_G.c_str()); - array_t arrResAll = sqlite_db_ctrl::instance().GetDataMultiLine(T_SENSOR_INFO(TNAME), " dataNodeNo,MeasurementID ", NULL); + array_t arrResAll = sqlite_db_ctrl::instance().GetDataMultiLine(T_SENSOR_INFO(TNAME), " dataNodeNo,MeasurementID,zigbeeShortAddr ", NULL); int nSize = arrResAll.size(); if (nSize > 0) { int packgeNo = param.mPackageFlag; @@ -182,6 +182,7 @@ std::string JsonData::JsonCmd_Cgi_09(Param_09 ¶m) { for (int i = packgeNo * 10; i < packgeNum; i++) { Json::Value jsSensor; std::string strMeasurementID = arrResAll[i][1]; + std::string strShortAddr = arrResAll[i][2]; char whereCon[512] = {}; sprintf(whereCon, "channelID like '%%%s%%' ORDER BY timeStamp DESC LIMIT 0,3", strMeasurementID.c_str()); // 自数据库获取传感器特征数据 @@ -192,6 +193,7 @@ std::string JsonData::JsonCmd_Cgi_09(Param_09 ¶m) { for (int j = 0; j < iResult; j++) { Json::Value jsChannelData; jsChannelData["ChannelId"] = arrRes[j][1]; + jsChannelData["ShortAddr"] = strShortAddr; jsChannelData["ChannelType"] = "ACCELEROMETER"; jsChannelData["DiagnosisPeak"] = atof(arrRes[j][2].c_str()); jsChannelData["IntegratPk2Pk/2"] = atof(arrRes[j][3].c_str()); @@ -234,6 +236,7 @@ std::string JsonData::JsonCmd_Cgi_09(Param_09 ¶m) { jsStaticData["battery"] = vecRes[13]; jsStaticData["MeasurementID"] = strMeasurementID; jsStaticData["dataNodeNo"] = arrResAll[i][0]; + jsStaticData["ShortAddr"] = strShortAddr; jsStaticData["status"] = vecRes[11]; jsStaticData["loose"] = "0"; diff --git a/jsonparse/web_cmd_parse2.cpp b/jsonparse/web_cmd_parse2.cpp index 3e27b1d..d4c7171 100644 --- a/jsonparse/web_cmd_parse2.cpp +++ b/jsonparse/web_cmd_parse2.cpp @@ -727,6 +727,7 @@ std::string JsonData::JsonCmd_Cgi_41(std::vector ¶m, int isServer) param[i].ZigbeePower, param[i].ZigbeeRetry, param[i].mfeatureInterVal, param[i].mwaveInterVal, param[i].mrange, param[i].msamplingRate, param[i].mAccSampleTime, param[i].mstartBrands.c_str(), param[i].mstopBrands.c_str(), param[i].menvelopeBandPass.c_str(), param[i].mviff, param[i].mfaultFrequency.c_str(), param[i].mMeasurementID.c_str(), param[i].nodeWaveSend.c_str()); } + scheduler::instance().UpdateSensorConfig(atoi(param[i].mShortAddr.c_str())); if (!isServer) sprintf(whereCon, "dataNodeNo='%s'", param[i].mdataNodeNo.c_str()); else diff --git a/jsonparse/web_cmd_parse3.cpp b/jsonparse/web_cmd_parse3.cpp index 328c5b9..017682c 100644 --- a/jsonparse/web_cmd_parse3.cpp +++ b/jsonparse/web_cmd_parse3.cpp @@ -636,26 +636,162 @@ std::string JsonData::JsonCmd_Cgi_60(Param_60 ¶m){ fread (buffer, sizeof (char), thisSize, pFile); fclose (pFile); } - char head[9]={0}; + + printf("Read %zu bytes\n", thisSize); + fclose(pFile); + + char sensor_type[6] = {0}; + char sf_version[10] = {0}; + memcpy(sensor_type, buffer, 5); + printf("model:%s\n", sensor_type); + char c[2] = {0}; + c[0] = buffer[5]; + uint8_t hw_ver = atoi(c); + c[0] = buffer[6]; + uint8_t sf_ver_m = atoi(c); + c[0] = buffer[7]; + uint8_t sf_ver_s = atoi(c); + sprintf(sf_version,"%d.%d",sf_ver_m,sf_ver_s); + unsigned char ch_crc = 0x00; int packgeSize = 0; - memcpy(head,buffer,8); + ch_crc = buffer[12]; packgeSize = BUILD_UINT32(buffer[8],buffer[9],buffer[10],buffer[11]); - zlog_info(zct,"head = %s\n",head); + zlog_info(zct,"sf_ver_m = %d\n",sf_ver_m); + zlog_info(zct,"sf_ver_s = %d\n",sf_ver_s); + zlog_info(zct,"hw_ver = %d\n",hw_ver); + zlog_info(zct,"sensor_type = %s\n",sensor_type); zlog_info(zct,"packgeSize = %d\n",packgeSize); + zlog_info(zct,"ch_crc = %02x\n",ch_crc); unsigned char sum = 0x00; for(size_t i = 13; i < thisSize;i++){ sum += buffer[i]; } + if (sum % 256 != ch_crc) + { + jsonVal["success"] = false; + jsonVal["message"] = "package CRC error"; + return show_value_.write(jsonVal); + } + printf("sum = %x\n",sum % 256); return show_value_.write(jsonVal); char localtimestamp[32] = {0}; GetTimeNet(localtimestamp, 1); for (size_t i = 0; i < param.dataNodeNo.size(); i++) { - //char insertSql[1024] = {0}; - - //sprintf(insertSql, " '%s','%s','%d','%d','%d','%d','%d','%d','%d'",param.dataNodeNo[i].c_str(),localtimestamp); - } - + char wherecon[100] = {0}; + char insertSql[200] = {0}; + sprintf(wherecon," dataNodeNo = '%s' ",param.dataNodeNo[i].c_str()); + vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " hardVersion,softVersion,ProductNo,zigbeeShortAddr ", wherecon); + if (hw_ver != atoi(vecResult[0].c_str())) + { + jsonVal["success"] = false; + jsonVal["message"] = "hardVersion error"; + return show_value_.write(jsonVal); + } + + sprintf(insertSql, " '%s','%s','','','','','%d.%d','%s',1",param.dataNodeNo[i].c_str(),localtimestamp,sf_ver_m,sf_ver_s,vecResult[1].c_str()); + sqlite_db_ctrl::instance().InsertData(" firmware_upgrade ", insertSql); + scheduler::instance().UpgradeSensor(atoi(vecResult[3].c_str()),std::string(sensor_type),atoi(vecResult[0].c_str()),vecResult[1],std::string(sf_version)); + } } + +std::string JsonData::JsonCmd_Cgi_61(Param_61 ¶m){ + + Json::Value jsonVal; + jsonVal.clear(); + + jsonVal[JSON_FIELD_CMD] = "10"; + jsonVal["success"] = true; + jsonVal["message"] = " "; + vec_t vetRes = sqlite_db_ctrl::instance().GetDataMultiLineOfOneColumn(T_SENSOR_INFO(TNAME), T_SENSOR_INFO(DATANODENO), NULL); + int nSize = vetRes.size(); + if (nSize > 0) { + char selectCon[256] = {0}, szTableName[100] = {0x00}, whereCon[256] = {0x00}; + sprintf(selectCon, " channelID,timeStamp,sendMsg,error_code "); + sprintf(szTableName, "t_data_waveSend"); + if (param.timeEnd == "") { + sprintf(whereCon, "channelID = '%s-%s'", param.MeasurementID.c_str(),param.straxis.c_str()); + } else { + sprintf(whereCon, " channelID = '%s-%s' and timeStamp < '%s' and timeStamp > '%s' ", param.MeasurementID.c_str(),param.straxis.c_str(), param.timeEnd.c_str(), param.timeStart.c_str()); + } + + int rows = sqlite_db_ctrl::instance().GetTableRows(szTableName, whereCon); + int packgeNo = param.mPackageFlag; + int packgeMax = 0; + int packgeNum = 0; + jsonVal["package"] = packgeNo; + int lastSize = rows % 550; + int index = rows / 550; + if (lastSize > 0 && index > 0) { + packgeMax = index + 1; + if (packgeNo + 1 == packgeMax) { + packgeNum = rows - lastSize; + jsonVal["packageMax"] = index + 1; + } else { + packgeNum = (packgeNo)*550; + jsonVal["packageMax"] = index + 1; + } + } else if (lastSize == 0 && index > 0) { + packgeNum = (packgeNo + 1) * 550; + packgeMax = index; + jsonVal["packageMax"] = index; + } else if (lastSize > 0 && index == 0) { + packgeNum = 0; + packgeMax = index + 1; + jsonVal["packageMax"] = index; + } + + memset(whereCon, 0x00, sizeof(whereCon)); + + if (param.timeEnd == "") { + sprintf(whereCon, "channelID = '%s-%s' order by timeStamp asc LIMIT %d OFFSET %d", param.MeasurementID.c_str(), param.straxis.c_str(), 550, packgeNum); + } else { + sprintf(whereCon, "channelID = '%s-%s' and timeStamp < '%s' and timeStamp > '%s' order by timeStamp asc LIMIT %d OFFSET %d", param.MeasurementID.c_str(), param.straxis.c_str(), param.timeEnd.c_str(), param.timeStart.c_str(), 550, packgeNum); + } + array_t vecRes; + + vecRes = sqlite_db_ctrl::instance().GetDataMultiLine(szTableName, selectCon, whereCon); + zlog_info(zct, "vecRes = %d", vecRes.size()); + if (vecRes.size() > 0) { + Json::Value jsStaticData; + for (size_t i = 0; i < vecRes.size(); i++) { + Json::Value iTem; + if (vecRes[i][0] == param.MeasurementID + "-X") { + iTem.append(vecRes[i][1]); + iTem.append(vecRes[i][2]); + iTem.append(vecRes[i][3]); + jsStaticData["X"].append(iTem); + } + if (vecRes[i][0] == param.MeasurementID + "-Y") { + iTem.append(vecRes[i][1]); + iTem.append(vecRes[i][2]); + iTem.append(vecRes[i][3]); + jsStaticData["Y"].append(iTem); + } + if (vecRes[i][0] == param.MeasurementID + "-Z") { + iTem.append(vecRes[i][1]); + iTem.append(vecRes[i][2]); + iTem.append(vecRes[i][3]); + jsStaticData["Z"].append(iTem); + } + } + if (jsStaticData.size() == 0) { + jsonVal["success"] = false; + jsonVal["content"].resize(0); + } else { + jsonVal["content"] = (jsStaticData); + } + + zlog_info(zct, "vecRes = %d,channelID = %s", vecRes.size(), vecRes[0][0].c_str()); + } else { + jsonVal["success"] = false; + jsonVal["content"].resize(0); + } + } else { + jsonVal["success"] = false; + jsonVal["content"].resize(0); + } + return show_value_.write(jsonVal); +} diff --git a/localserver/local_server.hpp b/localserver/local_server.hpp index fd6f201..349439b 100644 --- a/localserver/local_server.hpp +++ b/localserver/local_server.hpp @@ -49,7 +49,8 @@ enum WebCommand { kEnableZigbeePower = 57, kSchedulingConfiguration = 58, kLostRecords = 59, - kTransducerUpgrade = 60 + kTransducerUpgrade = 60, + kWaveRecords = 61 }; class LocalServer { diff --git a/localserver/web_cmd.cpp b/localserver/web_cmd.cpp index 8de6f1d..1ab5aba 100644 --- a/localserver/web_cmd.cpp +++ b/localserver/web_cmd.cpp @@ -256,6 +256,7 @@ std::string LocalServer::HandleCgi_cmd(std::string &pData) { param.ZigbeeRetry = recvBody[i]["ZigbeeRetry"].asInt(); param.mMeasurementID = recvBody[i]["MeasurementID"].asString(); param.nodeWaveSend = recvBody[i]["nodeWaveSend"].asString(); + param.mShortAddr = recvBody[i]["shortAddr"].asString(); param41.push_back(param); } std::string data = jd.JsonCmd_Cgi_41(param41); @@ -405,6 +406,7 @@ std::string LocalServer::HandleCgi_cmd(std::string &pData) { Param_60 param; param.fileName = recvBody["fileName"].asString(); param.product = recvBody["product"].asInt(); + param.mShortAddr = recvBody["shortAddr"].asString(); Json::Value recvDataNodeNo = recvBody["DataNodeNo"]; if (recvDataNodeNo.size() > 0) { @@ -415,6 +417,14 @@ std::string LocalServer::HandleCgi_cmd(std::string &pData) { std::string data = jd.JsonCmd_Cgi_60(param); return data; }break; + case kWaveRecords:{ + JsonData jd; + Param_61 param; + + param.straxis = recvBody["Raxis"].asString(); + std::string data = jd.JsonCmd_Cgi_61(param); + return data; + }break; default: JsonData jd; std::string data = jd.JsonCmd_Cgi_default(); diff --git a/uart/uart.cpp b/uart/uart.cpp index 4d80d02..aec96b5 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -273,7 +273,8 @@ int Uart::ZigbeeTest() { } void Uart::WriteToUart(const char *strSend, int pLen) { - if (!bUpdate) { + if (!bUpdate) + { printf( "Write To Uart Start:\n"); for (int i = 0; i < pLen; i++) { printf("%02X ", *(strSend + i) & 0xFF); @@ -371,6 +372,7 @@ int Uart::DealAskTask(uint16_t ushortAdd){ int next_duration = 0; int taskID = scheduler::instance().StartSchedule(ushortAdd,next_duration); ScheduleTask scheduleTask; + taskID = 5; zlog_info(zct, "taskID = %d ", taskID); if (taskID == kScheduleEigenValue) //1.特征值 { @@ -392,9 +394,8 @@ int Uart::DealAskTask(uint16_t ushortAdd){ } else if (taskID == kScheduleUpgrade) //3.升级 { - scheduleTask.cmd = UPGRADE; - scheduleTask.shortAddr = ushortAdd; - TaskResp(scheduleTask); + zlog_info(zct, "taskID123 = %d ", taskID); + UpdateWirelessNode(ushortAdd); }else if (taskID == kScheduleConfigSensor) //4.更新配置 { scheduleTask.cmd = CONFIG; @@ -409,10 +410,10 @@ int Uart::DealAskTask(uint16_t ushortAdd){ TaskResp(scheduleTask); }else if (taskID == kScheduleConfigSensor) //6.更新配置 { - DealConfig(ushortAdd); - }else if (taskID == kScheduleUpgrade) //7.更新固件 - { - ReadUpdatePackge(ushortAdd); + scheduleTask.cmd = CONFIG; + scheduleTask.shortAddr = ushortAdd; + TaskResp(scheduleTask); + UpdateConfig(ushortAdd); } return 0; @@ -439,9 +440,10 @@ int Uart::DealConfig(uint16_t ushortAdd){ char whereCon[1024] = {0}; char updateSql[1024] = { 0 }; - sprintf(updateSql, "UpdateFlag = UpdateFlag + 1"); + sprintf(updateSql, "UpdateFlag = 1"); sprintf(whereCon, "zigbeeShortAddr='%hu'", ushortAdd); sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), updateSql, whereCon); + scheduler::instance().UpdateConfigResult(ushortAdd,0); return 0; } int Uart::DealWaveCompress(const char *pData,uint16_t ushortAdd){ @@ -490,18 +492,20 @@ void Uart::DealRecvData(const char *pData) { DealDataNodeFeature(pData, 0); DealReviveDuration(ushortAdd); break; - case CONFIG: + case UPGRADE_FIRMWARE: if (recvcode == 0) { - DealReviveDuration(ushortAdd); + scheduler::instance().UpgradeResult(ushortAdd,0); }else{ zlog_error(zct, "shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); } break; - case UPGRADE: + case CONFIG_INF2: if (recvcode == 0) { - UpdateWirelessNode(ushortAdd); + DealReviveDuration(ushortAdd); + DealConfig(ushortAdd); + }else{ zlog_error(zct, "shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); } @@ -816,7 +820,7 @@ void Uart::DealDataNodeInfo(const char *pData) { '%d','%d','%d','%s','%d','%s',\ '%s','%u','%d','%d','%s','%d', '%s', '%s',\ '%s','%d','%s','%s','%s',\ - '%d','%d','%d','%d','%s','%s', '%d', '0,%d','1','0,0','','',''", + '%d','%d','%d','%d','%s','%s', '%d', '0,%d','1','0,0','','','',0", dataNodeInfo.ZigbeeLongAddr.c_str(), " ", dataNodeInfo.InitFlag, dataNodeInfo.AccFlag, dataNodeInfo.ZigbeeFlag, dataNodeInfo.TemTopFlag, dataNodeInfo.TemBotFlag, dataNodeInfo.EquipSta, dataNodeInfo.HardVersion.c_str(), dataNodeInfo.SoftVersion.c_str(), dataNodeInfo.BpNo.c_str(), dataNodeInfo.SerialNo.c_str(), dataNodeInfo.FirstPowerTime.c_str(), dataNodeInfo.WakeupTime, dataNodeInfo.StaticTime, dataNodeInfo.WaveTime, dataNodeInfo.BateryV, dataNodeInfo.ProductNo.c_str(), dataNodeInfo.ConfigFlag, dataNodeInfo.StartBrands.c_str(), dataNodeInfo.StopBrands.c_str(), dataNodeInfo.FeatureInterVal, dataNodeInfo.WaveInterVal, dataNodeInfo.SamplingRate, "", dataNodeInfo.Range, dataNodeInfo.EnvelopeBandPass.c_str(), dataNodeInfo.FaultFrequency.c_str(), @@ -1034,7 +1038,7 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) { break; } } - if (command == CONFIG || command == CONFIG_INF2 || command == UPGRADE || command == SIGNAL_STRENGTH || command == DEVICE_EXCEPTION || command == WAVE_COMPRESS) + if (command == CONFIG || command == CONFIG_INF2 || command == UPGRADE_FIRMWARE || command == SIGNAL_STRENGTH || command == DEVICE_EXCEPTION || command == WAVE_COMPRESS) { memcpy(RecvBuf, &UartRecvBuf[i], 9); if (!CheckCrc(RecvBuf, 8)) { diff --git a/uart/uart.hpp b/uart/uart.hpp index 7b2a79f..f2c6a6c 100644 --- a/uart/uart.hpp +++ b/uart/uart.hpp @@ -204,9 +204,9 @@ public: void UpdateZigbeeInfoCtrl(); // tranducer parameter config - void UpdateWirelessNode(unsigned short shortAdd); + void UpdateWirelessNode(uint16_t ushortAdd); int UpdateWirelessNodeTime(unsigned char* pDestShortAddr, int modifyaddr); - int UpdateConfig(unsigned char* pDestShortAddr); + int UpdateConfig(uint16_t ushortAdd); bool ReadUpdatePackge(uint16_t ushortAdd); int TaskResp(ScheduleTask scheduleTask); int SendReviveDuration(ReviveDuration recvDuration); diff --git a/uart/uart_feature_parse.cpp b/uart/uart_feature_parse.cpp index e33fd08..670b1ff 100644 --- a/uart/uart_feature_parse.cpp +++ b/uart/uart_feature_parse.cpp @@ -950,7 +950,7 @@ void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChan std::string strFileName_Record = strFileName + "_" + nowTimetamp; if ((Count * 3 < SAVE_COUNT && lTime < OneWeek) || strTime.size() == 0) { char insertSql[128] = {0x00}; - sprintf(insertSql, "'%s','%s','%s',1,0", strChannelID.c_str(), strFileName_Record.c_str(), nowTimetamp.c_str()); + sprintf(insertSql, "'%s','%s','%s',1,0,0", strChannelID.c_str(), strFileName_Record.c_str(), nowTimetamp.c_str()); sqlite_db_ctrl::instance().InsertData("t_data_waveSend", insertSql); } else { char updateSql[128] = {0}, whereCon[128] = {0}; @@ -972,7 +972,7 @@ void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChan zlog_error(zct, "save channlID %s dat count = %d", strChannelID.c_str(), count); if (count <= 12) { sprintf(whereCon, "channelID='%s' and timeStamp = '%s' ", strChannelID.c_str(), nowTimetamp.c_str()); - sprintf(updateSql, "SendMsg = 0 "); + sprintf(updateSql, "SendMsg = 0 , error_code = %d",iRet); sqlite_db_ctrl::instance().UpdateTableData("t_data_waveSend", updateSql, whereCon); zlog_error(zct, "send failed,filename %s,iRet = %d", strFileName.c_str(), iRet); std::string strFileName_failed = strFileName + "_" + nowTimetamp; @@ -986,12 +986,12 @@ void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChan vec_t vecRet = sqlite_db_ctrl::instance().GetDataSingleLine("t_data_waveSend", "*", tmpWhere); memset(tmpWhere, 0x00, sizeof(tmpWhere)); sprintf(tmpWhere, " sendMsg = 0 and timeStamp = '%s' and channelID = '%s' ", vecRet[2].c_str(), vecRet[0].c_str()); - sprintf(updateSql, "sendMsg = 3 "); + sprintf(updateSql, " sendMsg = 3 "); sqlite_db_ctrl::instance().UpdateTableData("t_data_waveSend", updateSql, tmpWhere); memset(tmpWhere, 0x00, sizeof(tmpWhere)); memset(updateSql, 0x00, sizeof(updateSql)); - sprintf(whereCon, "channelID='%s' and timeStamp = '%s' ", strChannelID.c_str(), nowTimetamp.c_str()); - sprintf(updateSql, "sendMsg = 0"); + sprintf(whereCon, " channelID='%s' and timeStamp = '%s' ", strChannelID.c_str(), nowTimetamp.c_str()); + sprintf(updateSql, " sendMsg = 0 , error_code = %d ",iRet); sqlite_db_ctrl::instance().UpdateTableData("t_data_waveSend", updateSql, whereCon); std::string strFileName_failed = strFileName + "_" + nowTimetamp; diff --git a/uart/uart_parameter_config.cpp b/uart/uart_parameter_config.cpp index d737aa5..ee15bc6 100644 --- a/uart/uart_parameter_config.cpp +++ b/uart/uart_parameter_config.cpp @@ -12,6 +12,19 @@ extern zlog_category_t* zct; extern zlog_category_t* zbt; +#define IN_LEN (128*1024ul) +#define OUT_LEN (IN_LEN + IN_LEN / 16 + 64 + 3) +unsigned char fw_outdata[50000]={0}; +unsigned char fw_senddata[50000]={0}; + +/* Work-memory needed for compression. Allocate memory in units + * of 'lzo_align_t' (instead of 'char') to make sure it is properly aligned. + */ + +#define HEAP_ALLOC(var,size) \ + lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) ] + +static HEAP_ALLOC(wrkmem, LZO1X_1_MEM_COMPRESS); void Uart::openSwitch() { char buffer[100] = {0x00}; @@ -32,45 +45,45 @@ void Uart::openSwitch() { bool Uart::ReadUpdatePackge(unsigned short shortAdd) { // compare hardversion in update list - std::vector strHWversion; - std::string strFileName = "", strSoftVersion = ""; - std::vector vecDataNodeUpdate; - vecDataNodeUpdate = ReadStrUpdate("/opt/DataNode/config.json"); - char gethardVersion_sql[32] = {0}; - char selectsql[1024] = {0}; - sprintf(gethardVersion_sql, "zigbeeShortAddr='%02x%02x'", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); - sprintf(selectsql, "%s,%s", T_SENSOR_INFO(HARDVERSION), T_SENSOR_INFO(SOFTVERSION)); - vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), selectsql, gethardVersion_sql); - if (vecResult.size() < 1) { - return false; - } - zlog_info(zct, "hardversion %s,softversion %s", vecResult[0].c_str(), vecResult[1].c_str()); - int thisindex = -1; - int flag = -1; - for (size_t j = 0; j < vecDataNodeUpdate.size(); j++) { - for (size_t i = 0; i < vecDataNodeUpdate[j].hwVersion.size(); i++) { - if (vecResult[0] == vecDataNodeUpdate[j].hwVersion[i]) { - if (vecResult[1] == vecDataNodeUpdate[j].strSoftVersion) { - flag = 0; - break; - } else { - thisindex = i; - strFileName = vecDataNodeUpdate[j].strUpdataFileName; - break; - } - } - } - if (thisindex >= 0 || flag == 0) break; - } + // std::vector strHWversion; + std::string strFileName = "", strSoftVersion = ""; + // std::vector vecDataNodeUpdate; + // vecDataNodeUpdate = ReadStrUpdate("/opt/DataNode/config.json"); + // char gethardVersion_sql[32] = {0}; + // char selectsql[1024] = {0}; + // sprintf(gethardVersion_sql, "zigbeeShortAddr='%02x%02x'", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); + // sprintf(selectsql, "%s,%s", T_SENSOR_INFO(HARDVERSION), T_SENSOR_INFO(SOFTVERSION)); + // vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), selectsql, gethardVersion_sql); + // if (vecResult.size() < 1) { + // return false; + // } + // zlog_info(zct, "hardversion %s,softversion %s", vecResult[0].c_str(), vecResult[1].c_str()); + // int thisindex = -1; + // int flag = -1; + // for (size_t j = 0; j < vecDataNodeUpdate.size(); j++) { + // for (size_t i = 0; i < vecDataNodeUpdate[j].hwVersion.size(); i++) { + // if (vecResult[0] == vecDataNodeUpdate[j].hwVersion[i]) { + // if (vecResult[1] == vecDataNodeUpdate[j].strSoftVersion) { + // flag = 0; + // break; + // } else { + // thisindex = i; + // strFileName = vecDataNodeUpdate[j].strUpdataFileName; + // break; + // } + // } + // } + // if (thisindex >= 0 || flag == 0) break; + // } - if (thisindex < 0) return false; + // if (thisindex < 0) return false; - zlog_info(zct, "thisindex = %d", thisindex); + // zlog_info(zct, "thisindex = %d", thisindex); FILE* pFile = NULL; unsigned char* buffer = NULL; - int thisSize = 0; - DataNodeUpdateFile = "/opt/DataNode/" + strFileName; + long unsigned int thisSize = 0; + DataNodeUpdateFile = "/opt/DataNode/Time_Trigger_CubeMX.bin.new"; zlog_info(zct, "strFileName = %s", DataNodeUpdateFile.c_str()); pFile = fopen(DataNodeUpdateFile.c_str(), "rb"); if (pFile == NULL) { @@ -84,30 +97,44 @@ bool Uart::ReadUpdatePackge(unsigned short shortAdd) { fread(buffer, sizeof(char), thisSize, pFile); fclose(pFile); } - char outdata[50000]={0}; - long unsigned int new_len = 0, deallen = 0; + unsigned char outdata[50000]={0}; + long unsigned int out_len = 0; int compress = 0; - // int r = lzo1x_1_compress(buffer, thisSize, outdata, &new_len, NULL); - // if (r == LZO_E_OK){ - // if (new_len < thisSize){ - // compress = 1; - // } - // } + zlog_info(zct, "thisSize = %d", (int)thisSize); + int r = lzo1x_1_compress(buffer, thisSize, outdata, &out_len, wrkmem); + if (r == LZO_E_OK){ + zlog_warn(zct,"compressed %lu bytes into %lu bytes", + (unsigned long) thisSize, (unsigned long) out_len); + if (out_len < thisSize){ + compress = 1; + } + } + else + { + /* this should NEVER happen */ + zlog_error(zct,"internal error - compression failed: %d", r); + return 2; + } + /* check for an incompressible block */ + if (out_len >= thisSize) + { + zlog_error(zct,"This block contains incompressible data."); + return 0; + } - unsigned char Data[12] = {0x00}; + unsigned char Data[100] = {0x00}; unsigned char size[4] = {0x00}; - zlog_info(zct, "thisSize = %d", thisSize); + zlog_info(zct, "thisSize = %d", (int)thisSize); //帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 升级包大小[4byte] CRC校验[1byte] Data[0] = 0xAA; Data[1] = 0x55; Data[2] = 0xAA; Data[3] = UINT16_HIGH(shortAdd); Data[4] = UINT16_LOW(shortAdd); - Data[5] = 0x20; + Data[5] = 0x12; Data[6] = 0x00; - if (compress == 1) - { - int2bytes(new_len, size, 4); + if (compress == 1){ + int2bytes(out_len, size, 4); }else{ int2bytes(thisSize, size, 4); } @@ -115,15 +142,15 @@ bool Uart::ReadUpdatePackge(unsigned short shortAdd) { Data[14] = size[2]; Data[15] = size[1]; Data[16] = size[0]; + Data[17] = compress & 0xFF; - unsigned char tmp = 0x00; - for (int i = 0; i < 11; i++) { + for (int i = 0; i < 100; i++) { tmp += Data[i]; } - Data[11] = tmp; + Data[99] = tmp; sleep(1); - WriteToUart((const char*)Data, 12); + WriteToUart((const char*)Data, 100); int iRet = CheckZigbeeACK(); if (iRet == 0) { zlog_info(zct, "Packge ACK send success,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); @@ -136,78 +163,137 @@ bool Uart::ReadUpdatePackge(unsigned short shortAdd) { return true; } -void Uart::UpdateWirelessNode(unsigned short shortAdd) { +void Uart::UpdateWirelessNode(uint16_t shortAdd) { std::string strTime = GetLocalTimeWithMs(); zlog_info(zct, "UpdateWirelessNode start = %s UpdateWirelessNode id = %02x %02x", strTime.c_str(), UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); - + bUpdate = true; FILE* pFile = NULL; - int thisSize = 0; - char* buffer = NULL; - int resendCount = 0; + long unsigned int thisSize = 0; + long unsigned int out_len = 0; + unsigned char* buffer = NULL; + int compress = 0; + memset(fw_outdata,0,sizeof(fw_outdata)); + memset(fw_senddata,0,sizeof(fw_senddata)); + DataNodeUpdateFile = "/opt/DataNode/Time_Trigger_CubeMX.bin.new"; + zlog_info(zct, "strFileName = %s", DataNodeUpdateFile.c_str()); pFile = fopen(DataNodeUpdateFile.c_str(), "rb"); if (pFile != NULL) { while (fgetc(pFile) != EOF) { ++thisSize; } rewind(pFile); - buffer = (char*)malloc(thisSize); // - fread(buffer, sizeof(char), thisSize, pFile); + buffer = (unsigned char*)malloc(thisSize); + fread(buffer, sizeof(unsigned char), thisSize, pFile); fclose(pFile); + int r = lzo1x_1_compress(buffer, thisSize, fw_outdata, &out_len, wrkmem); + if (r == LZO_E_OK){ + printf("compressed %lu bytes into %lu bytes\n", + (unsigned long) thisSize, (unsigned long) out_len); + if (out_len < thisSize){ + zlog_warn(zct, "compressed %lu bytes into %lu bytes", (unsigned long)thisSize, (unsigned long)out_len); + memcpy(fw_senddata,fw_outdata,out_len); + thisSize = out_len; + compress = 1; + } + } + else + { + /* this should NEVER happen */ + zlog_error(zct,"internal error - compression failed: %d", r); + } + /* check for an incompressible block */ + if (out_len >= thisSize) + { + zlog_warn(zct,"This block contains incompressible data.out_len = %lu,thisSize = %lu",out_len,thisSize); + memcpy(fw_senddata,buffer,thisSize); + } + unsigned char Data[100] = {0x00}; + unsigned char size[4] = {0x00}; + zlog_info(zct, "thisSize = %d", (int)thisSize); + //帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 升级包大小[4byte] CRC校验[1byte] + Data[0] = 0xAA; + Data[1] = 0x55; + Data[2] = 0xAA; + Data[3] = UINT16_HIGH(shortAdd); + Data[4] = UINT16_LOW(shortAdd); + Data[5] = 0x0C; + Data[6] = 0x00; + if (compress == 1){ + int2bytes(out_len, size, 4); + }else{ + int2bytes(thisSize, size, 4); + } + Data[13] = size[0]; + Data[14] = size[1]; + Data[15] = size[2]; + Data[16] = size[3]; + Data[17] = compress & 0xFF; + + unsigned char tmp = 0x00; + for (int i = 0; i < 100; i++) { + tmp += Data[i]; + } + Data[99] = tmp; + sleep(1); + WriteToUart((const char*)Data, 100); + int iRet = CheckZigbeeACK(); + if (iRet == 0) { + zlog_info(zct, "Packge ACK send success,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); + } else { + zlog_error(zct, "Packge ACK send failed,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); + } + mssleep(10000); + zlog_info(zct,"senddata size = %d",strlen((char*)fw_senddata)); int Count = thisSize / 92; int lastSize = thisSize % 92; unsigned char UpdateData[100] = {0x00}; //帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 数据包[92byte] CRC校验[1byte] - zlog_info(zct, "Start Update!!! file Size = %d", thisSize); - unsigned char tmp = 0x00; + zlog_warn(zct, "Start Update!!! file Size = %d,Count = %d,lastSize = %d", (int)thisSize,Count,lastSize); + tmp = 0x00; gpio_set(GlobalConfig::GPIO_G.zigAckreset, 0); mssleep(1000); gpio_set(GlobalConfig::GPIO_G.zigAckreset, 1); - for (int j = 0; j < Count; j++) { - int time, value; - UpdateData[0] = 0xAA; - UpdateData[1] = 0x55; - UpdateData[2] = 0xAA; - UpdateData[3] = UINT16_HIGH(shortAdd); - UpdateData[4] = UINT16_LOW(shortAdd); - UpdateData[5] = 0x21; - UpdateData[6] = 0xff & j; - memcpy(&UpdateData[7], buffer + 92 * j, 92); + for(int j = 0; j < Count;j++){ + int time ,value; + UpdateData[0]=0xAA; + UpdateData[1]=0x55; + UpdateData[2]=0xAA; + UpdateData[3]=UINT16_HIGH(shortAdd); + UpdateData[4]=UINT16_LOW(shortAdd); + UpdateData[5]=0x10; + UpdateData[6]=0xff & j; + memcpy(&UpdateData[7],fw_senddata+92*j,92); tmp = 0x00; - for (int k = 0; k < 99; k++) { - tmp += UpdateData[k]; + for(int k = 0; k < 99;k++){ + tmp +=UpdateData[k]; } UpdateData[99] = tmp; - - WriteToUart((const char*)UpdateData, 100); - if (gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48) gpio_set(GlobalConfig::GPIO_G.zigAckreset, 1); + WriteToUart((const char*)UpdateData,100); + if(gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48) + gpio_set(GlobalConfig::GPIO_G.zigAckreset,1); time = 0; - do { + do{ value = gpio_read(GlobalConfig::GPIO_G.zigAckrep); - if (value == 49) break; + if(value == 49) + break; mssleep(10000); time += 1; - } while (time < 150); - if (time >= 150) { - resendCount++; - if (resendCount < 5) { - zlog_error(zct, " RESEND gpio_read failed shortAdd %x %x,error index %d", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd), j); - } else { - zlog_error(zct, "gpio_read failed shortAdd %x %x,error index %d", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd), j); - zlog_error(zct, "gpio_read failed \n"); - GlobalConfig::EnterZigBeeWaveTransmittingFlag_G = NO_ENTER_TRANSMITTING_STATUS; - GlobalConfig::EnterZigBeeWaveTransmittingCnt_G = 0; - bUpdate = false; - goto endUpdate; - } + }while(time < 150); + if(time >= 150){ + zlog_error(zct, "gpio_read failed shortAdd %02x %02x,index = %d", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd),j); + zlog_error(zct, "gpio_read failed \n"); + bUpdate = false; + goto endUpdate; } - gpio_set(GlobalConfig::GPIO_G.zigAckreset, 0); + gpio_set(GlobalConfig::GPIO_G.zigAckreset,0); mssleep(2000); - memset(UpdateData, 0x00, sizeof(UpdateData)); + memset(UpdateData,0x00,sizeof(UpdateData)); mssleep(5000); } - if (gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48) gpio_set(GlobalConfig::GPIO_G.zigAckreset, 1); + if(gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48) + gpio_set(GlobalConfig::GPIO_G.zigAckreset,1); if (lastSize > 0) { UpdateData[0] = 0xAA; @@ -215,224 +301,253 @@ void Uart::UpdateWirelessNode(unsigned short shortAdd) { UpdateData[2] = 0xAA; UpdateData[3] = UINT16_HIGH(shortAdd); UpdateData[4] = UINT16_LOW(shortAdd); - UpdateData[5] = 0x21; + UpdateData[5] = 0x10; UpdateData[6] = 0xff & Count; - memcpy(&UpdateData[7], buffer + 92 * Count, lastSize); + memcpy(&UpdateData[7], fw_senddata + 92 * Count, lastSize); tmp = 0x00; for (int k = 0; k < 99; k++) { tmp += UpdateData[k]; } UpdateData[99] = tmp; WriteToUart((const char*)UpdateData, 100); - mssleep(10); - + mssleep(1000); int time = 0; - do { + do{ int value = gpio_read(GlobalConfig::GPIO_G.zigAckrep); - if (value == 49) { - gpio_set(GlobalConfig::GPIO_G.zigAckreset, 0); + if(value == 49){ + gpio_set(GlobalConfig::GPIO_G.zigAckreset,0); mssleep(10000); - if (gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48) gpio_set(GlobalConfig::GPIO_G.zigAckreset, 1); - break; - } + if(gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48) + gpio_set(GlobalConfig::GPIO_G.zigAckreset,1); + break; + } mssleep(10000); time += 1; - } while (time < 150); + }while(time < 150); if (time >= 150) { - zlog_error(zct, "gpio_read failed shortAdd %x %x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); - zlog_error(zct, "gpio_read failed "); - GlobalConfig::EnterZigBeeWaveTransmittingFlag_G = NO_ENTER_TRANSMITTING_STATUS; - GlobalConfig::EnterZigBeeWaveTransmittingCnt_G = 0; + zlog_error(zct, "gpio_read failed shortAdd %02x %02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); + zlog_error(zct, "gpio_read failed \n"); bUpdate = false; goto endUpdate; } memset(UpdateData, 0x00, sizeof(UpdateData)); } - zlog_info(zct, "Update END!!! file Size = %d", thisSize); + zlog_warn(zct, "Update END!!! file Size = %d", (int)thisSize); } else { zlog_error(zct, "open file failed "); } endUpdate: - resendCount = 0; free(buffer); tcflush(fd, TCIFLUSH); sleep(1); bUpdate = false; bSendTimeStamp = false; - modify_LocalAddr(0x8888); - bModifyAddr = true; - mssleep(100); - GlobalConfig::Zigbee_G.MyAddr = 0x8888; DataNodeUpdateFile = ""; - - GlobalConfig::EnterZigBeeWaveTransmittingFlag_G = NO_ENTER_TRANSMITTING_STATUS; - GlobalConfig::EnterZigBeeWaveTransmittingCnt_G = 0; - zlog_info(zct, "UpdateWirelessNode end"); + zlog_warn(zct, "UpdateWirelessNode end"); } -int Uart::UpdateConfig(unsigned char* pDestShortAddr) { +int Uart::UpdateConfig(uint16_t ushortAdd) { char whereCon[64] = {0}; char selCon[1024] = {0x00}; - sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", pDestShortAddr[0], pDestShortAddr[1]); + sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); vec_t vecResultNode = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), "*", whereCon); if (vecResultNode.size() <= 0) return -1; - if (vecResultNode[41] == "0") { - zlog_info(zct, "UpdateConfig"); - bUpdateconfig = true; - GlobalConfig::EnterZigBeeWaveTransmittingFlag_G = ENTER_TRANSMITTING_STATUS; - GlobalConfig::EnterZigBeeWaveTransmittingCnt_G = 0; + + zlog_info(zct, "UpdateConfig"); + bUpdateconfig = true; + GlobalConfig::EnterZigBeeWaveTransmittingFlag_G = ENTER_TRANSMITTING_STATUS; + GlobalConfig::EnterZigBeeWaveTransmittingCnt_G = 0; - char tmpbuf[8] = {0x00}; - sprintf(tmpbuf, "%02x%02x", pDestShortAddr[0], pDestShortAddr[1]); - m_strDestShortAddr = std::string(tmpbuf); + char tmpbuf[8] = {0x00}; + sprintf(tmpbuf, "%02x%02x", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); + m_strDestShortAddr = std::string(tmpbuf); - GlobalConfig::Zigbee_G.MyAddr = 0x9999; - mssleep(500); - vec_t vecResult; - sprintf(selCon, "featureInterVal,waveInterVal,range,samplingRate,ACCSampleTime,startBrands,stopBrands,\ - envelopeBandPass,faultFrequency,timeStamp,viff,ZigbeePower,ZigbeeRetry,MeasurementID,NodeWaveSend"); - vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), selCon, whereCon); - zlog_info(zct, "vecResult size = %d", vecResult.size()); - if (vecResult.size() < 1) { - return -1; + GlobalConfig::Zigbee_G.MyAddr = 0x9999; + mssleep(500); + vec_t vecResult; + sprintf(selCon, "featureInterVal,waveInterVal,range,samplingRate,ACCSampleTime,startBrands,stopBrands,\ + envelopeBandPass,faultFrequency,timeStamp,viff,ZigbeePower,ZigbeeRetry,MeasurementID,NodeWaveSend"); + vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), selCon, whereCon); + zlog_info(zct, "vecResult size = %d", vecResult.size()); + if (vecResult.size() < 1) { + return -1; + } + unsigned char UpdateData[100] = {0x00}; + //帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 数据包[92byte] CRC校验[1byte] + UpdateData[0] = 0xAA; + UpdateData[1] = 0x55; + UpdateData[2] = 0xAA; + UpdateData[3] = UINT16_HIGH(ushortAdd); + UpdateData[4] = UINT16_LOW(ushortAdd); + UpdateData[5] = 0x10; + UpdateData[6] = 0x00; + UpdateData[7] = 0x01; + UpdateData[8] = UINT16_LOW(atoi(vecResult[0].c_str())); + UpdateData[9] = UINT16_HIGH(atoi(vecResult[1].c_str())); + UpdateData[10] = UINT16_LOW(atoi(vecResult[1].c_str())); + int y = 0; + if (vecResultNode[17] == "01") { + if (vecResult[3] == "3200") { + y = 0; + } else if (vecResult[3] == "6400") { + y = 1; + } else if (vecResult[3] == "12800") { + y = 2; + } else if (vecResult[3] == "25600") { + y = 3; } - unsigned char UpdateData[100] = {0x00}; - //帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 数据包[92byte] CRC校验[1byte] - UpdateData[0] = 0xAA; - UpdateData[1] = 0x55; - UpdateData[2] = 0xAA; - UpdateData[3] = pDestShortAddr[0]; - UpdateData[4] = pDestShortAddr[1]; - UpdateData[5] = 0x22; - UpdateData[6] = 0x00; - UpdateData[7] = 0x01; - UpdateData[8] = UINT16_LOW(atoi(vecResult[0].c_str())); - UpdateData[9] = UINT16_HIGH(atoi(vecResult[1].c_str())); - UpdateData[10] = UINT16_LOW(atoi(vecResult[1].c_str())); - int y = 0; - if (vecResultNode[17] == "01") { - if (vecResult[3] == "3200") { - y = 0; - } else if (vecResult[3] == "6400") { - y = 1; - } else if (vecResult[3] == "12800") { - y = 2; - } else if (vecResult[3] == "25600") { - y = 3; - } - } else if (vecResultNode[17] == "02") { - if (vecResult[3] == "8000") { - y = 0; - } else if (vecResult[3] == "16000") { - y = 1; - } else if (vecResult[3] == "24000") { - y = 2; - } else if (vecResult[3] == "32000") { - y = 3; - } else if (vecResult[3] == "48000") { - y = 4; - } else if (vecResult[3] == "96000") { - y = 5; - } else if (vecResult[3] == "192000") { - y = 6; - } + } else if (vecResultNode[17] == "02") { + if (vecResult[3] == "8000") { + y = 0; + } else if (vecResult[3] == "16000") { + y = 1; + } else if (vecResult[3] == "24000") { + y = 2; + } else if (vecResult[3] == "32000") { + y = 3; + } else if (vecResult[3] == "48000") { + y = 4; + } else if (vecResult[3] == "96000") { + y = 5; + } else if (vecResult[3] == "192000") { + y = 6; } - UpdateData[18] = atoi(vecResult[11].c_str()) & 0xFF; - UpdateData[19] = atoi(vecResult[12].c_str()) & 0xFF; - int x = atoi(vecResult[2].c_str()); - UpdateData[21] = BUILD_UINT2(x, y); - UpdateData[22] = atoi(vecResult[4].c_str()) & 0xFF; - zlog_info(zct, "vecResult size = %s==%s==%s==%s=%s\n", vecResult[5].c_str(), vecResult[6].c_str(), vecResult[7].c_str(), vecResult[8].c_str(), vecResult[14].c_str()); - std::vector vStart, vStop, vEnvelopeBandPass, vfaultFrequency, vNodeWaveSend; - boost::split(vStart, vecResult[5], boost::is_any_of(","), boost::token_compress_on); - boost::split(vStop, vecResult[6], boost::is_any_of(","), boost::token_compress_on); - boost::split(vEnvelopeBandPass, vecResult[7], boost::is_any_of(","), boost::token_compress_on); - boost::split(vfaultFrequency, vecResult[8], boost::is_any_of(","), boost::token_compress_on); - if (vecResult[14] != "") boost::split(vNodeWaveSend, vecResult[14], boost::is_any_of(","), boost::token_compress_on); + } + UpdateData[18] = atoi(vecResult[11].c_str()) & 0xFF; + UpdateData[19] = atoi(vecResult[12].c_str()) & 0xFF; + int x = atoi(vecResult[2].c_str()); + UpdateData[21] = BUILD_UINT2(x, y); + UpdateData[22] = atoi(vecResult[4].c_str()) & 0xFF; + zlog_info(zct, "vecResult size = %s==%s==%s==%s=%s\n", vecResult[5].c_str(), vecResult[6].c_str(), vecResult[7].c_str(), vecResult[8].c_str(), vecResult[14].c_str()); + std::vector vStart, vStop, vEnvelopeBandPass, vfaultFrequency, vNodeWaveSend; + boost::split(vStart, vecResult[5], boost::is_any_of(","), boost::token_compress_on); + boost::split(vStop, vecResult[6], boost::is_any_of(","), boost::token_compress_on); + boost::split(vEnvelopeBandPass, vecResult[7], boost::is_any_of(","), boost::token_compress_on); + boost::split(vfaultFrequency, vecResult[8], boost::is_any_of(","), boost::token_compress_on); + if (vecResult[14] != "") boost::split(vNodeWaveSend, vecResult[14], boost::is_any_of(","), boost::token_compress_on); - UpdateData[23] = UINT16_HIGH(atoi(vStart[0].c_str())); - UpdateData[24] = UINT16_LOW(atoi(vStart[0].c_str())); - UpdateData[25] = UINT16_HIGH(atoi(vStop[0].c_str())); - UpdateData[26] = UINT16_LOW(atoi(vStop[0].c_str())); + UpdateData[23] = UINT16_HIGH(atoi(vStart[0].c_str())); + UpdateData[24] = UINT16_LOW(atoi(vStart[0].c_str())); + UpdateData[25] = UINT16_HIGH(atoi(vStop[0].c_str())); + UpdateData[26] = UINT16_LOW(atoi(vStop[0].c_str())); - UpdateData[27] = UINT16_HIGH(atoi(vStart[1].c_str())); - UpdateData[28] = UINT16_LOW(atoi(vStart[1].c_str())); - UpdateData[29] = UINT16_HIGH(atoi(vStop[1].c_str())); - UpdateData[30] = UINT16_LOW(atoi(vStop[1].c_str())); + UpdateData[27] = UINT16_HIGH(atoi(vStart[1].c_str())); + UpdateData[28] = UINT16_LOW(atoi(vStart[1].c_str())); + UpdateData[29] = UINT16_HIGH(atoi(vStop[1].c_str())); + UpdateData[30] = UINT16_LOW(atoi(vStop[1].c_str())); - UpdateData[31] = UINT16_HIGH(atoi(vStart[2].c_str())); - UpdateData[32] = UINT16_LOW(atoi(vStart[2].c_str())); - UpdateData[33] = UINT16_HIGH(atoi(vStop[2].c_str())); - UpdateData[34] = UINT16_LOW(atoi(vStop[2].c_str())); + UpdateData[31] = UINT16_HIGH(atoi(vStart[2].c_str())); + UpdateData[32] = UINT16_LOW(atoi(vStart[2].c_str())); + UpdateData[33] = UINT16_HIGH(atoi(vStop[2].c_str())); + UpdateData[34] = UINT16_LOW(atoi(vStop[2].c_str())); - UpdateData[35] = UINT16_HIGH(atoi(vStart[3].c_str())); - UpdateData[36] = UINT16_LOW(atoi(vStart[3].c_str())); - UpdateData[37] = UINT16_HIGH(atoi(vStop[3].c_str())); - UpdateData[38] = UINT16_LOW(atoi(vStop[3].c_str())); + UpdateData[35] = UINT16_HIGH(atoi(vStart[3].c_str())); + UpdateData[36] = UINT16_LOW(atoi(vStart[3].c_str())); + UpdateData[37] = UINT16_HIGH(atoi(vStop[3].c_str())); + UpdateData[38] = UINT16_LOW(atoi(vStop[3].c_str())); - UpdateData[39] = UINT16_HIGH(atoi(vStart[4].c_str())); - UpdateData[40] = UINT16_LOW(atoi(vStart[4].c_str())); - UpdateData[41] = UINT16_HIGH(atoi(vStop[4].c_str())); - UpdateData[42] = UINT16_LOW(atoi(vStop[4].c_str())); + UpdateData[39] = UINT16_HIGH(atoi(vStart[4].c_str())); + UpdateData[40] = UINT16_LOW(atoi(vStart[4].c_str())); + UpdateData[41] = UINT16_HIGH(atoi(vStop[4].c_str())); + UpdateData[42] = UINT16_LOW(atoi(vStop[4].c_str())); - UpdateData[43] = UINT16_HIGH(atoi(vEnvelopeBandPass[0].c_str())); - UpdateData[44] = UINT16_LOW(atoi(vEnvelopeBandPass[0].c_str())); - UpdateData[45] = UINT16_HIGH(atoi(vEnvelopeBandPass[1].c_str())); - UpdateData[46] = UINT16_LOW(atoi(vEnvelopeBandPass[1].c_str())); + UpdateData[43] = UINT16_HIGH(atoi(vEnvelopeBandPass[0].c_str())); + UpdateData[44] = UINT16_LOW(atoi(vEnvelopeBandPass[0].c_str())); + UpdateData[45] = UINT16_HIGH(atoi(vEnvelopeBandPass[1].c_str())); + UpdateData[46] = UINT16_LOW(atoi(vEnvelopeBandPass[1].c_str())); - UpdateData[47] = UINT16_HIGH(atoi(vfaultFrequency[0].c_str())); - UpdateData[48] = UINT16_LOW(atoi(vfaultFrequency[0].c_str())); - UpdateData[49] = UINT16_HIGH(atoi(vfaultFrequency[1].c_str())); - UpdateData[50] = UINT16_LOW(atoi(vfaultFrequency[1].c_str())); + UpdateData[47] = UINT16_HIGH(atoi(vfaultFrequency[0].c_str())); + UpdateData[48] = UINT16_LOW(atoi(vfaultFrequency[0].c_str())); + UpdateData[49] = UINT16_HIGH(atoi(vfaultFrequency[1].c_str())); + UpdateData[50] = UINT16_LOW(atoi(vfaultFrequency[1].c_str())); - UpdateData[51] = UINT16_HIGH(atoi(vfaultFrequency[2].c_str())); - UpdateData[52] = UINT16_LOW(atoi(vfaultFrequency[2].c_str())); - UpdateData[53] = UINT16_HIGH(atoi(vfaultFrequency[3].c_str())); - UpdateData[54] = UINT16_LOW(atoi(vfaultFrequency[3].c_str())); + UpdateData[51] = UINT16_HIGH(atoi(vfaultFrequency[2].c_str())); + UpdateData[52] = UINT16_LOW(atoi(vfaultFrequency[2].c_str())); + UpdateData[53] = UINT16_HIGH(atoi(vfaultFrequency[3].c_str())); + UpdateData[54] = UINT16_LOW(atoi(vfaultFrequency[3].c_str())); - UpdateData[55] = UINT32_HIGH_1(atoi(vecResult[9].c_str())); - UpdateData[56] = UINT32_HIGH_2(atoi(vecResult[9].c_str())); - UpdateData[57] = UINT32_LOW_1(atoi(vecResult[9].c_str())); - UpdateData[58] = UINT32_LOW_2(atoi(vecResult[9].c_str())); + UpdateData[55] = UINT32_HIGH_1(atoi(vecResult[9].c_str())); + UpdateData[56] = UINT32_HIGH_2(atoi(vecResult[9].c_str())); + UpdateData[57] = UINT32_LOW_1(atoi(vecResult[9].c_str())); + UpdateData[58] = UINT32_LOW_2(atoi(vecResult[9].c_str())); - UpdateData[59] = (atoi(vecResult[10].c_str())) & 0xFF; + UpdateData[59] = (atoi(vecResult[10].c_str())) & 0xFF; - size_t bytesSize = strlen(vecResult[13].c_str()) / 2; - unsigned char* bytes = (unsigned char*)malloc(bytesSize); + size_t bytesSize = strlen(vecResult[13].c_str()) / 2; + unsigned char* bytes = (unsigned char*)malloc(bytesSize); - if (hexStringToBytes(vecResult[13].c_str(), bytes, bytesSize) == 0) { - UpdateData[60] = bytes[0]; - UpdateData[61] = bytes[1]; - UpdateData[62] = bytes[2]; - UpdateData[63] = bytes[3]; - UpdateData[64] = bytes[4]; - UpdateData[65] = bytes[5]; - UpdateData[66] = bytes[6]; - UpdateData[67] = bytes[7]; + if (hexStringToBytes(vecResult[13].c_str(), bytes, bytesSize) == 0) { + UpdateData[60] = bytes[0]; + UpdateData[61] = bytes[1]; + UpdateData[62] = bytes[2]; + UpdateData[63] = bytes[3]; + UpdateData[64] = bytes[4]; + UpdateData[65] = bytes[5]; + UpdateData[66] = bytes[6]; + UpdateData[67] = bytes[7]; + } + unsigned char byte = 0; + if (vNodeWaveSend.size() > 0) { + if (vNodeWaveSend[0] == "0") { + Binary_Bit(&byte, 0, 0); } - unsigned char byte = 0; - if (vNodeWaveSend.size() > 0) { - if (vNodeWaveSend[0] == "0") { - Binary_Bit(&byte, 0, 0); - } - if (vNodeWaveSend[0] == "1") { - Binary_Bit(&byte, 0, 1); - } - if (vNodeWaveSend[1] == "0") { - Binary_Bit(&byte, 1, 0); - } - if (vNodeWaveSend[1] == "1") { - Binary_Bit(&byte, 1, 1); - } - if (vNodeWaveSend[2] == "0") { - Binary_Bit(&byte, 2, 0); - } - if (vNodeWaveSend[2] == "1") { - Binary_Bit(&byte, 2, 1); - } + if (vNodeWaveSend[0] == "1") { + Binary_Bit(&byte, 0, 1); + } + if (vNodeWaveSend[1] == "0") { + Binary_Bit(&byte, 1, 0); + } + if (vNodeWaveSend[1] == "1") { + Binary_Bit(&byte, 1, 1); + } + if (vNodeWaveSend[2] == "0") { + Binary_Bit(&byte, 2, 0); + } + if (vNodeWaveSend[2] == "1") { + Binary_Bit(&byte, 2, 1); + } + } + UpdateData[68] = byte; + free(bytes); + unsigned char tmp1 = 0x00; + for (int k = 0; k < 99; k++) { + tmp1 += UpdateData[k]; + } + UpdateData[99] = tmp1; + tcflush(fd, TCIFLUSH); + WriteToUart((const char*)UpdateData, 100); + int iRet = CheckZigbeeACK(); + if (iRet == 0) { + zlog_info(zct, "updataconfig ACK send success,shortAddr = %02x%02x", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); + } else { + zlog_error(zct, "updataconfig ACK send failed,shortAddr = %02x%02x", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); + } + + mssleep(10000); + std::string strName = sqlite_db_ctrl::instance().GetData(T_SENSOR_INFO(TNAME), " dataNodeName ", whereCon); + + memset(UpdateData,0x00,sizeof(UpdateData)); + //帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 数据包[92byte] CRC校验[1byte] + UpdateData[0] = 0xAA; + UpdateData[1] = 0x55; + UpdateData[2] = 0xAA; + UpdateData[3] = UINT16_HIGH(ushortAdd); + UpdateData[4] = UINT16_LOW(ushortAdd); + UpdateData[5] = 0x10; + UpdateData[6] = 0x00; + UpdateData[7] = 0x02; + char hex[200] = {0X00}; + stringToHex(strName.c_str(), hex); + bytesSize = strlen(hex) / 2; + bytes = (unsigned char*)malloc(bytesSize); + + if (hexStringToBytes(hex, bytes, bytesSize) != 0) { + free(bytes); + } else { + for (size_t i = 0; i < bytesSize; i++) { + UpdateData[8 + i] = bytes[i]; } - UpdateData[68] = byte; free(bytes); unsigned char tmp1 = 0x00; for (int k = 0; k < 99; k++) { @@ -443,59 +558,14 @@ int Uart::UpdateConfig(unsigned char* pDestShortAddr) { WriteToUart((const char*)UpdateData, 100); int iRet = CheckZigbeeACK(); if (iRet == 0) { - zlog_info(zct, "updataconfig ACK send success,shortAddr = %02x%02x", pDestShortAddr[0], pDestShortAddr[1]); + zlog_info(zct, "updataname ACK send success,shortAddr = %02x%02x", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); } else { - zlog_error(zct, "updataconfig ACK send failed,shortAddr = %02x%02x", pDestShortAddr[0], pDestShortAddr[1]); + zlog_error(zct, "updataname ACK send failed,shortAddr = %02x%02x", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); } return 0; - } else if (vecResultNode[41] == "-1") { - bUpdateconfig = true; - GlobalConfig::EnterZigBeeWaveTransmittingFlag_G = ENTER_TRANSMITTING_STATUS; - GlobalConfig::EnterZigBeeWaveTransmittingCnt_G = 0; - std::string strName = sqlite_db_ctrl::instance().GetData(T_SENSOR_INFO(TNAME), " dataNodeName ", whereCon); - - unsigned char UpdateData[100] = {0x00}; - //帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 数据包[92byte] CRC校验[1byte] - UpdateData[0] = 0xAA; - UpdateData[1] = 0x55; - UpdateData[2] = 0xAA; - UpdateData[3] = pDestShortAddr[0]; - UpdateData[4] = pDestShortAddr[1]; - UpdateData[5] = 0x22; - UpdateData[6] = 0x00; - UpdateData[7] = 0x02; - char hex[200] = {0X00}; - stringToHex(strName.c_str(), hex); - size_t bytesSize = strlen(hex) / 2; - unsigned char* bytes = (unsigned char*)malloc(bytesSize); - - if (hexStringToBytes(hex, bytes, bytesSize) != 0) { - free(bytes); - } else { - for (size_t i = 0; i < bytesSize; i++) { - UpdateData[8 + i] = bytes[i]; - } - free(bytes); - unsigned char tmp1 = 0x00; - for (int k = 0; k < 99; k++) { - tmp1 += UpdateData[k]; - } - UpdateData[99] = tmp1; - tcflush(fd, TCIFLUSH); - WriteToUart((const char*)UpdateData, 100); - int iRet = CheckZigbeeACK(); - if (iRet == 0) { - zlog_info(zct, "updataname ACK send success,shortAddr = %02x%02x", pDestShortAddr[0], pDestShortAddr[1]); - } else { - zlog_error(zct, "updataname ACK send failed,shortAddr = %02x%02x", pDestShortAddr[0], pDestShortAddr[1]); - } - return 0; - } - return 0; - } else { - zlog_error(zct, "invalid vecResultNode[41]:%s", vecResultNode[41].c_str()); - return -1; } + return 0; + } int Uart::UpdateWirelessNodeTime(unsigned char* pDestShortAddr, int modifyaddr /*,int nodewaveindex,int nodetime,int nodeindex*/) {