|
|
@@ -1,12 +1,15 @@
|
|
|
|
|
|
-var PKT_TYPE=function(){
|
|
|
+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++,
|
|
|
@@ -15,6 +18,17 @@ var PKT_TYPE=function(){
|
|
|
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++,
|
|
|
+ }
|
|
|
+}();
|
|
|
+
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////
|
|
|
@@ -48,20 +62,60 @@ function array_cat(a1,a2){
|
|
|
}
|
|
|
return buffer;
|
|
|
}
|
|
|
+function mk_hdr(type,flag)
|
|
|
+{
|
|
|
+ var tmp,length=0;
|
|
|
+ var buffer = new ArrayBuffer(13);
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ var t = 0xdead;
|
|
|
+ tmp.setUint16(0,t,true);//magic
|
|
|
+ length += 2;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint8(0,type,true); //type
|
|
|
+ length += 1;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint8(0,0,true); //subtype
|
|
|
+ length += 1;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint8(0,0,true); //nack
|
|
|
+ length += 1;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint32(0,flag,true); //flag
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint32(0,0,true); //dlen
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ return buffer;
|
|
|
+}
|
|
|
///////////////////////////////////////////////////
|
|
|
function bin_to_hdr(bin) {
|
|
|
var tmp, length=0;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
- this.magic = tmp.getUint32(0,true);
|
|
|
- length += 4;
|
|
|
+ this.magic = tmp.getUint16(0,true);
|
|
|
+ length += 2;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
- this.type = tmp.getUint32(0,true);
|
|
|
- length += 4;
|
|
|
+ this.type = tmp.getUint8(0,true);
|
|
|
+ length += 1;
|
|
|
+
|
|
|
+ tmp = new DataView(bin, length);
|
|
|
+ this.subtype = tmp.getUint8(0,true);
|
|
|
+ length += 1;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
- this.nack = tmp.getUint32(0,true);
|
|
|
+ this.nack = tmp.getUint8(0,true);
|
|
|
+ length += 1;
|
|
|
+
|
|
|
+ tmp = new DataView(bin, length);
|
|
|
+ this.flag = tmp.getUint8(0,true);
|
|
|
length += 4;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
@@ -74,7 +128,7 @@ function bin_to_info(bin) {
|
|
|
var tmp, length=0;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
- this.type = tmp.getInt8(0,true);
|
|
|
+ this.type = tmp.getUint8(0,true);
|
|
|
length += 1;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
@@ -90,16 +144,20 @@ function bin_to_info(bin) {
|
|
|
length += 1;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
- this.pid = tmp.getUint8(0,true);
|
|
|
+ this.ph_id = tmp.getUint8(0,true);
|
|
|
length += 1;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
- this.start_delay = tmp.getUint16(0,true);
|
|
|
- length += 2;
|
|
|
+ this.ph_val = tmp.getUint8(0,true);
|
|
|
+ length += 1;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
- this.stop_delay = tmp.getUint16(0,true);
|
|
|
- length += 2;
|
|
|
+ this.start_delay = tmp.getUint32(0,true);
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(bin, length);
|
|
|
+ this.stop_delay = tmp.getUint32(0,true);
|
|
|
+ length += 4;
|
|
|
|
|
|
this.len = length;
|
|
|
}
|
|
|
@@ -129,6 +187,22 @@ function bin_to_power(bin) {
|
|
|
tmp = new DataView(bin, length);
|
|
|
this.consump = tmp.getFloat32(0,true);
|
|
|
length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(bin, length);
|
|
|
+ this.factor = tmp.getFloat32(0,true);
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(bin, length);
|
|
|
+ this.active = tmp.getFloat32(0,true);
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(bin, length);
|
|
|
+ this.reactive = tmp.getFloat32(0,true);
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(bin, length);
|
|
|
+ this.ph_out = tmp.getUint8(0,true);
|
|
|
+ length += 1;
|
|
|
|
|
|
tmp = new DataView(bin, length);
|
|
|
this.status = tmp.getUint8(0,true);
|
|
|
@@ -271,10 +345,6 @@ function bin_to_total(bin) {
|
|
|
tmp = new DataView(bin, length);
|
|
|
this.reactive = tmp.getFloat32(0,true);
|
|
|
length += 4;
|
|
|
-
|
|
|
- tmp = new DataView(bin, length);
|
|
|
- this.apparent = tmp.getFloat32(0,true);
|
|
|
- length += 4;
|
|
|
|
|
|
this.len = length;
|
|
|
}
|
|
|
@@ -293,15 +363,6 @@ function bin_to_powert(bin) {
|
|
|
|
|
|
this.len = length;
|
|
|
}
|
|
|
-function bin_to_chall(bin) {
|
|
|
- var tmp, length=0;
|
|
|
-
|
|
|
- tmp = new DataView(bin, length);
|
|
|
- var chall = tmp.getUint8(0,true);
|
|
|
- length += 1;
|
|
|
-
|
|
|
- return chall;
|
|
|
-}
|
|
|
function bin_to_alarmd(bin) {
|
|
|
var tmp, length=0;
|
|
|
|
|
|
@@ -324,15 +385,23 @@ function hdr_to_bin(js) {
|
|
|
var buffer = new ArrayBuffer(js.len);
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setUint32(0,js.magic,true);
|
|
|
- length += 4;
|
|
|
+ tmp.setUint16(0,js.magic,true);
|
|
|
+ length += 2;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setUint32(0,js.type,true);
|
|
|
- length += 4;
|
|
|
+ tmp.setUint8(0,js.type,true);
|
|
|
+ length += 1;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint8(0,js.subtype,true);
|
|
|
+ length += 1;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setUint32(0,js.nack,true);
|
|
|
+ tmp.setUint8(0,js.nack,true);
|
|
|
+ length += 1;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint32(0,js.flag,true);
|
|
|
length += 4;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
@@ -346,7 +415,7 @@ function info_to_bin(js) {
|
|
|
var buffer = new ArrayBuffer(js.len);
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setInt8(0,js.type,true);
|
|
|
+ tmp.setUint8(0,js.type,true);
|
|
|
length += 1;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
@@ -362,16 +431,20 @@ function info_to_bin(js) {
|
|
|
length += 1;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setUint8(0,js.pid,true);
|
|
|
+ tmp.setUint8(0,js.ph_id,true);
|
|
|
length += 1;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setUint16(0,js.start_delay,true);
|
|
|
- length += 2;
|
|
|
+ tmp.setUint8(0,js.ph_val,true);
|
|
|
+ length += 1;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setUint16(0,js.stop_delay,true);
|
|
|
- length += 2;
|
|
|
+ tmp.setUint32(0,js.start_delay,true);
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint32(0,js.stop_delay,true);
|
|
|
+ length += 4;
|
|
|
|
|
|
return buffer;
|
|
|
}
|
|
|
@@ -398,11 +471,23 @@ function power_to_bin(js) {
|
|
|
tmp = new DataView(buffer, length);
|
|
|
tmp.setFloat32(0,js.factor,true);
|
|
|
length += 4;
|
|
|
-
|
|
|
+
|
|
|
tmp = new DataView(buffer, length);
|
|
|
tmp.setFloat32(0,js.consump,true);
|
|
|
length += 4;
|
|
|
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setFloat32(0,js.active,true);
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setFloat32(0,js.reactive,true);
|
|
|
+ length += 4;
|
|
|
+
|
|
|
+ tmp = new DataView(buffer, length);
|
|
|
+ tmp.setUint8(0,js.ph_put,true);
|
|
|
+ length += 1;
|
|
|
+
|
|
|
tmp = new DataView(buffer, length);
|
|
|
tmp.setUint8(0,js.status,true);
|
|
|
length += 1;
|
|
|
@@ -534,17 +619,16 @@ function total_to_bin(js) {
|
|
|
tmp.setFloat32(0,js.consump,true);
|
|
|
length += 4;
|
|
|
|
|
|
- ///
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setFloat32(0,js.active,true);
|
|
|
+ tmp.setFloat32(0,js.factor,true);
|
|
|
length += 4;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setFloat32(0,js.reactive,true);
|
|
|
+ tmp.setFloat32(0,js.active,true);
|
|
|
length += 4;
|
|
|
|
|
|
tmp = new DataView(buffer, length);
|
|
|
- tmp.setFloat32(0,js.apparent,true);
|
|
|
+ tmp.setFloat32(0,js.reactive,true);
|
|
|
length += 4;
|
|
|
|
|
|
return buffer;
|
|
|
@@ -564,16 +648,6 @@ function powert_to_bin(js) {
|
|
|
|
|
|
return bin;
|
|
|
}
|
|
|
-function chall_to_bin(js) {
|
|
|
- var tmp, length=0;
|
|
|
- var bin = new ArrayBuffer(1);
|
|
|
-
|
|
|
- tmp = new DataView(bin, length);
|
|
|
- tmp.setUint8(0,js,true);
|
|
|
- length += 1;
|
|
|
-
|
|
|
- return bin;
|
|
|
-}
|
|
|
function alarmd_to_bin(js) {
|
|
|
var tmp, length=0;
|
|
|
var bin,buffer = new ArrayBuffer(1);
|
|
|
@@ -606,13 +680,9 @@ XXX.hdr = function() {
|
|
|
case PKT_TYPE.PKT_TYPE_POWER_TOTAL:
|
|
|
tmp = BIN.powert.j2b(js.powert);
|
|
|
break;
|
|
|
-
|
|
|
- case PKT_TYPE.PKT_TYPE_CH_ALL:
|
|
|
- tmp = BIN.chall.j2b(js);
|
|
|
- break;
|
|
|
|
|
|
case PKT_TYPE.PKT_TYPE_ALARM:
|
|
|
- tmp = BIN.alarm.j2b(js);
|
|
|
+ tmp = BIN.alarm.j2b(js.alarmd);
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
@@ -640,13 +710,9 @@ XXX.hdr = function() {
|
|
|
case PKT_TYPE.PKT_TYPE_POWER_TOTAL:
|
|
|
hdr.powert = BIN.powert.b2j(data);
|
|
|
break;
|
|
|
-
|
|
|
- case PKT_TYPE.PKT_TYPE_CH_ALL:
|
|
|
- hdr.chall = BIN.chall.b2j(data);
|
|
|
- break;
|
|
|
|
|
|
case PKT_TYPE.PKT_TYPE_ALARM:
|
|
|
- hdr.alarm = BIN.alarm.b2j(data);
|
|
|
+ hdr.alarmd = BIN.alarmd.b2j(data);
|
|
|
break;
|
|
|
|
|
|
default :
|
|
|
@@ -682,15 +748,6 @@ XXX.powert=function() {
|
|
|
return new bin_to_powert(bin);
|
|
|
}
|
|
|
};
|
|
|
-XXX.chall=function() {
|
|
|
- this.j2b = function (js) {
|
|
|
- return new chall_to_bin(js);
|
|
|
- }
|
|
|
-
|
|
|
- this.b2j = function (bin) {
|
|
|
- return new bin_to_chall(bin);
|
|
|
- }
|
|
|
-};
|
|
|
XXX.alarmd=function() {
|
|
|
this.j2b = function (js) {
|
|
|
return new alarmd_to_bin(js);
|
|
|
@@ -707,7 +764,6 @@ var BIN=new function() {
|
|
|
this.paras = new XXX.paras();
|
|
|
this.powerc = new XXX.powerc();
|
|
|
this.powert = new XXX.powert();
|
|
|
- this.chall = new XXX.chall();
|
|
|
this.alarmd = new XXX.alarmd();
|
|
|
}();
|
|
|
|
|
|
@@ -722,21 +778,6 @@ function LOG(){
|
|
|
|
|
|
}
|
|
|
|
|
|
-var 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_SENSOR:len++,
|
|
|
- PKT_TYPE_BREAKER:len++,
|
|
|
- PKT_TYPE_STAT:len++,
|
|
|
- PKT_TYPE_MESG:len++,
|
|
|
- PKT_TYPE_FILE:len++,
|
|
|
- }
|
|
|
-}();
|
|
|
-
|
|
|
|
|
|
function WS(url,fn) {
|
|
|
this.url = url;
|
|
|
@@ -752,7 +793,7 @@ function WS(url,fn) {
|
|
|
var his = this;
|
|
|
this.open();
|
|
|
function _open() {
|
|
|
- console.log("____ url: \n", his.url);
|
|
|
+ console.log("____url: ", his.url);
|
|
|
his.ws = new WebSocket(his.url);
|
|
|
his.ws.binaryType = 'arraybuffer';
|
|
|
his.ws.onopen = _onopen;
|