fix upgrade sensor bugs

This commit is contained in:
zhangsheng 2024-11-09 16:15:39 +08:00
parent c2442e7d3c
commit 16ab15f3eb
14 changed files with 659 additions and 421 deletions

View File

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-600614757740630993" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="446663210403312388" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1102353172776392420" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-469859550318386951" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

View File

@ -74,7 +74,7 @@ std::string GetLocalTimeWithMs(void) {
char buffer[80] = {0};
struct tm nowTime;
localtime_r(&curTime.tv_sec, &nowTime); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD>𨰻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瞈墧<EFBFBD><EFBFBD><EFBFBD>瞈𧢲<EFBFBD><EFBFBD>?瞈<>?<3F><EFBFBD>?蝎坔?𦠜揪<F0A6A09C>烾ê<E783BE><C3AA><EFBFBD><EFBFBD>萄𢬢<E89084><F0A2ACA2><EFBFBD><E9B4A1><EFBFBD><EFBFBD>𤘪<EFBFBD>蝜偦㪗瞈<E3AA97><EFBFBD>箏??<3F><EFBFBD>嚚㗇<E59A9A>瞉嗅?见<><E8A781><EFBFBD><EFBFBD><EFBFBD>?蝏𧢲<E89D8F><F0A7A2B2>延戭?蝷𧢲中<F0A7A2B2><EFBFBD>蝏?<3F>墧Ⅲ瘚<E285A2>𠧧<EFBFBD>娪𤄄憭羓<E686AD>憿?<3F>?<3F><EFBFBD><E39B96>?蝷<><EFBFBD>伐馴瘛<E9A6B4><E7989B><EFBFBD>𣈯<EFBFBD>憯戾<E686AF><E688BE>憍𪙛<E6868D><F0AA999B>𡜐蛾蝪粹<E89DAA><E7B2B9>𡁜<EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<><E7909C>?<3F><EFBFBD>蟡湧<E89FA1><E6B9A7><EFBFBD><E587BD><EFBFBD><E6B994>拚鴡<E68B9A><EFBFBD><EFBFBD><E8BCB8>?<3F>憿圝<E686BF>瞈∩<E79E88><E288A9><EFBFBD><EFBFBD>帋瑣<E5B88B><E791A3>?脤?貊<>撊匧<E6928A><E58CA7><EFBFBD>瘣?<3F><><EFBFBD>瘨䀝遞<E4809D><E9819E><EFBFBD><EFBFBD><EFBFBD><E597B5><EFBFBD><E8B1A2><EFBFBD>ǜ<EFBFBD><EFBFBD><E4A0B7><EFBFBD>瞉抆<E79E89><E68A86><EFBFBD><E581A6>?蝘粹𤄄撗讠翔撉𧼮<E69289><F0A7BCAE><EFBFBD>頝佬斤<E4BDAC><E696A4>賜𪈳撖啣墙撟<E5A299><EFBFBD><E5B495><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瞏扯<E79E8F><E689AF><EFBFBD><E8B1A2>血彍蝻<E5BD8D><E89DBB><EFBFBD><EFBFBD><E8B38A><EFBFBD><E8B3A3>𨰝<EFBFBD><F0A8B09D><EFBFBD><EFBFBD><E999B8>𥕞<EFBFBD><F0A5959E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E585B8>延戭?<3F><EFBFBD><E4ADBE><EFBFBD><E3BB87><EFBFBD><E58CA7>𤤿<EFBFBD><F0A4A4BF><EFBFBD>撏屸䲮<E5B1B8><EFBFBD><E69B89><EFBFBD>𨪚<EFBFBD><F0A8AA9A><EFBFBD><EFBFBD>?蝞枏?𦠜揪撏冽<E6928F><E586BD>?<3F><><EFBFBD><EFBFBD><EFBFBD><E595A3>瘀蕭
localtime_r(&curTime.tv_sec, &nowTime); //闂傚倷鑳堕、濠傗枖濞戙垺鏅濋柕<EFBFBD>?濇<>?<3F><EFBFBD>?粙<>?<3F>洪鈧粔瀵哥矆閸℃稒鐓欐繛鍫濈仢閺<E4BBA2>??喖鏌敐澶<E69590>?<3F>喚闁哄<E99781>?绋掔换婵<E68DA2>?礋椤愵澀<E684B5>?梻浣割吔閺夊灝<E5A48A>?<3F>?悗瑙<E68297>?礃椤ㄥ﹥淇婇悜钘壩ч柛婊€鐒︿簺闂傚倷绀侀幖<E4BE80>?<3F><EFBFBD>?閸愭祴鏋栨繛鎴欏灩閸ㄥ倿骞<E580BF>?ǎ顒€濡介柣鎾亾闁<E4BABE>?<3F><>?<3F>绠嶉崕鍗灻<E98D97>?敃鍌涘仼闂侇剙绉甸悡鏇㈡煙闁箑澧柛锝<E69F9B>?秺閺岋絾骞婇柛鏂跨Ф缁瑦寰勯幇鍨櫍闂侀潧臎閸滀焦啸缂傚倸鍊烽悞锕€鐣峰Ο琛℃灃闁哄洢鍨归悡婵<E682A1>?煠濞村鏉归柛瀣崌閹兘鏌囬敂鍙<E69582>?箓<>?<3F>洪崨濠<E5B4A8>?嚂闁瑰嚖鎷<E59A96>
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};
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗆耨璅踵<EFBFBD>蝏牐撈<EFBFBD>𥕦延<EFBFBD>?<3F>𨀣中<F0A880A3><E4B8AD><EFBFBD><EFBFBD>𣬚<EFBFBD>瞏誯<E79E8F>雿脣<E99BBF><EFBFBD><EFBFBD><E9AE9F><EFBFBD><EFBFBD><E7989A><EFBFBD>?<3F>券𦅚<E588B8><EFBFBD>輸𪃭<E8BCB8>𧼮<EFBFBD>貊瑣<E8B28A><EFBFBD><E59F88><EFBFBD><E7AE8F>鮋鴡<E9AE8B>?<3F><EFBFBD><E998A1>𥟇<EFBFBD><F0A59F87><EFBFBD><EFBFBD>鈭脲中<E884B2><EFBFBD>憪𦠜揪撟㚚<E6929F><E39A9A>鍦孚<E98DA6><E5AD9A><EFBFBD>憳?<3F>帋撈<E5B88B><E69288><EFBFBD><EFBFBD>⊥烵<E28AA5><EFBFBD><EFBFBD>?
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵<EFBFBD>?劜椤洟鏌熸潏鈺佲偓宄闂備浇宕<E6B587>?慨鎶芥倿閿曞倸纾块柟璺哄閸<EE979E>?剦鏁嗛柛鏇ㄥ亝椤ユ繈姊洪幖鐐插姷闂傚<E99782>?瀚伴、鏇㈡晸閿燂<EFBFBD>?
fd = open("/sys/class/gpio/export", O_WRONLY);
if (-1 == fd) {
zlog_error(zbt, "open gpio export file error");
return 1;
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銴唳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澆Ⅲ<EFBFBD>箔螂<EFBFBD><EFBFBD>嚚㗇<EFBFBD><EFBFBD>?<3F>?蝝枰o
//闂傚倷鐒﹂惇褰掑垂瑜版帗鍋柛銉墻閺佸鏌<EFBFBD>?<3F>?紬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);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𨰝<EFBFBD>憿?<3F>?<3F><><EFBFBD><E88186><EFBFBD><E99285><EFBFBD>憡脫<E686A1>撏煾?誩<><E8AAA9>閖鸘<E99696>?敶<><E695B6><EFBFBD><EFBFBD><E79A8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<>蝤孵延<E5ADB5>唾𪄳蝏删䪴<E588A0>罸䌫<E7BDB8><EFBFBD><EFBFBD>𠓼<EFBFBD>𣳇<EFBFBD><F0A3B387><EFBFBD><E68B87><EFBFBD><EFBFBD>?
//闂傚倸鍊烽悞锕€<EFBFBD>?<3F>?Ο鑲╃煋闁割偅娲橀崑<E6A980>?<3F>堟煕閻<E78595>?彃鍘o闂傚倷绀侀幖<E4BE80>?<3F>﹀磹婵犳艾绠犻柟鎹愵嚙缁犳牠鏌ㄩ悤鍌涘<EFBFBD>?
#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);
//<2F><><EFBFBD><EFBFBD>琿㭠<E790BF><EFBFBD><E8A8AB><EFBFBD><E69B84>嗆耨璅踵<E79285>蝏牐撈<E78990>𥕦延<F0A595A6>?<3F>𨀣中<F0A880A3><E4B8AD><EFBFBD><EFBFBD>𣬚<EFBFBD>瞏誯<E79E8F>雿脣<E99BBF><EFBFBD>鮟 value<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<>蝤寧<E89DA4>戭?嚗訫迆<E8A8AB><E8BF86><EFBFBD>豢雇鈭嗪<E988AD>憍𡁏Ⅱ<F0A1818F><EFBFBD>瑹鞾䲮<E99EBE>斗鼧
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵<E69F9B>?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖<E4BE80>?<3F>﹀磹缁<E7A3B9>?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
fd = open(tmp, O_WRONLY);
if (-1 == fd) {
zlog_error(zbt, "[%s] open gpio export file error", tmp);
close(fd);
return (-1);
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E585B8><EFBFBD>憡湛<E686A1><E6B99B><EFBFBD><E58CA7>笛寥<E7AC9B>撌?<3F>鞾鴡戭萎漯<E8908E>峕閒<E5B395><E99692><EFBFBD><EFBFBD><EFBFBD>?<3F><>蝔遴<E89D94><E981B4><EFBFBD><E5A88D>𤩺<EFBFBD>瘞?<3F><><EFBFBD><E9B898><EFBFBD><EFBFBD>埝閒璇箄什<E7AE84>㮖漱<E3AE96>孵龗<EFBFBD>?
//闂備浇宕<EFBFBD>?慨宕囩矆娴娅犲ù鐘<C3B9>?儐閸嬵亪鏌涢埄鍐<E98D90>?<3F>闁稿鍔戝濠<EE9D8F>?醇閻旂儤鍒涢梺褰掓交閹凤<EFBFBD>?
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
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗆耨璅踵<EFBFBD>蝏牐撈<EFBFBD>𥕦延<EFBFBD>?<3F>𨀣中<F0A880A3><E4B8AD><EFBFBD><EFBFBD>𣬚<EFBFBD>瞏誯<E79E8F>雿脣<E99BBF><EFBFBD>鮟 value<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<>蝤寧<E89DA4>戭?嚗訫迆<E8A8AB><E8BF86><EFBFBD>豢雇鈭嗪<E988AD>憍𡁏Ⅱ<F0A1818F><EFBFBD>瑹鞾䲮<E99EBE>斗鼧
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵<EFBFBD>?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖<E4BE80>?<3F>﹀磹缁<E7A3B9>?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
fd = open(tmp, O_RDONLY);
if (-1 == fd) {
zlog_error(zbt, "%d open gpio export file error", gpioN);
return (-1);
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E588B8>冽揪<E586BD><EFBFBD>雿寞臁<E5AF9E><E88781><EFBFBD><EFBFBD>踵縑<E8B8B5><EFBFBD><E8A9A8><EFBFBD><E791B9>頝典膓<E585B8>瘀蕭 value<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<>蝤寧<E89DA4>戭?嚗訫迆<E8A8AB><E8BF86><EFBFBD>豢雇鈭嗪<E988AD>憍𡁏Ⅱ<F0A1818F><EFBFBD>瑹鞾䲮<E99EBE>斗鼧
//闂備浇宕<EFBFBD>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鐗堟櫢闁跨噦鎷<E599A6> value闂傚倷绀侀幖<E4BE80>?<3F>﹀磹缁<E7A3B9>?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);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>撏脤䲮<E884A4><E4B2AE><EFBFBD><EFBFBD><EFBFBD><E8A1A4>𥕦?亙𧗾<E4BA99>䰎time蝻<65><E89DBB><EFBFBD><EFBFBD><E8B38A><EFBFBD><EFBFBD><EFBFBD>𤏸𥁒<F0A48FB8>輸𪃭<E8BCB8>𧼮<EFBFBD><EFBFBD><E8B28A><EFBFBD><E8B8B1><EFBFBD><E79D83>脤鴡憍<E9B4A1><E6868D><EFBFBD><EFBFBD>墙撘賡<E69298><E8B3A1><EFBFBD><E686AA>畾踹鵐<E8B8B9>豢𡂝撘駁<E69298><E9A781>𡒊?脤䲮<E884A4><EFBFBD>蝻滚𨯂蝝𤘪童憌舘敦<E88898><EFBFBD><EFBFBD>??憍𡁏<E6868D><F0A1818F>烐那<E78390><EFBFBD><E59C88><EFBFBD><E4BAA4><EFBFBD>肼蝎<E882BC><E89D8E><EFBFBD><EFBFBD><E6AFBA>餅那<E9A485>踵耨憭鞉<E686AD><E99E89><EFBFBD><EFBFBD>𤉖e_t<5F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<><E7909C>?璊斗<E7928A><E69697><EFBFBD><EFBFBD>憭鞉鰊<E99E89><EFBFBD><E69B89><EFBFBD><EFBFBD><EFBFBD>坔㧜<E59D94><EFBFBD>靽𢠃<E99DBD><F0A2A083>帋瑣蝻<E791A3>蝶慦渡<E685A6><EFBFBD>撘駁<E69298><E9A781><EFBFBD><EFBFBD><EFBFBD>詨掛蝔煾?𧶏蕭
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹版澘鏋侀柛<E4BE80>?<3F>囧发_time缂傚倸鍊搁崐鐑芥倿閿曞倸绠板┑鐘崇閸婂灚銇勯弽銊р姇濠殿垱鎸抽弻鐔煎<E99094>?<3F>閹板灚缍堢紓浣风贰閸<EFBD8F>??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鏂跨┘me_t闂傚倷绀侀幖<E4BE80>?<3F><EFBFBD>?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈傚亾缂佺媴缍侀弻銊╂偆閸屾稑<E5B1BE>?<3F><>
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; // 憍萇𠽌<EFBFBD><EFBFBD><EFBFBD>箏晶<EFBFBD>?<3F>䂿?圈鴡瞈<E9B4A1><E79E88><EFBFBD>?<3F>餅榀頩<E6A680><E9A0A9>鈭䂿<E988AD><E482BF><EFBFBD><E9A48C>峕閒憒琿?𠉛<><F0A0899B>?<3F><>?遴<><E981B4>娍ề撘駁<E69298><E9A781>箇?暸鴡<E69AB8><EFBFBD>瞈?頝算<E9A09D><E7AE97><EFBFBD>蝥折鴡摨<E691A8><EFBFBD><EFBFBD>璇箇<E79287><EFBFBD><E79288><EFBFBD>貊𠓼<E8B28A>𣳇嘡<F0A3B387>?璊斗<E7928A><E69697>嗆儒<E59786><E58492><EFBFBD>憿誩𤧚<E8AAA9><F0A4A79A>𤄄雿寞<E99BBF><E5AF9E><EFBFBD><EFBFBD><EFBFBD>?
tm.tm_isdst = -1; // 婵犵數鍋為崹<EFBFBD>?曞<>?<3F>閸濄儳<E6BF84>?撻柧蹇亞缁犻箖鏌涢妷<E6B6A2>?<3F><EFBFBD>?闁<>?<3F>鍔戦弻鏇熺<E98F87>?<3F>閸喖<EE9F91>?跺┑鈥冲级閸庢娊婀侀梺缁橈供閸犳牠鍩<E789A0>?椤掍胶澧い顏勫暣閺佹捇鏁撻敓锟<E69593>?
rtc_timestamp = mktime(&tm);
@ -719,8 +716,8 @@ void ImportConfig(std::string filename) {
}
int UpdataDataNodeConfig(std::string filename) {
std::vector<DataNodeInfo> vecDataNode; //憍萇𠽌<EFBFBD>豢耨隡游晶<EFBFBD>笔葬<EFBFBD><EFBFBD><EFBFBD>𥕦<EFBFBD><EFBFBD>𠓼靽𢠃<EFBFBD><EFBFBD>帋瑣<EFBFBD>豢?<3F><EFBFBD>𣬚<EFBFBD><F0A3AC9A>?<3F>腎寞<E8858E><E5AF9E><EFBFBD><EFBFBD>璅魂<E79285><E9AD82>箏掃蝘琿“靘<E2809C><E99D98>偦罇摮条<E691AE><EFBFBD><E89DBB><EFBFBD>血?啣墙撟<E5A299><EFBFBD><E5B495><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迆儮<E8BF86>揣瘚惩??蝞罸䲰憪𣂼<E686AA>㛖瑣<E39B96>甙寥<E79499><E5AFA5>?<3F><><EFBFBD><EFBFBD>?蝯輻跼<E8BCBB><EFBFBD>憡烐<E686A1>畾日<E795BE><EFBFBD><E89D96><EFBFBD><EFBFBD><E5A092><EFBFBD><E790BF>拇?<3F><EFBFBD>𡁏<EFBFBD><F0A1818F><EFBFBD>ǜ<EFBFBD>𤑳遝<F0A491B3><EFBFBD>銴參<E98AB4><E58F83><EFBFBD><EFBFBD><E79D83>仿鯏霂脩完<E884A9><E5AE8C><EFBFBD><EFBFBD>?
//憍萇𠽌<EFBFBD><EFBFBD><EFBFBD>憿梶<EFBFBD><EFBFBD>誩迄<EFBFBD><EFBFBD>蝥曉<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箔螂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撏㘾<EFBFBD>撖詨綳瞈𨬭ê̄<EFBFBD>㚚𨫥<EFBFBD>𡃓<EFBFBD>憿𨰝<EFBFBD><EFBFBD><EFBFBD>撟条<EFBFBD><EFBFBD><EFBFBD>?<3F><><EFBFBD>𧼮掃憓?璊斗<E7928A><E69697><EFBFBD>隡游播憿琜<E686BF>摨𢠃<E691A8><F0A2A083>堊鐯<E5A08A><EFBFBD><E8AEA0><EFBFBD>蝏条<E89D8F><E69DA1>箏𢂚<E7AE8F><F0A2829A><EFBFBD><EFBFBD><EFBFBD><E68A86><EFBFBD><EFBFBD>蝛輻<E89D9B><EFBFBD><E6928A>摰閙揪<E99699><E68FAA>憿雴蔥鈭𣈯䲮<F0A388AF>睃嬍憿謿<E686BF>靽𢠃?琜<><E7909C>輸𤄄撅曄𤀻瞈∠<E79E88><E288A0><EFBFBD><E581A6>?<3F>?撊<><E6928A><EFBFBD><EFBFBD><EFBFBD>憪折䲮<E68A98>斗鼧
std::vector<DataNodeInfo> vecDataNode; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸<EFBFBD>?<3F>亶鏌熺<E98F8C>?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦<EE86BD>?<3F>勯幇鍨櫆闂佸憡娲﹂崢浠<E5B4A2>??箟閼姐倗纾藉ù锝<C3B9>?嚃濞<E59A83>?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩<E98D97>?<3F>濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟<E69593>?
//婵犵數鍋涢顓熸叏娴兼潙纾块柟缁㈠櫘閺佸霉閸忓吋缍戠紒鈧崒鐐寸厪濠㈣埖鐩顕€鏌幘瀵告<EFBFBD>?闁逞屽<E9809E>?椤旀牠宕伴弽顐床闁瑰鍋炲▍鐘绘煥閺囨浜惧銈嗘穿缂嶄線宕洪埀顒併亜閹烘垵顏╂俊<E29582>?<3F>耿閺屾盯濡烽鐐<EE949B>?<3F>?嶅銈嗗姧閹凤拷
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<std::string> words; //憍萇𠽌<EFBFBD>豢耨隡游晶<EFBFBD>笔葬<EFBFBD><EFBFBD><EFBFBD>𥕦<EFBFBD><EFBFBD>𠓼靽𢠃<EFBFBD><EFBFBD>帋瑣<EFBFBD>豢?<3F><EFBFBD>𣬚<EFBFBD><F0A3AC9A>?<3F>腎寞<E8858E><E5AF9E><EFBFBD><EFBFBD>璅魂<E79285><E9AD82>箏掃蝘琿“靘<E2809C><E99D98>偦罇摮条<E691AE><EFBFBD><E89DBB><EFBFBD>血?啣墙撟<E5A299><EFBFBD><E5B495><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迆儮<E8BF86>揣瘚惩??蝞罸䲰憪𣂼<E686AA>㛖瑣<E39B96>甙寥<E79499><E5AFA5>?<3F><><EFBFBD><EFBFBD>?蝯輻跼<E8BCBB><EFBFBD>憡烐<E686A1>畾日<E795BE><EFBFBD><E89D96><EFBFBD><EFBFBD><E5A092><EFBFBD><E790BF>拇?<3F><EFBFBD>𡁏<EFBFBD><F0A1818F><EFBFBD>ǜ<EFBFBD>𤑳遝<F0A491B3><EFBFBD>銴參<E98AB4><E58F83><EFBFBD><EFBFBD><E79D83>仿鯏霂脩完<E884A9><E5AE8C><EFBFBD><EFBFBD>?
std::vector<std::string> words; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸<EFBFBD>?<3F>亶鏌熺<E98F8C>?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦<EE86BD>?<3F>勯幇鍨櫆闂佸憡娲﹂崢浠<E5B4A2>??箟閼姐倗纾藉ù锝<C3B9>?嚃濞<E59A83>?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩<E98D97>?<3F>濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟<E69593>?
std::string word;
DataNodeInfo dataNode;
// ------------<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E588B8>冽揪<E586BD><EFBFBD>雿寞臁<E5AF9E><E88781><EFBFBD><EFBFBD>踵縑<E8B8B5><EFBFBD><E8A9A8>㕑楊<E39591>𧼮?𠺶<>撌駁<E6928C><E9A781>餅椬<E9A485><E6A4AC><EFBFBD>蝒娪𤄄撗讠善<E8AEA0>㚚鯏<E39A9A><E9AF8F>罸緤<E7BDB8>撏勗<E6928F><E58B97><EFBFBD><E588A0><EFBFBD><EFBFBD>阡繮嚙?-----------------
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E588B8>冽揪<E586BD><EFBFBD>雿寞臁<E5AF9E><E88781><EFBFBD><EFBFBD>踵縑<E8B8B5><EFBFBD><E8A9A8>㕑楊<E39591>𧼮?𠺶<>撌駁<E6928C><E9A781><EFBFBD><E9A485><EFBFBD>鈭暸<E988AD><E69AB8><EFBFBD><E597B5>?<3F><EFBFBD>憡船<E686A1><EFBFBD>𪃭<EFBFBD>𧼮<EFBFBD>詨完<E8A9A8><EFBFBD><E589B9><EFBFBD>隞阡鴡戭?憪萇遙瘨<E798A8><EFBCB7><EFBFBD>敶折鸘摨<E691A8><EFBCB9>瘀蕭
// ------------闂備浇宕<EFBFBD>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞<E8B7A8>?<3F>ゆ巻鍋撻柡瀣╃窔閺岋絽螖閳ь剟鎮ч崱娆戠焾闁跨噦鎷<E599A6>?-----------------
// 闂備浇宕<EFBFBD>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞<E8B7A8>?<3F>ゆ巻鍋撻柛鎰ㄥ亾闂備焦<E58299>?堕崕娲礈閿曞倸姹叉い鏍仦閸<E4BBA6>?姵绻涢幋锝嗙彧閻庢熬鎷<E786AC>
getline(csv_data, line);
std::istringstream sin;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿賂飾<EFBFBD><EFBFBD><EFBFBD>隞𡁏縑<EFBFBD>?<3F><EFBFBD><E68A98>?蝜𥟇<E89D9C><F0A59F87>?峊憡𤘪除<F0A498AA>𤘪?删<><E588A0>厰緤<E58EB0><E7B7A4><EFBFBD><EFBFBD><EFBFBD><E6BE97><EFBFBD>雿賢斯瞈?<3F>齅粹<E9BD85>雿萎犒<E8908E><EFBFBD>鈭𦦵辣<F0A6A6B5><EFBFBD>銴𡡞”<F0A1A19E>𥟇<EFBFBD>憡烐<E686A1>敶埝<E695B6><E59F9D><EFBFBD><E49DBC>枏?𠺶<><EFBFBD><E89DAC>𧢲<EFBFBD><F0A7A2B2><EFBFBD>憿鍦<E686BF>瞏鞾䲮蝣勗<E89DA3>撉𧼮<E69289><F0A7BCAE><EFBFBD>?
// 闂傚倷绀佸﹢杈ㄧ仚濡<EFBFBD>?倧闄<E580A7>?繛濠<E7B99B>?Υ娓氣偓<E6B0A3>?<3F>炲鎮╅崘鑼酱闂佽崵<E4BDBD>?村ú锕併亹閸愵亜绶ら柛褎顨嗛悡娑樏归敐鍛儓<EE86BD>?<3F>わ綀鍋愰埀顒冾潐閹碱偊骞忛敓锟<E69593>?
while (getline(csv_data, line)) {
words.clear();
sin.clear();
@ -1014,7 +1011,7 @@ std::string GetFileContent(std::string filename, int line) {
return strFileContent;
}
// BOOST<EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD>?輻˙<E8BCBB><EFBFBD><E5AF9E><EFBFBD>憭𢞖<E686AD>撟踹<E6929F>憿虫<E686BF>撘?<3F>⊥?潛<>憍萇𤗈<E89087>餅儒<E9A485><EFBFBD><E588A0><EFBFBD>撏勗旬<E58B97><EFBFBD><E68B86><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E89DBB>蝞㚚<E89D9E><EFBFBD><E6928A><EFBFBD>豢𣖕<E8B1A2><EFBFBD><E68B99><EFBFBD>憪䁅<E686AA><E48185><EFBFBD><E790BF>揭蝏𧢲<E89D8F>蝎餃?䁅儘<E48185>鞾駚<E99EBE><EFBFBD><E586BD>𤩺<EFBFBD><F0A4A9BA>滩?𣈯<>瘞?蝛望<E89D9B><E69C9B>?峓<><EFBFBD><E8A9BB><EFBFBD><E597AA><EFBFBD><EFBFBD>璊斗𣖕蝜<F0A39695><E89D9C><EFBFBD><EFBFBD><EFBFBD>憿𡝗<E686BF><F0A19D97><EFBFBD>霂脫<E99C82><E884AB>?<3F>?撘湧<E69298><E6B9A7><EFBFBD><EFBFBD><EFBFBD><E7B2B9>𡁶<EFBFBD><F0A181B6><EFBFBD>𤗈<EFBFBD>𢠃?𠉛<><EFBFBD><E89DAD><EFBFBD><E89084>烾?誩<><E8AAA9>?儮<>普憿圝<E686BF><EFBFBD><E89D8F><EFBFBD><E68ABC><EFBFBD>𧗾<EFBFBD><EFBFBD>瞈𧢲Ⅲ瘚<E285A2>?遴<><E981B4>詨??璉嘥<E79289>隡游<E99AA1><E6B8B8><EFBFBD><EFBFBD><EFBFBD>拇傦<E68B87><EFBFBD>?
// BOOST闂傚倷鑳堕崕鐢<EFBFBD>?<3F>磻閹捐绀夌€广儱顦介<E9A1A6>?鍡<>?<3F>節婵犲倻澧曠紒鈧崱妯肩闁糕剝锚缁旈箖鏌嶈閸撴瑩宕姘肩劷闊洦绋戠粻<E688A0>?<3F>辨喐韫囨洘鍏滈柍<E6BB88>?<3F><EFBFBD>?穱濠<E7A9B1>?Χ閸ヮ灝銏ゆ煟椤撴繄绐旈柟顖欑劍缁诲懘<E8AFB2>?<3F>?弴銏♀拺闂傚牃鏅犲<E78AB2>?<3F>界節閵忊埗<E5BF8A>?<3F><EFBFBD>?﹂崶顒€绀冩い鏃囧琚濋梻浣<E6A2BB>?<3F>閸<EE978F>??棝宕伴幘璇参ラ柨鐕傛<E99095>?
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;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>撏脤䲮<E884A4><E4B2AE><EFBFBD>蝏䭾䰻<E4ADBE>偦縝儭踵<E584AD>瞈?憍<>公憒?<3F>?<3F><EFBFBD><E28ABF><EFBFBD><EFBFBD><EFBFBD><E6928A><EFBFBD><EFBFBD><E79EBE>?<3F>踵鬼<E8B8B5><E9ACBC>?梶<><E6A2B6><EFBFBD><EFBFBD>﹜甈𤘪<E79488>瞉嗅?𣬚揭<F0A3AC9A><E68FAD><EFBFBD><EFBFBD>園𨍭<E59C92>餃揖<E9A483><EFBFBD><E68A86>寞童<E5AF9E>?<3F><><EFBFBD><EFBFBD><E5AF9E><EFBFBD><EFBFBD>撘?<3F><EFBFBD>憓?<3F><><EFBFBD><EFBFBD><EFBFBD>揣憡船<E686A1>蝷屸𤄄撊𤾸罁<F0A4BEB8>瑟ề<E7919F>𥕦<EFBFBD><EFBFBD>極蝻<E6A5B5>?<3F><><EFBFBD><E7989B><EFBFBD><EFBFBD><EFBCB9><E8A89C><EFBFBD>蝯輸<E89DAF>璅箇𩑈<E7AE87>𠉛<F0A0899B><EFBC92>迄嚚㗇眏<E39787>𧼮?讠<><E8AEA0><EFBFBD>隞阡鴡<E998A1><EFBFBD><E4BAA6><EFBFBD>??璇箇<E79287>璅餃偽<E9A483><EFBFBD>??霂船<E99C82>瞉嗅芍<E59785>拇傦<E68B87><E582A6>𡆇<EFBFBD>娪鸘嚚<E9B898><E59A9A><EFBFBD>寞ề<E5AF9E><EFBFBD>𥟇?潛<>憍菊<E6868D><E88F8A><EFBFBD><EFBFBD><EFBFBD>憿𨰝<E686BF>撉𧼮??<3F><>ê<EFBFBD><C3AA><EFBFBD><EFBFBD>𥕦<EFBFBD><F0A595A6><EFBFBD>鮟憭<E9AE9F><E686AD><EFBFBD>𥕦<EFBFBD>羅憍𦠜<E6868D>憳? <20><><EFBFBD><EFBFBD>琿㭠<E790BF><EFBFBD><E8A8AB>𪙛<EFBFBD>蝤輸䲰蝣勗<E89DA3><E58B97><EFBFBD><E586BD>偦?鞟𤗈<E99E9F>勗延<E58B97><EFBFBD><E8B3A2><EFBFBD><EFBFBD>撏?<3F>𤩂<EFBFBD><F0A4A982><EFBFBD><E6A2B6>?<3F>脤鮟<E884A4>脲?𤤿<><EFBFBD><E69ABD><EFBFBD><EFBFBD>蝝單中敹梶<E695B9><E6A2B6><EFBFBD><E8A781><EFBFBD><EFBFBD><EFBFBD>??<3F>餅𣖕蝔煾<E89D94><E785BE><EFBFBD><E8B8B5>誯緥<E8AAAF><E7B7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E68E83>𤄄撗讠<E69297>摰訫<E691B0><E8A8AB><EFBFBD><E88898><EFBFBD><EFBFBD><E6BCAF><EFBFBD><EFBFBD><E59C92>删祥<E588A0><EFBFBD><E6BEBE><EFBFBD><EFBFBD>抒盔<E68A92><E79B94><EFBFBD><EFBFBD><EFBFBD><E588B8>𥕦??
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹版澘绠查柛鎴︿憾<EFB8BF>?婃椽<E5A983>?<3F>?埡鍛€嶅┑鐘<E99098>?閿氭い<E6B0AD>?<3F>炴喘瀹曟﹢顢欓挊澶<E68C8A>?<3F>紦闂備胶鎳撻崥鈧悹浣<E682B9>?叀瀹曟垿骞橀<E9AA9E>?銉ョ<E98A89>?闂佸憡渚楅崢娲礌閺嶎厽鈷戦柛娑橈工缁<E5B7A5>?<3F>帗淇婇锝庢當闁伙絿鍏樺畷鐔碱敆娴攱鍞<E694B1>?<3F>繝鐢靛仦閸ㄥ爼鏁<E788BC>??梺缁樻尰閸ㄥ潡<E384A5>??诲澶娢ㄩ柨鏂垮⒔閻儳鈹戦悙瀛<E68299>?<3F>稇婵☆偅绻堥悰顕€骞<E282AC>??敃鈧鍛存煃閵夈儳锛嶅ù婊愭<E5A98A>? 闂傚倷鑳堕崑銊╁磿閼碱剙鍨濋柛<E6BF8B>?<3F>犲灱婵娊鏌嶉<E98F8C>?鍕偓瑙<E58193>?閵堝<E996B5>?<3F>绠鹃柟瀵镐紳椤忓牊鍋傞柟杈鹃<E69D88>??閻撴稑霉閿濆懏鎲搁柟鐣屽█閺岋繝宕卞▎蹇旂亪闂佹悶鍔戠粻鏍极閹剧粯鏅搁柨鐕傛<E99095>??
struct in_addr s;
iRet = inet_pton(AF_INET, mask.c_str(), &s);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>愇撊<EFBFBD>ˋ<EFBFBD><EFBFBD>瞉条<EFBFBD><EFBFBD><EFBFBD><EFBFBD>憪堒<EFBFBD>憓圈𤄄<EFBFBD>?蝞㯄<E89D9E><EFBFBD><EFBFBD><E8AA9A><EFBFBD>憪𡒊<E686AA>雿箏?渡<><EFBFBD>撘駁<E69298><E9A781><EFBFBD><E6BD9B><EFBFBD><E8B8B5>枏?<><EFBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E99696>?<3F><><EFBFBD>畾踹<E795BE><E8B8B9>硋斥撏粹<E6928F><E7B2B9>脩ˉ瞈墧<E79E88><E5A2A7>曉??<3F>?蝜嗪錬<E597AA>𥕢貍璊斗<E7928A>蝎㯄<E89D8E>敹𥟇<E695B9><F0A59F87><EFBFBD>蕭1<E895AD><31><EFBFBD><EFBFBD><EFBFBD>儭撾<E584AD>蝚𥕦麪<F0A595A6>䠷䲮颲暸<E9A2B2><E69AB8>擧?<3F><>鍦?矋<>鈭曉?𠺶<><F0A0BAB6><EFBFBD><E7AE8F><EFBFBD><EFBFBD>毺𤗈撌脲中<E884B2><EFBFBD><E59785><EFBFBD>璇粹<E79287><E7B2B9><EFBFBD><E8B8B5><EFBFBD>鈭?摰訫<E691B0><E8A8AB>寥㩋<E5AFA5>笔芦<E7AC94><E88AA6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜蜇<E7909C>钅鴡<E99285><E9B4A1><EFBFBD><EFBFBD><EFBFBD><E4B993>梢𤄄憭见㧜<E8A781>𧄍<EFBFBD><EFBFBD><E285A1>雇瑽湧𤄄<E6B9A7>?蝎枏<E89D8E><E69E8F><EFBFBD>瞉嗅??<3F><EFBFBD><EFBFBD><E996AB><EFBFBD><EFBFBD><E4809D><EFBFBD><EFBFBD>戭?<3F><EFBFBD><EFBFBD><E7989E>瞈䂿<E79E88><E482BF>瑕?𠹺<>撏罸?韮<><E99FAE>萄延<E89084><E5BBB6><EFBFBD><E786A3><EFBFBD><E584AE>瘚惩??<3F>仿鸘<E4BBBF>𧼮<EFBFBD><EFBFBD>𡄯蕭
// 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺<EFBFBD>?箓鏌仦璇插姎缂佺<E7BC82>?<3F>缍侀弻鐔兼焽閿曗偓<E69B97>?<3F>ь喗銇勯銈<EE9495>?枅鐎殿喖鐖奸崺锟犲磼濞戞艾<E6889E>??<3F>?繝鐢靛仩椤曟粓骞忛敓锟<E69593>1闂傚倷鐒︾€笛呯矙閹达附鍎<E99984>?<3F><EFBFBD>?<3F><EFBD85>?<3F>ゃ垺宀搁崺锟犲川椤撶偛鎸ら梺鐟板悑閻<E996BB>?宕归搹鍦噮闂傚倷绀侀幖<E4BE80>?<3F>︽偋閸℃蛋鍥ㄥ閺夋垹鏌ч梺闈涱槴閺<E6A7B4>?粓宕曞澶<EE85BC>??厱闁规惌鍘介惁浠<E68381>?⒒娓氣偓濞煎<E7858E>?<3F>介崟<E4BB8B>?<3F>唵婵☆垯璀﹂悞浠<E6829E>??煥閻曞倹瀚<E580B9>
if (iRet == 1) {
// 憍萇𠽌<EFBFBD><EFBFBD><EFBFBD>憿梶<EFBFBD><EFBFBD>誯𤄄憭见<EFBFBD><EFBFBD>坔䠀瑽寥罀颲曄翕憿佇<EFBFBD>蝜嗪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鞉器<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>萄妥<EFBFBD>𦠜<EFBFBD>撘喲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>𧢲閒<F0A7A2B2><EFBFBD>霂聆<E99C82><EFBFBD>𩑈憿琜<E686BF>蝷𧢲中<F0A7A2B2>?<3F><EFBFBD><EFBFBD><E69ABD>銴𡡞”<F0A1A19E><EFBFBD><E59581><EFBFBD><EFBFBD>钅鍫<E99285><E98DAB>晶憡船<E686A1>蝤輸鸘<E8BCB8><E9B898><EFBFBD><EFBFBD>蹱凃<E8B9B1><EFBFBD><EFBFBD>?踵中嚚<E4B8AD><E59A9A>蝏望<E89D8F>蝚罸摚<E7BDB8><E6919A><EFBFBD><E597AA><EFBFBD>𤘘<EFBFBD>䭾凃撟誯<E6929F>霂脩<E99C82><E884A9><EFBFBD>鈭鮋<E988AD><E9AE8B>斗Ⅱ<E69697><EFBFBD><EFBFBD><EFBFBD><E8B1A2>𠰴<EFBFBD>隡游<E99AA1>憿𥪜<E686BF><F0A5AA9C>𤘪<EFBFBD><F0A498AA><EFBFBD><EFBFBD><EFBFBD>?<3F>拙?閖<><E99696><EFBFBD>璊斗礆蝜<E7A486><E89D9C>敶埝鰊<E59F9D>𨳍<EFBFBD><F0A8B38D>潮𤄄撗讠翔<E8AEA0>?<3F><>?<3F><><EFBFBD><E597AF>峕縑<E5B395>?<3F><EFBFBD><EFBFBD><E69297><EFBFBD><EFBFBD><EFBFBD>憍萇𤗈瘚<F0A49788><E7989A><EFBFBD>?<3F><><EFBFBD><EFBFBD>𦦵<EFBFBD><EFBFBD><E89DBB><EFBFBD>瑕?𦠜揪撏冽<E6928F><E586BD>?<3F>菟鸘摨<EFBCB7>䭾偉撏唳<E6928F><E594B3>冽烵<E586BD><EFBFBD><EFBFBD>?
// 婵犵數鍋涢顓熸叏閺夋嚚瑙勵槹鎼达絿顦繝銏硾閻偐澹曢崗鑲╃瘈濠电姴鍊搁弳鐔兼煙閻<EFBFBD>?鏋涢柡灞诲€濆畷顐﹀礋椤<E7A48B>?喎浜鹃柛褎顨呰繚闁瑰吋鐣崹娲磿閻旇偐鍙撻柛銉<E98A89>?<3F>尙绱掓笟鍥ф珝闁哄瞼鍠撻幏鐘诲焺閸愵亞鐛㈤梺鑽ゅУ閸旀宕伴幇顔剧煓濠㈣泛<E388A3>?肩<>?<3F>鍏间繆椤栨繂鍚归柣銊ヮ煼閺岋絾<E5B28B>?旈<>?<3F>鈶╁濡<EE9D8C>?們鍔岄ˇ鐗堢┍婵犲浂鏁<E6B582>?柣鏃傜節缁ㄥ<E384A5>?<3F>洪崨濠<E5B4A8>?畵閻庢凹鍠氶崰濠囨晸閿燂<EFBFBD>?
unsigned int addr = ntohl(s.s_addr);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>愇撊<EFBFBD>ˋ<EFBFBD><EFBFBD>瞉条<EFBFBD><EFBFBD><EFBFBD><EFBFBD>憪堒<EFBFBD>憓圈𤄄<EFBFBD>?蝞㯄<E89D9E>瘨覀<E798A8><EFBFBD><E9A0A9><EFBFBD><E899BC><EFBFBD>蝎?憒?<3F>?<3F><><EFBFBD><EFBFBD>琿𤄄憭见<E686AD>憒?<3F>𥟇Ⅱ<F0A59F87>见滿<E8A781><EFBFBD><E59C88><EFBFBD>畾踹<E795BE><E8B8B9>硋斥撏粹<E6928F><E7B2B9>脩ˉ瞈榲<E79E88><E6A6B2>憿?撊㗇Ⅲ瘚<E285A2><EFBFBD>𢠃𤄄<F0A2A083>?蝎㯄<E89D8E><E3AF84>?撏潮<E6928F><E6BDAE>批𠱃憒𠺶<E68692>撣𢠃㭠<F0A2A083><EFBFBD><E8A8AB><EFBFBD><EFBFBD>鈭𣈯鮟憡踹<E686A1>瞉改蜇<E694B9><E89C87><EFBFBD><EFBFBD>??<3F>孵陸<E5ADB5><EFBFBD><E79D83><EFBFBD>憡烐<E686A1>鈭䠷<E988AD><E4A0B7><EFBFBD>憡㗇𣪧撏喲<E6928F><E596B2>𡁶??<3F><EFBFBD><EFBFBD>?
// 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺<EFBFBD>?箓鏌涘▎蹇Ш闁崇<E99781>?<3F>?<3F>?鍫曟倷閺夋埈<E5A48B>?嗛梺璋庡啰鐒哥€殿喖鐖奸崺锟犲磼濠х<D185>?嶉梻浣虹《閺<E3808A>?粓銆<E7B293>?崼銉ョ劦妞ゆ帊鑳堕埊鏇熴亜閵娿儳澧︽い銏<E98A8F>??閹峰懘宕烽娑欑亙闂備浇娉曢崳锕傚<E99495>??閿燂<EFBFBD>?
std::bitset<32> b((int)addr);
std::string strMask = b.to_string();
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?僐<><E58390>𡝗中<F0A19D97><EFBFBD>蝥曉<E89DA5><E69B89>𥕦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A485>𡝗<EFBFBD><EFBFBD><E6868D>憍萄<E6868D><E89084>𧼮?𠺶<><F0A0BAB6><EFBFBD>甈枏<E79488>憿圝<E686BF><E59C9D><EFBFBD>撏煾罇蝏条<E89D8F><E69DA1>寞踎<E5AF9E><E8B88E>蝏刻𥁒<E588BB><F0A58192><EFBFBD><EFBFBD>?<3F>?<3F><EFBFBD>憡船<E686A1>撌嘥延<E598A5><EFBFBD>駁?穃𤧚<E7A983><EFBFBD>撌?瑽寥鸘<E5AFA5>𠰴沲撉𧼮<E69289><F0A7BCAE><EFBFBD><E8A180>?衧蝻<E8A1A7><E89DBB>蝺⊿揻<E28ABF><E68FBB><EFBFBD><E6928F><EFBFBD><EFBFBD><E6BDAD><EFBFBD><E8A9A8>鮋搇<E9AE8B>?<3F><><EFBFBD><EFBFBD>萇酉<E89087>澆𢬢<E6BE86><EFBFBD><E3AF84><EFBFBD><E8A18C><EFBFBD>隞賊<E99A9E><E8B38A>啁椚<E59581><E6A49A>𤗈<EFBFBD><EFBFBD><E790BF><EFBFBD><EFBFBD><EFBFBD>𨅯?𣂼撓<F0A382BC><E69293><EFBFBD><EFBFBD>仿鸘<E4BBBF>𧼮<EFBFBD><EFBFBD>𡄯蕭"01"<22><><EFBFBD><EFBFBD><EFBFBD>儭撾<E584AD>蝚𥕦麪<F0A595A6>䠷䲮颲暸<E9A2B2><E69AB8><EFBFBD><E69697><EFBFBD><EFBFBD><EFBFBD>?鈭潮鯏<E6BDAE><E9AF8F>䠷𨍭<E4A0B7><EFBFBD><EFBFBD>𥕦<EFBFBD><EFBFBD>𡆇<EFBFBD><EFBFBD><E697A5><EFBFBD><EFBFBD>憿誩<E686BF><EFBFBD><EFBFBD><EFBFBD>憒𠺶<E68692>撣㘾<E692A3><E398BE>斤祥<E696A4><E7A5A5>?曄<><E69B84><EFBFBD><E683A9>?憿佇<E686BF><E4BD87>𤤿<EFBFBD><F0A4A4BF><EFBFBD>撠?<3F><EFBFBD><E594BE>?<3F><EFBFBD><E9A483>䁅?𣬚豪憍𡁏傦<F0A1818F><E582A6><EFBFBD>脫中<E884AB>⊥?<3F><>憟豢<E6869F><E8B1A2>𥕦<EFBFBD>敶券<E695B6>霂脤?賊<><EFBFBD><E79A9B><EFBFBD><EFBFBD><E69B84>閖䲮<E99696>血罀<E8A180>𢛵<EFBFBD>蝜偦㪗<E581A6><EFBFBD>瞈?憍<>公摰𤩂<E691B0>撏罸?韮<><E99FAE><EFBFBD><EFBFBD>霂脣?拍<><E68B8D>亙撞憡烐那蟡?<3F><>螂蝬𠰴托頝函<E9A09D><EFBFBD><EFBFBD>枏?瞾<>瑽豢中<E8B1A2><EFBFBD><E28AA5>孵𡠺蝚罸?𡝗鬲憯㗇<E686AF><E39787><EFBFBD><E89084>喳漆<E596B3>?轁<>撖?憍𡁏<E6868D>瞉嗅芍<E59785><E88A8D><EFBFBD>瞉嗅<E79E89><E59785>游迄<E6B8B8><EFBFBD>憪𦠜揪<F0A6A09C>𣈯<EFBFBD>雿詹<E99BBF><E8A9B9><EFBFBD><EFBFBD><EFBFBD><E4A0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD>蝎駁<E89D8E>憭讠<E686AD><E8AEA0><EFBFBD><E5AFA5><EFBFBD><E59C88><EFBFBD><E68B8D><EFBFBD><E68A86>?嚚𤾸<E59A9A><F0A4BEB8><EFBFBD>蝜偦鐤憸嘥<E686B8>瞈𧼮䴴<F0A7BCAE><EFBFBD><E68B9A><EFBFBD><E6BE86><EFBFBD><EFBFBD><EFBFBD>?
// 闂傚倷绀侀幖<EFBFBD>?<3F>ゆ偖椤愶箑纾块柛娆忣槺閻濊埖淇婇婵嗗惞<E59797>?<3F>も晞灏欓埀顒€鍘滈崑鎾绘煕閹板吀绨芥い鏃<E38184>?<3F>?″娲川婵犲倻<E78AB2>?<3F>勫┑鐐<E29491>?槹閻╊垶骞冩ウ娆<E382A6>?Ь缂備緡鍣崣鍐极閸岀偞鍤<E5819E>?い鏍电稻閼哥懓鈹戦悙鏉戠仸闁瑰皷鏅犲畷銏ゅ箚瑜<E7AE9A>?<3F>弸鏃堟煥閻曞倹瀚<E580B9>"01"闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍<E38184>?亼閳ь剙鎳撻ˇ鍦偓娈垮枤鏋顏冨嵆閸┾偓妞ゆ帒鍊荤粻鏂<E7B2BB>?<3F>熆鐠哄<E990A0>?顦柛瀣<E780A3>?閳藉<E996B3>?鈻嶉<E5B689>?<3F>绨婚柨鏇樺灲椤㈡<E6A4A4>?<3F>宕奸悢鍛婄彨闁诲<E99781>?<3F>鍘滈崑鎾绘煕閹邦厼鍔ゆ繛鍫灦<EE82A2>?婃椽宕崟<EE82A6>?<3F>患闁诲<E99781>?<3F>绋堥弲娑樺<E5A891>?闂佸綊妫跨粈浣衡偓<E8A1A1>?<3F>槸椤法鎹勬笟<E58BAC>?<3F>氬壉濠电偛鎳庣换<E5BAA3>?<3F><EFBFBD>?婚敐澶娢╅柕澶堝労娴犲ジ姊洪悜鈺佸⒉闁荤啙鍛潟闁哄<E99781>?鐗嗙粻锝夋煟閹邦垰钄肩紒鈧<E988A7>?n喗鈷戞繛鑼额嚙濞呮瑩鏌熼崙銈嗗<EFBFBD>?
return (strMask.find("01") == std::string::npos);
}
@ -1148,24 +1145,24 @@ std::string GetSysStatus() {
return strJson;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>撏脤䲮<E884A4><EFBFBD>憡烐?𨀣<><F0A880A3><EFBFBD>憿鍦𡠺<E98DA6>拚鸘<E68B9A><E9B898><EFBFBD>见墙<E8A781>𥕦延<F0A595A6>?<3F>烾𤄄戭?<3F>惩?𡃏葤<F0A1838F><E891A4><EFBFBD><EFBFBD>衣𨘻<E8A1A3><F0A898BB><EFBFBD>㚚繮嚙?16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?琜<><E7909C><EFBFBD><EFBFBD><E6868D><EFBFBD>?甈𤘪<E79488><F0A498AA><EFBFBD><EFBFBD><EFBFBD>梢𤄄<E6A2A2><EFBFBD><EFBFBD><E7989B>憒園<E68692><E59C92><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?遴<><E981B4><EFBFBD><E8B1A2>交噤憡暹<E686A1>瞈∵<E79E88>撏菟<E6928F><E88F9F><EFBFBD><E785BA><EFBFBD><E99FAE>?<3F>?撏寥𦅚<E5AFA5><EFBFBD>輸𪃭<E8BCB8><EFBFBD>璊止<E7928A>瘣?憿<E686BF>撏潮?琜<><EFBFBD><EFBFBD>嗆蘨蝏脫<E89D8F><E884AB><EFBFBD>雿萄<E99BBF><E89084>舘嬕<E88898><EFBFBD><EFBCB7>删?<3F><EFBFBD>?瞏嗵滌撊㗇Ⅱ<E39787><EFBFBD><E4BD87>⊿鴡戭?儮?<3F><><EFBFBD>脲ㄟ瞈<E3849F><EFBFBD><E59FAF><EFBFBD>鈭賡<E988AD><E8B3A1><EFBFBD><E6BB9A>𥕦<EFBFBD><F0A595A6>煾鴡瞈<E9B4A1>??<3F><><EFBFBD><EFBFBD>𥟇<EFBFBD><F0A59F87>𦦵宋<F0A6A6B5><EFBFBD>蝞㚚<E89D9E><E39A9A>𢎽<EFBFBD><F0A28EBD>⊥六<E28AA5>㯄崕<E3AF84>斤?暸䲮撖詨<E69296><E8A9A8><EFBFBD>蝜偦㪗<E581A6><EFBFBD><E7AEB8>唾?<3F><EFBFBD><EFBFBD>撏勗忖<E58B97>?蝏?撊㗇<E6928A><E39787>坔𡠺蝷<F0A1A0BA><EFBFBD><E9B4A1><EFBFBD>拙??<3F><EFBFBD><EFBFBD>酉瑹<E791B9>頝典膓<E585B8>瘀蕭
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑<E584B5>?<3F>旈埀顒勬偩閻戣姤鍋勯柛婵<E69F9B>?劗閺<E58A97>?牠<>?<3F>虹捄銊ユ珢闁瑰嚖鎷<E59A96>?16闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠婂懐<E5A982>?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁<E6AE9C>?<3F>鎸搁埥澶娾枎濡崵鏆俊鐐<E99090>?<3F>?崹鎶芥倿閿曗偓椤<E6A4A4>?顢旈崼<E69788>?<3F>櫌婵炶揪绲挎灙缂併劊鍎茬换娑㈠<E5A891>?<3F><EFBFBD>?潙纰嶉梺鍦拡閸<E68BA1>?<3F>?銆佸棰濇晩闁兼亽鍎遍崝鍛存⒑閸濆<E996B8>??鏆欓柛濠傜秺閹箖鏌嗗鍡椻偓鍨<E98DA8>?<3F>閹寸偟鎳愭繛鍫熺懃閳<E68783>?<3F>垿鍩ラ崱妤<E5B4B1>?<3F>?嶉悗瑙勬礃閸旀瑩<E69780>??幘缁樻櫢闁跨噦鎷<E599A6>
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; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><E5AFA5><EFBFBD>憍萇𠓼<E89087><EFBFBD><E69AB8>?<3F><>鑬撊<E991AC><E6928A><EFBFBD><EFBFBD>撣⊿<E692A3><E28ABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7AEB8>?<3F><><EFBFBD><EFBFBD>厩遙瞈<E98199>𩑈憪轁<E686AA><E686BF>撏罸縝<E7BDB8>𦦵妙<F0A6A6B5><EFBFBD>蝜嘥<E89D9C><E598A5><EFBFBD><E68B86>讐𤗈<E8AE90><F0A49788><EFBFBD><EFBFBD>㚚崕隡游敞<E6B8B8><EFBFBD><E39787>阡鸘<E998A1><E9B898><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>閖㪗瞈<E3AA97><E79E88><EFBFBD>貊𠓼瘣𦦵跼<F0A6A6B5><EFBFBD><EFBFBD><E686A1>憒賢?𠺶<><F0A0BAB6><EFBFBD><EFBFBD><E79286><EFBFBD><EFBFBD><EFBFBD><EFBFBD>脤鴡<E884A4>?<3F><>?潛<><E6BD9B><EFBFBD>蝏䀹陽瞈噼?折<><EFBFBD><E89D8F>憒嗆噤戭?<3F><EFBFBD>蝔踵𧋦蝏𧢲ề<F0A7A2B2>𡁜?𠰴麪蝤潮鯏<E6BDAE><E9AF8F>罸嘡<E7BDB8>?<3F><EFBFBD><EFBFBD>?0
return 0; // 闂備浇<EFBFBD>?<3F>уù鐑藉极婵犳艾鐒<E889BE>?い鎺嶈兌閵嗘帡鏌よぐ鎺旂<E98EBA>?闁哄矉绻濆畷姗€顢旈崟鎴秮閺岋繝宕ㄩ銏犲Е闂佽鍨伴崯鏉戠暦閻旂⒈鏁冮柕鍫濇閸犳洜绱撻崒娆戝妽<E6889D>?<3F>ゃ劍鍔楅幏瀣晲閸<E699B2>?煈<>?<3F>熷┑鐘绘涧濞<E6B6A7>?<3F>附绂嶉妶澶<E5A6B6>?厸闁稿本绋戦<E688A6>?<3F>呯磼閳ь剟鍩<E5899F>?閿燂<EFBFBD>?0
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>畾賡駚<E8B3A1><EFBFBD>蝏𡋾<E89D8F><F0A18BBE><EFBFBD><E588B8>𥕦??16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?琜<><E7909C><EFBFBD><EFBFBD><E6868D><EFBFBD>?甈𤘪<E79488><F0A498AA><EFBFBD><EFBFBD><EFBFBD>梢𤄄<E6A2A2><EFBFBD><EFBFBD><E7989B>憒園<E68692><E59C92><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?遴<><E981B4><EFBFBD><E8B1A2>交噤憡暹<E686A1>瞈∵<E79E88>撏菟<E6928F><E88F9F><EFBFBD><E785BA><EFBFBD><E99FAE>?<3F>?撏寥𦅚<E5AFA5><EFBFBD>輸𪃭<E8BCB8><E8B8B9>?甈𧵔𣳽<F0A7B594><EFBFBD><EFBFBD><EFBFBD><E9B4A1><EFBFBD><EFBFBD>撏?<3F>㚁蜇瘥<E89C87><E798A5><EFBFBD>𤤿<EFBFBD><F0A4A4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E996AB><EFBFBD><EFBFBD><EFBFBD><E89DB7><EFBFBD>?<3F><EFBFBD><E785BE><EFBFBD><EFBFBD>詨??<3F><><EFBFBD>嚚㗇<E59A9A><E39787><EFBFBD><E99E89>𡡞<EFBFBD><F0A1A19E>亙孝<E4BA99>孵𨪚撏粹ê<E7B2B9><C3AA><EFBFBD><EFBFBD><EFBFBD><E7AE8F>屸鯏<E5B1B8>𥟇<EFBFBD><F0A59F87><EFBFBD>墙憒賊<E68692><E8B38A>請扳<E8AB8B><EFBFBD><EFBFBD>𤩂<EFBFBD><F0A4A982><EFBFBD>?轁<>瞈?<3F>?<3F>餅那蝤?<3F><EFBFBD><E68A86>笔?𡃏葤<F0A1838F><EFBFBD><E6B9A7>𥟇苘<F0A59F87><E88B98>𢬢憪萄<E686AA><E89084><EFBFBD><EFBFBD><EFBFBD><E691B0>?<3F>賊𪃭<E8B38A><F0AA83AD>
// 闂備浇<EFBFBD>?<3F>х换鎰殽韫囨稑绠柨鐕傛<E99095>??16闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠婂懐<E5A982>?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁<E6AE9C>?<3F>鎸搁埥澶娾枎濡崵鏆俊鐐<E99090>?<3F>?崹鎶芥倿閿斿墽<E696BF>?欏鑸靛姈閸ゆ垿鏌ら<E98F8C>?銉︽毄闁靛牜鍣铏规兜閸滀礁娈<E7A481>?┑鐘噰閸<E599B0>??捇鏌悩鍐插闁哥姵鎹囬崺鈧い鎺嶈兌閳洘銇勯妸銉Ч濞洤锕、<EE8188>?<3F><EFBFBD>?<3F>?閻樺<E996BB>?鈧剟<EE8489>?<3F>虹憴鍕靛晱闁哥姵宀搁幆宀<E5B986>?晸閿燂拷
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<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><E4A29B>瘨埝<E798A8>蝏?甈枏<E79488>憒𧼮<E68692><F0A7BCAE><EFBFBD><E3AF84><EFBFBD><E6BDAE>萄?睃<><E79D83><EFBFBD><EFBFBD>蝜𥟇<E89D9C><F0A59F87><EFBFBD>瞈罱<E79E88><E7BDB1>?撊<><E6928A><EFBFBD><EFBFBD><E7AE8F>𢠃<EFBFBD><E798A8><EFBCB8>鞾?嘥<><E598A5><EFBFBD>蝎漤𡟹<E6BCA4><EFBFBD><E68B87>⊥?<3F><>鍦忖<E98DA6><EFBFBD><E89084>埈?<3F><><EFBFBD><EFBFBD>瘨条?<3F><>敹𥕦撲<F0A595A6>条㩞蝤賢迄嚚㗇膚瞈?<3F>?<3F><EFBFBD>蝜煾<E89D9C><E785BE><EFBFBD>旿頩<E697BF><E9A0A9><EFBFBD><EFBFBD><E99EBE>批憔<E689B9>𪙛<EFBFBD><F0AA999B>仿𤄄<E4BBBF>𡁶<EFBFBD>撖斗揪<E69697><EFBFBD><E588B8><EFBFBD>敶埝<E695B6><E59F9D><EFBFBD>ǜ<EFBFBD>菟𪃭瞈<F0AA83AD>?賊<><E8B38A>?<3F><><EFBFBD>穃?漤𤄄撗讠<E69297>摰閖<E691B0><E99696><EFBFBD>憟劐<E6869F>
return -1; // Hex闂備浇<EFBFBD>?<3F>х€涒晝<E6B692>?欓幒妞尖偓鍐醇閵<E98687>?<3F>喗鏅炴繛杈剧到濠€<E6BFA0>?嶅煝閺冨牊鐓涢悘鐐<E68298>?<3F>嚙閸旀粍鎱ㄩ敐鍡<E69590>?<3F>妤犵偞鐗<E5819E>?<3F>蹇涘<E8B987>?<3F>瑜忛弳鐘电磽娴<EFBD89>?<3F>?閻忓繑鐟╅獮蹇涙偐鐠囧弬銊╂煥閺傚灝寤洪柨鏇炲€归悡鏇㈡倵閿濆<E996BF>?<3F><EFBFBD>?柣鎾村<E98EBE>?<3F>閺岋繝宕遍鐔奉伓
}
if (bytesSize < hexLen / 2) {
zlog_error(zct, "bytesSize:%d < hexLen:%d", bytesSize, hexLen);
return -1; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><E4A29B>瘨埝<E798A8>蝏?甈枏<E79488>憒𧼮<E68692><F0A7BCAE><EFBFBD><E3AF84><EFBFBD><EFBFBD><EFBFBD>𠬍<EFBFBD><F0A0AC8D><EFBFBD>瘞?<3F><><EFBFBD><EFBFBD>睃高<E79D83><EFBFBD>蝬𠰴??<3F><EFBFBD><E7BE93><EFBFBD>撘駁<E69298><EFBFBD><E692A0><EFBFBD><EFBFBD><E8B383><EFBFBD><E783BE>餅Ⅱ憡脰?脣<>璊斗<E7928A><E69697>萄??憍𡁏<E6868D>瞉嗅芍<E59785><E88A8D><EFBFBD>瞉嗅<E79E89><E59785>游迄<E6B8B8><EFBFBD>憪𦠜揪璉<E68FAA><E79289>甈鞉<E79488>憍萇<E6868D><E89087><EFBFBD><EFBFBD><E6928A>摰亙<E691B0>瞏啁<E79E8F><EFBFBD><E5AB96><EFBFBD><E68A86>輸ê<E8BCB8><C3AA><EFBFBD><EFBFBD><EFBFBD>敶抒<E695B6><E68A92>埝翩撉𧼮?汿<><E6B1BF>箸𣺿<E7AEB8><EFBFBD><E8B3A1><EFBFBD><E4BAA4><EFBFBD>蝎?<3F>箸?<3F><>瞈∵<E79E88>撏菜儒<E88F9C><E58492><EFBFBD><EFBFBD>峕停虴璆删<E79286>??<3F><><EFBFBD>𤩂<EFBFBD><F0A4A982>𡁻<EFBFBD>雿賢斯<E8B3A2>䭾𣖕<E4ADBE>嗅忖<E59785>拙?駁𪃭<E9A781>箏孝<E7AE8F>𤘪<EFBFBD><F0A498AA>罸?硋<><E7A18B>?<3F>𠾍<EFBFBD><F0A0BE8D><EFBFBD>蝣䀹𧚔憡湔<E686A1>鈭?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿賃<E99BBF>憡㗇𣪧撏?<3F><EFBFBD><E6B0AC>鍦迄嚚<E8BF84><E59A9A><EFBFBD><EFBFBD><E6AFBA><EFBFBD><E696A4>?<3F><EFBFBD>憭𢞖<E686AD><F0A29E96>啣??瞉孵??撘賊<E69298><E8B38A><EFBFBD><E6AFBA>𡒊㩞ソ鋡仿<E98BA1>蝔遴<E89D94><E981B4><EFBFBD><E8B1A2>交噤憡暹<E686A1>瞈∵<E79E88>撏菟<E6928F><E88F9F><EFBFBD><E5B0A0>䀹?踵黢瞈⊥<E79E88>憳圈<E686B3>敹𥟇<E695B9><F0A59F87><EFBFBD>
return -1; // 闂備浇<EFBFBD>?<3F>х€涒晝<E6B692>?欓幒妞尖偓鍐╁緞鐎晝绠<E6999D>?銈嗘尪閸ㄥ綊<E384A5>??告笟鈧弻鐔封枔閸喗鐏撻梺娲<E6A2BA>?<3F>幖椤戝<E6889D>??婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥咁潰瀹€鈧悿鈧柟鑹版彧缁插潡骞<E6BDA1>?<3F>ぐ鎺撶厽闁斥晛鍟<E98D9F>?鎺<>?<3F>煕濡崵澧紒鍌氱Ч楠炴帡<E782B4>??崫鍕闂佽崵鍠撴晶妤冩<E5A6A4>?<3F>閿熺姵鐓欓柟<E6AC93>?<3F><EFBFBD>?鍊┑鐐碘拡娴滎<E5A8B4>?銆佸Δ浣瑰缂佸娉曢<E5A889>?搴ㄦ⒒娴憡鍟為柤瑙<E69FA4>?劤闇夌€瑰<E282AC>??澹<>??弸鏃堟煙鐎电ǹ袥闁稿鎸搁埥澶娾枎濡崵鏆┑鐘<E29491>?<3F>暯濡插嫰骞忛敓锟<E69593>
}
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) {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E588B8>冽揪<E586BD><EFBFBD>雿寞臁<E5AF9E><E88781><EFBFBD><EFBFBD>踵縑<E8B8B5><EFBFBD><E8A9A8>㕑楊<E39591><EFBFBD><E9AE8B>譞偦ê<E581A6><C3AA><EFBFBD><EFBFBD><E6BEBE><EFBFBD><E785BE><EFBFBD>瞉扳𣪧<E689B3>堒?瞾<><EFBFBD><E6928B><EFBFBD><E5AF9E>賊ê<E8B38A><EFBFBD><E7BE93>䭾?<3F><><EFBFBD>?<3F>斤?暸䲮撖詨<E69296><E8A9A8><EFBFBD>蝜偦㪗<E581A6>埝ề憒菟<E68692><E88F9F>𡁶?<3F><><EFBFBD><E6868D><EFBFBD>䜘ế璇箇<E79287>璅寧楛<E5AFA7>貊𠓼撗賊<E69297><E8B38A><EFBFBD>憿𡝗<E686BF><F0A19D97>?<3F><EFBFBD><E9A48C><EFBFBD>𡁶<EFBFBD>撏?<3F>?<3F><EFBFBD>憡湛<E686A1><E6B99B>䠷㩋<E4A0B7>笔散<E7AC94>寡噢蝞𤑳瑣<F0A491B3>埈鰊<E59F88><EFBFBD><E69B89><EFBFBD><E6BBA8><EFBFBD><EFBFBD>撉𠺶ǜ蝜偦縝<E581A6><E7B89D><EFBFBD>璊斗𪃭<E69697>?憿?<3F>?憒嗆鐦<E59786>脰⏛<E884B0><E28F9B><EFBFBD><EFBFBD><EFBFBD><EFBD81><EFBFBD><EFBFBD><E7989A>鈭暸鸘摨?蝬<><E89DAC><EFBFBD><E79286>憡烐<E686A1>敶埝<E695B6><E59F9D><EFBFBD><E49DBC><EFBFBD><E99EBE>?<3F>?瞈嫰<E79E88><E5ABB0><EFBFBD>蝜嘥<E89D9C><E598A5><EFBFBD><E6BEBE>𥪜?劐<>
// 闂備浇宕<EFBFBD>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞闁靛ě鈧弸鏍⒑闂堟稓澧曢悗<E69BA2>?<3F>嵆瀹曠數鈧綆鍠<E7B686>?<3F><EFBFBD>?<>?<3F>閹寸偟鎳愭繛鍫熒戦妵鍕<E98D95>?<3F>濠婂懐鐛㈤梺缁樹緱閸犳岸骞戦崟顖涙<E9A196>?閻熸瑥瀚烽<E7809A>?<3F>?ユ⒒娴懙鍦崲閹达箑纾块柣鎾崇瘍瑜版帒骞㈡繛鎴烆焽椤斿<E6A4A4>?<3F>?<3F>?妶搴航闁告瑢鍋撶紓浣插亾閻<E4BABE>?綆鍠楅悡娑樏归敐鍛喐闁<E59690>?<3F>?濞€閺岋繝宕遍鐔<EE9498>?<3F>
int byte;
sscanf(&hexStr[i], "%2x", &byte);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>撏脤䲮<E884A4><EFBFBD>憡烐邢<E78390>𡡞䲮<F0A1A19E><EFBFBD><E99E89><EFBFBD><EFBFBD>璇粹纒摨<E7BA92><E691A8>璊歹蜓<E6ADB9>嗅??<3F><EFBFBD><E7BE93><EFBFBD>撘駁<E69298>憌擧<E6868C><E693A7>餅?<3F><>𢠃繮颲拍<E9A2B2><EFBFBD>?舘敦<E88898><EFBFBD><EFBFBD>??憍𡁏<E6868D><F0A1818F>烐那<E78390><EFBFBD><E59C88><EFBFBD><E4BAA4><EFBFBD>肼蝎<E882BC><E89D8E><EFBFBD><EFBFBD><E6AFBA>餅那<E9A485>踵耨憭鞉<E686AD><E99E89>䁅臤撏屸鴡<E5B1B8><EFBFBD>憒𠺶<E68692>撣㘾<E692A3>敶鍦撲<E98DA6>箏䴴<E7AE8F>䠷𪆴敹<F0AA86B4><E695B9><EFBFBD>讐璛<E8AE90>文迆<E69687><E8BF86><EFBFBD><EFBFBD><EFBFBD><E89B94>瑟縑<E7919F><EFBFBD><E8B3A3><EFBFBD>撏𣈯?瓐ǜ<E79390>煾鴡瘨矋馱<E79F8B>𧶏<EFBFBD><F0A7B68F><EFBFBD>隡湔𠹻II<49><49><EFBFBD><EFBFBD>?䢛<><E4A29B>瘨埝<E798A8>蝏?甈枏<E79488>憒𧼮<E68692><F0A7BCAE><EFBFBD><E3AF84><EFBFBD><E6BDAE>萄?睃<><E79D83><EFBFBD><EFBFBD>璇箇冨<E7AE87><EFBFBD><E4BAA4>孵龗<EFBFBD>?
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑樷枎閹捐櫕杈堥梺鎸庣箓椤︻垶<EFB8BB>??告笟鈧弻鐔风暋閻<E69A8B>?<3F>牊鎷辩紓浣<E7B493>?<3F>贰閸<EFBD8F>??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鐘虫崌閸┾偓妞ゆ帒鍊归弳鈺呮煙閾忣偅灏甸柤娲憾瀵濡烽敃鈧崜<EE8484>?<3F>㈡⒑閸涘﹤鐏﹂柍鐟伴拤II闂備浇<E58299>?<3F>х€涒晝<E6B692>?欓幒妞尖偓鍐醇閵<E98687>?<3F>喗鏅為梺璺ㄥ櫐閹凤<EFBFBD>?
asciiStr[j++] = (char)byte;
}
// 瞈删㩞憪琿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>渡𠽌蝷𢠃鯏<EFBFBD><EFBFBD>𡁻<EFBFBD><EFBFBD>?撘湧㨃璆<E3A883><E79286>?<3F><EFBFBD>蝜㗛<E89D9C>嚚匧<E59A9A>憿訫䴴瘥屸<E798A5>蝔遴<E89D94><E981B4><EFBFBD><E8B1A2>交噤憡暹<E686A1>瞈∵<E79E88>撏菟<E6928F><E88F9F><EFBFBD><E785BA><EFBFBD><E99FAE>?<3F>?撏寥𦅚<E5AFA5><EFBFBD>輸𪃭<E8BCB8><E8B8B9>?甈𧵔𣳽<F0A7B594><EFBFBD><EFBFBD><EFBFBD><E9B4A1><EFBFBD><E6B2B2>墙撟㘾縝瞈<E7B89D><E79E88><EFBFBD><EFBFBD><E4BD87>𦠜<EFBFBD><F0A6A09C><EFBFBD><E49DBC>瑟ề<E7919F>𥕦延<F0A595A6>𢎽<EFBFBD><E79E88>璊賡<E7928A><E798A8><EFBCB8>𧵔<EFBFBD>蝤喳?𠺶<><F0A0BAB6><EFBFBD><E7B2B9>餃憤<E9A483><EFBFBD><E69B84>賊𪃭<E8B38A><F0AA83AD>
// 濠电姷鏁搁崕鎴犵礊閳ь剚銇<EFBFBD>?弴鍡楀<E98DA1>?閸欏繘鏌幇顕呮毌闁稿鎸搁埥澶娾枎濡崵鏆俊鐐<E99090>?<3F>?崹鎶芥倿閿斿墽<E696BF>?欏鑸靛姈閸ゆ垶銇勯幒鎴濃偓鍦焊濠靛鈷戦柛婵嗗濡叉椽鏌涢悩铏磳<EE82A2>?<3F>ゃ垺鐗犻弫鎾绘晸閿燂拷
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); //憍萇𤗈<EFBFBD><EFBFBD>摨枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝤寧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝞枏<EFBFBD><EFBFBD>𤩂<EFBFBD><EFBFBD><EFBFBD>撘豢<EFBFBD><EFBFBD>?<3F>𣬚<EFBFBD>璇餌瑣戭?<3F><EFBFBD><EFBFBD>龩蝏嗆偉撘餉?𤑳<><E798A8><EFBCB8><EFBFBD><E49DBC><EFBFBD><E5AFA7><EFBFBD>瞈?<3F>菜𨮜<E88F9C>毺𤗈<E6AFBA>罸鯏<E7BDB8><E9AF8F><EFBFBD>毺麯<E6AFBA><EFBFBD><E785BE><EFBFBD>璊文縞<EFBFBD>?
gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); //婵犲痉鏉库偓鏇㈠磹瑜版巻鈧箓宕堕鈧弸渚<EFBFBD>?鏌熼梻纾<E6A2BB>?厡鐎规挷绶氶弻<E6B0B6>?<3F>绠涢敐鍛凹缂備胶<E58299>?电敮锟犲蓟閳╁啰鐟瑰┑鐘插暙椤忥<EFBFBD>?
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) { //瞈删㩞憪琿﹝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤑳˙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?嚚𤾸<E59A9A><F0A4BEB8>𤩺肼蝝垍<E89D9D>璅潭斐<E6BDAD><EFBFBD><E89B94><EFBFBD>戭?<3F><EFBFBD><E3979B>𡝯<EFBFBD><F0A19DAF><EFBFBD>蝸撏菟<E6928F><E88F9F>?繳<><EFBFBD>瘨覀<E798A8><E8A680><EFBFBD>畾暸<E795BE><E69AB8>𡒊<EFBFBD>憿虫撈撘脤<E69298><E884A4><EFBFBD><E8A1A3><EFBFBD><E59687>𡁻<EFBFBD>瘣?<3F><EFBFBD><E588B8><EFBFBD>敶埝<E695B6><E59F9D><EFBFBD><EFBFBD><EFBFBD>𤩺縑<F0A4A9BA>𡁏鉄<F0A1818F><EFBFBD><E7919F><EFBFBD><EFBFBD><EFBFBD>𨅯鉄<F0A885AF><EFBFBD><E5ADB5><EFBFBD><EFBFBD>撏潮<E6928F><E6BDAE>脩貍<E884A9><E8B28D><EFBFBD><EFBFBD><E39A9A><EFBFBD><EFBFBD><EFBFBD><E6B9B6><EFBFBD>抒盔<E68A92><E79B94><EFBFBD><EFBFBD><EFBFBD><E588B8>𥕦??
if (tcgetattr(fd, &oldtio) != 0) { //濠电姷顣藉Σ鍛村磻閳ь剟鏌涚<EFBFBD>?偅灏扮紒缁樼洴瀵爼骞<E788BC>?鐐插闂佽崵鍠<E5B4B5>?ú鏍涘┑鍡欐殾闁挎繂顦伴弲鏌ユ煕閳╁喚鐒<E5969A>?柨鏇炲€归悡鏇熸叏濡搫鈷旈柣锝堜含閹叉悂鎮ч崼銏犲绩闂佽鍠曠划娆撳极閹剧粯鏅搁柨鐕傛<E99095>??
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) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E585B8><EFBFBD>憡湛<E686A1><E6B99B><EFBFBD><E58CA7>笛寥<E7AC9B>撌?<3F>鞾鴡戭萎漯<E8908E>峕閒<E5B395><E99692><EFBFBD>儭輻眸<E8BCBB><E79CB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>餃撒<E9A483><E69292><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠬍<EFBFBD>鈭墧<E988AD><E5A2A7><EFBFBD><E888A9><EFBFBD><EFBFBD><EFBFBD>𨀣中<F0A880A3>伐鼓撖?憍𡁏<E6868D><F0A1818F><EFBFBD><E49DBC>𡁻<EFBFBD>敶鍦<E695B6><E98DA6>睃斥<E79D83><EFBFBD>?
switch (nSpeed) //闂備浇宕<EFBFBD>?慨宕囩矆娴娅犲ù鐘<C3B9>?儐閸嬵亪鏌涢埄鍐︿粶闁哄鐗犻弻鏇疀鐎亞浠煎銈冨劜椤ㄥ﹪<E384A5>?婚敐鍛牚闁归偊鍘奸锟<EE9494>?
{
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) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E585B8><EFBFBD>憡湛<E686A1><E6B99B><EFBFBD><E58CA7>笛寥<E7AC9B>撌?<3F>鞾鴡戭萎漯<E8908E>峕閒<E5B395><E99692><EFBFBD><EFBFBD><EFBFBD>?<3F><><EFBFBD>蝏?<3F>𨀣揢憍萄䣐蝭<E4A390><E89DAD>詨掛<E8A9A8>寞絳撗<E7B5B3><EFBFBD>𥕦<EFBFBD>撠圈鴡摨<E691A8><EFBFBD><EFBFBD>璇粹纒摨<E7BA92><E691A8><EFBFBD><E89DBB><EFBFBD>寥ê<E5AFA5><C3AA><EFBFBD><EFBFBD>瘀蕭
if (nStop == 1) //闂備浇宕<EFBFBD>?慨宕囩矆娴娅犲ù鐘<C3B9>?儐閸嬵亪鏌涢埄鍐<E98D90>?<3F>缁惧墽<E683A7>?换婵囩節閸屾凹浼岄梺鍛婃尰閸庢娊婀侀梺鎸庣箓缁绘垹鈧熬鎷<E786AC>
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.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撏亦<EFBFBD><EFBFBD><EFBFBD>蝤輸䲮<EFBFBD>唳?<3F>鐦憍<E990A6><EFBFBD>寞肼<E5AF9E>?憡湔<E686A1>蝬𢠃<E89DAC><F0A2A083><EFBFBD><E68B87><EFBFBD><E5B395>?/home/憍萇𠽌<E89087><EFBFBD><E8B38A>箏晶<E7AE8F>?<3F>䂿?圈䲮<E59C88>渡楚<E6B8A1><E6A59A>𤧚<EFBFBD>輻冨銵∠<E98AB5><E288A0><EFBFBD><EFBFBD><E79289><EFBFBD>餅湶瘚琿罁<E790BF><EFBFBD><E9A485><EFBFBD><EFBFBD>箏掛<E7AE8F>?撖?<3F>?憒賊<E68692><E8B38A>亦?<3F><>雿瘉寥?穃<>撟鞉奴<E99E89>函??<3F>餅那璅𢠃<E79285><F0A2A083>?<3F><><EFBFBD><EFBFBD>?<3F><EFBFBD><E78390>?蝘孵?𠰴?𡁜<><EFBFBD><E686A1><EFBFBD>啣?𠺶<>瘣条赫<E69DA1>餌旿頩<E697BF><E9A0A9><EFBFBD>賊𪃭<E8B38A><F0AA83AD> */
/* 1.闂傚倷绀侀崥瀣磿閹惰<EFBFBD>?<3F>搴婇柤鑹扮<E991B9>?娴滃綊鏌ㄩ悤鍌涘<E98D8C>?/home/婵犵數鍋為崹<E782BA>?曞<>?<3F>閹间緡鏁勫璺衡看閻掕棄霉閻撳海鎽犻柛搴Ч閺屾<E996BA>?<3F>?<3F>?妸銉ュ<E98A89>?<3F>闂佺ǹ<E4BDBA>?<3F>嗛幐楣冨<E6A5A3>??閻樺樊鍟<E6A88A>?い鏂<E38184>?悑濞<E68291>?秹<>?<3F><>?<3F>崒娆愮グ<E684AE>?<3F>ゆ洘绮撻獮蹇涙晸閿燂拷 */
statfs("/", &diskInfo);
unsigned long long blocksize = diskInfo.f_bsize;
unsigned long long totalsize = blocksize * diskInfo.f_blocks;
/* 2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撏亦<EFBFBD><EFBFBD><EFBFBD>蝤輸䲮<EFBFBD>唳?<3F>鐦憍<E990A6><EFBFBD>寞肼<E5AF9E>?憡湔<E686A1>蝬𢠃<E89DAC><EFBCB7>嘥麢<E598A5><EFBFBD><EFBFBD>盔憒?<3F>?撘餃?亙𠼻瑼券<E791BC><E588B8>𦠜龫憪塩<E686AA><E5A1A9><EFBFBD><E98DA6>?蝺鮋<E89DBA><E9AE8B>腎寞<E8858E><EFBFBD>傦憍萄<E6868D><E89084><EFBFBD><E5AFA7>伍嘑<E4BC8D><E59891><EFBFBD><EFBFBD><EFBFBD><E587BD><EFBFBD><EFBFBD><EFBFBD><E5AFA5>抆猐<E68A86><EFBFBD><E48E9A>煾㨃璈<E3A883><EFBFBD><E38493><EFBFBD>輸𨍭璈<F0A88DAD>撘餃?亙𢂚<E4BA99><F0A2829A><EFBFBD>典罀<E585B8>瑕掃<E79195>煾?𠉛◎撌交中<E4BAA4>𧼮俈憿𤏪<E686BF>撏潮<E6928F><E6BDAE><EFBFBD><E89B94><EFBFBD><EFBFBD><EFBFBD>訫旬憍<E697AC>?潮<>摮覀<E691AE>憡湛<E686A1><E6B99B><EFBFBD><E28ABF>箸鰊<E7AEB8>蓥螂<E893A5><EFBFBD><EFBFBD>蝬𢠃<E89DAC>摨冽<E691A8>瞉嗅??<3F>?<3F><><EFBFBD><E285A1><EFBFBD>憓閙<E68693><EFBFBD><E69285><EFBFBD>?撅踐<E69285>憿梶𠽌<E6A2B6><EFBFBD><E99696>啣?𢠃<><F0A2A083><EFBFBD><EFBFBD><E79E88><EFBFBD><EFBFBD><E4BAA4>噼𪄳<E599BC>𧢲閒<F0A7A2B2><EFBFBD>戭?蝘?憍菊<E6868D><E88F8A><EFBFBD><EFBFBD>賢朵憿𠉛<E686BF><F0A0899B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憡槽<E686A1><EFBFBD><E7B2B9>斗揪憒賊<E68692><EFBCB8><E699B4><EFBFBD>璉輸<E79289><EFBFBD><EFBFBD>潔蝴<E6BD94>仿鸘<E4BBBF>𧼮<EFBFBD><EFBFBD>𡄯蕭 */
unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD>脩?圈䲮蝏<E89D8F><EFBCB7><EFBFBD>蝜偦㨃璅箇<E79285><EFBFBD><E89DBB>瞈惩𢂚<E683A9><EFBFBD><E4A0B7>腎孵彍<E5ADB5><E5BD8D><EFBFBD>賜滌撊<E6BB8C>揢憡烐<E686A1><E78390><EFBFBD><EFBFBD><E4B8AD><EFBFBD><EFBFBD>璇粹纒摨<E7BA92><E691A8>㘾鴡<E398BE><EFBFBD>撖?憍𡁏<E6868D>瞉嗅芍<E59785><E88A8D><EFBFBD>瞉嗅<E79E89><E59785>游迄<E6B8B8><EFBFBD>憪𦠜揪璉<E68FAA><E79289>甈鞉<E79488>憍萇<E6868D><E89087><EFBFBD><EFBFBD><E6928A>摰亙?羓?孵迄嚚<E8BF84><E59A9A><EFBFBD>ế璇箇冨<E7AE87><EFBFBD><E4BAA4>孵龗<EFBFBD>?
// unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD><EFBFBD>璊斗𠼻<EFBFBD>偦崕<EFBFBD><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD>箏?拍<><E68B8D>峕𣪧撏澆延<E6BE86><EFBFBD><E68A92><EFBFBD><EFBFBD>賜滌撊<E6BB8C>揢憡烐<E686A1><E78390><EFBFBD><EFBFBD><E4B8AD><EFBFBD><EFBFBD>璇粹纒摨<E7BA92><E691A8>㘾鴡<E398BE><EFBFBD><E884A4><EFBFBD>撏詨忖<E8A9A8>?<3F>勗𨪚<E58B97>偦⏚<E581A6><EFBFBD><E69AB9><EFBFBD><E7AE8F>鞾𡟹<E99EBE><EFBFBD><EFBFBD>𪃭<EFBFBD>?
/* 2.闂傚倷绀侀崥瀣磿閹惰<EFBFBD>?<3F>搴婇柤鑹扮<E991B9>?娴滃綊鏌涢妷锝呭闁崇粯<E5B487>?<3F>?弻<>?<3F>堫檨闁告挻姘ㄧ划娆<E58892>?緞鐏炵ǹ浜鹃柨婵嗙凹缁ㄥ鏌嶉柨瀣闂囧鏌ㄥ┑鍡橆棤闁瑰啿鎳橀弻<E6A980>?<3F>囨喆閸曨厼鈷屽┑<E5B1BD>?<3F>硷工椤嘲顕崼鏇炵闁绘劕妯婃<E5A6AF>?<3F>鍛存⒒娴憡鍟為柣鐕佸灦瀹曞綊骞庨挊澶<E68C8A>??<3F>?梺闈涚墕濞层劑<E5B182>?屽顓犵鐎瑰<E9908E>?<3F>鍠曠花濂告煥濞戞艾鏋涢柡宀<E69FA1>?<3F>?婵℃悂濡烽妷顔绘偅闂備線娼уú銈吤洪妸锔绢洸闁归棿鐒﹂弲鎼佹煥閻曞倹瀚<E580B9> */
unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //闂傚倷绀侀幉锟犲<EFBFBD>?<3F>閹绢喖鐤炬繛鍡樺灩缁€濠囨煙鐎电ǹ啸闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犳牠<E78AB3>?婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥<E7B28B>?<3F><>?<3F>娅㈤梺璺ㄥ櫐閹凤<EFBFBD>?
// unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //闂傚倷绀侀幉锟犳偡椤栫偛鍨傞柟<EFBFBD>?版閺<EE9789>?<3F>線鏌曢崼婵囧窛闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犲酣鈥﹂崸妤<E5B4B8>?閱囬柛鈩冾殔閺嗙喐鎱ㄩ敐蹇斿<EFBFBD>?
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<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<>蝤寧<E89DA4>戭?嚗訫迆<E8A8AB><E8BF86><EFBFBD>豢雇鈭嗪<E988AD>憍𡁏Ⅱ<F0A1818F><E285A1><EFBFBD>蝞鮋鴡憍<E9B4A1><E6868D>蝏?憍𡁏<E6868D><F0A1818F><EFBFBD><EFBFBD><E695B6><EFBFBD>𧼮<EFBFBD><F0A7BCAE>𥪜<EFBFBD>蝡笔?轁<><E8BD81><EFBFBD><E49598><EFBFBD>𤧐畾斤<E795BE>雿賡硫<E8B3A1>?<3F><EFBFBD><E996A7>餃滲蝬<E6BBB2><E89DAC><EFBFBD>?<3F><EFBFBD>?
struct sockaddr_in serverAddr {}; // Server<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瑞辣瘞?<3F><><EFBFBD>瘞?<3F>娪鴡<E5A8AA><EFBFBD><E585B8>𥪜<EFBFBD>靽𢠃?𡝗<><F0A19D97>罸鸘<E7BDB8><EFBFBD><E6BBA8>峕閒撟<E99692><E6929F><EFBFBD><EFBFBD><EFBFBD><E89DBB><EFBFBD><EFBFBD><E596B2><EFBFBD><EFBFBD>𠉛<EFBFBD>蝞𡁶<E89D9E><EFBFBD><EFBFBD>𥪜<EFBFBD><F0A5AA9C><EFBFBD><EFBFBD><EFBFBD><E79A9B><EFBFBD><EFBFBD><E8A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝘渡<E89D98><E6B8A1><EFBFBD>憡烐?潭<><E6BDAD>箏䴴<E7AE8F><E4B4B4><EFBFBD><EFBFBD><EFBFBD><E68B87><EFBFBD><EFBFBD>?
int sockfd; // Socket闂傚倷绀侀幖<EFBFBD>?<3F>﹀磹缁<E7A3B9>?娲晲閸涱亝鐎婚梺闈涚箞閸婃洜<E5A983>?婚悽鍝ュ彄闁搞儯鍔忔竟<E5BF94>?<3F>€鏌Δ浣圭殤缂佽鲸<E4BDBD>?掕灃閻庯綆鍋<E7B686>?锟<EE9494>?
struct sockaddr_in serverAddr {}; // Server闂傚倷绶<EFBFBD>?濠<EE9F87>?⒔閸曨偒鐔嗘俊<E59798>?<3F>欒閻掍粙鏌涢幇鍏哥敖缁炬儳銈搁弻鐔煎箚瑜滈崵鐔兼煃瑜滈崜锕傚垂闁秴绠柛娑<E69F9B>?<3F>摠閺呮悂鏌ㄩ悤鍌涘<EFBFBD>?
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD>?<3F>𨀣縑<F0A880A3><E7B891><EFBFBD>?甈𤘪<E79488><F0A498AA>萇?諱亦遝<E4BAA6><EFBFBD><E4BAA6>𣬚<EFBFBD>蝝鍦旬<E98DA6><EFBFBD>cket
// 闂傚倷绀侀幉锛<EFBFBD>?暜濡ゅ啰<E38285>?欓柟瀵<E69F9F>?<3F>Х绾句粙鏌熺紒妯肩潉cket
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
zlog_error(zct, "Failed to create socket.");
return 1;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E585B8><EFBFBD>憡湛<E686A1><E6B99B><EFBFBD><E58CA7>笛寥<E7AC9B>撌?<3F>鞾鴡戭萎漯<E8908E><EFBFBD><E5B395>煾㪗瞈<E3AA97><E79E88><EFBFBD><EFBFBD>ver<65><72><EFBFBD><EFBFBD>瑞辣瘞?<3F><><EFBFBD>瘞?<3F>娪鴡<E5A8AA><EFBFBD><E585B8>𥪜<EFBFBD>靽𢠃?𡝗<><F0A19D97>罸鸘<E7BDB8><EFBFBD><E6BBA8>峕閒撟<E99692><E6929F>儭賜<E584AD><E8B39C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>敶鍦撒摰亙?羓<>憡湛<E686A1><E6B99B><EFBFBD><E288AA><EFBFBD><EFBFBD><EFBFBD>暸䲮<E69AB8>斗鼧
// 闂備浇宕<EFBFBD>?慨宕囩矆娴娅犲ù鐘<C3B9>?儐閸嬵亪鏌涘┑鍫濈€瑀ver闂傚倷绶<E580B7>?濠<EE9F87>?⒔閸曨偒鐔嗘俊<E59798>?<3F>欒閻掍粙鏌涢幇銊︽珖闁崇懓绉归弻宥<E5BCBB>?<3F>煛娴憡娈ㄧ紓浣瑰敾閹凤拷
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(18393); // TCP憍萇𠓼<EFBFBD><EFBFBD><EFBFBD>𨮜憒文<EFBFBD><EFBFBD>䠷䲮<EFBFBD>䀹駠瘚䭾鬼靽𢠃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?撟烐童<E78390>交鷼<E4BAA4>颯ế瞏折崕瞈𧢲<E79E88><F0A7A2B2>嘥𡠺慦潮𤄄雿貊孝<E8B28A><EFBFBD><E6999E>𣈯㨃璆<E3A883><E79286>?蝻<><EFBFBD><E89E82><EFBFBD><EFBFBD>憡船<E686A1>撌嘥延<E598A5>脣??<3F><><EFBFBD><EFBFBD><EFBFBD>摮睃鬼瞈罱<E79E88><E7BDB1>?撊<>??<3F>𦦵<EFBFBD>撣烾<E692A3><E783BE><EFBFBD><EFBFBD><EFBFBD>?80
serverAddr.sin_port = htons(18393); // TCP婵犳鍠楃敮妤冪矙閹烘挾浠氭俊鐐€<EFBFBD>?幑浣哥暦閻㈤潧鍨濋柍鍝勬媼閺佸秵鎱ㄥ鍡楀<E98DA1>?缂佸顦靛娲川婵犲<E5A9B5>??鍣┑鐐存尭濠€<E6BFA0>?嶅<>??瑜版帗鏅搁柨鐕傛<E99095>?80
inet_pton(AF_INET, "192.168.1.147", &serverAddr.sin_addr);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?琜<><E7909C><EFBFBD><E69AB9><EFBFBD>蝥曉?𡁏鰊<F0A1818F><EFBFBD>隞偦𤄄<E581A6><EFBFBD><E69DA1>𣬚<EFBFBD>蝝㘾<E89D9D><E398BE><EFBFBD><EFBFBD><EFBFBD>㯄鴡<E3AF84><E9B4A1><EFBFBD><EFBFBD><EFBFBD><E6A2B6>豢鐦嚚<E990A6><E59A9A>蝏曄<E89D8F>瞏貫r
// 闂備礁鎼ˇ<EFBFBD>?<3F>﹀疾濠靛纾<EE8385>?<3F>柣鎰仛閺嗘粓鏌熺紒銏犳灈缂佲偓閸℃稒鐓熺憸搴绾炬潳er
if (connect(sockfd, reinterpret_cast<struct sockaddr *>(&serverAddr), sizeof(serverAddr)) == -1) {
zlog_error(zct, "Failed to connect to the server.");
close(sockfd);
return 1;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>賊崕<EFBFBD><EFBFBD>銴𡡞”<EFBFBD><EFBFBD><EFBFBD>?<3F><EFBFBD><E78990>寡噢蝯曄滬<E69B84><EFBFBD><E890B8>𠉛<EFBFBD><F0A0899B>?蝻<>儘撣<E692A3><E288AA><EFBFBD>憿鞟<E686BF>撖㚚<E69296>雿豢僚<E8B1A2>單𣺿<E596AE>?瘞?<3F><EFBFBD><E596B2>?<3F>鞾鑬瞈<E991AC><E79E88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBCB7><EFBFBD>璇駁<E79287>甈鍦<E79488>璊扎<E7928A>儮?憿X偉撘賡?梶<><E6A2B6>仿<EFBFBD><E4BBBF><EFBFBD><EFBFBD><EFBFBD>𦥑<EFBFBD><F0A6A591>詨??<3F><EFBFBD><EFBFBD><E6868D><EFBFBD><EFBFBD><EFBFBD>?
// 闂傚倷绀侀幉锟犳偡閿曞倸鍨傞柛褎顨呴悞<EFBFBD>?亜閹达絾纭舵い锔煎<E99494>?缁辨帡宕崟顐熸寖闂佸湱鎳撶<E98EB3>?<3F>?即骞<E58DB3>?ぐ鎺濇晝闁挎繂妫崯鈧梻鍌欒兌椤㈠<E6A4A4>?顢氶弽<E6B0B6>?<3F>炵獥闁哄稁鍋€閸<E282AC>??挾鍠婃径瀣<E780A3>?
ssize_t bytesSent = send(sockfd, pSendData, strlen(pSendData), MSG_NOSIGNAL);
if (bytesSent == -1) {
@ -1602,13 +1599,13 @@ int socketHeart(const char *pSendData) {
return 1;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD>蝶蝎?<3F><EFBFBD><E585B8><EFBFBD>甈𤑳<E79488><F0A491B3>詨??憪斤<E686AA><E696A4>餃敦瞈惩𧗾<E683A9>偦鸘皛<E9B898><E79A9B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?琜<><E7909C><EFBFBD><E69AB9><EFBFBD>蝥曉?𡁏鰊<F0A1818F><EFBFBD>隞偦𤄄<E581A6><EFBFBD><E69DA1><EFBFBD><E48E9A><EFBFBD>瘨瞾<E798A8>
// 闂傚倷鑳舵灙缂佺<EFBFBD>?鍨剁换娑欑節閸<E7AF80>??姤绋撻崰濠囧煛閻滅€攅t闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠靛纾<EE8385>?<3F>柣鎰仛閺嗘粓鏌ㄩ悤鍌涘
close(sockfd);
return 0;
}
// Ping<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>敹𥟇<EFBFBD><EFBFBD>?瞈鞉孛瞈?閫<><E996AB><EFBFBD><EFBFBD>撘?<3F>?<3F><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><E99285><EFBFBD>憒文麢<E69687>嗆中<E59786><EFBFBD>憪瞾<E686AA>eout憍萇𠽌<E89087><EFBFBD><E8B38A>箏晶<E7AE8F>?<3F>䂿?脤鴡<E884A4><EFBFBD>蝥曇𥁒<E69B87>典旬憭詨鉄<E8A9A8><EFBFBD><E9AD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7AE87>讐𠓼<E8AE90><F0A093BC><EFBFBD><EFBFBD><E99D98>蝏匧<E89D8F>撘駁<E69298><E9A781><EFBFBD><E68B8D><EFBFBD><E4ADBE>讠赫<E8AEA0><EFBFBD><E49DBC><EFBFBD><EFBFBD><EFBFBD>迆儮<E8BF86><E584AE><EFBFBD>箸?<3F><><EFBFBD><EFBFBD>憓賜<E68693><E8B39C>?<3F>賊𦅚憍<F0A6859A><E6868D>蝥曉斥撘園㪗瘨睃?輻<><E8BCBB><EFBFBD><E89084><EFBFBD><E68A86>匧迆<E58CA7><E8BF86>揢憍萄𡟺<E89084>閖𤄄憭见<E686AD>憡潑<E686A1>撘園㪗瘞?<3F>閖鮟敹见<E695B9><EFBFBD><E39A9A><EFBFBD>憍萄<E6868D><E89084>拇中敹<E4B8AD><E695B9><EFBFBD><E7989B><EFBFBD><EFBFBD>訽,10000 瞈删㩞憪菟?娍<>撏喲?𡝗<>蝷𢠃鴡<F0A2A083><E9B4A1><EFBFBD>蝥曉?𡁏<><F0A1818F><EFBFBD><E68B99><EFBFBD><EFBFBD><E6928A><EFBFBD><EFBFBD><E48E9A><EFBFBD>瘨瞾<E798A8>=10 蝻<><E89DBB><EFBFBD><EFBFBD>憌𡒊<E6868C>皜尠<E79A9C>蝭㯄鯏<E3AF84><E9AF8F><EFBFBD><E7BDB8><EFBFBD><E6BE86><EFBFBD><EFBFBD><EFBFBD>?
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>日鮟憡暹<EFBFBD><EFBFBD>憭鞉椬<EFBFBD><EFBFBD><EFBFBD>煾鴡甈讐<EFBFBD>蝏餅閒撟见<EFBFBD>敹蓥遝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘞嗅<EFBFBD><EFBFBD>𨳍<EFBFBD><EFBFBD>潭𨛘<EFBFBD>批𢬢蝷羓<EFBFBD><EFBFBD><EFBFBD>瞈?<3F><EFBFBD><E8B1A2>毺𤗈<E6AFBA><F0A49788><EFBFBD><EFBFBD>坔㧜<E59D94>?憒𠺶<E68692><F0A0BAB6><EFBFBD><E39B96><EFBFBD><E4BD87><EFBFBD>蕭0<E895AD><30><EFBFBD><EFBFBD><EFBFBD>儭撾<E584AD>蝚𥕦麪<F0A595A6>䠷䲮颲暸<E9A2B2><E69AB8><EFBFBD><E69697><EFBFBD><EFBFBD><EFBFBD>?隞𨅯?堒㧥璇粹<E79287><E7B2B9><EFBFBD>憍蛔<E6868D><E89B94>賊ê<E8B38A><C3AA>𪄳憿?<3F>賢撒<E8B3A2><E69292><EFBFBD>蝺墧縑<E5A2A7>脲?<3F><><EFBFBD>𦦵<EFBFBD><EFBFBD>麯憪<E9BAAF><EFBFBD>伐馱憿𤏪<E686BF>撏潮<E6928F><E6BDAE>萄纒<E89084><E7BA92>?踵𧋦蝏𧢲凃撏<E58783>㨃璊餅𤪖<E9A485><EFBFBD><E9A485><EFBFBD>搇戭?<3F><EFBFBD><E7BDB8><EFBFBD>??1<><31><EFBFBD><EFBFBD>琿㭠<E790BF>𨰻<EFBFBD><F0A8B0BB><EFBFBD><EFBFBD>抒?菜中敹梶<E695B9>蝏𡋾<E89D8F><F0A18BBE><EFBFBD><E588B8>𥕦??-1
// Ping闂傚倷绀侀幉锟犲垂閸忓吋鍙忛柕<EFBFBD>?濐槸<E6BF90>?规煡鏌<E98F8C>?<3F>?<>?闁哄拋鍓熼幃妤呭捶椤撶偘姘eout婵犵數鍋為崹<E782BA>?曞<>?<3F>閸モ晝纾芥慨妯夸含閻捇鏌熺紒銏犳灈缂侇偄绉归弻銈囩矙鐠恒劋绮靛銇礁娲﹂埛鎺<E59F9B>?<3F>煕鐏炲墽绠<E5A2BD>?憸鎶婂懐纾奸弶鍫涘<E98DAB>?<3F>缁犵偟鈧娲╃换婵嗩嚕閺夋埈娼╅弶鍫<E5BCB6>?暕閵忋倖鈷戦柛婵嗗椤忣偅淇婇銈庢敵,10000 濠电姵<E794B5>?<3F>栭崳<E6A0AD>?<3F>滅礊閸℃稑纾<E7A891>?<3F>柛鈩冨喕缂嶆牠鏌ㄩ悤鍌涘=10 缂傚倸鍊风粈渚€篓閳ь剟鏌熼崙銈嗗<EFBFBD>?
//闂傚倷鑳堕幊鎾绘偤閵娾晛绀夐柡鍥╁枑閸欏繑绻涢幋娆忕仾闁哄拋鍓氶幈銊熼搹鐧哥礊缂備胶<EFBFBD>?甸悡锟犲蓟濞戙垹<E68899>?妞ゆ牗绋戦锟<EE9494>0闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍<E38184>?仜<>?<3F>呴梺鐟邦嚟婵數鈧艾<EE8481>?烽弻鏇熷緞濡<E6BFA1>?<3F>浠紓浣瑰姈椤ㄥ﹤顕崼鏇炵厸闁<E58EB8>?<3F>本绋撻崣鍡椻攽閻愰鍤<EE9682>?柟鍑ゆ<E98D91>??1闂傚倷鑳堕、濠囧<E6BFA0>?<3F>椤忓牆绠柨鐕傛<E99095>??-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;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>券𦅚<E588B8><EFBFBD>輸𪃭<E8BCB8>𧼮<EFBFBD>貊瑣<E8B28A><EFBFBD><E59F88>?<3F>諱㯄鴡戭扳<E688AD>蝏望湶<E69C9B>潭鐦<E6BDAD><EFBFBD>憍萇𠽌<E89087><EFBFBD><E8B38A><EFBFBD><E683A9>睃?脲揪<E884B2><EFBFBD><E68B8D>?<3F>?憍萇䪴瞏批迆<E689B9><EFBFBD><E395B2>?撊<><E6928A><EFBFBD><EFBFBD><E9A485><EFBFBD>𡄯蕭
// 闂備浇宕<EFBFBD>?慨鎶芥倿閿曞倸纾块柟<E59D97>?板Г閸嬧晝绱撳搴㈡婵犵數鍎戠徊钘<E5BE8A>?<3F>洪悩璇<E682A9>?<3F>?婵犻潧娲ら<E38289>?嶆煥閻曞倹瀚<E580B9>
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(ips);
int sockfd;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>戭?<3F>⊿摚<E28ABF><E6919A><EFBFBD><EFBFBD>?蝎䠷<E89D8E>嚚㕲<E59A9A><E395B2>𥕦<EFBFBD>ɑet <20><><EFBFBD><EFBFBD>瑞辣瘞?<3F><>?滩<><E6BBA9>寧誥<E5AFA7>𣇉<EFBFBD><F0A38789>墧傦<E5A2A7><EFBFBD>憳? 憍萇𠽌<E89087>豢耨<E8B1A2><EFBFBD><E8B3AC><EFBFBD>戭?<3F>菜中<E88F9C><E4B8AD><EFBFBD><EFBFBD><EFBFBD>瞏⊿嘡<E28ABF>?璊斗<E7928A><E69697><EFBFBD><EFBFBD>鼓撉𧼮<E69289><F0A7BCAE><EFBFBD><EFBFBD>嬕蝒墧<E89D92><E5A2A7><EFBFBD><E89084>𧢲凃<F0A7A2B2><EFBFBD><E28ABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E79289>瘞嗆<E7989E><E59786><EFBFBD><E5A8AA>仿𪃭瞈<F0AA83AD><E79E88>頝?蝻<>𤗈<EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?琜<><E7909C><EFBFBD><EFBFBD><E6868D><EFBFBD><EFBFBD><E9A1B5><EFBFBD><E6BCA4>?<3F><EFBFBD><E5AFA5>文沲憪𦠜揪撏寥?訫麢<E8A8AB>啣?𠺶<>瘣脲仍<E884B2><E4BB8D><EFBFBD><EFBFBD>𨳍<EFBFBD>瞏券鴡<E588B8><E9B4A1><EFBFBD>蝏惩<E89D8F><E683A9>嗅?瞾<><E79EBE>箸耨憍<E880A8><EFBFBD>瑕麪蝎嗵冨<E597B5><EFBFBD><E4BD87><EFBFBD><EFBFBD>㯄搇<E3AF84>?撟誯<E6929F>?
// 闂傚倷绀侀幉锟犳偡閿曞倹鍋<EFBFBD>?柡鍥╁У<D0A3>?粙鏌鍛傛溈ket 闂傚倷绶<E580B7>?<>?<3F>螞閹绢喖绠柨鐕傛<E99095>? 婵犵數濮烽。浠<E38082>?焵椤掆偓閸熷潡鍩<E6BDA1>?椤掆偓缂嶅﹪骞冨Ο璇茬窞濠电偟鍋撻悡銏ゆ⒑閻愯棄鍔氶柛鐔锋健閿濈偤<E6BF88>?缁犲垼o 闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠婂牊鍋¢柍鍝<E69F8D>?噹闂傤垶姊洪崹<E6B4AA>?<3F>呭剰<E591AD>?<3F>ゆ洝椴搁幈銊ヮ潨閸℃绠归悶<E5BD92>?<3F>哺濮婄粯鎷呯粙璺ㄦ闂佺懓鍤<E68793>?幏锟<E5B98F>?
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;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>券𦅚<E588B8><EFBFBD>輸𪃭<E8BCB8>𧼮<EFBFBD>貊瑣<E8B28A><EFBFBD><E59F88>?<3F>諱㯄鴡戭扳<E688AD>蝏望湶<E69C9B>潮摚<E6BDAE><EFBFBD>meOut<75><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<><E7909C>?璊斗<E7928A><E69697><EFBFBD><EFBFBD>憭鞉鰊<E99E89><EFBFBD><E69B89><EFBFBD><EFBFBD><EFBFBD>坔卽<E59D94><E58DBD><EFBFBD><EFBFBD><EFBFBD><E588B8>𥕦??
// 闂備浇宕<EFBFBD>?慨鎶芥倿閿曞倸纾块柟<E59D97>?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖<E4BE80>?<3F><EFBFBD>?椤愶附鍋夐柣鎾冲濞戙垺鏅搁柨鐕傛<E99095>??
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];
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>券𦅚<E588B8><EFBFBD>輸𪃭<E8BCB8>𧼮<EFBFBD>貊瑣<E8B28A><EFBFBD><E59F88>?<3F>諱㯄鴡戭扳<E688AD>蝏望湶<E69C9B>潮摚<E6BDAE>瘥𡵞g<F0A1B59E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<E6929F><E58EB0><EFBFBD>璊斗兝<E69697><EFBFBD><E5AFA7>墧傦<E5A2A7><EFBFBD>?
// 闂備浇宕<EFBFBD>?慨鎶芥倿閿曞倸纾块柟<E59D97>?板Г閸嬧晝绱撳鍥х毇ng闂傚倷绀侀幉锟犳偋椤撱垹绠柨鐕傛<E99095>?
memset(sendpacket, 0, sizeof(sendpacket));
pid_t pid;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>戭?<3F>⊿摚<E28ABF><E6919A><EFBFBD><EFBFBD>?蝎䠷<E89D8E>嚚匧椬瞈惩<E79E88>蝝挑<E89D9D><E68C91><EFBFBD><EFBFBD><EFBFBD>儭撾<E584AD>蝚𥕦麪<F0A595A6>䠷䲮撖詨<E69296><E8A9A8><EFBFBD><EFBFBD><EFBFBD><E28ABF><EFBFBD><E4B992><EFBFBD>瞈惩𢂚<E683A9>偦鴡<E581A6>嗥善瘚𨅯<E7989A>蝝𤘪童<F0A498AA><EFBFBD>璊歹<E7928A>撏?憿𤏪<E686BF><F0A48FAA>脤鮟<E884A4><EFBFBD><E79D83><EFBFBD><E98DA6>𦠜<EFBFBD><F0A6A09C><EFBFBD>憡湛<E686A1>皝勗<E79A9D>隞𧢲<E99A9E><F0A7A2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5AF9E>駁緤<E9A781><E7B7A4><EFBFBD><EFBFBD><EFBFBD>ce ID
// 闂傚倷绀侀幉锟犳偡閿曞倹鍋<EFBFBD>?柡鍥╁У<D0A3>?粙鏌埡濠冿紬D闂傚倷鐒︾€笛呯矙閹寸偟闄勯柡鍐ㄥ€荤粈濠囨煛閸愶絽浜剧紓浣割儏椤﹀<E6A4A4>?顕閵嗘帗鍒婂濠囨⒒娴湱婀介柛鏂跨焸瀹曠敻鎮悥宄秂nce ID
pid = getpid();
struct ip *iph;
struct icmp *icmp;
icmp = (struct icmp *)sendpacket;
icmp->icmp_type = ICMP_ECHO; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>ˋ<E482BF><EFBFBD><EFBFBD>瑣憍𡁏鰊<F0A1818F><EFBFBD>璉㗛鸘<E3979B><E9B898>寧辣<E5AFA7><EFBFBD><E7AEB8><EFBFBD><E99E89>日鸘瞈<E9B898>朖憪羓<E686AA><E7BE93><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憒𠺶<E68692><F0A0BAB6>萄迆<E89084><EFBFBD><E39787><EFBFBD><E8AD8C>賊𪃭<E8B38A><F0AA83AD>
icmp->icmp_type = ICMP_ECHO; //闂傚倷鐒﹂幃<EFBFBD>?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悘鐐村劤閻濅即姊绘担鍝ヤ虎妞ゆ垵娲ら敃銏ゆ晸閿燂拷
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)); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?僐<><E58390>䠷鴡<E4A0B7>典罁摰訫<E691B0>蝜嗪<E89D9C>瘨勗<E798A8><E58B97>詨??儮<E584AE><EFBD81><EFBFBD><E68B87><EFBFBD><EFBFBD>?
icmp->icmp_cksum = cal_chksum((unsigned short *)icmp, sizeof(struct icmp)); //闂傚倷绀侀幖<EFBFBD>?<3F>ょ矙閸曨厽宕叉繝闈涱儐閸<E58490>??﹢鏌ㄩ悤鍌涘<EFBFBD>?
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;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>瑕迄<EFBFBD>?嚚墧噤戭?<3F>脣迄<E884A3><EFBFBD>蝥曉<E89DA5>撘園㪗<E59C92>?鈭硋迄皛<E8BF84><E79A9B><EFBFBD><EFBFBD><E48E9A><EFBFBD>瘨瞾<E798A8>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銴唳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚𦦵麯<EFBFBD>輻冨<EFBFBD><EFBFBD>憍蛔<EFBFBD>瑹閖<EFBFBD><EFBFBD>?撟㘾縝瞈𣂷遞<F0A382B7><E9819E><EFBFBD>賡”<E8B3A1>𥕦朴<F0A595A6>𤩂<EFBFBD><F0A4A982><EFBFBD><EFBFBD>萄豆<E89084>?<3F><EFBFBD>雿豢<E99BBF><E8B1A2>梢䲮<E6A2A2>𠰴<EFBFBD>撖?憍𡁏<E6868D><F0A1818F>枏漆<E69E8F><EFBFBD><E596B2>?<3F>日崕<E697A5>?<3F>冽鐦<E586BD><EFBFBD>瞈惩<E79E88>憳?蝏嗆䰻<E59786><E4B0BB>忖雿孵鬼<E5ADB5><EFBFBD><E9B3B4><E280B5><E79E88><EFBFBD><EFBFBD><E8AAA9><EFBFBD>雿詨?𢠃<><F0A2A083>亙敦<E4BA99><EFBFBD><E6BEBE>賣中<E8B3A3><EFBFBD>蝏𣳇<E89D8F><F0A3B387>烾錬<E783BE>餉?<3F><>瞈删㩞憪?<3F>𧢲𣖕<F0A7A2B2><F0A39695><EFBFBD><EFBFBD>?蝷<><E89DB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E584AE>銴唳<E98AB4>蝷厩<E89DB7><EFBFBD><E5AB96><EFBFBD><E68A86><EFBFBD>憿雴螂<E99BB4>?<3F>豢𣖕<E8B1A2>?<3F><EFBFBD><E5969F><EFBFBD>?亙<>畾文?𠺶<>撣㘾<E692A3><E398BE><EFBFBD><EFBFBD><E9A0A9><EFBFBD>煾鴡瞈<E9B4A1>??<3F><><EFBFBD><EFBFBD>𤤿<EFBFBD><F0A4A4BF><EFBFBD>撠萇<E692A0>颲典<E9A2B2>撖啣𤅷隞阡<E99A9E>憭羓?<3F><EFBFBD><E7B891><EFBFBD>𧢲?潭??䁅熔<E48185>?雿詹<E99BBF><E8A9B9><EFBFBD><E8AE90><EFBFBD><EFBFBD><E581A6><EFBFBD>瞈∟嬕<E2889F>睃?羓<><E7BE93><EFBFBD><EFBFBD><EFBFBD>?<3F>憒𠺶<E68692>蝯潛赫甈讐𩑈<E8AE90><EFBFBD>蝞駁𠴱<E9A781>滨?<3F><><EFBFBD><E6868D><EFBFBD><EFBFBD><E7AE8F>𢠃鸘<F0A2A083>喲?貉?𡁶<><F0A181B6>𡁜<EFBFBD>琿㭠<E790BF><E3ADA0><EFBFBD>憿𣇉<E686BF><F0A38789>钅鸘璅遴𣇪<E981B4><F0A387AA><EFBFBD><EFBFBD><EFBFBD><E3979B>?瑹閖𤄄<E99696>埈?嗪<><E798A8>憿娪𡢿憯閖<E686AF>瘣餃罁憿典<E686BF><E585B8>誩迆<E8AAA9><E8BF86><EFBFBD>駁鯏頧唳?埝器<E59F9D><EFBCB8>𥕦<EFBFBD><F0A595A6>仿鸘<E4BBBF>𧼮<EFBFBD><EFBFBD><E8BCB8><EFBFBD>撏勗旬<E58B97><EFBFBD><E68B8D><EFBFBD><EFBFBD><EFBFBD>?<3F>𥪜掛蝳㘾<E89DB3><E398BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4ADBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E594B3><EFBFBD>?
// 闂傚倷娴<EFBFBD>?<EFBD9E>?娴犲纾块弶鍫<E5BCB6>?亖娴滃綊鏌ㄩ悤鍌涘
// 闂傚倷鐒﹂惇褰掑垂绾懌浜瑰璺虹焷婵櫕銇<EFBFBD>?幒鎴濐仼闁活厽顨嗛妵鍕冀閵娧<E996B5>?暤闂佸憡蓱閹告娊<E5918A>?婚悢鐓庣畳闁<E795B3>?儤鍨<E584A4>?慨搴ㄦ偡濠婂<E6BFA0>?绶查柣妤佹尭閻嘲顫濈捄铏归獓闂佸<E99782>?<3F>鐓堥崰鏍椤撶喓绠鹃悗鐢登<E990A2>?<3F>牎濠电<E6BFA0>?鍋撴い锝<E38184>?礆g闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸<E9A192>?閸撴<E996B8>?鎳為柆<E782BA>?<3F>嗗殤<E59797>?<3F>ゆ帒鍊块埞蹇涙⒑閸濆<E996B8>??鏆婇柛瀣尵缁辨帗寰勭仦钘夊<E99298>?<3F>濡ょ姷鍋<E5A7B7>?<3F><>?<3F><>?<3F><EFBFBD>?佸☉銏犖ч柛銉㈡櫓濡茬兘<E88CAC>?<3F>绘担鍛婅<E98D9B>?<3F>妞わ絼绮欏畷鎴﹀箻鐡掍<E990A1>?<3F>缍婇幃鈺咁敊閻撳<E996BB>?<3F><>?<3F>缂傚倷鑳剁划顖炴偋閻樿钃熼悘鐐<E68298>?櫕閺嗗<E996BA>?<3F>鏌涢幇顔间壕闁活厽顨婂娲倻閳轰<E996B3>?<3F>澹曢梺鍛婃煥閻倿鐛崱妯肩瘈闁搞<E99781>?鍔屾禒銏ゆ⒑鐠恒劌娅愰柟鍑ゆ<E98D91>?
int cnt = 0;
while (1) {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>券𦅚<E588B8><EFBFBD>輸𪃭<E8BCB8>𧼮<EFBFBD>貊瑣<E8B28A><EFBFBD><E59F88>?<3F>諱㯄鴡戭扳<E688AD>蝏望湶<E69C9B>潮摚<E6BDAE><EFBFBD>meOut<75><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟㚚?琜<><E7909C>?璊斗<E7928A><E69697><EFBFBD><EFBFBD>憭鞉鰊<E99E89><EFBFBD><E69B89><EFBFBD><EFBFBD><EFBFBD>坔㧜<E59D94><EFBFBD>靽𢠃<E99DBD><F0A2A083>?<3F>齿<EFBFBD><E9BDBF>?<3F>𣳇緤璆<E7B7A4><E79286>瞉嗅<E79E89>憯閖<E686AF>雿豢<E99BBF><E8B1A2>䈑蜇蝳漤<E89DB3>靘?<3F>𢠃䲮<F0A2A083><EFBFBD><E8A180><EFBFBD>隞𧢲鰊<F0A7A2B2><EFBFBD>蝥扳中<E689B3>血舭<E8A180>峕閒撟条<E6929F>萄𢬢<E89084><EFBFBD><E7B2B9><EFBFBD><EFBFBD><EFBFBD>硋斥撟<E696A5><E6929F><EFBFBD><EFBFBD><E68B99><EFBFBD>撣㘾纒<E398BE><E7BA92><EFBFBD><EFBFBD><EFBFBD><E99FAE>?<3F>?<3F>批忖<E689B9><EFBFBD><E585B8><EFBFBD><E5AB98>?<3F><><EFBFBD><EFBFBD>𤤿<EFBFBD><F0A4A4BF><EFBFBD><E68A8A><EFBFBD>蝜𤑳遙瞈见晶憿琜<E686BF><E7909C><EFBFBD>雿賃𧬘<E8B383><EFBFBD>撘駁<E69298><E9A781><EFBFBD><E6BE86><EFBFBD><E8B1A2>唾𢲡<E594BE><F0A2B2A1><EFBFBD>㯄揢<E3AF84><EFBFBD><E4BA99><EFBFBD><E6B0AC>穃迄<E7A983><EFBFBD>摰豢<E691B0><E8B1A2><EFBFBD><EFBFBD><EFBFBD>?<3F>璊斗湶蝬𠰴?羓<><E7BE93><EFBFBD><EFBFBD><EFBFBD>拐誧<E68B90><E8AAA7><EFBFBD><EFBFBD><E8B38A>貊旿頩<E697BF><E9A0A9><EFBFBD>賊𪃭<E8B38A><F0AA83AD>
// 闂備浇宕<EFBFBD>?慨鎶芥倿閿曞倸纾块柟<E59D97>?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖<E4BE80>?<3F><EFBFBD>?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈<E4BF8A>?劍濞<E58A8D>?牠鎮楅崗澶婁壕闂佸憡鍔︽禍鐐<E7A68D>?敊閹邦兘鏀介柣鎰级椤ユ垿鏌涢幘瀵哥畺闁哄懎鐖奸幃鈺冩嫚閹绘帒鎸ゆ俊鐐<E99090>?<3F>?悧妤冨垝瀹ュ<E780B9>?鏄ラ柛灞剧⊕閸欏繑绻濋崹顐暗缂佸鍓熼弻鐔兼儌閸濄儳蓱闂佺懓鍢查幊搴ㄣ偑娴兼潙宸濇い鏃<E38184>?Г椤撳綊<E692B3>?<3F>绘担瑙勩仧闁绘挸顦甸獮蹇涙晸閿燂拷
FD_ZERO(&readfds);
FD_SET(sockfd, &readfds);
maxfds = sockfd + 1;
@ -1686,7 +1683,7 @@ int Ping(const char *ips, int timeout) {
break;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>瑕迄<EFBFBD>?嚚墧噤戭?<3F>脣迄<E884A3><EFBFBD>蝥曉<E89DA5>撘園㪗<E59C92>?鈭硋迄皛<E8BF84><E79A9B><EFBFBD><EFBFBD><E48E9A><EFBFBD>瘨瞾<E798A8>
// 闂傚倷娴<EFBFBD>?<EFBD9E>?娴犲纾块弶鍫<E5BCB6>?亖娴滃綊鏌ㄩ悤鍌涘
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);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD>?<3F>𣈯鴡<F0A388AF>?<3F>嗵瑣敶埝椬摰亙滿撟㚚鴌<E39A9A>?<3F><EFBFBD>朵憿𠉛<E686BF><F0A0899B><EFBFBD><E68B9A>羓𡤻<E7BE93>𨰻<EFBFBD>憒菟<E68692><E88F9F>𡁜<EFBFBD><F0A1819C>萄豆撅暹?寥<>雿瘉寞?䭾<><E4ADBE><EFBFBD>?誩<><E8AAA9>罸𪃭<E7BDB8>箏妥蝏<E5A6A5>戭?璇駁㪗<E9A781><EFBFBD>鍦迄<E98DA6>單糃憪𦠜揪撟㚚<E6929F>瘚见<E7989A><E8A781><EFBFBD><E6BEBE><EFBFBD><EFBFBD><E5AB96>訫𠿭<E8A8AB><EFBFBD><E68B9A>揭蝏𧢲<E89D8F>撏閙鐦<E99699>?鈭𣈯𪃭<F0A388AF><EFBFBD><EFBFBD><EFBFBD>𡁻<EFBFBD><F0A181BB>𡁜<EFBFBD><EFBFBD><EFBFBD><E584AE>銴唳<E98AB4>蝷厩<E89DB7><EFBFBD><E5AB96><EFBFBD><E68A86><EFBFBD>憿雴螂<E99BB4>?<3F>豢𣖕<E8B1A2><EFBFBD><E68A98>湔Ⅱ<E6B994>嘥𤅷<E598A5><F0A485B7>豢𪃭<E8B1A2><EFBFBD><E6BE86><EFBFBD><E69697>烐?澆<><E6BE86><EFBFBD><EFBFBD>瘣㚚<E798A3><E39A9A>?<3F>?瘞暹鼧
// 闂傚倷绀侀幉锛<EFBFBD>?暜閸<E69A9C>?剙纾归柡宥庡幖閽<E5B996>?喖鏌涢妷顔煎闁告瑥锕ラ妵鍕冀閵娧屾<E5A8A7>?<3F>闂佺ǹ<E4BDBA>?<3F>搁敃<E69081>?<3F>堝蓟閿熺姴绀<E5A7B4>?梻鍫熺〒娴犳挳姊洪幖鐐测偓鏍垝瀹€鍕垫晩闊洦绋掗崕搴<E5B495>?亜閿曗偓缁辨闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸<E9A192>?閸撴瑧鍙呴梺鍝勭Р閸斿瞼娆㈤悙鐑<E68299>?<3F>叆闁绘洖鍊<E6B496>?<3F>?氾拷
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);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD>?<3F>𣈯鴡<F0A388AF>?<3F>嗵瑣敶埝椬摰亙滿撟㚚鴌<E39A9A>?<3F><EFBFBD>?<3F><><EFBFBD>𦅚璇鰛<E79287><E9B09B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E584AE><EFBFBD>?<3F>ˋ<E482BF><EFBFBD><EFBFBD>瑣蝏条<E89D8F><E69DA1><EFBFBD><E6B994>漤鴡<E6BCA4>?<3F><EFBFBD><E4A0B7><EFBFBD>瞉嗅<E79E89><E59785>斗中儮<E4B8AD>熄憪𦠜揪撏冽<E6928F>雿箇<E99BBF><E7AE87><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E78390><EFBFBD><EFBFBD><E79286><EFBFBD><EFBFBD><EFBFBD>璉偦<E79289><E581A6><EFBFBD><E4BA89><EFBFBD><E8B3A2>𣳇鸘敹𠉛<E695B9><F0A0899B>?嚙惩<E59A99><E683A9>堒𨯂<E5A092><EFBFBD><EFBFBD><E79A9B>摰閙<E691B0>憒賊<E68692>雿綜<E99BBF><E7B69C><EFBFBD><EFBFBD>阡繮嚙?
if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) // ICMP_ECHOREPLY<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>ˋ<E482BF><EFBFBD><EFBFBD>瑣憍𡁏鰊<F0A1818F><EFBFBD>璉㗛鸘<E3979B><E9B898>寧辣<E5AFA7><EFBFBD><E7AEB8>嘥滿鈭𣈯鴡<F0A388AF><EFBFBD>憪𦠜揪撏?<3F>𤩂<EFBFBD>畾?<3F><>?選馱憿?<3F>賜旿憒文䴴<E69687>賊𪃭<E8B38A><F0AA83AD>
// 闂傚倷绀侀幉锛<EFBFBD>?暜閸<E69A9C>?剙纾归柡宥庡幖閽<E5B996>?喖鏌涢<E98F8C>?<3F>陇鎶梟g闂傚倷鐒﹂幃<EFB982>?曞磿閹惰棄纾绘繛鎴旀嚍閸<E59A8D>?剙钃熼柕澶堝劤椤﹂亶姊洪崨濠佺繁闁搞劑浜堕幃楣冩焼瀹ュ棛鍘藉┑鈽嗗灠閻忔繈<E5BF94>?¢幇鐗堢厓鐟滄粓宕滈妸鈺佺闁跨噦鎷<E599A6>?
if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) // ICMP_ECHOREPLY闂傚倷鐒﹂幃<EFBFBD>?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悗锝庡亜閸斿懘姊洪<E5A78A>?鍕<E98D95>?闁<>?<3F><EFBFBD>?烽獮妤呮晸閿燂拷
{
// 瞈删㩞憪菟?娍<>撏啣忖<E595A3>拙散<E68B99><EFBFBD><E5AFA5>𣇉辣<F0A38789><E8BEA3><EFBFBD>撌?<3F>鞾鴡戭?<3F><EFBFBD><E798A8><EFBCB7>坔?䀹<><E480B9><EFBFBD><EFBFBD>撣㘾<E692A3><E398BE><EFBFBD><EFBFBD>憡船<E686A1><E888B9><EFBFBD><EFBFBD><E9AF8F>𤤿赫<F0A4A4BF><E8B5AB><EFBFBD><EFBFBD><EFBFBD><E68A86>琿縝儮<E7B89D>蝞駁<E89D9E><E9A781>?撠䠷<E692A0><EFBFBD><E584AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E39B96>擧側<E693A7>𤤿赫<F0A4A4BF><EFBFBD>憿𡝗<E686BF><F0A19D97>勗延<E58B97>餅膚憒?璆<><E79286>憿誩<E686BF><E8AAA9>閖罀瘛?<3F><EFBFBD>戭?<3F><EFBFBD>戭?<3F>唳?𢎽<><F0A28EBD><EFBFBD><E596B2>?<3F><EFBFBD><E3979B>閧揭
// 濠电姵<EFBFBD>?<3F>栭崰妤冩崲閹邦喖绶ゅù鐘<C3B9>?儐閸<E58490>?鏌涢幘鍙<E5B998>?<3F>樂闁绘帒锕娲敆閳ь剛绮旈鈧畷鎴﹀箻鐠<E7AEBB>?尙鍔﹀銈嗗笒鐎氼剛绮堥崟顖涚厱婵犻潧<E78ABB>?楅顏堟煕鎼<E78595>?垺绀<E59EBA>?柡宀<E69FA1>?到<>?<3F>即骞<E58DB3>?鐑嗕紦
zlog_info(zct, "icmp succecss ............. \n");
break;
} else if (cnt < 3) {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟厰<EFBFBD><EFBFBD><EFBFBD>璊斗<EFBFBD><EFBFBD><EFBFBD>撊㗇<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>梢鴡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?撘賡<E69298><E8B3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?撏㗛<E6928F><E3979B><EFBFBD>憪嘥<E686AA><E598A5><EFBFBD>瞈墧<E79E88><E5A2A7><EFBFBD>瘣?璇粹<E79287>摨?瞏罸鴡憍<E9B4A1><E6868D><EFBFBD><EFBFBD><EFBFBD>撟𡡞鼈<F0A1A19E><EFBFBD><E689B9><EFBFBD><EFBFBD>瘣㚚<E798A3><E39A9A>?<3F>?瘞暹鼧
// 闂傚倷绀侀幉锟犳偄椤掑倻涓嶉柟杈剧畱閸ㄥ倹銇<EFBFBD>?弽銊х煂缁<E78582>?崘鍋愰幉姝岀疀濞戞瑥浠<E791A5>?梺鐓<E6A2BA>?潟閸婃銇欓幎鑺ョ叆闁绘洖鍊<E6B496>?<3F>?氾拷
cnt++;
continue;
} else {
@ -1749,41 +1746,41 @@ int get_netlink_status(const char *if_name) {
return edata.data;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>撏脤䲮<E884A4><EFBFBD>憡烐邢瑽<E982A2><E791BD><EFBFBD><EFBFBD><E79D83>嘥陸<E598A5>烐𨍭<E78390>𦠜𣪧撟𦠜鐦嚚<E990A6><E59A9A>憪瞾<E686AA>瑽寥鮟<E5AFA5>批?圈<><E59C88>堒敢憒墧<E68692><E5A2A7>𡁻<EFBFBD><F0A181BB><EFBFBD>蝏?撊<><E6928A><EFBFBD>睃?<3F><><EFBFBD>箏𣸑<E7AE8F><EFBFBD><E5AFA5>?<3F><>鑬撊<E991AC><E6928A><EFBFBD><EFBFBD>瘣㗛<E798A3><E3979B>?憒賊<E68692><E8B38A><EFBFBD>萄?𠺶<><F0A0BAB6><EFBFBD><EFBFBD><E79286><EFBFBD>𥟇<EFBFBD><F0A59F87>嗆中<E59786><EFBFBD><E6B8A1><EFBFBD>璇餅童<E9A485>𠰴<EFBFBD><F0A0B0B4><EFBFBD><E9A48C><EFBFBD>璊斗𠼻<E69697><EFBFBD><EFBFBD><E99D98>⊿摚<E28ABF><EFBFBD><E4BAA6>餅𣖕瘣罸<E798A3><E7BDB8><EFBFBD>憒?<3F>嫣遘憒𠺶<E68692><F0A0BAB6><EFBFBD><E884A4><EFBFBD><EFBFBD>銴唳<E98AB4>蝞𥟇中<F0A59F87><EFBFBD><E8B8B9><EFBFBD><E8AAA9><EFBFBD><E5A092>?瑹㗛鴡戭?璉嗪嘡<E597AA>?璊斗<E7928A><E69697><EFBFBD><E59C92><EFBFBD><EFBCB8><EFBFBD><EFBFBD>蝞暸鴡<E69AB8><E9B4A1><EFBFBD><EFBFBD><E686BF>蝝埝<E89D9D><E59F9D>血偽<E8A180>孵陸<E5ADB5>鞟赫甈謿<E79488><E8ACBF><EFBFBD>璉?<3F><><EFBFBD><EFBFBD>阡緤<E998A1><EFBFBD>摰亙麪<E4BA99><E9BAAA><EFBFBD>渡?<3F><>瘞嗆<E7989E><E59786><EFBFBD><E59C88>𤤿<EFBFBD><F0A4A4BF>?<3F><><EFBFBD>鈭𣈯䲮<F0A388AF>踹?𡡞<>隡湔<E99AA1>銴𣈯<E98AB4>甈𣏾<E79488><EFBFBD><E8A180><EFBFBD><E8A18C><EFBFBD><E69B89><EFBFBD>𡁏停<F0A1818F>豢鐦嚚<E990A6><E59A9A>憪条<E686AA>?
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑樷槈濞嗘劖鐝峰┑掳鍊曢幊搴偓姘槹閵囧<E996B5>?<3F>骞掗崱妞惧闁荤喐<E88DA4>?嶆刊钘<E5888A>?<3F>枖閺囥垹鐒<E59EB9>?い鎺嶈兌閳洘銇<E6B498>?妸銉у<D183>?<3F>ゃ垺鐗楅幏鍛村捶椤撴稒鐏冮梻浣告啞閻熴儵藝椤栫儐鏁侀柡鍥ュ灪閻撴洟鏌熼悜<E786BC>?虹仸妞ゃ儲鐟╅幃褰掑箛椤斿吋鐏堥悗娈<E68297>?櫘閸<E6AB98>?棝鍩<E6A39D>?椤掍胶鈯曢拑杈ㄧ箾閸繂顣崇紒杈ㄦ尰閹峰懐绮欏▎鍙ョ<E98D99>?闂備焦鎮堕崝宥呯暆閹间<E996B9>?<3F>绠氶柛鎰靛枛缁<E69E9B>?瀣亜閹板<E996B9>?<3F>鍒伴柍褜鍓欓…宄邦潖閾忚瀚氱憸搴偓姘炬<E5A798>?
std::vector<int> splitVersion(const std::string &version) {
std::vector<int> parts;
std::stringstream ss(version);
std::string part;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD>?輻˙<E8BCBB><EFBFBD><E5AF9E><EFBFBD>憭𣂼<E686AD><EFBFBD><E686A1>憒潛遝<E6BD9B>抆嘑<E68A86><EFBFBD><E48E9A>煾㨃璈<E3A883>ㄐ瞈䭾?踹纎<E8B8B9><EFBFBD><EFBD9E><EFBCB7>拍?暸䲮<E69AB8><E4B2AE><EFBFBD><EFBFBD>𡁻<EFBFBD>雿賢斯瞈?<3F><EFBFBD>憒文麢蝒烾𤄄撋?<3F>?畾曉延<E69B89>褒孵<E8A492><EFBCB9>𧶏<EFBFBD>蝞暸䲮撖詨<E69296><E8A9A8><EFBFBD><E596AE>𥕦?瞾<><E79EBE><EFBFBD>颲冽龫<E586BD>瑕麪<E79195>𣳇⏚<F0A3B387><EFBFBD><E69B89><EFBFBD>搇憪喟辣<E5969F><E8BEA3><EFBFBD><EFBFBD>?<3F><EFBFBD><EFBFBD>?𤏸𥁒<F0A48FB8><F0A58192><EFBFBD>餃滲蝬<E6BBB2><E89DAC><EFBFBD><EFBFBD>?琜蜇<E7909C>𤑳<EFBFBD><F0A491B3>𥟇<EFBFBD>瞉批<E79E89><E689B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A180><EFBFBD><E69DA1>?<3F><EFBFBD><E4B993>閖鸘<E99696><EFBFBD><EFBFBD><E7989B>憒園<E68692>瘞?憯閖<E686AF>雿箇盔憿典㧥<E585B8><E3A7A5><EFBFBD>憭𧢲<E686AD><F0A7A2B2><EFBFBD><E89084>?<3F><><EFBFBD><E9B6BD><EFBFBD><EFBFBD>圈崕敶埝<E695B6><E59F9D>湛蜇<E6B99B><EFBFBD><E785BE><EFBFBD><EFBFBD><E686A1><EFBFBD><EFBFBD><E7BDB8><EFBFBD>??
// 闂傚倷鑳堕崕鐢<EFBFBD>?<3F>磻閹捐绀夐幖娣妼绾惧鏌ㄥ┑鍡橆棡濠<E6A3A1>?<3F>垰鐡ㄧ换婵囩<E5A9B5>?<3F>閹傚闂佽崵<E4BDBD>?甸崝妤呭窗閺<E7AA97>?<3F>?殾婵ǹ娉涢獮銏箾閹寸偟鎳愰柛<E684B0>?<3F>焽缁辨挻鎷呯拠鈩冾吅闁荤姳绶ょ徊<E38287>?<EFBD89>?<3F>芥斀閻庯綆浜為ˇ<E782BA>?<3F>︽⒑缁洖澧叉い銊ユ嚇钘熼<E99298>?鍥ㄧ⊕閻撶喐淇婇妶鍌<E5A6B6>?壕闂佺粯顨呴敃銈夋晝閵忊<E996B5>?愁嚤闁哄鍨归悡鎴︽⒑鐠恒劌娅愰柟鍑ゆ<EFBFBD>??
while (std::getline(ss, part, '.')) {
parts.push_back(std::stoi(part)); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>撏脤䲮<E884A4><EFBFBD>憡烐?𨀣<>撏券?梶<><E6A2B6>?<3F><EFBFBD><EFBCB8><EFBFBD><E8AE9B>㗛鴡<E3979B>輻𤘘蝏?<3F>亙智<E4BA99>㚁蜀<E39A81><EFBFBD><E89087><EFBFBD><E597B5>𡁶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝜嗪<E89D9C><E597AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿嫣<E99BBF><E5ABA3>潔螂峔<E89E82>萄?睃<>蝏望<E89D8F>璇餅童<E9A485>萄𤧐<E89084>?瘨埝<E798A8>撉墧<E69289>撏㗛鐤<E3979B><E990A4>?曉延<E69B89>褒孵<E8A492><EFBCB9>謿<EFBFBD><E8ACBF>𤩺耨璆<E880A8>璉烾<E79289><EFBFBD><E79288>閖㪗<E99696><EFBFBD>瞈?憍<>?<3F><><EFBFBD>詨揪瘚<E68FAA><E7989A><EFBFBD><EFBFBD><E594B3>萄妣<E89084>喳𨪚撏煾罇蝏条<E89D8F><E69DA1>餅那<E9A485>踵耨憭鞉<E686AD><E99E89><EFBFBD>憓?璊斗䪸蝬<E4AAB8><EFBFBD><EFBCB7>峕鬥憯訫延<E8A8AB>游沲憿譍撈撟见延<E8A781><EFBFBD><E68B8D><EFBFBD><EFBFBD>阡繮嚙?
parts.push_back(std::stoi(part)); // 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑<E584B5>?<3F>旈崨<E69788>?<3F><EFBFBD>?柟鍏肩暘閸斿瞼<E696BF>?堥崼銉︾厵缂備焦锚缁楁岸鏌涙繝鍕毈闁哄矉缍佹俊鎼佸Ψ閵<CEA8>?<3F>喕绱旈梻浣呵圭<E591B5>?涒晠骞愰崘鑼<E991BC>?<3F>婵ǹ娉涢獮銏℃叏濮楀棗骞橀柕鍫櫍<EE82A2>?婅<>?<3F>娑甸崪浣告異濠电姭鎳囬崑鎾绘煟閻樺啿濮夐柛鐘崇<E99098>?椤曪綁顢曢妶鍌氫壕婵炴垶顏伴幋婵冩灁闁跨噦鎷<E599A6>?
}
return parts;
}
// 瞈删㩞憪菟?娍<>撏喲?𡝗<>蝺日䲮<E697A5><E4B2AE><EFBFBD>憡烐<E686A1>慦湧鸘<E6B9A7>痹鼎<E797B9><EFBFBD><E58D9D><EFBFBD>蝏䀹陽瞈𧼮<E79E88><F0A7BCAE>煾嘡<E785BE>文戮<E69687>?<3F>箏綳<E7AE8F><E7B6B3>𠧧<EFBFBD><F0A0A7A7><EFBFBD><EFBFBD>憿瓐ǜ<E79390>閖鮟<E99696><EFBFBD><E884B2><EFBFBD><E693A7><EFBFBD>戭?<3F>圈𣋠<E59C88>?<3F>滩?𣈯<><F0A388AF><EFBFBD>銴𡒊遙瞈见<E79E88><E8A781>蓥蔡<E893A5>㯄崕<E3AF84>𡁜<EFBFBD>撏烾<E6928F><E783BE><EFBFBD><E68B8D><EFBFBD><EFBFBD>賡”憍<E2809D><EFBFBD>𪙛<EFBFBD><F0AA999B><EFBFBD>鴡撅曄<E69285>憿𧶏蕭
// 濠电姵<EFBFBD>?<3F>栭崳<E6A0AD>?<3F>滃緤閹灛娑欐媴閻戞﹩鍋ㄥ┑鐘绘涧濞层劑鍩㈤弮<E388A4>?熺厪闁割偅绻傞顓㈡煕閵堝拋鍎旈柡宀<E69FA1>?到铻<E588B0>?柍<>?<3F>鍓熼幃褎绻濋崒锕佲偓鍨归崗鍏肩稇闁活厽顨婇弻銊╂偆閸屾稑顏<E7A891>
int compareVersions(const std::string &version1, const std::string &version2) {
std::vector<int> v1 = splitVersion(version1);
std::vector<int> v2 = splitVersion(version2);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗆耨璅踵<EFBFBD>蝥曉<EFBFBD><EFBFBD>罸㴓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>箏𥋘<EFBFBD>喲ê<EFBFBD><EFBFBD><EFBFBD>𣈯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鈭𣈯鸘瞈<EFBFBD>飾憪𦠜揪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗅?啣?<>𢹸<EFBFBD><EFBFBD>蝜嗪<E89D9C>瘨𦦵?<3F><><EFBFBD>𤧐<EFBFBD><EFBFBD>𡁶<EFBFBD>靽𢠃罀雿寞<E99BBF><E5AF9E><EFBFBD><E9A485>𡁻?𥪜<>璇駁<E79287>甈鍦<E79488><EFBFBD><E89DBB><EFBFBD><EFBFBD><E59C92>?撏函<E6928F>𥟇那鈭望<E988AD><E69C9B>萄妥<E89084><EFBFBD><E8A781>㯄崕<E3AF84>𡁜<EFBFBD>撏烾<E6928F><E783BE><EFBFBD><E68B8D><EFBFBD><EFBFBD>賡”憍<E2809D><EFBFBD>嘥?羓?<3F>𪃭瞈<F0AA83AD>ㄜ憒?<3F>?璇粹<E79287><EFBFBD><E6868D><EFBFBD>詨漆<E8A9A8>餃??霂聆<E99C82><E88186>讐𠽌<E8AE90>𢠃<EFBFBD><F0A2A083>堊鐯<E5A08A><EFBFBD><E693A7><EFBFBD><EFBFBD><E8A8AB>煾鴡瞈<E9B4A1>??憿乒<E686BF><EFBFBD><E595BE>𥟇酉<F0A59F87>鞉?删<>璉嘥??<3F><>撏潮<E6928F><E6BDAE>𠾍<EFBFBD><F0A0BE8D><EFBFBD>蝸瘜閖揻儮<E68FBB><E584AE><EFBFBD><EFBFBD>
// 闂傚倷鑳堕幊鎾绘倶濮樿泛纾块柟鎯版閺勩儳鈧厜鍋撻柛鏇ㄥ亜閻濇﹢姊洪柅鐐茶<EFBFBD>?<3F><>?<3F>у瓨鎱ㄦ繝鍌涜<E98D8C>?<3F>闁圭懓瀚版俊鎼佹晜閻愵剚<E684B5>?<3F>忛梻鍌欒兌缁垶銆<E59EB6>?崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨婇弻锝<E5BCBB>?<3F><>?<3F>閿濆棭<E6BF86>?<3F>?梺鍛婃煟閸庣敻<E5BAA3>??诲☉銏犵闁瑰鍎愬Λ锕傛⒑閸濆<E996B8>??顥″瀛樻倐<E6A8BB>?<3F>炲棝<E782B2>??崼鐔告闂佽法鍣﹂幏锟<E5B98F>
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; // 憍萇𠽌<EFBFBD>豢耨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>戭?<3F>菜中<E88F9C><E4B8AD><EFBFBD><EFBFBD><EFBFBD>瞏⊿嘡<E28ABF>?璊斗<E7928A><E69697><EFBFBD><EFBFBD>鼓撉𧼮<E69289><F0A7BCAE><EFBFBD><EFBFBD>嬕蝒鮋<E89D92>敶鍦<E695B6><E98DA6>𤘪<EFBFBD>撟烾<E6929F><E783BE><EFBFBD><EFB9A6>賂蜓<E8B382>潮﹝<E6BDAE><EFBFBD><E6BD9B>謿<EFBFBD><E8ACBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>賢椬<E8B3A2><EFBFBD><EFBFBD><E6929F>雿豢僚<E8B1A2>汿<EFBFBD>撏寥㪗<E5AFA5><E3AA97>憭𪙛<E686AD><F0AA999B>渡𠽌嚗𨅯延簞<E5BBB6><EFBFBD><E99EBE><EFBFBD><E6B0AC><EFBFBD><E8A8AB>暸鴡<E69AB8><EFBFBD>憒𠺶<E68692>撣𢠃㭠<F0A2A083><EFBFBD><E8A8AB><EFBFBD>ǜ<EFBFBD>交耨璈<E880A8>罇蝏﹦<E89D8F><EFB9A6><EFBFBD><EFBFBD>𧼮掃憓湔中<E6B994>⊥?<3F><>憟豢<E6869F><E8B1A2>𥕦<EFBFBD>敶券<E695B6>霂脤?賊<><EFBFBD><E79A9B><EFBFBD><EFBFBD><E69B84>閖䲮<E99696><EFBFBD>瘚𨅯<E7989A>蝝枏?亙<><E4BA99><EFBFBD>蝏条𤀻撉𧼮??<3F><EFBFBD>𥟇那<F0A59F87><EFBFBD>雿箸<E99BBF><E7AEB8><EFBFBD>撟誯<E6929F>?0
int num1 = i < v1.size() ? v1[i] : 0; // 婵犵數濮烽。浠<EFBFBD>?焵椤掆偓閸熷潡鍩<E6BDA1>?椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓濋幗鏇㈡⒑閸︻厼顣兼繝銏★耿瀹曟繈濡烽埡鍌滃幈闂佸湱鍎ら崹鍫曀夊▎鎴犵婵°倐鍋撴い锕備憾閸┾偓妞ゆ帊鑳堕埊鏇㈡煥濮橆厾绡€闁逞屽墴椤㈡<E6A4A4>?<3F>宕奸悢鍛婄彨闁诲<E99781>?<3F>鍘滈崑鎾绘煕閹邦喖浜剧紓<E589A7>?<3F>咃攻缁绘盯骞<E79BAF>??悙瀛樺創闂佺懓鍤栭幏锟<E5B98F>?0
int num2 = i < v2.size() ? v2[i] : 0;
if (num1 > num2) return 1; // version1 憍萇𠽌<EFBFBD>豢耨隡游晶銴唳<EFBFBD><EFBFBD>厰鮟敹见<EFBFBD>閧瑣<EFBFBD><EFBFBD>瞈惩<EFBFBD><EFBFBD>𨀣中<EFBFBD>?<3F>? version2
if (num1 < num2) return -1; // version1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?䢛<><EFBFBD><EFBFBD>撏脤䲮<E884A4><EFBFBD>摰閙䰻<E99699><EFBFBD>憍蛔<E6868D>憡𢠃<E686A1><F0A2A083><EFBFBD><E68B87><EFBFBD><EFBFBD>? version2
if (num1 > num2) return 1; // version1 婵犵數濮伴崹褰掓偉閵忋倕纾兼繝濠傛椤<EFBFBD>?<3F>? version2
if (num1 < num2) return -1; // version1 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦喗宕查悗锝庡墲婵娊鏌ㄩ悤鍌涘<EFBFBD>? version2
}
return 0; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>琿㭠<EFBFBD><EFBFBD><EFBFBD>憿𣇉<EFBFBD><EFBFBD>?<3F>?撏函<E6928F>𥟇那鈭望<E988AD><E69C9B>萄妥<E89084><EFBFBD><E8A781>㯄崕<E3AF84>𡁜<EFBFBD>撏烾<E6928F><E783BE><EFBFBD><E68B8D><EFBFBD><EFBFBD>賡”<E8B3A1><EFBFBD><EFBFBD><E5A8AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝪餅中<E9A485>见㚥蝏望<E89D8F><E69C9B><EFBFBD><EFBFBD>𧼮憎<F0A7BCAE><E6868E><EFBFBD><EFBFBD>?蝏𧢲ề嚚𧼮延戭?<3F>瑟中<E7919F><E4B8AD><EFBFBD>璊文縞<EFBFBD>?
return 0; // 闂傚倷鑳剁划顖炪<EFBFBD>?<3F>?崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨呴—鍐偓锝庝簻椤掋垻绱掓担鍦弨闁哄<E99781>?绋戦<EFBD9E>?倷椤掆偓椤忥<EFBFBD>?
}
void Binary_Bit(unsigned char *p_data, unsigned char position, int flag) {
//憍萇𠽌<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤩂<EFBFBD><EFBFBD><EFBFBD>颲曄翕<EFBFBD>汿<EFBFBD><EFBFBD><EFBFBD>憭见<EFBFBD>瞈∠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>坔𡠺蝷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>潔螂蝞䭾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>璇駁㪗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝜鞾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘨抒<EFBFBD>雿賢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箏䣐<EFBFBD><EFBFBD><EFBFBD>Ⅱ蝏?<3F>𧼮<EFBC93>??撣⊿嘡瘨播憿梶<E686BF><E6A2B6><EFBFBD>敶埝ˋ<E59F9D>𡜐<EFBFBD><F0A19C90>㕑?娪<><EFBFBD><E59A9A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??<3F>𦠜<EFBFBD><F0A6A09C><EFBFBD><EFBFBD>䂿?圈罀蝎孵<E89D8E>憿讐<E686BF>蝝㯄<E89D9D>甈穃<E79488>瞈∵<E79E88><E288B5><EFBFBD>敹𥟇<E695B9><F0A59F87><EFBFBD>蕭 position憍萇𠽌<E89087><EFBFBD><E8B38A>箏晶<E7AE8F>?<3F>䂿?脣迄嚚<E8BF84>?𠰴迄<F0A0B0B4>?<3F><EFBFBD><E99699><EFBFBD><E99EBE>墧Ⅱ<E5A2A7>𥕦<EFBFBD><F0A595A6><EFBFBD><E99699>潛𪊴撖?<3F><EFBFBD><E7BE93><EFBFBD>撘駁<E69298><E9A781><EFBFBD><EFBFBD><EFBFBD>詨掛蝔煾?𧶏蕭(憍萇𠽌<E89087><EFBFBD><E798A8>憿梶<E686BF><E6A2B6>娪䲮蝏<E89D8F>蝏𡋾<E89D8F><F0A18BBE><EFBFBD><E588B8>𥕦??0 <20><><EFBFBD><EFBFBD>𥕞<EFBFBD><F0A5959E><EFBFBD><E4A0B7><EFBFBD><E482BF><EFBFBD><E5AFA7><EFBFBD>瑣憍𡁏<E6868D><F0A1818F><EFBFBD><E99FAE>梢𤄄<E6A2A2>?<3F><EFBFBD>鈭𣈯𤄄<F0A388AF><EFBFBD>憿亦<E686BF><E4BAA6>堒?条<>?)
//婵犵數鍋涢悺銊у垝瀹€鍕剹濞达絿鍎ゅ畷鍙夋叏濡炶浜鹃悗瑙勬礃瀹€鎼佸箠濠婂牊鍋ㄩ梻鍫熺☉缁傚繐鈹戦悙鑸靛涧缂佽尙鏅划鏃堝醇閺囩喎浠鹃梺<EFBFBD>?曞墲缁<E5A2B2>??帡鍩涢弽顓熺厾闁归棿鐒﹀☉<EFB980>?<3F>箛鏃戞疁闁哄<E99781>??鍊濆鍫曞<E98DAB>?<3F>鎼粹剝顏熺紓鍌欑劍濡垿骞忛敓锟<E69593> position婵犵數鍋為崹<E782BA>?曞<>?<3F><E5A8B4>?<3F><EFBFBD>?柕濞у懐顦梺鍛婄⊕濞兼瑩<E585BC>?告笟鈧弻銊╂偆閸屾稑<E5B1BE>?<3F><>(婵犵數鍋涢顓熷垔閹绢喖绠柨鐕傛<E99095>??0 闂佽瀛╅鏍窗閹烘纾婚柟鐐灱閺<E781B1>?鑺ャ亜閺囩偞顥為悗<E782BA>?<3F><EFBFBD>?)
if (flag) {
*p_data |= 0x01 << (position);
} else {

View File

@ -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<std::string> 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_

View File

@ -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);",

View File

@ -66,6 +66,7 @@ public:
std::string JsonCmd_Cgi_58(Param_58 &param);
std::string JsonCmd_Cgi_59(Param_59 &param);
std::string JsonCmd_Cgi_60(Param_60 &param);
std::string JsonCmd_Cgi_61(Param_61 &param);
std::string JsonCmd_Cgi_default();
private:

View File

@ -150,7 +150,7 @@ std::string JsonData::JsonCmd_Cgi_09(Param_09 &param) {
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 &param) {
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 &param) {
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 &param) {
jsStaticData["battery"] = vecRes[13];
jsStaticData["MeasurementID"] = strMeasurementID;
jsStaticData["dataNodeNo"] = arrResAll[i][0];
jsStaticData["ShortAddr"] = strShortAddr;
jsStaticData["status"] = vecRes[11];
jsStaticData["loose"] = "0";

View File

@ -727,6 +727,7 @@ std::string JsonData::JsonCmd_Cgi_41(std::vector<Param_41> &param, 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

View File

@ -636,26 +636,162 @@ std::string JsonData::JsonCmd_Cgi_60(Param_60 &param){
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 &param){
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);
}

View File

@ -49,7 +49,8 @@ enum WebCommand {
kEnableZigbeePower = 57,
kSchedulingConfiguration = 58,
kLostRecords = 59,
kTransducerUpgrade = 60
kTransducerUpgrade = 60,
kWaveRecords = 61
};
class LocalServer {

View File

@ -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();

View File

@ -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)) {

View File

@ -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);

View File

@ -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;

View File

@ -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<std::string> strHWversion;
// std::vector<std::string> strHWversion;
std::string strFileName = "", strSoftVersion = "";
std::vector<DataNodeUpdate> 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<DataNodeUpdate> 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);
}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");
GlobalConfig::EnterZigBeeWaveTransmittingFlag_G = NO_ENTER_TRANSMITTING_STATUS;
GlobalConfig::EnterZigBeeWaveTransmittingCnt_G = 0;
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,76 +301,66 @@ 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);
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;
char tmpbuf[8] = {0x00};
sprintf(tmpbuf, "%02x%02x", pDestShortAddr[0], pDestShortAddr[1]);
sprintf(tmpbuf, "%02x%02x", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd));
m_strDestShortAddr = std::string(tmpbuf);
GlobalConfig::Zigbee_G.MyAddr = 0x9999;
@ -302,9 +378,9 @@ int Uart::UpdateConfig(unsigned char* pDestShortAddr) {
UpdateData[0] = 0xAA;
UpdateData[1] = 0x55;
UpdateData[2] = 0xAA;
UpdateData[3] = pDestShortAddr[0];
UpdateData[4] = pDestShortAddr[1];
UpdateData[5] = 0x22;
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()));
@ -443,31 +519,28 @@ 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, "updataconfig 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, "updataconfig 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;
mssleep(10000);
std::string strName = sqlite_db_ctrl::instance().GetData(T_SENSOR_INFO(TNAME), " dataNodeName ", whereCon);
unsigned char UpdateData[100] = {0x00};
memset(UpdateData,0x00,sizeof(UpdateData));
//帧头[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[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);
size_t bytesSize = strlen(hex) / 2;
unsigned char* bytes = (unsigned char*)malloc(bytesSize);
bytesSize = strlen(hex) / 2;
bytes = (unsigned char*)malloc(bytesSize);
if (hexStringToBytes(hex, bytes, bytesSize) != 0) {
free(bytes);
@ -485,17 +558,14 @@ int Uart::UpdateConfig(unsigned char* pDestShortAddr) {
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]);
zlog_info(zct, "updataname ACK send success,shortAddr = %02x%02x", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd));
} else {
zlog_error(zct, "updataname 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;
}
return 0;
} else {
zlog_error(zct, "invalid vecResultNode[41]:%s", vecResultNode[41].c_str());
return -1;
}
}
int Uart::UpdateWirelessNodeTime(unsigned char* pDestShortAddr, int modifyaddr /*,int nodewaveindex,int nodetime,int nodeindex*/) {