const MAGIC=0xdead; const PKT_TYPE=function(){ var len = 0; return { PKT_TYPE_ACK:len++, PKT_TYPE_PARAS:len++, PKT_TYPE_POWER_CH:len++, //power_ch_t PKT_TYPE_POWER_TOTAL:len++, //power_total_t PKT_TYPE_POWER_RESET:len++, PKT_TYPE_CH_ALL:len++, PKT_TYPE_SCAN:len++, PKT_TYPE_FACTORY:len++, PKT_TYPE_ALARM:len++, PKT_TYPE_SENSOR:len++, PKT_TYPE_BREAKER:len++, PKT_TYPE_STAT:len++, PKT_TYPE_MESG:len++, PKT_TYPE_FILE:len++, } }(); const SUB_TYPE=function(){ var len = 0; return { SUB_TYPE_POWER_SWITCH:len++, SUB_TYPE_POWER_ALARM:len++, SUB_TYPE_POWER_THRESHOLD:len++, //power_ch_t SUB_TYPE_POWER_START_DELAY:len++, //power_total_t SUB_TYPE_POWER_STOP_DELAY:len++, } }(); /////////////////////////////////////////////////////// function array_to_string(data){ var s = ""; for(var i=0;i0 && hdr.len==data.byteLength) { switch(hdr.type) { case PKT_TYPE.PKT_TYPE_POWER_CH: hdr.powerc = BIN.powerc.b2j(data); break; case PKT_TYPE.PKT_TYPE_POWER_TOTAL: hdr.powert = BIN.powert.b2j(data); break; case PKT_TYPE.PKT_TYPE_ALARM: hdr.alarmd = BIN.alarmd.b2j(data); break; default : console.log("wrong hdr type: "+hdr.type); } } return hdr; } }; XXX.paras=function() { this.j2b = function (js) { } this.b2j = function (bin) { } }; XXX.powerc=function() { this.j2b = function (js) { return new powerc_to_bin(js); } this.b2j = function (bin) { var tmp=[],length=0; for(var i=0;; i++) { tmp[i] = new bin_to_powerc(bin.slice(length)); length += tmp[i].len; if(length >= bin.byteLength) { break; } } return tmp; } }; XXX.powert=function() { this.j2b = function (js) { return new powert_to_bin(js); } this.b2j = function (bin) { return new bin_to_powert(bin); } }; XXX.alarmd=function() { this.j2b = function (js) { return new alarmd_to_bin(js); } this.b2j = function (bin) { return new bin_to_alarmd(bin); } }; var BIN=new function() { this.hdr = new XXX.hdr(); this.paras = new XXX.paras(); this.powerc = new XXX.powerc(); this.powert = new XXX.powert(); this.alarmd = new XXX.alarmd(); }(); ////////////////////////////////////////// function LOG(){ var data = []; for(var i= 1,len=arguments.length;iERROR: '+ evt.data); } }