Commit 189eb122 authored by captainwong's avatar captainwong

update

parent dfb828a6
......@@ -26,7 +26,7 @@
#define dline dprintf("%s %d\n", __FILE__, __LINE__);
#define dmsg dline; dprintf
void ademcoPrint(const char* p, size_t len)
void ademcoPrint(const char_t* p, size_t len)
{
while (len--) {
if (isprint(*(const uint8_t*)p)) {
......@@ -334,7 +334,7 @@ static const uint16_t crc16Table[256] = {
0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040,
};
uint16_t ademcoCRC16(const char* buff, size_t len)
uint16_t ademcoCRC16(const char_t* buff, size_t len)
{
uint16_t crc = 0;
while (len--) {
......@@ -343,7 +343,7 @@ uint16_t ademcoCRC16(const char* buff, size_t len)
return crc;
}
size_t ademcoAppendDataSegment(char* buff, AdemcoId ademcoId, AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone)
size_t ademcoAppendDataSegment(char_t* buff, AdemcoId ademcoId, AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone)
{
char* p = (char*)buff;
if (ademcoEvent == EVENT_INVALID_EVENT) {
......@@ -399,7 +399,7 @@ size_t ademcoAppendDataSegment2(AdemcoDataSegment* dataSegment, AdemcoId ademcoI
return dataSegment->raw_len = ademcoAppendDataSegment(dataSegment->raw, ademcoId, ademcoEvent, gg, zone);
}
AdemcoParseResult ademcoParseDataSegment(const char* packet, size_t packet_len, AdemcoDataSegment* dataSegment)
AdemcoParseResult ademcoParseDataSegment(const char_t* packet, size_t packet_len, AdemcoDataSegment* dataSegment)
{
if (packet_len == ADEMCO_PACKET_DATA_SEGMENT_EMPTY_LEN && packet[0] == '[' && packet[1] == ']') {
memset(dataSegment, 0, sizeof(*dataSegment));
......@@ -452,7 +452,7 @@ AdemcoParseResult ademcoParseDataSegment(const char* packet, size_t packet_len,
return RESULT_ERROR;
}
size_t ademcoDataSegmentToCongwinFe100(char* fe100, const AdemcoDataSegment* dataSegment)
size_t ademcoDataSegmentToCongwinFe100(char_t* fe100, const AdemcoDataSegment* dataSegment)
{
if (dataSegment->raw_len == ADEMCO_PACKET_DATA_SEGMENT_EMPTY_LEN) {
return 0;
......@@ -584,7 +584,7 @@ size_t ademcoXDataCopy(AdemcoXDataSegment* dst, const AdemcoXDataSegment* src)
return 0;
}
int ademcoMakeXData(AdemcoXDataSegment* xdata, AdemcoXDataLengthFormat xlf, AdemcoXDataTransform xtr, const char* content, size_t len)
int ademcoMakeXData(AdemcoXDataSegment* xdata, AdemcoXDataLengthFormat xlf, AdemcoXDataTransform xtr, const char_t* content, size_t len)
{
char transformed[ADEMCO_PACKET_XDATA_MAX_LEN];
size_t translen;
......@@ -674,7 +674,7 @@ static void getNowTimestamp(char* buff)
tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900);
}
size_t ademcoMakeEmptyDataPacket(char* dst_buff, size_t len, const char* id, uint16_t seq, const char* acct, AdemcoId ademcoId)
size_t ademcoMakeEmptyDataPacket(char_t* dst_buff, size_t len, const char* id, uint16_t seq, const char* acct, AdemcoId ademcoId)
{
uint8_t buff[ADEMCO_PACKET_MAX_LEN];
uint8_t* p = buff;
......@@ -724,22 +724,22 @@ size_t ademcoMakeEmptyDataPacket(char* dst_buff, size_t len, const char* id, uin
}
}
size_t ademcoMakeNullPacket(char* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId)
size_t ademcoMakeNullPacket(char_t* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId)
{
return ademcoMakeEmptyDataPacket(buff, len, ADEMCO_PACKET_ID_NULL, seq, acct, ademcoId);
}
size_t ademcoMakeAckPacket(char* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId)
size_t ademcoMakeAckPacket(char_t* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId)
{
return ademcoMakeEmptyDataPacket(buff, len, ADEMCO_PACKET_ID_ACK, seq, acct, ademcoId);
}
size_t ademcoMakeNakPacket(char* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId)
size_t ademcoMakeNakPacket(char_t* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId)
{
return ademcoMakeEmptyDataPacket(buff, len, ADEMCO_PACKET_ID_NAK, seq, acct, ademcoId);
}
size_t ademcoMakeHbPacket(char* dst_buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId,
size_t ademcoMakeHbPacket(char_t* dst_buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId,
AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone, const AdemcoXDataSegment* xdata)
{
char buff[ADEMCO_PACKET_MAX_LEN];
......@@ -846,7 +846,7 @@ size_t ademcoMakeHbPacket2(AdemcoPacket* pkt, uint16_t seq, const char* acct, Ad
return pkt->raw_len = ademcoMakeHbPacket(pkt->raw, sizeof(pkt->raw), seq, acct, ademcoId, ademcoEvent, gg, zone, xdata);
}
AdemcoParseResult ademcoPacketParse(const char* buff, size_t len, AdemcoPacket* pkt, size_t* cb_commited)
AdemcoParseResult ademcoPacketParse(const char_t* buff, size_t len, AdemcoPacket* pkt, size_t* cb_commited)
{
if (len < 9) { return RESULT_NOT_ENOUGH; }
do{
......@@ -1006,7 +1006,7 @@ AdemcoParseResult ademcoPacketParse(const char* buff, size_t len, AdemcoPacket*
return RESULT_ERROR;
}
size_t ademcoHiLoArrayToDecStr(char* str, const uint8_t* arr, size_t len)
size_t ademcoHiLoArrayToDecStr(char_t* str, const uint8_t* arr, size_t len)
{
char* p = str;
for (size_t i = 0; i < len; i++) {
......
......@@ -35,6 +35,12 @@
extern "C" {
#endif
#ifdef SWIG
#define char_t uint8_t
#else
#define char_t char
#endif
#define ADEMCO_OK 0
#define ADEMCO_ERR -1
......@@ -281,7 +287,7 @@ typedef enum AdemcoParseResult {
// 安定宝协议data段
typedef struct AdemcoDataSegment {
char raw[ADEMCO_PACKET_DATA_SEGMENT_FULL_LEN_MAX];
char_t raw[ADEMCO_PACKET_DATA_SEGMENT_FULL_LEN_MAX];
size_t raw_len;
AdemcoId ademcoId;
AdemcoEvent ademcoEvent;
......@@ -301,7 +307,7 @@ typedef enum AdemcoXDataTransform {
typedef struct AdemcoXDataSegment {
AdemcoXDataLengthFormat lenghFormat;
char raw[ADEMCO_PACKET_XDATA_MAX_LEN];
char_t raw[ADEMCO_PACKET_XDATA_MAX_LEN];
size_t raw_len;
}AdemcoXDataSegment;
......@@ -343,7 +349,7 @@ typedef struct AdemcoPacket {
AdemcoXDataSegment xdata;
time_t timestamp;
char raw[ADEMCO_PACKET_MAX_LEN];
char_t raw[ADEMCO_PACKET_MAX_LEN];
size_t raw_len;
}AdemcoPacket;
......@@ -351,7 +357,7 @@ typedef struct AdemcoPacket {
//////////////////////// Functions ////////////////////////
//! print as HEX
ADEMCO_EXPORT_SYMBOL void ademcoPrint(const char* buff, size_t len);
ADEMCO_EXPORT_SYMBOL void ademcoPrint(const char_t* buff, size_t len);
//////////////////////// AdemcoEvent functions ////////////////////////
......@@ -373,13 +379,13 @@ ADEMCO_EXPORT_SYMBOL const char* ademcoEventToStringChinese(AdemcoEvent ademcoEv
//////////////////////// AdemcoDataSegment functions ////////////////////////
//! make a `DATA` packet and store to `packet`, return length
ADEMCO_EXPORT_SYMBOL size_t ademcoAppendDataSegment(char* packet, AdemcoId ademcoId, AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone);
ADEMCO_EXPORT_SYMBOL size_t ademcoAppendDataSegment(char_t* packet, AdemcoId ademcoId, AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone);
//! make a `DATA` packet and store to `dataSegment`, return length
ADEMCO_EXPORT_SYMBOL size_t ademcoAppendDataSegment2(AdemcoDataSegment* dataSegment, AdemcoId ademcoId, AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone);
//! parse `DATA` packet, if ok, `dataSegment`'s members will be useful
ADEMCO_EXPORT_SYMBOL AdemcoParseResult ademcoParseDataSegment(const char* packet, size_t packet_len, AdemcoDataSegment* dataSegment);
ADEMCO_EXPORT_SYMBOL AdemcoParseResult ademcoParseDataSegment(const char_t* packet, size_t packet_len, AdemcoDataSegment* dataSegment);
// return 0 for empty packet, CONGWIN_FE100_PACKET_LEN for success
ADEMCO_EXPORT_SYMBOL size_t ademcoDataSegmentToCongwinFe100(char* fe100, const AdemcoDataSegment* dataSegment);
ADEMCO_EXPORT_SYMBOL size_t ademcoDataSegmentToCongwinFe100(char_t* fe100, const AdemcoDataSegment* dataSegment);
//////////////////////// AdemcoXDataSegment functions ////////////////////////
......@@ -399,7 +405,7 @@ ADEMCO_EXPORT_SYMBOL int ademcoXDataMemcmp(const AdemcoXDataSegment* xdata, cons
// copy xdata content from src to dst, return copied length = src.raw_len
ADEMCO_EXPORT_SYMBOL size_t ademcoXDataCopy(AdemcoXDataSegment* dst, const AdemcoXDataSegment* src);
// return ADEMCO_OK for success, return ADEMCO_ERR for len is too long
ADEMCO_EXPORT_SYMBOL int ademcoMakeXData(AdemcoXDataSegment* xdata, AdemcoXDataLengthFormat xlf, AdemcoXDataTransform xtr, const char* content, size_t len);
ADEMCO_EXPORT_SYMBOL int ademcoMakeXData(AdemcoXDataSegment* xdata, AdemcoXDataLengthFormat xlf, AdemcoXDataTransform xtr, const char_t* content, size_t len);
//////////////////////// AdemcoPacketId functions ////////////////////////
......@@ -414,11 +420,11 @@ ADEMCO_EXPORT_SYMBOL const char* admecoPacketIdToString(AdemcoPacketId id);
* otherwise return 0
*/
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeEmptyDataPacket(char* dst_buff, size_t len, const char* id, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeNullPacket(char* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeAckPacket(char* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeNakPacket(char* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeHbPacket(char* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId,
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeEmptyDataPacket(char_t* dst_buff, size_t len, const char* id, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeNullPacket(char_t* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeAckPacket(char_t* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeNakPacket(char_t* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId);
ADEMCO_EXPORT_SYMBOL size_t ademcoMakeHbPacket(char_t* buff, size_t len, uint16_t seq, const char* acct, AdemcoId ademcoId,
AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone, const AdemcoXDataSegment* xdata);
// like upper funcs, store buff and len to pkt->raw, pkt->raw_len
......@@ -429,8 +435,7 @@ ADEMCO_EXPORT_SYMBOL size_t ademcoMakeHbPacket2(AdemcoPacket* pkt, uint16_t seq,
AdemcoEvent ademcoEvent, AdemcoGG gg, AdemcoZone zone, const AdemcoXDataSegment* xdata);
//! parse a ademco packet, if everything is OK, cb_commited is the packet length
ADEMCO_EXPORT_SYMBOL AdemcoParseResult ademcoPacketParse(const char* buff, size_t len, AdemcoPacket* pkt, size_t* cb_commited);
ADEMCO_EXPORT_SYMBOL AdemcoParseResult ademcoPacketParse(const char_t* buff, size_t len, AdemcoPacket* pkt, size_t* cb_commited);
/* CRC16 implementation according to ARC
* Name : CRC-16/ARC
......@@ -443,7 +448,7 @@ ADEMCO_EXPORT_SYMBOL AdemcoParseResult ademcoPacketParse(const char* buff, size_
* Xor constant to output CRC : 0x0000
* Output for "123456789" : 0xBB3D
*/
ADEMCO_EXPORT_SYMBOL uint16_t ademcoCRC16(const char* buff, size_t len);
ADEMCO_EXPORT_SYMBOL uint16_t ademcoCRC16(const char_t* buff, size_t len);
// 将一串以高低字节表示的十六进制数组转换为10进制数字符串
// 每个字节的高四位和低四位若不大于9,将该四位表示的数字以10进制ascii码填入str,否则停止
......@@ -451,7 +456,7 @@ ADEMCO_EXPORT_SYMBOL uint16_t ademcoCRC16(const char* buff, size_t len);
// 注意:函数不会在str末尾补 null terminator
// 调用者应确保str有足够空间,至少len的2倍,否则会崩溃
// 示例:输入数组:0x18 0x24 0x08 0x88 0x10 0x1f 0xff,输出字符串"18240888101"
ADEMCO_EXPORT_SYMBOL size_t ademcoHiLoArrayToDecStr(char* str, const uint8_t* arr, size_t len);
ADEMCO_EXPORT_SYMBOL size_t ademcoHiLoArrayToDecStr(char_t* str, const uint8_t* arr, size_t len);
// 将一个10进制数字符串转为高低字节表示的数组,节省空间
// str应只包含'0'~'9',否则失败返回0
......
......@@ -22,11 +22,11 @@ namespace CSharpDemo
Console.WriteLine("test parse");
string str = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r";
byte[] raw = Encoding.ASCII.GetBytes(str);
SWIGTYPE_p_int cb = libademco.new_intp();
SWIGTYPE_p_size_t cb = libademco.new_size_tp();
AdemcoPacket pkt = new AdemcoPacket();
AdemcoParseResult res = libademco.ademcoPacketParse(raw, raw.Length, pkt, cb);
AdemcoParseResult res = libademco.ademcoPacketParse(raw, (uint)raw.Length, pkt, cb);
Debug.Assert(res == AdemcoParseResult.RESULT_OK);
Debug.Assert(libademco.intp_value(cb) == str.Length);
Debug.Assert(libademco.size_tp_value(cb) == (uint)str.Length);
Debug.Assert(pkt.crc == 0xC5C3);
Debug.Assert(pkt.len == 0x0053);
Debug.Assert(pkt.id == AdemcoPacketId.AID_HB);
......@@ -36,24 +36,24 @@ namespace CSharpDemo
Debug.Assert(pkt.data.ademcoEvent == AdemcoEvent.EVENT_I_AM_WIRE_MACHINE);
Debug.Assert(pkt.data.gg == 0);
Debug.Assert(pkt.data.zone == 0);
Console.WriteLine("res={0:D}, commited={1:D}", res, libademco.intp_value(cb));
Console.WriteLine("res={0:D}, commited={1:D}", res, libademco.size_tp_value(cb));
}
// test pack
{
Console.WriteLine("test pack");
byte[] buff = new byte[1024];
int len = libademco.ademcoMakeHbPacket(buff, 1024, 1, "861234567890", 666666, AdemcoEvent.EVENT_ARM, 0, 0, null);
uint len = libademco.ademcoMakeHbPacket(buff, 1024, 1, "861234567890", 666666, AdemcoEvent.EVENT_ARM, 0, 0, null);
Debug.Assert(len > 0);
Console.WriteLine("len={0:D}", len);
libademco.ademcoPrint(buff, len);
Console.WriteLine("test parse packed data");
AdemcoPacket pkt = new AdemcoPacket();
SWIGTYPE_p_int cb = libademco.new_intp();
SWIGTYPE_p_size_t cb = libademco.new_size_tp();
AdemcoParseResult res = libademco.ademcoPacketParse(buff, len, pkt, cb);
Debug.Assert(res == AdemcoParseResult.RESULT_OK);
Debug.Assert(libademco.intp_value(cb) == len);
Debug.Assert(libademco.size_tp_value(cb) == len);
Debug.Assert(pkt.id == AdemcoPacketId.AID_HB);
Debug.Assert(pkt.seq == 1);
Debug.Assert(pkt.acct == "861234567890");
......@@ -68,7 +68,7 @@ namespace CSharpDemo
{
Console.WriteLine("test pack, buff not enough");
Byte[] buff = new Byte[10];
int len = libademco.ademcoMakeHbPacket(buff, 10, 1, "861234567890", 666666, AdemcoEvent.EVENT_ARM, 0, 0, null);
uint len = libademco.ademcoMakeHbPacket(buff, 10, 1, "861234567890", 666666, AdemcoEvent.EVENT_ARM, 0, 0, null);
Debug.Assert(len == 0);
}
......@@ -120,7 +120,7 @@ namespace CSharpDemo
TcpClient client = (TcpClient)cli;
NetworkStream stream = client.GetStream();
AdemcoPacket pkt = new AdemcoPacket();
SWIGTYPE_p_int cb = libademco.new_intp();
SWIGTYPE_p_size_t cb = libademco.new_size_tp();
byte[] buff = new byte[0];
int nread = 0;
uint ademco_id = 0;
......@@ -146,11 +146,11 @@ namespace CSharpDemo
AdemcoParseResult res = AdemcoParseResult.RESULT_OK;
while(res == AdemcoParseResult.RESULT_OK){
res = libademco.ademcoPacketParse(buff, buff.Length, pkt, cb);
res = libademco.ademcoPacketParse(buff, (uint)buff.Length, pkt, cb);
switch(res){
case AdemcoParseResult.RESULT_OK:
Console.Write("C:"); libademco.ademcoPrint(buff, libademco.intp_value(cb));
buff = eat(buff, libademco.intp_value(cb));
Console.Write("C:"); libademco.ademcoPrint(buff, libademco.size_tp_value(cb));
buff = eat(buff, (int)libademco.size_tp_value(cb));
switch (pkt.id)
{
case AdemcoPacketId.AID_NULL:
......@@ -192,18 +192,18 @@ namespace CSharpDemo
static void replyAck(NetworkStream stream, ushort seq, string acct){
byte[] buff = new byte[1024];
int len = libademco.ademcoMakeAckPacket(buff, 1024, seq, acct, 0);
uint len = libademco.ademcoMakeAckPacket(buff, 1024, seq, acct, 0);
Console.Write("S:");
libademco.ademcoPrint(buff, len);
stream.Write(buff, 0, len);
stream.Write(buff, 0, (int)len);
}
static void sendArm(NetworkStream stream, ushort seq, string acct, uint ademcoId){
byte[] buff = new byte[1024];
int len = libademco.ademcoMakeHbPacket(buff, 1024, seq, acct, ademcoId, AdemcoEvent.EVENT_ARM, 0, 0, null);
uint len = libademco.ademcoMakeHbPacket(buff, 1024, seq, acct, ademcoId, AdemcoEvent.EVENT_ARM, 0, 0, null);
Console.Write("S:");
libademco.ademcoPrint(buff, len);
stream.Write(buff, 0, len);
stream.Write(buff, 0, (int)len);
}
static void sendDisarm(NetworkStream stream, ushort seq, string acct, uint ademcoId, string pwd){
......@@ -211,12 +211,12 @@ namespace CSharpDemo
AdemcoXDataSegment xdata = null;
if(!string.IsNullOrEmpty(pwd)){
xdata = new AdemcoXDataSegment();
libademco.ademcoMakeXData(xdata, AdemcoXDataLengthFormat.TWO_HEX, AdemcoXDataTransform.AdemcoXDataTransform_as_is, Encoding.ASCII.GetBytes(pwd), pwd.Length);
libademco.ademcoMakeXData(xdata, AdemcoXDataLengthFormat.TWO_HEX, AdemcoXDataTransform.AdemcoXDataTransform_as_is, Encoding.ASCII.GetBytes(pwd), (uint)pwd.Length);
}
int len = libademco.ademcoMakeHbPacket(buff, 1024, seq, acct, ademcoId, AdemcoEvent.EVENT_DISARM, 0, 0, xdata);
uint len = libademco.ademcoMakeHbPacket(buff, 1024, seq, acct, ademcoId, AdemcoEvent.EVENT_DISARM, 0, 0, xdata);
Console.Write("S:");
libademco.ademcoPrint(buff, len);
stream.Write(buff, 0, len);
stream.Write(buff, 0, (int)len);
}
}
}
......@@ -85,12 +85,12 @@ public class JavaDemo {
String data = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r";
System.out.println("using data=" + data);
AdemcoPacket pkt = new AdemcoPacket();
SWIGTYPE_p_int cb = libademco.new_intp();
SWIGTYPE_p_size_t cb = libademco.new_size_tp();
AdemcoParseResult res = libademco.ademcoPacketParse(data.getBytes(), data.length(), pkt, cb);
assert(res == AdemcoParseResult.RESULT_OK);
assert(libademco.intp_value(cb) == data.length());
System.out.println("parse result=" + res + ",cb_commited=" + libademco.intp_value(cb));
libademco.delete_intp(cb);
assert(libademco.size_tp_value(cb) == data.length());
System.out.println("parse result=" + res + ",cb_commited=" + libademco.size_tp_value(cb));
libademco.delete_size_tp(cb);
}
// test pack
......@@ -165,7 +165,7 @@ public class JavaDemo {
SocketChannel channel;
byte[] buf = new byte[0];
AdemcoPacket pkt = new AdemcoPacket();
SWIGTYPE_p_int cb = libademco.new_intp();
SWIGTYPE_p_size_t cb = libademco.new_size_tp();
HbMachineType type = HbMachineType.HMT_INVALID;
HbMachineStatus status = HbMachineStatus.HMS_INVALID;
int seq = 0;
......@@ -179,17 +179,17 @@ public class JavaDemo {
public void offline(){
System.out.println(id() + " is offline");
libademco.delete_intp(cb);
libademco.delete_size_tp(cb);
}
public void onMsg(byte[] data) throws IOException {
buf = append(buf, data);
//System.out.println(printable_bytes(buf));
AdemcoParseResult res = libademco.ademcoPacketParse(buf, buf.length, pkt, cb);
System.out.println(res + ", " + libademco.intp_value(cb));
System.out.println(res + ", " + libademco.size_tp_value(cb));
switch(res) {
case RESULT_OK:
buf = trim(buf, libademco.intp_value(cb));
buf = trim(buf, (int)libademco.size_tp_value(cb));
handleMsg();
break;
case RESULT_NOT_ENOUGH:
......@@ -201,8 +201,8 @@ public class JavaDemo {
}
private byte[] getRawWithLen(){
byte[] b = new byte[pkt.getRaw_len()];
System.arraycopy(pkt.getRaw(), 0, b, 0, pkt.getRaw_len());
byte[] b = new byte[(int)pkt.getRaw_len()];
System.arraycopy(pkt.getRaw(), 0, b, 0, (int)pkt.getRaw_len());
return b;
}
......@@ -300,7 +300,7 @@ public class JavaDemo {
return printable_bytes(b, b.length);
}
public static String printable_bytes(byte[] b, int length){
public static String printable_bytes(byte[] b, long length){
String HEX_STRING = "0123456789ABCDEF";
String s = "";
for(int i = 0; i < length; i++){
......
......@@ -33,6 +33,7 @@ JAVA_ARRAYS_TYPEMAPS(uint8_t, byte, jbyte, Uint8, "[B")
%pointer_functions(int, intp);
%pointer_functions(uint16_t, uint16p);
%pointer_functions(uint32_t, uint32p);
%pointer_functions(size_t, size_tp);
/* Parse the header file to generate wrappers */
%include "../ademco.h"
......
mkdir com\hb3344\ademco
"C:\Users\Jack\Downloads\swigwin-4.0.2\swig.exe" -csharp -namespace com.hb3344.ademco -outdir com/hb3344/ademco -o libademco_csharp_wrap.c libademco.swig
cl -c ../ademco.c ../hb_com.c libademco_csharp_wrap.c libhbcom_csharp_wrap.c -I"../"
cl -c ../ademco.c ../hb_com.c libademco_csharp_wrap.c -I"../"
cl -LD ademco.obj hb_com.obj libademco_csharp_wrap.obj -o libademco.dll
csc CSharpDemo.cs -recurse:com/hb3344/ademco/*.cs
rem CSharpDemo.exe
......@@ -52,14 +52,14 @@ rm -rf win_csharp
# ubuntu20.04 java
ssh -t root@192.168.2.107 "cd /root/projects/ademco_hb && git reset --hard HEAD && git pull origin c && cd swig && export JAVA_HOME='/usr/lib/jvm/java-8-openjdk-amd64' && ./linux_java.sh && cd ../tools && ./linux_java.sh"
ssh -t root@192.168.2.107 "cd /root/projects/ademco_hb && git checkout master && git reset --hard HEAD && git pull origin master && 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@wangjackdeMacBook-Pro "cd /Users/jack/projects/ademco_hb && git reset --hard HEAD && git pull origin c && cd swig && source ~/.zshrc && export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home' && ./mac_java.sh && cd ../tools && ./mac_java.sh"
scp jack@wangjackdeMacBook-Pro:/Users/jack/projects/ademco_hb/tools/mac_java.zip .
ssh -t jack@wangjackdeMacBook-Pro "rm -f /Users/jack/projects/ademco_hb/tools/mac_java.zip"
ssh -t jack@JackMacBook-Pro.local "cd /Users/jack/projects/ademco_hb && git checkout master && git reset --hard HEAD && git pull origin master && cd swig && source ~/.zshrc && export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home' && ./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"
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