modify log info.
This commit is contained in:
parent
98f07e1def
commit
60b52a5810
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@ debug/*
|
||||
.cproject
|
||||
.vscode/
|
||||
Cidn-SH
|
||||
/Release/
|
||||
|
||||
@ -73,7 +73,7 @@ std::string GetLocalTimeWithMs(void) {
|
||||
|
||||
char buffer[80] = {0};
|
||||
struct tm nowTime;
|
||||
localtime_r(&curTime.tv_sec, &nowTime); //闂傚倷鑳堕、濠傗枖濞戙垺鏅濋柕<EFBFBD>?濇<>?<3F>椤<EFBFBD>?粙<>?<3F>洪鈧粔瀵哥矆閸℃稒鐓欐繛鍫濈仢閺<E4BBA2>??喖鏌i敐澶<E69590>?<3F>喚闁哄<E99781>?绋掔换婵<E68DA2>?礋椤愵澀<E684B5>?梻浣割吔閺夊灝<E5A48A>?<3F>?悗瑙<E68297>?礃椤ㄥ﹥淇婇悜钘壩ч柛婊€鐒︿簺闂傚倷绀侀幖<E4BE80>?<3F>﹀<EFBFBD>?閸愭祴鏋栨繛鎴欏灩閸ㄥ倿骞<E580BF>?ǎ顒€濡介柣鎾亾闁<E4BABE>?<3F><>?<3F>绠嶉崕鍗灻<E98D97>?敃鍌涘仼闂侇剙绉甸悡鏇㈡煙闁箑澧柛锝<E69F9B>?秺閺岋絾骞婇柛鏂跨Ф缁瑦寰勯幇鍨櫍闂侀潧臎閸滀焦啸缂傚倸鍊烽悞锕€鐣峰Ο琛℃灃闁哄洢鍨归悡婵<E682A1>?煠濞村鏉归柛瀣崌閹兘鏌囬敂鍙<E69582>?箓<>?<3F>洪崨濠<E5B4A8>?嚂闁瑰嚖鎷<EFBFBD>
|
||||
localtime_r(&curTime.tv_sec, &nowTime); // 闂佺娉涢敃銈囨闁秴绀嗛柟娈垮枟閻i亶鏌涙繝鍕付闁宦板姂瀹曟濡烽妶鍜佹Щ闂佸搫鍟冲▔娑㈠垂鎼淬劍鐓€鐎广儱娲﹂悾閬嶆煕閹邦剚鍣归柣掳鍔嶇粙澶愵敇閵娧咁槷缂備焦宕樺▔鏇㈠煝閼测斁鍋撻悷閭︽Ц闁告瑱鎷<EFBFBD>
|
||||
strftime(buffer, sizeof(buffer), "%Y%m%d%H%M%S", &nowTime);
|
||||
|
||||
char currentTime[84] = {0};
|
||||
@ -109,13 +109,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>?劜椤洟鏌熸潏鈺佲偓宄闂備浇宕<E6B587>?慨鎶芥倿閿曞倸纾块柟璺哄閸<EE979E>?剦鏁嗛柛鏇ㄥ亝椤ユ繈姊洪幖鐐插姷闂傚<E99782>?瀚伴、鏇㈡晸閿燂<E996BF>?
|
||||
// 闂佺懓鐏氶幐鍝ユ閹辩倍io闁荤姳鐒﹂崕鎶剿囬鍕闁搞儻闄勯锟<EE9495>
|
||||
fd = open("/sys/class/gpio/export", O_WRONLY);
|
||||
if (-1 == fd) {
|
||||
zlog_warn(zbt, "open gpio export file error");
|
||||
return 1;
|
||||
}
|
||||
//闂傚倷鐒﹂惇褰掑垂瑜版帗鍋柛銉墻閺佸鏌i悙<EFBFBD>?<3F>?紬io
|
||||
// 闂佹眹鍨归悿鍥敋閻炵棷io
|
||||
sprintf(tmp, "%d", gpioN);
|
||||
if (write(fd, tmp, strlen(tmp)) < 0) {
|
||||
zlog_warn(zbt, "write file operation error:%s", tmp);
|
||||
@ -125,7 +125,7 @@ int InitGpio(unsigned int gpioN, unsigned int inout) {
|
||||
|
||||
close(fd);
|
||||
sleep(1);
|
||||
//闂傚倸鍊烽悞锕€<E99495>?<3F>?Ο鑲╃煋闁割偅娲橀崑<E6A980>?<3F>堟煕閻<E78595>?彃鍘o闂傚倷绀侀幖<E4BE80>?<3F>﹀磹婵犳艾绠犻柟鎹愵嚙缁犳牠鏌ㄩ悤鍌涘<E98D8C>?
|
||||
// 闂備焦婢樼粔鍫曟偪閸炲兎io闂佸搫鍊婚幊鎾诲箖閿燂拷
|
||||
char tmp2[100] = {0};
|
||||
if (gpioN == 507)
|
||||
memcpy(tmp2, "P18_3", 5);
|
||||
@ -224,25 +224,25 @@ int gpio_set(unsigned int gpioN, char x) {
|
||||
sprintf(tmp, "/sys/class/gpio/%s/value", tmp2);
|
||||
|
||||
|
||||
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵<EFBFBD>?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖<E4BE80>?<3F>﹀磹缁<E7A3B9>?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
|
||||
// 闂佺懓鐏氶幐鍝ユ閹辩倍io value闂佸搫鍊稿ú锝呪枎閿燂拷
|
||||
fd = open(tmp, O_WRONLY);
|
||||
if (-1 == fd) {
|
||||
zlog_warn(zbt, "[%s] open gpio export file error", tmp);
|
||||
close(fd);
|
||||
return (-1);
|
||||
return -1;
|
||||
}
|
||||
//闂備浇宕<EFBFBD>?慨宕囩矆娴h娅犲ù鐘<C3B9>?儐閸嬵亪鏌涢埄鍐<E98D90>?<3F>闁稿鍔戝濠<EE9D8F>?醇閻旂儤鍒涢梺褰掓交閹凤<E996B9>?
|
||||
// 闁荤姳绀佹晶浠嬫偪閸℃稒鍋ㄩ梻鍫熺洴閹革拷
|
||||
if (x) {
|
||||
if (-1 == write(fd, "1", sizeof("1"))) {
|
||||
zlog_warn(zbt, "%d write operation value error", gpioN);
|
||||
close(fd);
|
||||
return (-2);
|
||||
return -2;
|
||||
}
|
||||
} else {
|
||||
if (-1 == write(fd, "0", sizeof("0"))) {
|
||||
zlog_warn(zbt, "%d write operation value errorn", gpioN);
|
||||
close(fd);
|
||||
return (-3);
|
||||
return -3;
|
||||
}
|
||||
}
|
||||
close(fd);
|
||||
@ -288,33 +288,33 @@ int gpio_read(unsigned int gpioN) {
|
||||
memcpy(tmp2, "P16_1", 5);
|
||||
sprintf(tmp, "/sys/class/gpio/%s/value", tmp2);
|
||||
|
||||
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵<EFBFBD>?劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖<E4BE80>?<3F>﹀磹缁<E7A3B9>?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
|
||||
// 闂佺懓鐏氶幐鍝ユ閹辩倍io value闂佸搫鍊稿ú锝呪枎閿燂拷
|
||||
fd = open(tmp, O_RDONLY);
|
||||
if (-1 == fd) {
|
||||
zlog_warn(zbt, "%d open gpio export file error", gpioN);
|
||||
return (-1);
|
||||
return -1;
|
||||
}
|
||||
//闂備浇宕<EFBFBD>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鐗堟櫢闁跨噦鎷<E599A6> value闂傚倷绀侀幖<E4BE80>?<3F>﹀磹缁<E7A3B9>?5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
|
||||
// 闁荤姴娲╅褑銇愰敓锟<E69593> value闂佸搫鍊稿ú锝呪枎閿燂拷
|
||||
if (-1 == read(fd, &value, sizeof(value))) {
|
||||
zlog_warn(zbt, "%d read gpiovalue is fail", gpioN);
|
||||
close(fd);
|
||||
return (-2);
|
||||
return -2;
|
||||
}
|
||||
close(fd);
|
||||
return value;
|
||||
}
|
||||
|
||||
int config_uart(const char *port, int speed) {
|
||||
int iFd = open(port, O_RDWR | O_NOCTTY);
|
||||
if (iFd < 0) {
|
||||
int fd = open(port, O_RDWR | O_NOCTTY);
|
||||
if (fd < 0) {
|
||||
zlog_warn(zbt, "open port:%s failed", port);
|
||||
return -1;
|
||||
}
|
||||
struct termios opt;
|
||||
tcgetattr(iFd, &opt);
|
||||
tcgetattr(fd, &opt);
|
||||
cfsetispeed(&opt, speed);
|
||||
cfsetospeed(&opt, speed);
|
||||
if (tcgetattr(iFd, &opt) < 0) {
|
||||
if (tcgetattr(fd, &opt) < 0) {
|
||||
zlog_error(zbt, "tcgetattr failed");
|
||||
return -1;
|
||||
}
|
||||
@ -325,12 +325,12 @@ int config_uart(const char *port, int speed) {
|
||||
opt.c_cflag |= (CS8 | speed);
|
||||
opt.c_cc[VMIN] = 255;
|
||||
opt.c_cc[VTIME] = 5;
|
||||
if (tcsetattr(iFd, TCSANOW, &opt) < 0) {
|
||||
if (tcsetattr(fd, TCSANOW, &opt) < 0) {
|
||||
zlog_error(zbt, "tcsetattr failed");
|
||||
return -2;
|
||||
}
|
||||
tcflush(iFd, TCIOFLUSH);
|
||||
return iFd;
|
||||
tcflush(fd, TCIOFLUSH);
|
||||
return fd;
|
||||
}
|
||||
|
||||
int write_data(int fd, char *buff, int len) {
|
||||
@ -479,14 +479,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>?<3F>х换鎰崲閹版澘鏋侀柛<E4BE80>?<3F>囧发_time缂傚倸鍊搁崐鐑芥倿閿曞倸绠板┑鐘崇閸婂灚銇勯弽銊р姇濠殿垱鎸抽弻鐔煎<E99094>?<3F>閹板灚缍堢紓浣风贰閸o綁<EFBD8F>??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鏂跨┘me_t闂傚倷绀侀幖<E4BE80>?<3F>﹀<EFBFBD>?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈傚亾缂佺媴缍侀弻銊╂偆閸屾稑<E5B1BE>?<3F><>
|
||||
// 闁诲繐绻愰弫鍍糲_time缂傚倷鐒﹂幐濠氭倵椤栨稒濯撮柟鎹愵潐缁侇噣鏌熺拠鈩冪窔閻犳劗鍔巌me_t闂佸搫鍟悥鐓幬涢崸妤€绠i柨鐕傛嫹
|
||||
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>?曞<>?<3F>閸濄儳<E6BF84>?撻柧蹇e亞缁犻箖鏌涢妷<E6B6A2>?<3F>煎<EFBFBD>?闁<>?<3F>鍔戦弻鏇熺<E98F87>?<3F>閸喖<EE9F91>?跺┑鈥冲级閸庢娊婀侀梺缁橈供閸犳牠鍩<E789A0>?椤掍胶澧い顏勫暣閺佹捇鏁撻敓锟<E69593>?
|
||||
tm.tm_isdst = -1; // 婵炴垶鎸哥粔铏箾閸ヮ剚鍋ㄩ柕濞垮労濡叉儳霉閻橆喖鈧牕顪冮敓锟<EFBFBD>
|
||||
|
||||
rtc_timestamp = mktime(&tm);
|
||||
|
||||
@ -702,8 +702,8 @@ void ImportConfig(std::string filename) {
|
||||
}
|
||||
|
||||
int UpdataDataNodeConfig(std::string filename) {
|
||||
std::vector<DataNodeInfo> vecDataNode; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸<EFBFBD>?<3F>亶鏌熺<E98F8C>?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦<EE86BD>?<3F>勯幇鍨櫆闂佸憡娲﹂崢浠<E5B4A2>??箟閼姐倗纾藉ù锝<C3B9>?嚃濞<E59A83>?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩<E98D97>?<3F>濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟<E69593>?
|
||||
//婵犵數鍋涢顓熸叏娴兼潙纾块柟缁㈠櫘閺佸霉閸忓吋缍戠紒鈧崒鐐寸厪濠㈣埖鐩顕€鏌i幘瀵告<EFBFBD>?闁逞屽<E9809E>?椤旀牠宕伴弽顐e床闁瑰鍋炲▍鐘绘煥閺囨浜惧銈嗘穿缂嶄線宕洪埀顒併亜閹烘垵顏╂俊<E29582>?<3F>o耿閺屾盯濡烽鐐<EE949B>?<3F>?嶅銈嗗姧閹凤拷
|
||||
std::vector<DataNodeInfo> vecDataNode; // 婵犮垹婀辨晶妤€危閹寸偟鈻旈柍褜鍓氱粙澶愵敂閸曨厽鎲荤紓浣诡殣缂傛氨鎲伴崱娑樿Е闁硅揪绠戝▍锟<E2968D>
|
||||
// 婵炲濮伴崕鎾敋娴兼潙绀傞柕澶涢檮閻撴瑧鈧鍠栫换鎴炴櫠閿曗偓椤曪綁鍩€椤掑嫬妫橀柛銉檮椤愶拷
|
||||
std::ifstream csv_data(filename, std::ios::in);
|
||||
int iRet = 0;
|
||||
if (!csv_data.is_open()) {
|
||||
@ -711,16 +711,13 @@ int UpdataDataNodeConfig(std::string filename) {
|
||||
return -1;
|
||||
}
|
||||
std::string line;
|
||||
std::vector<std::string> words; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸<EFBFBD>?<3F>亶鏌熺<E98F8C>?电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦<EE86BD>?<3F>勯幇鍨櫆闂佸憡娲﹂崢浠<E5B4A2>??箟閼姐倗纾藉ù锝<C3B9>?嚃濞<E59A83>?絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩<E98D97>?<3F>濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟<E69593>?
|
||||
std::vector<std::string> words; // 婵犮垹婀辨晶妤€危閹寸偟鈻旈柍褜鍓氱粙澶愵敂閸曨厽鎲荤紓浣诡殣缂傛氨鎲伴崱娑樿Е闁硅揪绠戝▍锟<E2968D>
|
||||
std::string word;
|
||||
|
||||
DataNodeInfo dataNode;
|
||||
// ------------闂備浇宕<E6B587>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞<E8B7A8>?<3F>ゆ巻鍋撻柡瀣╃窔閺岋絽螖閳ь剟鎮ч崱娆戠焾闁跨噦鎷<E599A6>?-----------------
|
||||
// 闂備浇宕<E6B587>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞<E8B7A8>?<3F>ゆ巻鍋撻柛鎰ㄥ亾闂備焦<E58299>?堕崕娲礈閿曞倸姹叉い鏍仦閸<E4BBA6>?姵绻涢幋锝嗙彧閻庢熬鎷<E786AC>
|
||||
getline(csv_data, line);
|
||||
|
||||
std::istringstream sin;
|
||||
// 闂傚倷绀佸﹢杈ㄧ仚濡<E4BB9A>?倧闄<E580A7>?繛濠<E7B99B>?Υ娓氣偓<E6B0A3>?<3F>炲鎮╅崘鑼酱闂佽崵<E4BDBD>?村ú锕併亹閸愵亜绶ら柛褎顨嗛悡娑樏归敐鍛儓<EE86BD>?<3F>わ綀鍋愰埀顒冾潐閹碱偊骞忛敓锟<E69593>?
|
||||
while (getline(csv_data, line)) {
|
||||
words.clear();
|
||||
sin.clear();
|
||||
@ -997,7 +994,7 @@ std::string GetFileContent(std::string filename, int line) {
|
||||
return strFileContent;
|
||||
}
|
||||
|
||||
// BOOST闂傚倷鑳堕崕鐢<EFBFBD>?<3F>磻閹捐绀夌€广儱顦介<E9A1A6>?鍡<>?<3F>節婵犲倻澧曠紒鈧崱妯肩闁糕剝锚缁旈箖鏌嶈閸撴瑩宕姘肩劷闊洦绋戠粻<E688A0>?<3F>辨喐韫囨洘鍏滈柍<E6BB88>?<3F>鍓<EFBFBD>?穱濠<E7A9B1>?Χ閸ヮ灝銏ゆ煟椤撴繄绐旈柟顖欑劍缁诲懘<E8AFB2>?<3F>?弴銏♀拺闂傚牃鏅犲<E78AB2>?<3F>界節閵忊埗<E5BF8A>?<3F>堚<EFBFBD>?﹂崶顒€绀冩い鏃囧琚濋梻浣<E6A2BB>?<3F>閸<EE978F>??棝宕伴幘璇参ラ柨鐕傛<E99095>?
|
||||
// BOOST闂佺儵鍋撻崝宥夘敆濠婂牆绀嗘繛鍡樺竾閳ь剙鍟蹇涘箚瑜忕涵鈧俊銈囧Т閻線鎯佹繅鐪曢梺闈╅檮濠㈡ê顭囬崘顔艰Е闁割偆鍠撻妴锟<EFBFBD>
|
||||
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])");
|
||||
@ -1007,20 +1004,20 @@ bool CheckIP(const char *ip) {
|
||||
bool IsValidMask(std::string mask) {
|
||||
int iRet = -1;
|
||||
|
||||
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹版澘绠查柛鎴︿憾<EFB8BF>?婃椽<E5A983>?<3F>?埡鍛€嶅┑鐘<E99098>?閿氭い<E6B0AD>?<3F>炴喘瀹曟﹢顢欓挊澶<E68C8A>?<3F>紦闂備胶鎳撻崥鈧悹浣<E682B9>?叀瀹曟垿骞橀<E9AA9E>?銉ョ<E98A89>?闂佸憡渚楅崢娲礌閺嶎厽鈷戦柛娑橈工缁<E5B7A5>?<3F>帗淇婇锝庢當闁伙絿鍏樺畷鐔碱敆娴i攱鍞<E694B1>?<3F>繝鐢靛仦閸ㄥ爼鏁<E788BC>??梺缁樻尰閸ㄥ潡<E384A5>??诲澶娢ㄩ柨鏂垮⒔閻f儳鈹戦悙瀛<E68299>?<3F>稇婵☆偅绻堥悰顕€骞<E282AC>??敃鈧~鍛存煃閵夈儳锛嶅ù婊愭<E5A98A>? 闂傚倷鑳堕崑銊╁磿閼碱剙鍨濋柛<E6BF8B>?<3F>犲灱婵娊鏌嶉<E98F8C>?鍕偓瑙<E58193>?閵堝<E996B5>?<3F>绠鹃柟瀵镐紳椤忓牊鍋傞柟杈鹃<E69D88>??閻撴稑霉閿濆懏鎲搁柟鐣屽█閺岋繝宕卞▎蹇旂亪闂佹悶鍔戠粻鏍极閹剧粯鏅搁柨鐕傛<E99095>??
|
||||
// 闁诲繐绻愰幑鍑遍梺闈╅檮濠㈡ê顭囬崘顔藉仺闁瑰吀璁查崑鎾斥堪閸涱厺鍖栭梺鍛婂笒濡鐣烽崟顒佷氦婵炴垶锚閻撴垿鏌嶉妷锔剧畾婵炴潙妫濋獮鎴﹀閳ュ磭浜<EFBFBD> 闂佺偨鍎茬划鍫㈣姳閳哄倹浜ゆ繛鎴灻悡鎴︽煛娴e摜鎽犻柡鍡欏枛閸ㄩ箖鏁撻敓锟<E69593>
|
||||
struct in_addr s;
|
||||
iRet = inet_pton(AF_INET, mask.c_str(), &s);
|
||||
|
||||
// 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺<EFBFBD>?箓鏌$仦璇插姎缂佺<E7BC82>?<3F>缍侀弻鐔兼焽閿曗偓<E69B97>?<3F>ь喗銇勯銈<EE9495>?枅鐎殿喖鐖奸崺锟犲磼濞戞艾<E6889E>??<3F>?繝鐢靛仩椤曟粓骞忛敓锟<E69593>1闂傚倷鐒︾€笛呯矙閹达附鍎<E99984>?<3F>〒<EFBFBD>?<3F>e亾<EFBD85>?<3F>ゃ垺宀搁崺锟犲川椤撶偛鎸ら梺鐟板悑閻n<E996BB>?宕归搹鍦噮闂傚倷绀侀幖<E4BE80>?<3F>︽偋閸℃蛋鍥ㄥ閺夋垹鏌ч梺闈涱槴閺<E6A7B4>?粓宕曞澶<EE85BC>??厱闁规惌鍘介惁浠<E68381>?⒒娓氣偓濞煎<E7858E>?<3F>介崟<E4BB8B>?<3F>唵婵☆垯璀﹂悞浠<E6829E>??煥閻曞倹瀚<E580B9>
|
||||
// 闁哄鍎愰崜姘暦閺屻儱绠i柟閭﹀墮椤娀寮堕埡鍌涚叆婵炶鎷<EFBFBD>1闂佹寧绋戦惌渚€顢氶埡鍛強閹兼番鍨虹瑧闂佸搫鐗嗛ˇ浼村疾閵夆晜鍎嶉柛鎴瘽闂侀潻闄勫妯侯焽閿燂拷
|
||||
if (iRet == 1) {
|
||||
// 婵犵數鍋涢顓熸叏閺夋嚚瑙勵槹鎼达絿顦繝銏f硾閻偐澹曢崗鑲╃瘈濠电姴鍊搁弳鐔兼煙閻e<EFBFBD>?鏋涢柡灞诲€濆畷顐﹀礋椤<E7A48B>?喎浜鹃柛褎顨呰繚闁瑰吋鐣崹娲磿閻旇偐鍙撻柛銉e<E98A89>?<3F>椤h尙绱掓笟鍥ф珝闁哄瞼鍠撻幏鐘诲焺閸愵亞鐛㈤梺鑽ゅУ閸旀宕伴幇顔剧煓濠㈣泛<E388A3>?肩<>?<3F>鍏间繆椤栨繂鍚归柣銊ヮ煼閺岋絾<E5B28B>?旈<>?<3F>鈶╁濡<EE9D8C>?們鍔岄ˇ鐗堢┍婵犲浂鏁<E6B582>?柣鏃傜節缁ㄥ<E384A5>?<3F>洪崨濠<E5B4A8>?畵閻庢凹鍠氶崰濠囨晸閿燂<E996BF>?
|
||||
// 婵炲濮村ù椋庣礊婢跺瞼纾兼繝濠傚暟閹界喖鏌ら崫鍕偓鍧楀Υ鎼淬垺鍎熼煫鍥ㄧ缁侇噣鏌熺拠鈩冪窔閻犳劗鍠愮粙澶岀磼濡崵鐨婚柣搴㈢⊕椤ㄥ淇婇鐔翠簻闁告繂瀚喊锟<EFBFBD>
|
||||
unsigned int addr = ntohl(s.s_addr);
|
||||
|
||||
// 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺<EFBFBD>?箓鏌涘▎蹇fШ闁崇<E99781>?<3F>?<3F>?鍫曟倷閺夋埈<E5A48B>?嗛梺璋庡啰鐒哥€殿喖鐖奸崺锟犲磼濠х偓<D185>?嶉梻浣虹《閺<E3808A>?粓銆<E7B293>?崼銉ョ劦妞ゆ帊鑳堕埊鏇熴亜閵娿儳澧︽い銏$<E98A8F>??閹峰懘宕烽娑欑亙闂備浇娉曢崳锕傚<E99495>??閿燂<E996BF>?
|
||||
// 闁哄鍎愰崜姘暦閸欏鈻旈弶鐐村閻у矂寮堕埡鍌溾槈闁糕晜顨堥埀顒佺⊕椤ㄥ牓顢栨担鍦枖闁跨噦鎷<EFBFBD>
|
||||
std::bitset<32> b((int)addr);
|
||||
std::string strMask = b.to_string();
|
||||
|
||||
// 闂傚倷绀侀幖<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喗鈷戞繛鑼额嚙濞呮瑩鏌熼崙銈嗗<E98A88>?
|
||||
// 闂佸搫琚崕鍙夌珶濡崵顩茬€光偓閸愵亞顔掗梺鍛婂笩濞夋盯鎮鸿缁參鏁傞懗顖f船婵炴垶鎼╅崢鎯р枔閿燂拷"01"闂佹寧绋戦懟顖炪€呰瀵ǹ饪伴埀顒傜箔婢跺备鍋撳☉娅亜锕㈤鍫熸櫖鐎光偓閸愭儳娈梺鍝勫鐎涒晛危閹间礁瀚夊璺侯儐濞呭繘鏌i妸銉ヮ仼闁烩剝鐟х槐鏃堝箣閻愯尪绀嬮梺娲诲櫙閹凤拷
|
||||
return (strMask.find("01") == std::string::npos);
|
||||
}
|
||||
|
||||
@ -1122,24 +1119,24 @@ std::string GetSysStatus(Json::Value &jsData) {
|
||||
return strJson;
|
||||
}
|
||||
|
||||
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑<E584B5>?<3F>旈埀顒勬偩閻戣姤鍋勯柛婵<E69F9B>?劗閺<E58A97>?牠<>?<3F>虹捄銊ユ珢闁瑰嚖鎷<E59A96>?16闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠婂懐<E5A982>?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁<E6AE9C>?<3F>鎸搁埥澶娾枎濡崵鏆俊鐐<E99090>?<3F>?崹鎶芥倿閿曗偓椤<E6A4A4>?顢旈崼<E69788>?<3F>f櫌婵炶揪绲挎灙缂併劊鍎茬换娑㈠<E5A891>?<3F>閻<EFBFBD>?潙纰嶉梺鍦拡閸<E68BA1>?<3F>?銆佸棰濇晩闁兼亽鍎遍崝鍛存⒑閸濆<E996B8>??鏆欓柛濠傜秺閹箖鏌嗗鍡椻偓鍨<E98DA8>?<3F>閹寸偟鎳愭繛鍫熺懃閳<E68783>?<3F>垿鍩ラ崱妤<E5B4B1>?<3F>?嶉悗瑙勬礃閸旀瑩<E69780>??幘缁樻櫢闁跨噦鎷<EFBFBD>
|
||||
// 闁诲繐绻愬Λ妤€鐣烽悢鍝モ枖闁跨噦鎷<EFBFBD>16闁哄鏅滅粙鎴﹀春濡ゅ啠鍋撳☉娆樻畼妞ゆ垳鐒﹀顏堫敆娴gǹ绨ユ繛鎴炴尭閹碱偊顢氶鑺ュ劅闁哄啫鍊归悾閬嶆倵濞戞瑯娈欏┑鈽嗗弮瀹曟劙鏁撻敓锟<EFBFBD>
|
||||
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>?<3F>уù鐑藉极婵犳艾鐒<E889BE>?い鎺嶈兌閵嗘帡鏌よぐ鎺旂<E98EBA>?闁哄矉绻濆畷姗€顢旈崟鎴秮閺岋繝宕ㄩ銏犲Е闂佽鍨伴崯鏉戠暦閻旂⒈鏁冮柕鍫濇閸犳洜绱撻崒娆戝妽<E6889D>?<3F>ゃ劍鍔楅幏瀣晲閸<E699B2>?煈<>?<3F>熷┑鐘绘涧濞<E6B6A7>?<3F>附绂嶉妶澶<E5A6B6>?厸闁稿本绋戦<E688A6>?<3F>呯磼閳ь剟鍩<E5899F>?閿燂<E996BF>?0
|
||||
return 0; // 闁诲海鏁婚埀顒佺〒閼归箖鏌¢崘顏勑i柡鍛劦閹啴宕熼銈嗘喕缂備焦顨愮拋锝囨濠靛洦浜ら柡鍌涘缁€鈧<EFBFBD>0
|
||||
}
|
||||
|
||||
// 闂備浇<EFBFBD>?<3F>х换鎰殽韫囨稑绠柨鐕傛<E99095>??16闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠婂懐<E5A982>?欓柟杈剧畱閺勩儲淇婇妶鍛殜闁<E6AE9C>?<3F>鎸搁埥澶娾枎濡崵鏆俊鐐<E99090>?<3F>?崹鎶芥倿閿斿墽<E696BF>?欏鑸靛姈閸ゆ垿鏌ら<E98F8C>?銉︽毄闁靛牜鍣e铏规兜閸滀礁娈<E7A481>?┑鐘噰閸<E599B0>??捇鏌i悩鍐插闁哥姵鎹囬崺鈧い鎺嶈兌閳洘銇勯妸銉Ч濞e洤锕、<EE8188>?<3F>€<EFBFBD>?<3F>?閻樺<E996BB>?鈧剟<EE8489>?<3F>虹憴鍕靛晱闁哥姵宀搁幆宀<E5B986>?晸閿燂拷
|
||||
// 闁诲繐楠忛幏锟<EFBFBD>16闁哄鏅滅粙鎴﹀春濡ゅ啠鍋撳☉娆樻畼妞ゆ垳鐒︾粙澶愭嚑閼哥數銈梺纭咁嚃濠⑩偓閻犳劗鍠撻埀顒佺⊕椤ㄥ淇婇銏犳瀬闁规鍠氶惌锟<EFBFBD>
|
||||
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>?<3F>х€涒晝<E6B692>?欓幒妞尖偓鍐醇閵<E98687>?<3F>喗鏅炴繛杈剧到濠€<E6BFA0>?嶅煝閺冨牊鐓涢悘鐐<E68298>?<3F>嚙閸旀粍鎱ㄩ敐鍡<E69590>?<3F>妤犵偞鐗<E5819E>?<3F>蹇涘<E8B987>?<3F>瑜忛弳鐘电磽娴i潧<EFBD89>?<3F>?閻忓繑鐟╅獮蹇涙偐鐠囧弬銊╂煥閺傚灝寤洪柨鏇炲€归悡鏇㈡倵閿濆<E996BF>?<3F>骞<EFBFBD>?柣鎾村<E98EBE>?<3F>閺岋繝宕遍鐔奉伓
|
||||
return -1; // Hex闁诲孩绋掗〃鍫ヮ敄娴e湱鈻旈柡灞诲劜濮f劙骞栨潏鍓х暠缂併劏灏欓幏鐘诲Ψ閿斿彨锕傛煕鐎n厼鐓愰柡鍡嫹
|
||||
}
|
||||
if (bytesSize < hexLen / 2) {
|
||||
zlog_error(zct, "bytesSize:%d < hexLen:%d", bytesSize, hexLen);
|
||||
return -1; // 闂備浇<EFBFBD>?<3F>х€涒晝<E6B692>?欓幒妞尖偓鍐╁緞鐎b晝绠<E6999D>?銈嗘尪閸ㄥ綊<E384A5>??告笟鈧弻鐔封枔閸喗鐏撻梺娲<E6A2BA>?<3F>幖椤戝<E6889D>??婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥咁潰瀹€鈧悿鈧柟鑹版彧缁插潡骞<E6BDA1>?<3F>ぐ鎺撶厽闁斥晛鍟<E98D9F>?鎺<>?<3F>煕濡崵澧紒鍌氱Ч楠炴帡<E782B4>??崫鍕闂佽崵鍠撴晶妤冩<E5A6A4>?<3F>閿熺姵鐓欓柟<E6AC93>?<3F>嗗<EFBFBD>?鍊┑鐐碘拡娴滎<E5A8B4>?銆佸Δ浣瑰缂佸娉曢<E5A889>?搴ㄦ⒒娴e憡鍟為柤瑙<E69FA4>?劤闇夌€瑰<E282AC>??澹<>??弸鏃堟煙鐎电ǹ袥闁稿鎸搁埥澶娾枎濡崵鏆┑鐘<E29491>?<3F>暯濡插嫰骞忛敓锟<EFBFBD>
|
||||
return -1; // 闁诲孩绋掗〃澶嬩繆椤撱垹鏋侀柟娈垮枤閻鏌i妸銉ヮ仼闁靛洤娲ㄦ禍姝岀疀鎼达絿鎲归柣鈩冨笒閸樻牗绂嶉幒鏂哄亾閻熺増璐¢柟鎯у悑濞碱亪顢楁担绋跨哎闂佸憡鑹惧ù宄扳枔閹寸姭鍋撳☉娆樻畽濠碘槄鎷<EFBFBD>
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < hexLen; i += 2) {
|
||||
@ -1148,7 +1145,7 @@ int hexStringToBytes(const char *hexStr, unsigned char *bytes, size_t bytesSize)
|
||||
bytes[i / 2] = (highNibble << 4) | lowNibble;
|
||||
}
|
||||
|
||||
return 0; // 闂傚倷鑳堕幊鎾绘偤閵娾晛绀夐柡鍥╁枑閸欏繘鏌ㄩ悤鍌涘
|
||||
return 0; // 闂佺懓鐡ㄩ崝鏇熸叏閿燂拷
|
||||
}
|
||||
|
||||
void stringToHex(const char *str, char *hexStr) {
|
||||
@ -1165,13 +1162,13 @@ void hexToAscii(const char *hexStr, char *asciiStr) {
|
||||
int i, j = 0;
|
||||
|
||||
for (i = 0; i < len; i += 2) {
|
||||
// 闂備浇宕<EFBFBD>?慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞闁靛ě鈧弸鏍⒑闂堟稓澧曢悗<E69BA2>?<3F>嵆瀹曠數鈧綆鍠<E7B686>?<3F>崐<EFBFBD>?<>?<3F>閹寸偟鎳愭繛鍫熒戦妵鍕<E98D95>?<3F>濠婂懐鐛㈤梺缁樹緱閸犳岸骞戦崟顖涙<E9A196>?閻熸瑥瀚烽<E7809A>?<3F>?ユ⒒娴e懙鍦崲閹达箑纾块柣鎾崇瘍瑜版帒骞㈡繛鎴烆焽椤斿<E6A4A4>?<3F>?<3F>?妶搴′航闁告瑢鍋撶紓浣插亾閻<E4BABE>?綆鍠楅悡娑樏归敐鍛喐闁<E59690>?<3F>?濞€閺岋繝宕遍鐔<EE9498>?<3F>伓
|
||||
// 闁荤姴娲╅褑銇愰崶銊р枖闁靛牆瀚伴崵瀣倵濞戞瑯娈樻い鎴滅窔閻涱喚鎹勯搹瑙勵啈闂佺ǹ绻戦崕鐓幟归崱娑樼妞ゎ偒鍙€缁€瀣煛娴e摜鎽犻柡鍡嫹
|
||||
int byte;
|
||||
sscanf(&hexStr[i], "%2x", &byte);
|
||||
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑樷枎閹捐櫕杈堥梺鎸庣箓椤︻垶<EFB8BB>??告笟鈧弻鐔风暋閻<E69A8B>?<3F>牊鎷辩紓浣<E7B493>?<3F>贰閸o綁<EFBD8F>??婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鐘虫崌閸┾偓妞ゆ帒鍊归弳鈺呮煙閾忣偅灏甸柤娲憾瀵濡烽敃鈧崜<EE8484>?<3F>㈡⒑閸涘﹤鐏﹂柍鐟伴拤II闂備浇<E58299>?<3F>х€涒晝<E6B692>?欓幒妞尖偓鍐醇閵<E98687>?<3F>喗鏅為梺璺ㄥ櫐閹凤<E996B9>?
|
||||
// 闁诲繐绻愬Λ娆撳汲閿濆鏋侀柟宄版湰缁侇噣鏌熺拠鈩冪窔閻犳劗鍠撻埀顒傛暩閹虫挾鑺遍弻銉﹀剭闁告垶鈹嶤II闁诲孩绋掗〃鍫ヮ敄閿燂拷
|
||||
asciiStr[j++] = (char)byte;
|
||||
}
|
||||
// 濠电姷鏁搁崕鎴犵礊閳ь剚銇<EFBFBD>?弴鍡楀<E98DA1>?閸欏繘鏌i幇顕呮毌闁稿鎸搁埥澶娾枎濡崵鏆俊鐐<E99090>?<3F>?崹鎶芥倿閿斿墽<E696BF>?欏鑸靛姈閸ゆ垶銇勯幒鎴濃偓鍦焊濠靛鈷戦柛婵嗗濡叉椽鏌涢悩铏磳<EE82A2>?<3F>ゃ垺鐗犻弫鎾绘晸閿燂拷
|
||||
// 濠电儑缍€椤曆勬叏閻愮鍋撳☉娆樻畼妞ゆ垳鐒︾粙澶愭嚑椤掑倹灏濋梺鍝勵槺閸犳捇顢栭敓锟<EFBFBD>
|
||||
asciiStr[j] = '\0';
|
||||
}
|
||||
|
||||
@ -1209,7 +1206,7 @@ void swap(char *data) {
|
||||
int OpenWatchDog() {
|
||||
int fd = -1;
|
||||
InitGpio(GlobalConfig::GPIO_G.hardWatchDog, 1);
|
||||
gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); //婵犲痉鏉库偓鏇㈠磹瑜版巻鈧箓宕堕鈧弸渚<EFBFBD>?鏌熼梻纾<E6A2BB>?厡鐎规挷绶氶弻<E6B0B6>?<3F>绠涢敐鍛凹缂備胶<E58299>?电敮锟犲蓟閳╁啰鐟瑰┑鐘插暙椤忥<E6A4A4>?
|
||||
gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); // 婵°倕鍊归…鍥极閹间胶宓侀柧蹇e亝缁犳帡鏌℃笟濠冨
|
||||
if (0 > (fd = open("/dev/watchdog", O_WRONLY))) {
|
||||
zlog_error(zbt, "fail to open /dev/watchdog");
|
||||
}
|
||||
@ -1270,7 +1267,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>?n偅灏扮紒缁樼洴瀵爼骞<E788BC>?鐐插闂佽崵鍠<E5B4B5>?ú鏍涘┑鍡欐殾闁挎繂顦伴弲鏌ユ煕閳╁喚鐒<E5969A>?柨鏇炲€归悡鏇熸叏濡搫鈷旈柣锝堜含閹叉悂鎮ч崼銏犲绩闂佽鍠曠划娆撳极閹剧粯鏅搁柨鐕傛<E99095>??
|
||||
if (tcgetattr(fd, &oldtio) != 0) { // 濠碘槅鍋€閸嬫挻绻涢弶鎴剮閻熸洖妫濆畷锝夋晲閸℃锕傛煕濮樺墽鐣辩憸鐗堢叀閹粙鏁撻敓锟<E69593>
|
||||
zlog_error(zbt, "tcgetattr fail");
|
||||
return -1;
|
||||
}
|
||||
@ -1303,8 +1300,7 @@ int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) {
|
||||
break;
|
||||
}
|
||||
|
||||
switch (nSpeed) //闂備浇宕<E6B587>?慨宕囩矆娴h娅犲ù鐘<C3B9>?儐閸嬵亪鏌涢埄鍐︿粶闁哄鐗犻弻鏇$疀鐎n亞浠煎銈冨劜椤ㄥ﹪<E384A5>?婚敐鍛牚闁归偊鍘奸锟<EE9494>?
|
||||
{
|
||||
switch (nSpeed) { // 闁荤姳绀佹晶浠嬫偪閸℃せ鏋栭柕蹇嬪灩椤ユ鏌e⿰鎰
|
||||
case 2400:
|
||||
cfsetispeed(&newtio, B2400);
|
||||
cfsetospeed(&newtio, B2400);
|
||||
@ -1331,14 +1327,15 @@ 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) //闂備浇宕<E6B587>?慨宕囩矆娴h娅犲ù鐘<C3B9>?儐閸嬵亪鏌涢埄鍐<E98D90>?<3F>缁惧墽<E683A7>?换婵囩節閸屾凹浼岄梺鍛婃尰閸庢娊婀侀梺鎸庣箓缁绘垹鈧熬鎷<EFBFBD>
|
||||
if (nStop == 1) { // 闁荤姳绀佹晶浠嬫偪閸℃稑纾绘繝濠傚閸撴儳霉閿濆繑瀚<EFBFBD>
|
||||
newtio.c_cflag &= ~CSTOPB;
|
||||
else if (nStop == 2)
|
||||
} else if (nStop == 2) {
|
||||
newtio.c_cflag |= CSTOPB;
|
||||
}
|
||||
newtio.c_cc[VTIME] = 0;
|
||||
newtio.c_cc[VMIN] = 0;
|
||||
tcflush(fd, TCIFLUSH);
|
||||
if ((tcsetattr(fd, TCSANOW, &newtio)) != 0) {
|
||||
if ((tcsetattr(fd, TCSANOW, &newtio)) != 0) { // 闁荤姳绀佹晶浠嬫偪閸℃鈻旈柟缁樺笒缂嶆捇鏌涘▎蹇撯偓褰掑汲閿燂拷
|
||||
zlog_error(zbt, "tcsetattr fail");
|
||||
return -1;
|
||||
}
|
||||
@ -1506,15 +1503,13 @@ int writeIntValue(const char *section, const char *key, int val, const char *fil
|
||||
|
||||
int getDiskInfo(char *diskTotal, char *diskFree) {
|
||||
DISK diskInfo;
|
||||
/* 1.闂傚倷绀侀崥瀣磿閹惰<E996B9>?<3F>搴婇柤鑹扮<E991B9>?娴滃綊鏌ㄩ悤鍌涘<E98D8C>?/home/婵犵數鍋為崹<E782BA>?曞<>?<3F>閹间緡鏁勫璺衡看閻掕棄霉閻撳海鎽犻柛搴$Ч閺屾<E996BA>?<3F>?<3F>?妸銉ュ<E98A89>?<3F>闂佺ǹ<E4BDBA>?<3F>嗛幐楣冨<E6A5A3>??閻樺樊鍟<E6A88A>?い鏂<E38184>?悑濞<E68291>?秹<>?<3F><>?<3F>崒娆愮グ<E684AE>?<3F>ゆ洘绮撻獮蹇涙晸閿燂拷 */
|
||||
// 1.闂佸吋鍎抽崲鑼躲亹閿燂拷/home/婵炴垶鎸搁澶婎焽娴煎瓨鍎嶉柛鏇ㄥ厴閸嬫挾鎷犲顔兼櫍闂備浇顕滈幏锟<E5B98F>
|
||||
statfs("/", &diskInfo);
|
||||
unsigned long long blocksize = diskInfo.f_bsize;
|
||||
unsigned long long totalsize = blocksize * diskInfo.f_blocks;
|
||||
|
||||
|
||||
/* 2.闂傚倷绀侀崥瀣磿閹惰<E996B9>?<3F>搴婇柤鑹扮<E991B9>?娴滃綊鏌涢妷锝呭闁崇粯<E5B487>?<3F>?弻<>?<3F>堫檨闁告挻姘ㄧ划娆<E58892>?緞鐏炵ǹ浜鹃柨婵嗙凹缁ㄥ鏌嶉柨瀣ⅹ闂囧鏌ㄥ┑鍡橆棤闁瑰啿鎳橀弻<E6A980>?<3F>囨喆閸曨厼鈷屽┑<E5B1BD>?<3F>硷工椤嘲顕i崼鏇炵闁绘劕妯婃<E5A6AF>?<3F>鍛存⒒娴e憡鍟為柣鐕佸灦瀹曞綊骞庨挊澶<E68C8A>??<3F>?梺闈涚墕濞层劑<E5B182>?屽顓犵鐎瑰<E9908E>?<3F>鍠曠花濂告煥濞戞艾鏋涢柡宀<E69FA1>?<3F>?婵℃悂濡烽妷顔绘偅闂備線娼уú銈吤洪妸锔绢洸闁归棿鐒﹂弲鎼佹煥閻曞倹瀚<E580B9> */
|
||||
unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //闂傚倷绀侀幉锟犲<E9949F>?<3F>閹绢喖鐤炬繛鍡樺灩缁€濠囨煙鐎电ǹ啸闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犳牠<E78AB3>?婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥<E7B28B>?<3F><>?<3F>娴h娅㈤梺璺ㄥ櫐閹凤<E996B9>?
|
||||
// unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //闂傚倷绀侀幉锟犳偡椤栫偛鍨傞柟<E5829E>?版閺<EE9789>?<3F>線鏌曢崼婵囧窛闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犲酣鈥﹂崸妤<E5B4B8>?閱囬柛鈩冾殔閺嗙喐鎱ㄩ敐蹇斿<E8B987>?
|
||||
// 2.闂佸吋鍎抽崲鑼躲亹閸ャ劎鈻旈柍褜鍓氱粙澶屸偓锝庝簻閳锋牕霉閿濆棛鎳呴柍瑙勭墵濮婂寮堕幋鐐差伅闂佸憡鐟崹鎶藉极閵堝洨鐭氭繛宸簼閿涚喖鏌i妸銉ヮ仼闁靛洤娲ㄦ禍鎼佹晸閿燂拷
|
||||
unsigned long long freeDisk = diskInfo.f_bfree * blocksize;
|
||||
|
||||
sprintf(diskTotal, "%llu", totalsize >> 20);
|
||||
sprintf(diskFree, "%llu", freeDisk >> 20);
|
||||
@ -1540,49 +1535,8 @@ unsigned short cal_chksum(unsigned short *addr, int len) {
|
||||
return answer;
|
||||
}
|
||||
|
||||
int socketHeart(const char *pSendData) {
|
||||
zlog_info(zct, "socketHeart");
|
||||
int sockfd; // Socket闂傚倷绀侀幖<E4BE80>?<3F>﹀磹缁<E7A3B9>?5娲晲閸涱亝鐎婚梺闈涚箞閸婃洜<E5A983>?婚悽鍝ュ彄闁搞儯鍔忔竟<E5BF94>?<3F>€鏌eΔ浣圭殤缂佽鲸<E4BDBD>?掕灃閻庯綆鍋<E7B686>?锟<EE9494>?
|
||||
struct sockaddr_in serverAddr {}; // Server闂傚倷绶<E580B7>?濠<EE9F87>?⒔閸曨偒鐔嗘俊<E59798>?<3F>欒閻掍粙鏌涢幇鍏哥敖缁炬儳銈搁弻鐔煎箚瑜滈崵鐔兼煃瑜滈崜锕傚垂闁秴绠柛娑<E69F9B>?<3F>摠閺呮悂鏌ㄩ悤鍌涘<E98D8C>?
|
||||
|
||||
// 闂傚倷绀侀幉锛<E5B989>?暜濡ゅ啰<E38285>?欓柟瀵<E69F9F>?<3F>Х绾句粙鏌熺紒妯肩潉cket
|
||||
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
|
||||
zlog_error(zct, "Failed to create socket.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 闂備浇宕<E6B587>?慨宕囩矆娴h娅犲ù鐘<C3B9>?儐閸嬵亪鏌涘┑鍫濈€瑀ver闂傚倷绶<E580B7>?濠<EE9F87>?⒔閸曨偒鐔嗘俊<E59798>?<3F>欒閻掍粙鏌涢幇銊︽珖闁崇懓绉归弻宥<E5BCBB>?<3F>煛娴e憡娈ㄧ紓浣瑰敾閹凤拷
|
||||
serverAddr.sin_family = AF_INET;
|
||||
serverAddr.sin_port = htons(18393); // TCP婵犳鍠楃敮妤冪矙閹烘挾浠氭俊鐐€<EE8184>?幑浣哥暦閻㈤潧鍨濋柍鍝勬媼閺佸秵鎱ㄥ鍡楀<E98DA1>?缂佸顦靛娲川婵犲<E5A9B5>??鍣┑鐐存尭濠€<E6BFA0>?嶅<>??瑜版帗鏅搁柨鐕傛<E99095>?80
|
||||
inet_pton(AF_INET, "192.168.1.147", &serverAddr.sin_addr);
|
||||
|
||||
// 闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠靛纾<EE8385>?<3F>柣鎰仛閺嗘粓鏌熺紒銏犳灈缂佲偓閸℃稒鐓熺憸搴f绾炬潳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;
|
||||
}
|
||||
|
||||
// 闂傚倷绀侀幉锟犳偡閿曞倸鍨傞柛褎顨呴悞<E591B4>?亜閹达絾纭舵い锔煎<E99494>?缁辨帡宕崟顐熸寖闂佸湱鎳撶<E98EB3>?<3F>?即骞<E58DB3>?ぐ鎺濇晝闁挎繂妫崯鈧梻鍌欒兌椤㈠<E6A4A4>?顢氶弽<E6B0B6>?<3F>炵獥闁哄稁鍋€閸<E282AC>??挾鍠婃径瀣<E780A3>?
|
||||
|
||||
ssize_t bytesSent = send(sockfd, pSendData, strlen(pSendData), MSG_NOSIGNAL);
|
||||
if (bytesSent == -1) {
|
||||
zlog_error(zct, "Failed to send heartbeat packet.");
|
||||
close(sockfd);
|
||||
return 1;
|
||||
} else if (static_cast<size_t>(bytesSent) != strlen(pSendData)) {
|
||||
zlog_error(zct, "Partially sent heartbeat packet.");
|
||||
close(sockfd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 闂傚倷鑳舵灙缂佺<E7BC82>?鍨剁换娑欑節閸<E7AF80>??姤绋撻崰濠囧煛閻滅€攅t闂備礁鎼ˇ<EE82A6>?<3F>﹀疾濠靛纾<EE8385>?<3F>柣鎰仛閺嗘粓鏌ㄩ悤鍌涘
|
||||
close(sockfd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Ping闂傚倷绀侀幉锟犲垂閸忓吋鍙忛柕<E5BF9B>?濐槸<E6BF90>?规煡鏌i<E98F8C>?<3F>?<>?闁哄拋鍓熼幃妤呭捶椤撶偘姘eout婵犵數鍋為崹<E782BA>?曞<>?<3F>閸モ晝纾芥慨妯夸含閻捇鏌熺紒銏犳灈缂侇偄绉归弻銈囩矙鐠恒劋绮靛銇礁娲﹂埛鎺<E59F9B>?<3F>煕鐏炲墽绠<E5A2BD>?憸鎶婂懐纾奸弶鍫涘<E98DAB>?<3F>缁犵偟鈧娲╃换婵嗩嚕閺夋埈娼╅弶鍫<E5BCB6>?暕閵忋倖鈷戦柛婵嗗椤忣偅淇婇銈庢敵,10000 濠电姵<E794B5>?<3F>栭崳<E6A0AD>?<3F>滅礊閸℃稑纾<E7A891>?<3F>柛鈩冨喕缂嶆牠鏌ㄩ悤鍌涘=10 缂傚倸鍊风粈渚€篓閳ь剟鏌熼崙銈嗗<E98A88>?
|
||||
//闂傚倷鑳堕幊鎾绘偤閵娾晛绀夐柡鍥╁枑閸欏繑绻涢幋娆忕仾闁哄拋鍓氶幈銊ノ熼搹鐧哥礊缂備胶<E58299>?甸悡锟犲蓟濞戙垹<E68899>?妞ゆ牗绋戦锟<EE9494>0闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍<E38184>?仜<>?<3F>呴梺鐟邦嚟婵數鈧艾<EE8481>?烽弻鏇熷緞濡<E6BFA1>?<3F>浠紓浣瑰姈椤ㄥ﹤顕i崼鏇炵厸闁<E58EB8>?<3F>本绋撻崣鍡椻攽閻愰鍤<EE9682>?柟鍑ゆ<E98D91>??1闂傚倷鑳堕、濠囧<E6BFA0>?<3F>椤忓牆绠柨鐕傛<E99095>??-1
|
||||
// Ping闂佸憡鍨兼慨銈夊汲閻斿吋鏅悗鍦交meout婵炴垶鎹囩紓姘辩矓閹绢喖绫嶉柤绋跨仛椤ρ囨⒒閸屾繃褰х紒杈ㄧ箞瀹曪繝寮村杈┬㈤梺鍝勫濡,10000 濠殿噯缍嗛崑鍡涳綖閿燂拷=10 缂備礁顧€閹凤拷
|
||||
// 闂佺懓鐡ㄩ崝鏇熸叏濞戙垺鏅慨妯虹-缁犳煡鏌涢妷顖涘0闂佹寧绋戦懟顖炲Φ閹寸姵瀚婚柕澶樺灣缁愭寮堕埡鍌涚叆婵炶鎷<EE879C>1闂佺鎻幏锟<E5B98F>-1
|
||||
int Ping(const char *ips, int timeout) {
|
||||
struct timeval *tval;
|
||||
int maxfds = 0;
|
||||
@ -1591,13 +1545,12 @@ int Ping(const char *ips, int timeout) {
|
||||
int iRet = 0;
|
||||
struct sockaddr_in addr;
|
||||
struct sockaddr_in from;
|
||||
// 闂備浇宕<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;
|
||||
// 闂傚倷绀侀幉锟犳偡閿曞倹鍋<E580B9>?柡鍥╁У椤<D0A3>?粙鏌i鍛傛溈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);
|
||||
@ -1605,7 +1558,6 @@ int Ping(const char *ips, int timeout) {
|
||||
}
|
||||
|
||||
struct timeval timeo;
|
||||
// 闂備浇宕<E6B587>?慨鎶芥倿閿曞倸纾块柟<E59D97>?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖<E4BE80>?<3F>﹀<EFBFBD>?椤愶附鍋夐柣鎾冲濞戙垺鏅搁柨鐕傛<E99095>??
|
||||
timeo.tv_sec = timeout / 1000;
|
||||
timeo.tv_usec = timeout % 1000;
|
||||
|
||||
@ -1617,25 +1569,23 @@ int Ping(const char *ips, int timeout) {
|
||||
|
||||
char sendpacket[2048];
|
||||
char recvpacket[2048];
|
||||
// 闂備浇宕<E6B587>?慨鎶芥倿閿曞倸纾块柟<E59D97>?板Г閸嬧晝绱撳鍥х毇ng闂傚倷绀侀幉锟犳偋椤撱垹绠柨鐕傛<E99095>?
|
||||
memset(sendpacket, 0, sizeof(sendpacket));
|
||||
|
||||
pid_t pid;
|
||||
// 闂傚倷绀侀幉锟犳偡閿曞倹鍋<E580B9>?柡鍥╁У椤<D0A3>?粙鏌i埡濠冿紬D闂傚倷鐒︾€笛呯矙閹寸偟闄勯柡鍐ㄥ€荤粈濠囨煛閸愶絽浜剧紓浣割儏椤﹀<E6A4A4>?顕h閵嗘帗鍒婂濠囨⒒娴e湱婀介柛鏂跨焸瀹曠敻鎮悥宄秂nce ID
|
||||
pid = getpid();
|
||||
|
||||
struct ip *iph;
|
||||
struct icmp *icmp;
|
||||
|
||||
icmp = (struct icmp *)sendpacket;
|
||||
icmp->icmp_type = ICMP_ECHO; //闂傚倷鐒﹂幃<EFBFBD>?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悘鐐村劤閻濅即姊绘担鍝ヤ虎妞ゆ垵娲ら敃銏ゆ晸閿燂拷
|
||||
icmp->icmp_type = ICMP_ECHO; // 闂佹悶鍎抽崑鐐参熸径灞惧珰闂佸灝顑囧﹢锟<EFB9A2>
|
||||
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)); //闂傚倷绀侀幖<E4BE80>?<3F>ょ矙閸曨厽宕叉繝闈涱儐閸<E58490>??﹢鏌ㄩ悤鍌涘<E98D8C>?
|
||||
icmp->icmp_cksum = cal_chksum((unsigned short *)icmp, sizeof(struct icmp));
|
||||
|
||||
int n = sendto(sockfd, (char *)&sendpacket, sizeof(struct icmp), 0, (struct sockaddr *)&addr, sizeof(addr));
|
||||
if (n < 1) {
|
||||
@ -1644,11 +1594,11 @@ int Ping(const char *ips, int timeout) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 闂傚倷娴<EFBFBD>?~澶<EFBD9E>?娴犲纾块弶鍫<E5BCB6>?亖娴滃綊鏌ㄩ悤鍌涘
|
||||
// 闂傚倷鐒﹂惇褰掑垂绾懌浜瑰璺虹焷婵櫕銇<EFBFBD>?幒鎴濐仼闁活厽顨嗛妵鍕冀閵娧<E996B5>?暤闂佸憡蓱閹告娊<E5918A>?婚悢鐓庣畳闁<E795B3>?儤鍨<E584A4>?慨搴ㄦ偡濠婂<E6BFA0>?绶查柣妤佹尭閻e嘲顫濈捄铏归獓闂佸<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>?
|
||||
// 闂佽浜介崕杈亹閿燂拷
|
||||
// 闂佹眹鍨硅ぐ澶岃姳椤掑嫬鐭楁い鏍ㄧ箓閸樻挳鏌熼幁鎺戝姎鐟滄澘鐗撳畷姘跺级閸喖绶繛瀵稿У濠€顣弉g闂佹眹鍔岀€氼剛鑺遍懠顒傞┏闁哄啠鍋撶紒澶屽厴楠炰線顢涢妶鍥╊槷闂佸湱顣介崑鎾趁归悩顔煎姤缂佺粯鐗犻弻灞界暆閸愮偓鐭楅梺鐑╁亾閸斿矂骞嗘繝鍥ㄥ仢闁跨噦鎷<EFBFBD>
|
||||
int cnt = 0;
|
||||
while (1) {
|
||||
// 闂備浇宕<EFBFBD>?慨鎶芥倿閿曞倸纾块柟<E59D97>?板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖<E4BE80>?<3F>﹀<EFBFBD>?椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈<E4BF8A>?劍濞<E58A8D>?牠鎮楅崗澶婁壕闂佸憡鍔︽禍鐐<E7A68D>?敊閹邦兘鏀介柣鎰级椤ユ垿鏌涢幘瀵哥畺闁哄懎鐖奸幃鈺冩嫚閹绘帒鎸ゆ俊鐐<E99090>?<3F>?悧妤冨垝瀹ュ<E780B9>?鏄ラ柛灞剧⊕閸欏繑绻濋崹顐e暗缂佸鍓熼弻鐔兼儌閸濄儳蓱闂佺懓鍢查幊搴ㄣ偑娴兼潙宸濇い鏃<E38184>?Г椤撳綊<E692B3>?<3F>绘担瑙勩仧闁绘挸顦甸獮蹇涙晸閿燂拷
|
||||
// 闁荤姳鐒﹂崕鎶芥偩缂嶇棤meOut闂佸搫鍟悥鐓幬涢崸妤佹櫖鐎光偓閸愵亞顔愬┑鐐叉閸撴繃鏅堕悩璇插強妞ゆ牗绮嶉崺鍌涙叏濠垫挾绉柟鐧哥稻閹峰懎饪伴崨顔芥闂佹椿鐓夐幏锟<EFBFBD>
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(sockfd, &readfds);
|
||||
maxfds = sockfd + 1;
|
||||
@ -1660,7 +1610,7 @@ int Ping(const char *ips, int timeout) {
|
||||
break;
|
||||
}
|
||||
|
||||
// 闂傚倷娴<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);
|
||||
@ -1672,7 +1622,7 @@ int Ping(const char *ips, int timeout) {
|
||||
}
|
||||
|
||||
char *from_ip = (char *)inet_ntoa(from.sin_addr);
|
||||
// 闂傚倷绀侀幉锛<EFBFBD>?暜閸<E69A9C>?剙纾归柡宥庡幖閽<E5B996>?喖鏌涢妷顔煎闁告瑥锕ラ妵鍕冀閵娧屾<E5A8A7>?<3F>闂佺ǹ<E4BDBA>?<3F>搁敃<E69081>?<3F>堝蓟閿熺姴绀<E5A7B4>?梻鍫熺〒娴犳挳姊洪幖鐐测偓鏍垝瀹€鍕垫晩闊洦绋掗崕搴<E5B495>?亜閿曗偓缁辨闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸<E9A192>?閸撴瑧鍙呴梺鍝勭Р閸斿瞼娆㈤悙鐑<E68299>?<3F>叆闁绘洖鍊<E6B496>?<3F>?氾拷
|
||||
// 闂佸憡甯囬崐鏍蓟閸ヮ剙鍙婃い鏍ㄧ閸庡﹪鏌¢崟闈涚仴闁搞倖绮岄蹇涙儎椤﹀級g闂佹眹鍔岀€氼剙煤閺嶃劌绶為柨鐕傛嫹
|
||||
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);
|
||||
@ -1684,14 +1634,11 @@ 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);
|
||||
// 闂傚倷绀侀幉锛<E5B989>?暜閸<E69A9C>?剙纾归柡宥庡幖閽<E5B996>?喖鏌涢<E98F8C>?<3F>陇鎶梟g闂傚倷鐒﹂幃<EFB982>?曞磿閹惰棄纾绘繛鎴旀嚍閸<E59A8D>?剙钃熼柕澶堝劤椤﹂亶姊洪崨濠佺繁闁搞劑浜堕幃楣冩焼瀹ュ棛鍘藉┑鈽嗗灠閻忔繈<E5BF94>?¢幇鐗堢厓鐟滄粓宕滈妸鈺佺闁跨噦鎷<E599A6>?
|
||||
if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) // ICMP_ECHOREPLY闂傚倷鐒﹂幃<EFB982>?曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悗锝庡亜閸斿懘姊洪<E5A78A>?鍕<E98D95>?闁<>?<3F>﹤<EFBFBD>?烽獮妤呮晸閿燂拷
|
||||
{
|
||||
// 濠电姵<E794B5>?<3F>栭崰妤冩崲閹邦喖绶ゅù鐘<C3B9>?儐閸<E58490>?鏌涢幘鍙<E5B998>?<3F>樂闁绘帒锕娲敆閳ь剛绮旈鈧畷鎴﹀箻鐠<E7AEBB>?尙鍔﹀銈嗗笒鐎氼剛绮堥崟顖涚厱婵犻潧<E78ABB>?楅顏堟煕鎼<E78595>?垺绀<E59EBA>?柡宀<E69FA1>?到<>?<3F>即骞<E58DB3>?鐑嗕紦
|
||||
// 闂佸憡甯囬崐鏍蓟閸㈡迹ng闂佹悶鍎抽崑娑⑺囬弻銉ョ闁告侗鍨遍悾閬嶆煟濡灝鐓愰柍褜鍓ㄩ幏锟<E5B98F>
|
||||
if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) {
|
||||
zlog_info(zct, "icmp succecss ............. \n");
|
||||
break;
|
||||
} else if (cnt < 3) {
|
||||
// 闂傚倷绀侀幉锟犳偄椤掑倻涓嶉柟杈剧畱閸ㄥ倹銇<E580B9>?弽銊х煂缁<E78582>?崘鍋愰幉姝岀疀濞戞瑥浠<E791A5>?梺鐓<E6A2BA>?潟閸婃銇欓幎鑺ョ叆闁绘洖鍊<E6B496>?<3F>?氾拷
|
||||
cnt++;
|
||||
continue;
|
||||
} else {
|
||||
@ -1723,41 +1670,41 @@ int get_netlink_status(const char *if_name) {
|
||||
return edata.data;
|
||||
}
|
||||
|
||||
// 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑樷槈濞嗘劖鐝峰┑掳鍊曢幊搴b偓姘槹閵囧<E996B5>?<3F>骞掗崱妞惧闁荤喐<E88DA4>?嶆刊钘<E5888A>?<3F>枖閺囥垹鐒<E59EB9>?い鎺嶈兌閳洘銇<E6B498>?妸銉уⅵ<D183>?<3F>ゃ垺鐗楅幏鍛村捶椤撴稒鐏冮梻浣告啞閻熴儵藝椤栫儐鏁侀柡鍥ュ灪閻撴洟鏌熼悜<E786BC>?虹仸妞ゃ儲鐟╅幃褰掑箛椤斿吋鐏堥悗娈<E68297>?櫘閸<E6AB98>?棝鍩<E6A39D>?椤掍胶鈯曢拑杈ㄧ箾閸繂顣崇紒杈ㄦ尰閹峰懐绮欏▎鍙ョ<E98D99>?闂備焦鎮堕崝宥呯暆閹间<E996B9>?<3F>绠氶柛鎰靛枛缁<E69E9B>?瀣亜閹板<E996B9>?<3F>鍒伴柍褜鍓欓…宄邦潖閾忚瀚氱憸搴b偓姘炬<E5A798>?
|
||||
// 闁诲繐绻愬Λ娑欐櫠濡ゅ懎瀚夋い鎺嗗亾鐟滄媽娉曢埀顒佺⊕椤ㄥ牓顢栨担鍦枖闁告瑥顦鏇㈡煕閹烘垶顥欓悹鎰枛瀵偆鈧稒蓱濞堝墎绱撴担绋款仾闁搞劍宀搁幆鍐礋椤愶絽鈧姊虹拠褎瀚<EFBFBD>
|
||||
std::vector<int> splitVersion(const std::string &version) {
|
||||
std::vector<int> parts;
|
||||
std::stringstream ss(version);
|
||||
std::string part;
|
||||
|
||||
// 闂傚倷鑳堕崕鐢<EFBFBD>?<3F>磻閹捐绀夐幖娣妼绾惧鏌ㄥ┑鍡橆棡濠<E6A3A1>?<3F>垰鐡ㄧ换婵囩<E5A9B5>?<3F>閹傚闂佽崵<E4BDBD>?甸崝妤呭窗閺<E7AA97>?<3F>?殾婵ǹ娉涢獮銏$箾閹寸偟鎳愰柛<E684B0>?<3F>焽缁辨挻鎷呯拠鈩冾吅闁荤姳绶ょ徊<E38287>?i幇<EFBD89>?<3F>芥斀閻庯綆浜為ˇ<E782BA>?<3F>︽⒑缁洖澧叉い銊ユ嚇钘熼<E99298>?鍥ㄧ⊕閻撶喐淇婇妶鍌<E5A6B6>?壕闂佺粯顨呴敃銈夋晝閵忊<E996B5>?愁嚤闁哄鍨归悡鎴︽⒑鐠恒劌娅愰柟鍑ゆ<E98D91>??
|
||||
// 闂佺儵鍋撻崝搴ㄥ磻閿濆棙濯存繝濞惧亾閻犳劗鍠栧畷姘跺幢濞戞瑯鍚樼紓浣诡殣鐠侊絿妲愬┑瀣闁糕剝顨呴ˉ蹇涙煟濡も偓閻楀﹤锕㈡导鏉戠煑闁跨噦鎷<EFBFBD>
|
||||
while (std::getline(ss, part, '.')) {
|
||||
parts.push_back(std::stoi(part)); // 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦儵娑<E584B5>?<3F>旈崨<E69788>?<3F>炵<EFBFBD>?柟鍏肩暘閸斿瞼<E696BF>?堥崼銉︾厵缂備焦锚缁楁岸鏌涙繝鍕毈闁哄矉缍佹俊鎼佸Ψ閵<CEA8>?<3F>喕绱旈梻浣呵圭<E591B5>?涒晠骞愰崘鑼<E991BC>?<3F>婵ǹ娉涢獮銏℃叏濮楀棗骞橀柕鍫櫍<EE82A2>?婅<>?<3F>娑甸崪浣告異濠电姭鎳囬崑鎾绘煟閻樺啿濮夐柛鐘崇<E99098>?椤曪綁顢曢妶鍌氫壕婵炴垶顏伴幋婵冩灁闁跨噦鎷<E599A6>?
|
||||
parts.push_back(std::stoi(part)); // 闁诲繐绻愬Λ妤呭垂鎼淬劌绀堥柟缁樺笚閸婄敻鏌i妸銉ヮ伃闁稿孩鎸冲畷姘跺幢濮橆厾銈梺纭咁嚃濠⑩偓閻犳劗鍠栧顐も偓娑櫳戝▓锟<EFBFBD>
|
||||
}
|
||||
|
||||
return parts;
|
||||
}
|
||||
|
||||
// 濠电姵<EFBFBD>?<3F>栭崳<E6A0AD>?<3F>滃緤閹灛娑欐媴閻戞﹩鍋ㄥ┑鐘绘涧濞层劑鍩㈤弮<E388A4>?熺厪闁割偅绻傞顓㈡煕閵堝拋鍎旈柡宀<E69FA1>?到铻<E588B0>?柍<>?<3F>鍓熼幃褎绻濋崒锕佲偓鍨归崗鍏肩稇闁活厽顨婇弻銊╂偆閸屾稑顏<EFBFBD>
|
||||
// 姣旇緝涓や釜鐗堟湰鍙<EFBFBD>
|
||||
int compareVersions(const std::string &version1, const std::string &version2) {
|
||||
std::vector<int> v1 = splitVersion(version1);
|
||||
std::vector<int> v2 = splitVersion(version2);
|
||||
|
||||
// 闂傚倷鑳堕幊鎾绘倶濮樿泛纾块柟鎯版閺勩儳鈧厜鍋撻柛鏇ㄥ亜閻濇﹢姊洪柅鐐茶<EFBFBD>?<3F><>?<3F>у瓨鎱ㄦ繝鍌涜<E98D8C>?<3F>闁圭懓瀚版俊鎼佹晜閻愵剚<E684B5>?<3F>忛梻鍌欒兌缁垶銆<E59EB6>?崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨婇弻锝<E5BCBB>?<3F><>?<3F>閿濆棭<E6BF86>?<3F>?梺鍛婃煟閸庣敻<E5BAA3>??诲☉銏犵闁瑰鍎愬Λ锕傛⒑閸濆<E996B8>??顥″瀛樻倐<E6A8BB>?<3F>炲棝<E782B2>??崼鐔告闂佽法鍣﹂幏锟<EFBFBD>
|
||||
// 闁瑰灚鍎抽崺宀勫嫉閳ь剟姊圭捄銊︾暠闁绘鐗婂﹢浼村矗閻戣棄鍔ラ柛鎺戞閺嗚鲸鎯旈敓锟<EFBFBD>
|
||||
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>?焵椤掆偓閸熷潡鍩<E6BDA1>?椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓濋幗鏇㈡⒑閸︻厼顣兼繝銏★耿瀹曟繈濡烽埡鍌滃幈闂佸湱鍎ら崹鍫曀夊▎鎴犵<婵°倐鍋撴い锕備憾閸┾偓妞ゆ帊鑳堕埊鏇㈡煥濮橆厾绡€闁逞屽墴椤㈡<E6A4A4>?<3F>宕奸悢鍛婄彨闁诲<E99781>?<3F>鍘滈崑鎾绘煕閹邦喖浜剧紓<E589A7>?<3F>咃攻缁绘盯骞<E79BAF>??悙瀛樺創闂佺懓鍤栭幏锟<E5B98F>?0
|
||||
int num1 = i < v1.size() ? v1[i] : 0; // 婵犵鈧啿鈧綊鎮樻径鎰摕闁圭増婢橀崝銉╂煕閹烘垶顥欑紒妤€顦遍埀顒佺⊕閿氭繝鈧鍫熸櫖鐎光偓閸愮偓缍婃繛鎴炴惈閹凤拷0
|
||||
int num2 = i < v2.size() ? v2[i] : 0;
|
||||
|
||||
if (num1 > num2) return 1; // version1 婵犵數濮伴崹褰掓偉閵忋倕纾兼繝濠傛椤<EFBFBD>?<3F>? version2
|
||||
if (num1 < num2) return -1; // version1 闂備浇<EFBFBD>?<3F>х换鎰崲閹邦喗宕查悗锝庡墲婵娊鏌ㄩ悤鍌涘<E98D8C>? version2
|
||||
if (num1 > num2) return 1; // version1 婵犮垹鐖㈤崒婊嗗 version2
|
||||
if (num1 < num2) return -1; // version1 闁诲繐绻愮换瀣姳閿燂拷 version2
|
||||
}
|
||||
|
||||
return 0; // 闂傚倷鑳剁划顖炪<EFBFBD>?<3F>?崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨呴—鍐偓锝庝簻椤掋垻绱掓担鍦弨闁哄<E99781>?绋戦~婵<EFBD9E>?倷椤掆偓椤忥<E6A4A4>?
|
||||
return 0; // 闂佺粯顨呴悧濠傦耿娴兼潙鐭楀瀣缁佹煡鏌涘鐐
|
||||
}
|
||||
|
||||
void Binary_Bit(unsigned char *p_data, unsigned char position, int flag) {
|
||||
//婵犵數鍋涢悺銊у垝瀹€鍕剹濞达絿鍎ゅ畷鍙夋叏濡炶浜鹃悗瑙勬礃瀹€鎼佸箠濠婂牊鍋ㄩ梻鍫熺☉缁傚繐鈹戦悙鑸靛涧缂佽尙鏅划鏃堝醇閺囩喎浠鹃梺<EFBFBD>?曞墲缁<E5A2B2>??帡鍩涢弽顓熺厾闁归棿鐒﹀☉<EFB980>?<3F>鏌h箛鏃戞疁闁哄<E99781>??鍊濆鍫曞<E98DAB>?<3F>鎼粹剝顏熺紓鍌欑劍濡垿骞忛敓锟<E69593> position婵犵數鍋為崹<E782BA>?曞<>?<3F>娴e<E5A8B4>?<3F>娴<EFBFBD>?柕濞у懐顦梺鍛婄⊕濞兼瑩<E585BC>?告笟鈧弻銊╂偆閸屾稑<E5B1BE>?<3F><>(婵犵數鍋涢顓熷垔閹绢喖绠柨鐕傛<E99095>??0 闂佽瀛╅鏍窗閹烘纾婚柟鐐灱閺<E781B1>?鑺ャ亜閺囩偞顥為悗<E782BA>?<3F>炬<EFBFBD>?)
|
||||
// 婵炲瓨绮岄惌浣烘崲濮椻偓瀹曟岸鎳滈悽闈涘福婵炶揪绲界粔鍫曟偪閸℃稒鈷栭柤鎼佹涧閻忔鏌ら弶鎸庡櫢缂佹棑鎷<E6A391> position婵炴垶鎹佸銊х礊閸涙潙鏋侀柨鐕傛嫹(婵炲濯撮幏锟<E5B98F>0 閻庢鍠掗崑鎾斥攽椤曞棙瀚<E6A399>)
|
||||
if (flag) {
|
||||
*p_data |= 0x01 << (position);
|
||||
} else {
|
||||
|
||||
@ -408,8 +408,6 @@ int getDiskInfo(char* diskTotal, char* diskFree);
|
||||
|
||||
unsigned short cal_chksum(unsigned short* addr, int len);
|
||||
|
||||
int socketHeart(const char* pSendData);
|
||||
|
||||
int Ping(const char* ips, int timeout);
|
||||
int get_netlink_status(const char* if_name);
|
||||
int compareVersions(const std::string& version1, const std::string& version2);
|
||||
|
||||
@ -36,6 +36,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
char sql_exec[2048];
|
||||
|
||||
// 创建传感器信息存储表
|
||||
// clang-format off
|
||||
memset(sql_exec, 0, 2048);
|
||||
sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);",
|
||||
T_SENSOR_INFO(TNAME),
|
||||
@ -83,6 +84,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
"UpdateFlag",
|
||||
"LooseValue",
|
||||
"batteryPower");
|
||||
// clang-format on
|
||||
CreateTable(sql_exec);
|
||||
|
||||
int iRet = GetTableRows(" sqlite_master "," name = 't_sensor_info' and sql LIKE '%LooseValue%' ");
|
||||
@ -127,6 +129,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
|
||||
// 创建传感器数据存储表
|
||||
memset(sql_exec, 0, 2048);
|
||||
// clang-format off
|
||||
sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s integer,%s,%s,%s);",
|
||||
T_DATA_INFO(TNAME),
|
||||
T_DATA_INFO(DATANODENO),
|
||||
@ -149,6 +152,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
T_DATA_INFO(TIMESTAMP),
|
||||
T_DATA_INFO(SENDMSG),
|
||||
T_DATA_INFO(NODERESEND));
|
||||
// clang-format on
|
||||
CreateTable(sql_exec);
|
||||
|
||||
iRet = GetTableRows(" sqlite_master "," name = 't_data_info' and sql LIKE '%nodeResend%' ");
|
||||
@ -178,6 +182,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
}
|
||||
|
||||
memset(sql_exec, 0, 2048);
|
||||
// clang-format off
|
||||
sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);",
|
||||
T_GATEWAY_INFO(TNAME),
|
||||
T_GATEWAY_INFO(GATEWAYMAC),
|
||||
@ -196,6 +201,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
T_GATEWAY_INFO(STATUS),
|
||||
T_GATEWAY_INFO(GATEWAYUPDATE),
|
||||
T_GATEWAY_INFO(MAC2));
|
||||
// clang-format on
|
||||
CreateTable(sql_exec);
|
||||
|
||||
memset(sql_exec, 0, 2048);
|
||||
@ -217,6 +223,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
}
|
||||
|
||||
memset(sql_exec, 0, 2048);
|
||||
// clang-format off
|
||||
sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s);",
|
||||
T_BATTERY_INFO(TNAME),
|
||||
T_BATTERY_INFO(DATANODENO),
|
||||
@ -228,9 +235,11 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
T_BATTERY_INFO(BATTERYUSAGE),
|
||||
T_BATTERY_INFO(BATTERYREMAIN),
|
||||
T_BATTERY_INFO(TIMESTAMP));
|
||||
// clang-format on
|
||||
CreateTable(sql_exec);
|
||||
|
||||
memset(sql_exec, 0, 2048);
|
||||
// clang-format off
|
||||
sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s);",
|
||||
"t_battery_history",
|
||||
T_BATTERY_INFO(DATANODENO),
|
||||
@ -242,6 +251,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
|
||||
T_BATTERY_INFO(BATTERYUSAGE),
|
||||
T_BATTERY_INFO(BATTERYREMAIN),
|
||||
T_BATTERY_INFO(TIMESTAMP));
|
||||
// clang-format on
|
||||
CreateTable(sql_exec);
|
||||
|
||||
execute_sql_file("/opt/configenv/firmware_upgrade.sql");
|
||||
@ -446,6 +456,7 @@ std::string SqliteDB::GetData(const char *tablename, const char *column, const c
|
||||
mtx_.unlock();
|
||||
return strRes;
|
||||
}
|
||||
|
||||
array_t SqliteDB::GetDataMultiLine(const char *sql){
|
||||
array_t arrResult;
|
||||
zlog_info(zct, "[GetDataMultiLine] sql:%s", sql);
|
||||
@ -473,6 +484,7 @@ array_t SqliteDB::GetDataMultiLine(const char *sql){
|
||||
mtx_.unlock();
|
||||
return arrResult;
|
||||
}
|
||||
|
||||
array_t SqliteDB::GetDataMultiLine(const char *tablename, const char *column, const char *whereCon) {
|
||||
array_t arrResult;
|
||||
std::string strSql = "select ";
|
||||
@ -705,6 +717,7 @@ int SqliteDB::UpdateTableDataOneColumn(const char *tablename, const char *column
|
||||
}
|
||||
return iRet;
|
||||
}
|
||||
|
||||
int callback(void *data, int argc, char **argv, char **azColName) {
|
||||
// 如果需要处理查询结果,可以在此回调函数中进行操作
|
||||
for (int i = 0; i < argc; i++) {
|
||||
@ -716,7 +729,7 @@ int callback(void *data, int argc, char **argv, char **azColName) {
|
||||
int SqliteDB::execute_sql_file(const char *filename) {
|
||||
FILE *file = fopen(filename, "r");
|
||||
if (file == NULL) {
|
||||
zlog_error(zct,"无法打开 SQL 文件");
|
||||
zlog_error(zct, "can not open sql file:%s", filename);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -728,7 +741,7 @@ int SqliteDB::execute_sql_file(const char *filename) {
|
||||
// 为文件内容分配内存
|
||||
char *sql = (char *)malloc(file_size + 1);
|
||||
if (sql == NULL) {
|
||||
zlog_error(zct,"内存分配失败");
|
||||
zlog_error(zct, "fail to malloc size:%ld", file_size + 1);
|
||||
fclose(file);
|
||||
return 2;
|
||||
}
|
||||
@ -742,7 +755,7 @@ int SqliteDB::execute_sql_file(const char *filename) {
|
||||
// 执行 SQL 文件中的语句
|
||||
char *err_msg = NULL;
|
||||
if (sqlite3_exec(GetDbHandle(), sql, callback, 0, &err_msg) != SQLITE_OK) {
|
||||
zlog_error(zct, "执行 SQL 错误: %s", err_msg);
|
||||
zlog_error(zct, "fail to exec:%s, error msg: %s", sql, err_msg);
|
||||
sqlite3_free(err_msg);
|
||||
free(sql);
|
||||
return 3;
|
||||
@ -750,6 +763,7 @@ int SqliteDB::execute_sql_file(const char *filename) {
|
||||
free(sql);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SqliteDB::InsertData(const char *tablename, const char *insertValues, int replace, bool expandable) {
|
||||
char *msg;
|
||||
int iRet = 0;
|
||||
@ -828,7 +842,7 @@ int SqliteDB::CalculateBattery() {
|
||||
if (Dip == "") {
|
||||
continue;
|
||||
}
|
||||
capacity = (0.9 + 0.1 * (90 - atoi(Dip.c_str())) / 90) * 19000; // mAh //电池总量
|
||||
capacity = (0.9 + 0.1 * (90 - atoi(Dip.c_str())) / 90) * 19000; // mAh 电池总量
|
||||
startCapacity = capacity;
|
||||
|
||||
sprintf(updateSql, "batteryPower = '%f,%f' ", startCapacity, startCapacity);
|
||||
@ -880,7 +894,7 @@ int SqliteDB::CalculateBattery() {
|
||||
to_math += cost_h;
|
||||
}
|
||||
|
||||
zlog_info(zct, "自放电 = %f", to_math);
|
||||
zlog_info(zct, "self discharge = %f", to_math);
|
||||
long sumworkTime = 0.0, sumsendTime = 0.0;
|
||||
for (size_t j = 0; j < vecworkTime.size(); j++) {
|
||||
sumworkTime += vecworkTime[j];
|
||||
@ -896,7 +910,7 @@ int SqliteDB::CalculateBattery() {
|
||||
|
||||
if (to_math < 0) to_math = 0;
|
||||
float usageBattery = usageworkTime + usagesendTime + to_math;
|
||||
zlog_info(zct, "已经使用 = %f", atof(vecResSig[6].c_str()));
|
||||
zlog_info(zct, "have used = %f", atof(vecResSig[6].c_str()));
|
||||
|
||||
float remainBattery = capacity - usageBattery * 0.2;
|
||||
if (remainBattery < 10) {
|
||||
@ -1175,7 +1189,7 @@ std::string SqliteDB::GetNodeConfigureInfor(const char *whereCon) {
|
||||
} else {
|
||||
jsArray.resize(0);
|
||||
jsonVal["success"] = false;
|
||||
jsonVal["message"] = "查询失败";
|
||||
jsonVal["message"] = "fail to query";
|
||||
}
|
||||
|
||||
Json::Value jsBody;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user