Commit cffbe981 authored by captainwong's avatar captainwong

testing

parent 7e021b01
...@@ -522,7 +522,8 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c ...@@ -522,7 +522,8 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c
case 0xBA: case 0xBA:
{ {
if (data[2] != 0x3F) { break; } if (data[2] != 0x3F) { break; }
if (len == HbComReq_RD_acct_len && memcmp(data, HbComReq_RD_acct_data, len) == 0) { if (len == HbComReq_RD_acct_len &&
memcmp(data, HbComReq_RD_acct_data, len) == 0) {
copy_data_to_com; copy_data_to_com;
return HbComReq_RD_acct; return HbComReq_RD_acct;
} }
...@@ -532,17 +533,23 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c ...@@ -532,17 +533,23 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c
{ {
if (data[2] != 0x3F) { break; } if (data[2] != 0x3F) { break; }
if (data[3] == 0x09 && data[4] == 0xA3 && len == HbComReq_A3_len) { // EB CB 3F 09 A3 P1 P2 P3 SUM if (data[3] == 0x09 &&
data[4] == 0xA3 &&
len == HbComReq_A3_len) { // EB CB 3F 09 A3 P1 P2 P3 SUM
if (hbCheckSum(data, len)) { if (hbCheckSum(data, len)) {
copy_data_to_com; copy_data_to_com;
return HbComReq_A3; return HbComReq_A3;
} }
} else if (data[3] == 0x0F && data[4] == 0x4D && len == HbComReq_WR_acct_len) { } else if (data[3] == 0x0F &&
data[4] == 0x4D &&
len == HbComReq_WR_acct_len) {
if (hbCheckSum(data, len)) { if (hbCheckSum(data, len)) {
copy_data_to_com; copy_data_to_com;
return HbComReq_WR_acct; return HbComReq_WR_acct;
} }
} else if (data[3] == 0x0E && data[4] == 0xA7 && len == HbComReq_A7_len) { // EB CB 3F 0E A7 H1 M1 H2 M2 H3 M3 H4 M4 SUM } else if (data[3] == 0x0E &&
data[4] == 0xA7 &&
len == HbComReq_A7_len) { // EB CB 3F 0E A7 H1 M1 H2 M2 H3 M3 H4 M4 SUM
if (hbCheckSum(data, len)) { if (hbCheckSum(data, len)) {
copy_data_to_com; copy_data_to_com;
return HbComReq_A7; return HbComReq_A7;
...@@ -554,7 +561,9 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c ...@@ -554,7 +561,9 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c
if (data[len - 1] == req.data[len - 1]) { return A7; } if (data[len - 1] == req.data[len - 1]) { return A7; }
}*/ }*/
else if (data[3] == 0x08 && data[4] == 0xAA && len == HbComReq_AA_len) { // EB CB 3F 08 AA P1 P2 SUM else if (data[3] == 0x08 &&
data[4] == 0xAA &&
len == HbComReq_AA_len) { // EB CB 3F 08 AA P1 P2 SUM
if (hbCheckSum(data, len)) { if (hbCheckSum(data, len)) {
copy_data_to_com; copy_data_to_com;
return HbComReq_AA; return HbComReq_AA;
...@@ -566,7 +575,9 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c ...@@ -566,7 +575,9 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c
if (data[len - 1] == req.data[len - 1]) { return AA; } if (data[len - 1] == req.data[len - 1]) { return AA; }
}*/ }*/
else if (data[3] == 0x06 && data[4] == 0xB0 && len == HbComReq_B0_len && memcmp(HbComReq_B0_data, data, len) == 0) { // EB CB 3F 06 B0 AB else if (data[3] == 0x06 && data[4] == 0xB0 &&
len == HbComReq_B0_len &&
memcmp(HbComReq_B0_data, data, len) == 0) { // EB CB 3F 06 B0 AB
copy_data_to_com; copy_data_to_com;
return HbComReq_B0; return HbComReq_B0;
} }
...@@ -576,9 +587,11 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c ...@@ -576,9 +587,11 @@ HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* c
return HbComReq_Invalid; return HbComReq_Invalid;
} }
ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseXDataRequest(const AdemcoXDataSegment* xdata, HbComData* cd) { ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseXDataRequest(const AdemcoXDataSegment* xdata,
HbComData* cd) {
if (!xdata) { return HbComReq_Invalid; } if (!xdata) { return HbComReq_Invalid; }
return hbComParseRequest((const uint8_t*)ademcoXDataGetValidContentAddr(xdata), ademcoXDataGetValidContentLen(xdata), cd); return hbComParseRequest((const uint8_t*)ademcoXDataGetValidContentAddr(xdata),
ademcoXDataGetValidContentLen(xdata), cd);
} }
HbComResponseType hbComParseResponse(const uint8_t* data, size_t len, HbComData* cd) { HbComResponseType hbComParseResponse(const uint8_t* data, size_t len, HbComData* cd) {
...@@ -703,9 +716,11 @@ HbComResponseType hbComParseResponse(const uint8_t* data, size_t len, HbComData* ...@@ -703,9 +716,11 @@ HbComResponseType hbComParseResponse(const uint8_t* data, size_t len, HbComData*
return HbComResp_Invalid; return HbComResp_Invalid;
} }
HbComResponseType hbComParseXDataResponse(const AdemcoXDataSegment* xdata, HbComData* cd) { HbComResponseType hbComParseXDataResponse(const AdemcoXDataSegment* xdata,
if (!xdata) { return HbComReq_Invalid; } HbComData* cd) {
return hbComParseResponse((const uint8_t*)ademcoXDataGetValidContentAddr(xdata), ademcoXDataGetValidContentLen(xdata), cd); if (!xdata) { return HbComResp_Invalid; }
return hbComParseResponse((const uint8_t*)ademcoXDataGetValidContentAddr(xdata),
ademcoXDataGetValidContentLen(xdata), cd);
} }
void hbComMakeReqA0_getMachineStatus(HbComData* data) { void hbComMakeReqA0_getMachineStatus(HbComData* data) {
...@@ -723,7 +738,8 @@ void hbComMakeReqA2_getMoreMachineZones(HbComData* data) { ...@@ -723,7 +738,8 @@ void hbComMakeReqA2_getMoreMachineZones(HbComData* data) {
data->len = HbComReq_A2_len; data->len = HbComReq_A2_len;
} }
void hbComMakeReqA3_modifyMachineZone(HbComData* data, uint8_t zone, HbZoneProperty prop, HbComReq_A3_op op) { void hbComMakeReqA3_modifyMachineZone(HbComData* data, uint8_t zone,
HbZoneProperty prop, HbComReq_A3_op op) {
memcpy(data->data, HbComReq_A3_head, 5); memcpy(data->data, HbComReq_A3_head, 5);
data->data[5] = zone; data->data[5] = zone;
data->data[6] = prop; data->data[6] = prop;
...@@ -762,7 +778,8 @@ void hbComMakeReqAD_getMoreMachineZoneLostConfig(HbComData* data) { ...@@ -762,7 +778,8 @@ void hbComMakeReqAD_getMoreMachineZoneLostConfig(HbComData* data) {
data->len = HbComReq_AD_len; data->len = HbComReq_AD_len;
} }
void hbComMakeReqAE_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p1, HbCom_3sec_status status) { void hbComMakeReqAE_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p1,
HbCom_3sec_status status) {
memcpy(data->data, HbComReq_AE_head, 5); memcpy(data->data, HbComReq_AE_head, 5);
data->data[5] = p1; data->data[5] = p1;
data->data[6] = status; data->data[6] = status;
...@@ -793,7 +810,9 @@ void hbComResp_A2_Iter_init(HbComResp_A2_Iter* iter, const HbComData* com) { ...@@ -793,7 +810,9 @@ void hbComResp_A2_Iter_init(HbComResp_A2_Iter* iter, const HbComData* com) {
iter->i = 0; iter->i = 0;
if (com->len > HbComResp_A2_len_min) { if (com->len > HbComResp_A2_len_min) {
iter->total = (com->len - HbComResp_A2_len_min) / 2; iter->total = (com->len - HbComResp_A2_len_min) / 2;
iter->p1 = (com->data[com->len - 2] == 0xFF) ? HbComResp_A2_p1_nomore : HbComResp_A2_p1_more; iter->p1 = (com->data[com->len - 2] == 0xFF) ?
HbComResp_A2_p1_nomore :
HbComResp_A2_p1_more;
} else { } else {
iter->total = 0; iter->total = 0;
iter->p1 = HbComResp_A2_p1_nomore; iter->p1 = HbComResp_A2_p1_nomore;
...@@ -809,7 +828,8 @@ HbComResp_A2_p1 hbComResp_A2_Iter_next(HbComResp_A2_Iter* iter, HbZoneAndPropert ...@@ -809,7 +828,8 @@ HbComResp_A2_p1 hbComResp_A2_Iter_next(HbComResp_A2_Iter* iter, HbZoneAndPropert
return HbComResp_A2_p1_more; return HbComResp_A2_p1_more;
} }
void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, HbMachineType type) { void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status,
HbMachineType type) {
memcpy(data->data, HbComResp_A0_head, 6); memcpy(data->data, HbComResp_A0_head, 6);
data->data[6] = status; data->data[6] = status;
data->data[7] = type; data->data[7] = type;
...@@ -817,7 +837,8 @@ void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, H ...@@ -817,7 +837,8 @@ void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, H
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
void hbComMakeRespA2_getMachineZones(HbComData* data, size_t count, AdemcoZone* zones, HbZoneProperty* props, HbComResp_A2_p1 p1) { void hbComMakeRespA2_getMachineZones(HbComData* data, size_t count, AdemcoZone* zones,
HbZoneProperty* props, HbComResp_A2_p1 p1) {
if (count > HbComResp_A2_max_zone) { return; } if (count > HbComResp_A2_max_zone) { return; }
memcpy(data->data, HbComResp_A2_head, 6); memcpy(data->data, HbComResp_A2_head, 6);
data->data[3] = (HbComResp_A2_len_min + count * 2) & 0xFF; data->data[3] = (HbComResp_A2_len_min + count * 2) & 0xFF;
...@@ -836,7 +857,8 @@ void hbComMakeRespA3_waitingSignal(HbComData* data) { ...@@ -836,7 +857,8 @@ void hbComMakeRespA3_waitingSignal(HbComData* data) {
data->len = HbComResp_A3_len; data->len = HbComResp_A3_len;
} }
void hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone, HbZoneProperty prop, HbComResp_A4_p3 p3) { void hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone,
HbZoneProperty prop, HbComResp_A4_p3 p3) {
memcpy(data->data, HbComResp_A4_head, 6); memcpy(data->data, HbComResp_A4_head, 6);
data->data[6] = zone & 0xFF; data->data[6] = zone & 0xFF;
data->data[7] = prop; data->data[7] = prop;
...@@ -862,7 +884,8 @@ void hbComMakeRespA8_reject(HbComData* data) { ...@@ -862,7 +884,8 @@ void hbComMakeRespA8_reject(HbComData* data) {
data->len = HbComResp_A8_len; data->len = HbComResp_A8_len;
} }
void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zone, HbComResp_AB_p2 p2) { void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zone,
HbComResp_AB_p2 p2) {
memcpy(data->data, HbComResp_AB_head, 6); memcpy(data->data, HbComResp_AB_head, 6);
data->data[6] = zone & 0xFF; data->data[6] = zone & 0xFF;
data->data[7] = p2; data->data[7] = p2;
...@@ -870,7 +893,9 @@ void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zon ...@@ -870,7 +893,9 @@ void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zon
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p1, size_t count, AdemcoZone* zones, HbComResp_AD_p2 p2) { void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p1,
size_t count, AdemcoZone* zones,
HbComResp_AD_p2 p2) {
if (count > HbComResp_AD_max_zone) { return; } if (count > HbComResp_AD_max_zone) { return; }
memcpy(data->data, HbComResp_AD_head, 6); memcpy(data->data, HbComResp_AD_head, 6);
data->data[3] = (HbComResp_AD_len_min + (p1 == HbComResp_AD_p1_single ? count : count * 2)) & 0xFF; data->data[3] = (HbComResp_AD_len_min + (p1 == HbComResp_AD_p1_single ? count : count * 2)) & 0xFF;
...@@ -889,7 +914,8 @@ void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p ...@@ -889,7 +914,8 @@ void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
void hbComMakeRespAF_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p1, HbCom_3sec_status status) { void hbComMakeRespAF_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p1,
HbCom_3sec_status status) {
memcpy(data->data, HbComResp_AF_head, 6); memcpy(data->data, HbComResp_AF_head, 6);
data->data[6] = p1; data->data[6] = p1;
data->data[7] = status; data->data[7] = status;
...@@ -897,14 +923,18 @@ void hbComMakeRespAF_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which ...@@ -897,14 +923,18 @@ void hbComMakeRespAF_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
void hbComMakeRespB1_get3SectionMachineStatus(HbComData* data, HbMachineStatus statusMachine, void hbComMakeRespB1_get3SectionMachineStatus(HbComData* data,
HbMachineStatus statusSec1, HbMachineStatus statusSec2, HbMachineStatus statusSec3) { HbMachineStatus statusMachine,
HbMachineStatus statusSec1,
HbMachineStatus statusSec2,
HbMachineStatus statusSec3) {
memcpy(data->data, HbComResp_B1_head, 6); memcpy(data->data, HbComResp_B1_head, 6);
data->data[6] = (statusMachine << 6) | (statusSec1 << 4) | (statusSec2 << 2) | (statusSec3); data->data[6] = (statusMachine << 6) | (statusSec1 << 4) | (statusSec2 << 2) | (statusSec3);
data->len = HbComResp_B1_len; data->len = HbComResp_B1_len;
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
void hbComDataToAdemcoXData(const HbComData* const data, AdemcoXDataSegment* xdata, AdemcoXDataLengthFormat xlf, AdemcoXDataTransform xtr) { void hbComDataToAdemcoXData(const HbComData* const data, AdemcoXDataSegment* xdata,
AdemcoXDataLengthFormat xlf, AdemcoXDataTransform xtr) {
ademcoMakeXData(xdata, xlf, xtr, (const char*)data->data, data->len); ademcoMakeXData(xdata, xlf, xtr, (const char*)data->data, data->len);
} }
#!/bin/bash
set -e
swig -c++ -javascript -node libademco.swig
node-gyp configure build
const assert = require('assert'); const assert = require('assert');
// windows:
const libademco = require('./build/Release/libademco_js'); const libname = process.platform === "win32" ? "libademco_js" : "ademco_js";
// linux: const libademco = require(`./build/Release/${libname}`);
// const libademco = require('./build/Release/ademco_js');
libademco.ademcoPrint("hello nodejs", "hello nodejs".length);
libademco.ademcoPrint("hello nodejs", "hello nodejs".length);
console.log(libademco);
console.log(libademco);
function test_parse() {
function test_parse() { console.log("test parse...");
console.log("test parse..."); var str = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r";
var str = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r"; var cb = libademco.new_size_tp();
var cb = libademco.new_size_tp(); var pkt = new libademco.AdemcoPacket();
var pkt = new libademco.AdemcoPacket(); var res = libademco.ademcoPacketParse(str, str.length, pkt, cb);
var res = libademco.ademcoPacketParse(str, str.length, pkt, cb); assert.strictEqual(res, libademco.RESULT_OK);
assert.strictEqual(res, libademco.RESULT_OK); assert.strictEqual(libademco.size_tp_value(cb), str.length);
assert.strictEqual(libademco.size_tp_value(cb), str.length); assert.strictEqual(pkt.crc, 0xC5C3);
assert.strictEqual(pkt.crc, 0xC5C3); assert.strictEqual(pkt.len, 0x0053);
assert.strictEqual(pkt.len, 0x0053); assert.strictEqual(pkt.id, libademco.AID_HB);
assert.strictEqual(pkt.id, libademco.AID_HB); assert.strictEqual(pkt.seq, 0);
assert.strictEqual(pkt.seq, 0); assert.strictEqual(pkt.acct, "90219125916578");
assert.strictEqual(pkt.acct, "90219125916578"); assert.strictEqual(pkt.data.ademcoId, 0);
assert.strictEqual(pkt.data.ademcoId, 0); assert.strictEqual(pkt.data.ademcoEvent, libademco.EVENT_I_AM_WIRE_MACHINE);
assert.strictEqual(pkt.data.ademcoEvent, libademco.EVENT_I_AM_WIRE_MACHINE); assert.strictEqual(pkt.data.gg, 0);
assert.strictEqual(pkt.data.gg, 0); assert.strictEqual(pkt.data.zone, 0);
assert.strictEqual(pkt.data.zone, 0); console.log("res=%d, commited=%d", res, libademco.size_tp_value(cb));
console.log("res=%d, commited=%d", res, libademco.size_tp_value(cb)); }
}
function test_pack() {
function test_pack() { console.log("test pack");
console.log("test pack"); var pkt = new libademco.AdemcoPacket();
var pkt = new libademco.AdemcoPacket(); libademco.ademcoMakeHbPacket2(pkt, 1, "861234567890", 666666, libademco.EVENT_ARM, 0, 0, null);
libademco.ademcoMakeHbPacket2(pkt, 1, "861234567890", 666666, libademco.EVENT_ARM, 0, 0, null); console.log("len=%d", pkt.raw_len);
console.log("len=%d", pkt.raw_len); libademco.ademcoPrint(pkt.raw, pkt.raw_len);
libademco.ademcoPrint(pkt.raw, pkt.raw_len);
console.log("test parse packed data");
console.log("test parse packed data"); var pkt2 = new libademco.AdemcoPacket();
var pkt2 = new libademco.AdemcoPacket(); var cb = libademco.new_size_tp();
var cb = libademco.new_size_tp(); var res = libademco.ademcoPacketParse(pkt.raw, pkt.raw_len, pkt2, cb);
var res = libademco.ademcoPacketParse(pkt.raw, pkt.raw_len, pkt2, cb); assert.strictEqual(res, libademco.RESULT_OK);
assert.strictEqual(res, libademco.RESULT_OK); assert.strictEqual(libademco.size_tp_value(cb), pkt.raw_len);
assert.strictEqual(libademco.size_tp_value(cb), pkt.raw_len); assert.strictEqual(pkt2.id, libademco.AID_HB);
assert.strictEqual(pkt2.id, libademco.AID_HB); assert.strictEqual(pkt2.seq, 1);
assert.strictEqual(pkt2.seq, 1); assert.strictEqual(pkt2.acct, "861234567890");
assert.strictEqual(pkt2.acct, "861234567890"); assert.strictEqual(pkt2.data.ademcoId, 666666);
assert.strictEqual(pkt2.data.ademcoId, 666666); assert.strictEqual(pkt2.data.ademcoEvent, libademco.EVENT_ARM);
assert.strictEqual(pkt2.data.ademcoEvent, libademco.EVENT_ARM); assert.strictEqual(pkt2.data.gg, 0);
assert.strictEqual(pkt2.data.gg, 0); assert.strictEqual(pkt2.data.zone, 0);
assert.strictEqual(pkt2.data.zone, 0); }
}
class AlarmHost {
class AlarmHost {
constructor(socket) {
constructor(socket) { this.socket = socket;
this.socket = socket; this.address = socket.address().address;
this.address = socket.address().address; this.port = socket.address().port;
this.port = socket.address().port; this.buf = null;
this.buf = null; this.inpkt = new libademco.AdemcoPacket();
this.inpkt = new libademco.AdemcoPacket(); this.outpkt = new libademco.AdemcoPacket();
this.outpkt = new libademco.AdemcoPacket(); this.cb = libademco.new_size_tp();
this.cb = libademco.new_size_tp(); this.ademcoId = 0;
this.ademcoId = 0; this.acct = '';
this.acct = ''; this.seq = 1;
this.seq = 1;
socket.on('data', (chunk) => {
socket.on('data', (chunk) => { if (this.buf) {
if (this.buf) { chunk = Buffer.concat([this.buf, chunk]);
chunk = Buffer.concat([this.buf, chunk]); }
}
let res = libademco.ademcoPacketParse(chunk.toString(), chunk.length, this.inpkt, this.cb);
let res = libademco.ademcoPacketParse(chunk.toString(), chunk.length, this.inpkt, this.cb); while (res === libademco.RESULT_OK) {
while (res === libademco.RESULT_OK) { chunk = chunk.slice(libademco.size_tp_value(this.cb));
chunk = chunk.slice(libademco.size_tp_value(this.cb)); this.handleMsg();
this.handleMsg(); res = libademco.ademcoPacketParse(chunk.toString(), chunk.length, this.inpkt, this.cb);
res = libademco.ademcoPacketParse(chunk.toString(), chunk.length, this.inpkt, this.cb); }
}
if (res === libademco.RESULT_ERROR) {
if (res === libademco.RESULT_ERROR) { chunk = null;
chunk = null; }
}
this.buf = chunk;
this.buf = chunk; });
});
socket.on('close', (error) => {
socket.on('close', (error) => { console.log(this.tag() + ' disconnected, hadError=' + error);
console.log(this.tag() + ' disconnected, hadError=' + error); });
});
console.log(this.tag() + ' connectd');
console.log(this.tag() + ' connectd'); }
}
handleMsg() {
handleMsg() { console.log(this.tag() + ':');
console.log(this.tag() + ':'); libademco.ademcoPrint(this.inpkt.raw, this.inpkt.raw_len);
libademco.ademcoPrint(this.inpkt.raw, this.inpkt.raw_len);
switch (this.inpkt.id) {
switch (this.inpkt.id) { case libademco.AID_NULL:
case libademco.AID_NULL: this.acct = this.inpkt.acct;
this.acct = this.inpkt.acct; this.sendAck(this.inpkt.seq);
this.sendAck(this.inpkt.seq); break;
break;
case libademco.AID_HB:
case libademco.AID_HB: case libademco.AID_ADM_CID:
case libademco.AID_ADM_CID: this.acct = this.inpkt.acct;
this.acct = this.inpkt.acct; this.ademcoId = this.inpkt.data.ademcoId;
this.ademcoId = this.inpkt.data.ademcoId; this.sendAck(this.inpkt.seq);
this.sendAck(this.inpkt.seq); break;
break;
}
}
}
}
tag() {
tag() { var str = this.address + ':' + this.port;
var str = this.address + ':' + this.port; if (this.acct) {
if (this.acct) { str += ' acct=' + this.acct;
str += ' acct=' + this.acct; }
} if (this.ademcoId) {
if (this.ademcoId) { str += ' ademco_id=' + this.ademcoId;
str += ' ademco_id=' + this.ademcoId; }
} return str;
return str; }
}
sendAck(seq) {
sendAck(seq) { libademco.ademcoMakeAckPacket2(this.outpkt, seq, this.acct, this.ademcoId);
libademco.ademcoMakeAckPacket2(this.outpkt, seq, this.acct, this.ademcoId); console.log('server reply:');
console.log('server reply:'); libademco.ademcoPrint(this.outpkt.raw, this.outpkt.raw_len);
libademco.ademcoPrint(this.outpkt.raw, this.outpkt.raw_len); this.socket.write(Buffer.from(this.outpkt.raw, this.outpkt.raw_len));
this.socket.write(Buffer.from(this.outpkt.raw, this.outpkt.raw_len)); }
}
}
}
function simpleServer(host, port) {
function simpleServer(host, port) { const net = require('net');
const net = require('net'); const server = net.createServer();
const server = net.createServer();
server.on('error', (error) => {
server.on('error', (error) => { console.log(`server error: ${error}`);
console.log(`server error: ${error}`); });
});
server.on('listening', () => {
server.on('listening', () => { console.log(`server running at ${host}:${port}...`);
console.log(`server running at ${host}:${port}...`);
server.on('connection', (socket) => {
server.on('connection', (socket) => { new AlarmHost(socket);
new AlarmHost(socket); });
}); });
});
server.listen(port, host);
server.listen(port, host); }
}
test_parse();
test_parse(); test_pack();
test_pack();
simpleServer("0.0.0.0", 12345);
simpleServer("0.0.0.0", 12345);
#/bin/bash #!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
rm -rf linux_java rm -rf linux_java
rm -rf mac_java rm -rf mac_java
......
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
if [ $# -ne 1 ]; then
dst_name=linux_node
else
dst_name=$1
fi
rm -rf ${dst_name} ${dst_name}.zip
mkdir -p ${dst_name}/build/Release
cd ${dst_name}
cp -r ../../swig/build/Release/ademco_js.node ./build/Release/
cp ../../swig/nodejs-demo.js .
zip -r ../${dst_name}.zip . *
cd ..
rm -rf ${dst_name}/
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
./clean.sh
./examples.bat
mkdir -p dist/examples/x86
cp "/h/dev/AlarmCenterTestTools/Release/直连型主机模拟器V1.15.exe" dist/examples/x86/
cp "/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x86-release-dll-ipv6-sspi-schannel/bin/libcurl.dll" dist/examples/x86/
cp ../examples/Win32/Release/server_demo.exe dist/examples/x86/
cp ../examples/Release/httprelay.exe dist/examples/x86/
cp ../examples/Release/ademco.dll dist/examples/x86/
cp ../examples/Release/ademco.lib dist/examples/x86/
./examples_x64.bat
mkdir -p dist/examples/x64
cp ../examples/x64/Release/server_demo_x64.exe dist/examples/x64/
cp ../examples/x64/Release/ademco.dll dist/examples/x64/
cp ../examples/x64/Release/ademco.lib dist/examples/x64/
cp ../examples/x64/Release/httprelay.exe dist/examples/x64/
cp "/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x64-release-dll-ipv6-sspi-schannel/bin/libcurl.dll" dist/examples/x64/
rm -f dist/examples.zip
cd dist/examples
zip -r ../examples.zip . *
cd ..
rm -rf examples
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
ssh -t ${LINUX_TARGET} <<EOF
cd ${LINUX_PROJECT_PATH}
git checkout ${PROJECT_BRANCH}
git reset --hard HEAD
git pull origin ${PROJECT_BRANCH}
cd swig
export JAVA_HOME=${LINUX_JAVA_HOME}
./linux_java.sh
cd ../tools
./linux_java.sh
EOF
scp ${LINUX_TARGET}:${LINUX_PROJECT_PATH}/tools/linux_java.zip ./dist/linux_java.zip
ssh -t ${LINUX_TARGET} "rm -f ${LINUX_PROJECT_PATH}/tools/linux_java.zip"
\ No newline at end of file
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
ssh -t ${LINUX_TARGET} <<EOF
cd ${LINUX_PROJECT_PATH}
git checkout ${PROJECT_BRANCH}
git reset --hard HEAD
git pull origin ${PROJECT_BRANCH}
cd swig
./linux_mac_node.sh
cd ../tools
./linux_mac_node.sh
EOF
scp ${LINUX_TARGET}:${LINUX_PROJECT_PATH}/tools/linux_node.zip ./dist/linux_node.zip
ssh -t ${LINUX_TARGET} "rm -f ${LINUX_PROJECT_PATH}/tools/linux_node.zip"
\ No newline at end of file
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
ssh -t ${MACOS_TARGET} <<EOF
cd ${MACOS_PROJECT_PATH}
git checkout ${PROJECT_BRANCH}
git reset --hard HEAD
git pull origin ${PROJECT_BRANCH}
cd swig
./mac_java.sh
cd ../tools
./mac_java.sh
EOF
scp ${MACOS_TARGET}:${MACOS_PROJECT_PATH}/tools/mac_java.zip .
ssh -t ${MACOS_TARGET} "rm -f ${MACOS_PROJECT_PATH}/tools/mac_java.zip"
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
ssh -t ${MACOS_TARGET} <<EOF
cd ${LINUX_PROJECT_PATH}
git checkout ${PROJECT_BRANCH}
git reset --hard HEAD
git pull origin ${PROJECT_BRANCH}
cd swig
./linux_mac_node.sh
cd ../tools
./linux_mac_node.sh mac_node
EOF
scp ${MACOS_TARGET}:${LINUX_PROJECT_PATH}/tools/mac_node.zip ./dist/mac_node.zip
ssh -t ${MACOS_TARGET} "rm -f ${LINUX_PROJECT_PATH}/tools/mac_node.zip"
\ No newline at end of file
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
./clean.sh
./win_csharp.bat
mkdir -p dist/win_csharp
cp -r ../swig/com/ dist/win_csharp/
cp ../swig/*.cs dist/win_csharp/
cp ../swig/*.dll dist/win_csharp/
cp ../swig/*.exe dist/win_csharp/
rm -f dist/win_csharp.zip
cd dist/win_csharp
zip -r ../win_csharp.zip . *
cd ..
rm -rf win_csharp
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
./clean.sh
./win_java.bat
mkdir -p dist/win_java
cp -r ../swig/com/ dist/win_java/
rm -f dist/win_java/com/hb3344/ademco/*.class
cp ../swig/*.java dist/win_java/
cp ../swig/*.dll dist/win_java/
rm -f dist/win_java.zip
cd dist/win_java
zip -r ../win_java.zip . *
cd ..
rm -rf win_java
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
./clean.sh
mkdir -p win_node
./win_node.bat
cp -r ../swig/build/ win_node/
cp ../swig/nodejs-demo.js win_node/
rm -f win_node.zip
cd win_node
zip -r ../win_node.zip . *
cd ..
rm -rf win_node/
#!/bin/bash #!/bin/bash
branch=master set -e
# examples CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
./clean.sh cd $CURRENT_DIR
./examples.bat
./examples_x64.bat if [ $# -ne 1 ]; then
mkdir examples export PROJECT_BRANCH=master
mkdir examples/x86 else
mkdir examples/x64 export PROJECT_BRANCH=$1
cp "/h/dev/AlarmCenterTestTools/Release/直连型主机模拟器V1.13.exe" examples/x86/ fi
cp "/g/dev_libs/libevent-2.1.12-stable-install/lib/event_core.dll" examples/x86/
cp "/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x86-release-dll-ipv6-sspi-schannel/bin/libcurl.dll" examples/x86/ export LINUX_TARGET=root@192.168.2.107
cp ../examples/Win32/Release/server_demo.exe examples/x86/ export LINUX_PROJECT_PATH=/root/projects/ademco_hb
cp ../examples/Release/httprelay.exe examples/x86/ export LINUX_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
cp ../examples/Release/ademco.dll examples/x86/ export MACOS_TARGET=jack@JackMacBook-Pro.local
cp ../examples/Release/ademco.lib examples/x86/ export MACOS_PROJECT_PATH=/Users/jack/projects/ademco_hb
cp ../examples/x64/Release/server_demo_x64.exe examples/x64/ export MACOS_JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
cp ../examples/x64/Release/ademco.dll examples/x64/
cp ../examples/x64/Release/ademco.lib examples/x64/ rm -rf dist
cp ../examples/x64/Release/httprelay.exe examples/x64/ mkdir -p dist
cp "/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x64-release-dll-ipv6-sspi-schannel/bin/libcurl.dll" examples/x64/
rm -f examples.zip # examples
cd examples ./mk_examples.sh
zip -r ../examples.zip . *
cd .. # win-java
rm -rf examples ./mk_win_java.sh
# win-java # win-c#
./clean.sh ./mk_win_csharp.sh
./win_java.bat
mkdir -p win_java # ubuntu20.04 java
cp -r ../swig/com/ win_java/ ./mk_linux_java.sh
rm -f win_java/com/hb3344/ademco/*.class
cp ../swig/*.java win_java/ # macOS java
cp ../swig/*.dll win_java/ ./mk_macos_java.sh
rm -f win_java.zip
cd win_java # win-node
zip -r ../win_java.zip . * ./mk_win_node.sh
cd ..
rm -rf win_java # linux-node
./mk_linux_node.sh
# win-c#
./clean.sh
./win_csharp.bat
mkdir -p win_csharp
cp -r ../swig/com/ win_csharp/
cp ../swig/*.cs win_csharp/
cp ../swig/*.dll win_csharp/
cp ../swig/*.exe win_csharp/
rm -f win_csharp.zip
cd win_csharp
zip -r ../win_csharp.zip . *
cd ..
rm -rf win_csharp
# ubuntu20.04 java
ssh -t root@192.168.2.107 "cd /root/projects/ademco_hb && git checkout ${branch} && git reset --hard HEAD && git pull origin ${branch} && cd swig && export JAVA_HOME='/usr/lib/jvm/java-8-openjdk-amd64' && ./linux_java.sh && cd ../tools && ./linux_java.sh"
scp root@192.168.2.107:/root/projects/ademco_hb/tools/linux_java.zip .
ssh -t root@192.168.2.107 "rm -f /root/projects/ademco_hb/tools/linux_java.zip"
# macOS java
ssh -t jack@JackMacBook-Pro.local "cd /Users/jack/projects/ademco_hb && git checkout ${branch} && git reset --hard HEAD && git pull origin ${branch} && cd swig && ./mac_java.sh && cd ../tools && ./mac_java.sh"
scp jack@JackMacBook-Pro.local:/Users/jack/projects/ademco_hb/tools/mac_java.zip .
ssh -t jack@JackMacBook-Pro.local "rm -f /Users/jack/projects/ademco_hb/tools/mac_java.zip"
# win-node
./clean.sh
mkdir -p win_node
./win_node.bat
cp -r ../swig/build/ win_node/
cp ../swig/nodejs-demo.js win_node/
rm -f win_node.zip
cd win_node
zip -r ../win_node.zip . *
cd ..
rm -rf win_node/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment