Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
A
ademco_hb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
ademco_hb
Commits
9713cdaf
Commit
9713cdaf
authored
May 19, 2023
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add comment for arm/disarm; format code
parent
e156a459
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
142 additions
and
114 deletions
+142
-114
CSharpDemo.cs
swig/CSharpDemo.cs
+44
-27
JavaDemo.java
swig/JavaDemo.java
+98
-87
No files found.
swig/CSharpDemo.cs
View file @
9713cdaf
...
...
@@ -15,7 +15,7 @@ namespace CSharpDemo
{
class
Program
{
static
void
Main
(
string
[]
args
)
static
void
Main
(
string
[]
args
)
{
// test parse
{
...
...
@@ -36,7 +36,7 @@ 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
.
size_tp_value
(
cb
));
Console
.
WriteLine
(
"res={0:D}, commited={1:D}"
,
res
,
libademco
.
size_tp_value
(
cb
));
}
// test pack
...
...
@@ -46,11 +46,11 @@ namespace CSharpDemo
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
);
libademco
.
ademcoPrint
(
buff
,
len
);
Console
.
WriteLine
(
"test parse packed data"
);
Console
.
WriteLine
(
"test parse packed data"
);
AdemcoPacket
pkt
=
new
AdemcoPacket
();
SWIGTYPE_p_size_t
cb
=
libademco
.
new_size_tp
();
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
.
size_tp_value
(
cb
)
==
len
);
...
...
@@ -84,34 +84,39 @@ namespace CSharpDemo
{
var
listener
=
new
TcpListener
(
IPAddress
.
Any
,
port
);
listener
.
Start
();
while
(
true
){
while
(
true
)
{
TcpClient
client
=
listener
.
AcceptTcpClient
();
Thread
thread
=
new
Thread
(
new
ParameterizedThreadStart
(
clientHandler
));
thread
.
Start
(
client
);
}
}
catch
(
Exception
e
)
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
e
.
Message
);
}
}
static
byte
[]
append
(
byte
[]
origin
,
byte
[]
buf
,
int
len
){
static
byte
[]
append
(
byte
[]
origin
,
byte
[]
buf
,
int
len
)
{
byte
[]
dst
=
new
byte
[
origin
.
Length
+
len
];
Array
.
ConstrainedCopy
(
origin
,
0
,
dst
,
0
,
origin
.
Length
);
Array
.
ConstrainedCopy
(
buf
,
0
,
dst
,
origin
.
Length
,
len
);
return
dst
;
}
static
byte
[]
eat
(
byte
[]
origin
,
int
len
){
if
(
origin
.
Length
==
len
){
return
new
byte
[
0
];}
static
byte
[]
eat
(
byte
[]
origin
,
int
len
)
{
if
(
origin
.
Length
==
len
)
{
return
new
byte
[
0
];
}
byte
[]
dst
=
new
byte
[
origin
.
Length
-
len
];
Array
.
ConstrainedCopy
(
origin
,
len
,
dst
,
0
,
origin
.
Length
-
len
);
return
dst
;
}
static
ushort
nextSeq
(
ushort
seq
){
if
(++
seq
==
10000
){
seq
=
1
;}
static
ushort
nextSeq
(
ushort
seq
)
{
if
(++
seq
==
10000
)
{
seq
=
1
;
}
return
seq
;
}
...
...
@@ -141,14 +146,16 @@ namespace CSharpDemo
{
break
;
}
if
(
nread
==
0
){
break
;}
if
(
nread
==
0
)
{
break
;
}
buff
=
append
(
buff
,
msg
,
nread
);
AdemcoParseResult
res
=
AdemcoParseResult
.
RESULT_OK
;
while
(
res
==
AdemcoParseResult
.
RESULT_OK
){
AdemcoParseResult
res
=
AdemcoParseResult
.
RESULT_OK
;
while
(
res
==
AdemcoParseResult
.
RESULT_OK
)
{
res
=
libademco
.
ademcoPacketParse
(
buff
,
(
uint
)
buff
.
Length
,
pkt
,
cb
);
switch
(
res
){
case
AdemcoParseResult
.
RESULT_OK
:
switch
(
res
)
{
case
AdemcoParseResult
.
RESULT_OK
:
Console
.
Write
(
"C:"
);
libademco
.
ademcoPrint
(
buff
,
libademco
.
size_tp_value
(
cb
));
buff
=
eat
(
buff
,
(
int
)
libademco
.
size_tp_value
(
cb
));
switch
(
pkt
.
id
)
...
...
@@ -161,18 +168,24 @@ namespace CSharpDemo
replyAck
(
stream
,
pkt
.
seq
,
pkt
.
acct
);
acct
=
pkt
.
acct
;
ademco_id
=
pkt
.
data
.
ademcoId
;
if
(
libademco
.
ademcoIsMachineTypeEvent
(
pkt
.
data
.
ademcoEvent
)
!=
0
){
if
(
libademco
.
ademcoIsMachineTypeEvent
(
pkt
.
data
.
ademcoEvent
)
!=
0
)
{
type
=
libademco
.
hbMachineTypeFromAdemcoEvent
(
pkt
.
data
.
ademcoEvent
);
}
if
(
libademco
.
ademcoIsMachineStatusEvent
(
pkt
.
data
.
ademcoEvent
)
!=
0
){
if
(
libademco
.
ademcoIsMachineStatusEvent
(
pkt
.
data
.
ademcoEvent
)
!=
0
)
{
status
=
libademco
.
hbMachineStatusFromAdemcoEvent
(
pkt
.
data
.
ademcoEvent
);
}
// 示范布撤防的调用方式
if
(++
counter
%
5
==
0
){
if
(
status
==
HbMachineStatus
.
HMS_ARM
){
// 演示如何进行布撤防,真实项目里可以删改本段
if
(++
counter
%
5
==
0
)
{
if
(
status
==
HbMachineStatus
.
HMS_ARM
)
{
sendDisarm
(
stream
,
nextSeq
(
seq
),
acct
,
ademco_id
,
"123456"
);
}
else
{
}
else
{
sendArm
(
stream
,
nextSeq
(
seq
),
acct
,
ademco_id
);
}
}
...
...
@@ -190,7 +203,8 @@ namespace CSharpDemo
}
}
static
void
replyAck
(
NetworkStream
stream
,
ushort
seq
,
string
acct
){
static
void
replyAck
(
NetworkStream
stream
,
ushort
seq
,
string
acct
)
{
byte
[]
buff
=
new
byte
[
1024
];
uint
len
=
libademco
.
ademcoMakeAckPacket
(
buff
,
1024
,
seq
,
acct
,
0
);
Console
.
Write
(
"S:"
);
...
...
@@ -198,7 +212,8 @@ namespace CSharpDemo
stream
.
Write
(
buff
,
0
,
(
int
)
len
);
}
static
void
sendArm
(
NetworkStream
stream
,
ushort
seq
,
string
acct
,
uint
ademcoId
){
static
void
sendArm
(
NetworkStream
stream
,
ushort
seq
,
string
acct
,
uint
ademcoId
)
{
byte
[]
buff
=
new
byte
[
1024
];
uint
len
=
libademco
.
ademcoMakeHbPacket
(
buff
,
1024
,
seq
,
acct
,
ademcoId
,
AdemcoEvent
.
EVENT_ARM
,
0
,
0
,
null
);
Console
.
Write
(
"S:"
);
...
...
@@ -206,10 +221,12 @@ namespace CSharpDemo
stream
.
Write
(
buff
,
0
,
(
int
)
len
);
}
static
void
sendDisarm
(
NetworkStream
stream
,
ushort
seq
,
string
acct
,
uint
ademcoId
,
string
pwd
){
static
void
sendDisarm
(
NetworkStream
stream
,
ushort
seq
,
string
acct
,
uint
ademcoId
,
string
pwd
)
{
byte
[]
buff
=
new
byte
[
1024
];
AdemcoXDataSegment
xdata
=
null
;
if
(!
string
.
IsNullOrEmpty
(
pwd
)){
if
(!
string
.
IsNullOrEmpty
(
pwd
))
{
xdata
=
new
AdemcoXDataSegment
();
libademco
.
ademcoMakeXData
(
xdata
,
AdemcoXDataLengthFormat
.
TWO_HEX
,
AdemcoXDataTransform
.
AdemcoXDataTransform_as_is
,
Encoding
.
ASCII
.
GetBytes
(
pwd
),
(
uint
)
pwd
.
Length
);
}
...
...
swig/JavaDemo.java
View file @
9713cdaf
import
java.io.*
;
import
java.net.*
;
import
java.nio.ByteBuffer
;
...
...
@@ -15,7 +14,9 @@ public class JavaDemo {
try
{
System
.
loadLibrary
(
"ademco_java"
);
}
catch
(
UnsatisfiedLinkError
e
)
{
System
.
err
.
println
(
"Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n"
+
e
);
System
.
err
.
println
(
"Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n"
+
e
);
System
.
exit
(
1
);
}
}
...
...
@@ -24,12 +25,12 @@ public class JavaDemo {
private
Map
<
SocketChannel
,
Client
>
clients
;
private
InetSocketAddress
listenAddr
;
public
JavaDemo
(
String
addr
,
int
port
)
throws
IOException
{
public
JavaDemo
(
String
addr
,
int
port
)
throws
IOException
{
listenAddr
=
new
InetSocketAddress
(
addr
,
port
);
clients
=
new
HashMap
<
SocketChannel
,
Client
>();
}
private
void
start
()
throws
IOException
{
private
void
start
()
throws
IOException
{
selector
=
Selector
.
open
();
ServerSocketChannel
channel
=
ServerSocketChannel
.
open
();
channel
.
configureBlocking
(
false
);
...
...
@@ -37,21 +38,24 @@ public class JavaDemo {
channel
.
register
(
selector
,
SelectionKey
.
OP_ACCEPT
);
System
.
out
.
println
(
"Server started..."
);
while
(
true
)
{
while
(
true
)
{
selector
.
select
();
Iterator
keys
=
selector
.
selectedKeys
().
iterator
();
while
(
keys
.
hasNext
())
{
SelectionKey
key
=
(
SelectionKey
)
keys
.
next
();
while
(
keys
.
hasNext
())
{
SelectionKey
key
=
(
SelectionKey
)
keys
.
next
();
keys
.
remove
();
if
(!
key
.
isValid
())
continue
;
if
(
key
.
isAcceptable
())
accept
(
key
);
else
if
(
key
.
isReadable
())
read
(
key
);
if
(!
key
.
isValid
())
continue
;
if
(
key
.
isAcceptable
())
accept
(
key
);
else
if
(
key
.
isReadable
())
read
(
key
);
}
}
}
private
void
accept
(
SelectionKey
key
)
throws
IOException
{
ServerSocketChannel
sChannel
=
(
ServerSocketChannel
)
key
.
channel
();
private
void
accept
(
SelectionKey
key
)
throws
IOException
{
ServerSocketChannel
sChannel
=
(
ServerSocketChannel
)
key
.
channel
();
SocketChannel
channel
=
sChannel
.
accept
();
channel
.
configureBlocking
(
false
);
Socket
socket
=
channel
.
socket
();
...
...
@@ -61,11 +65,11 @@ public class JavaDemo {
channel
.
register
(
selector
,
SelectionKey
.
OP_READ
);
}
private
void
read
(
SelectionKey
key
)
throws
IOException
{
SocketChannel
channel
=
(
SocketChannel
)
key
.
channel
();
private
void
read
(
SelectionKey
key
)
throws
IOException
{
SocketChannel
channel
=
(
SocketChannel
)
key
.
channel
();
ByteBuffer
buf
=
ByteBuffer
.
allocate
(
1024
);
int
n
=
channel
.
read
(
buf
);
if
(
n
==-
1
)
{
if
(
n
==
-
1
)
{
clients
.
get
(
channel
).
offline
();
clients
.
remove
(
channel
);
channel
.
close
();
...
...
@@ -78,7 +82,7 @@ public class JavaDemo {
clients
.
get
(
channel
).
onMsg
(
data
);
}
public
static
void
test_libademco
(){
public
static
void
test_libademco
()
{
// test parse
{
System
.
out
.
println
(
"testing parse..."
);
...
...
@@ -87,14 +91,14 @@ public class JavaDemo {
AdemcoPacket
pkt
=
new
AdemcoPacket
();
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
.
size_tp_value
(
cb
)
==
data
.
length
());
assert
(
res
==
AdemcoParseResult
.
RESULT_OK
);
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
{
{
System
.
out
.
println
(
"testing pack..."
);
System
.
out
.
println
(
"using seq=1234, acct=861234567890, ademco_id=666666, event=3400, zone=0, gg=0"
);
AdemcoPacket
pkt
=
new
AdemcoPacket
();
...
...
@@ -105,9 +109,11 @@ public class JavaDemo {
// test pack with xdata
{
System
.
out
.
println
(
"testing pack with xdata..."
);
System
.
out
.
println
(
"using seq=1234, acct=861234567890, ademco_id=666666, event=3400, zone=0, gg=0, xdata=123456"
);
System
.
out
.
println
(
"using seq=1234, acct=861234567890, ademco_id=666666, event=3400, zone=0, gg=0, xdata=123456"
);
AdemcoXDataSegment
xdata
=
new
AdemcoXDataSegment
();
libademco
.
ademcoMakeXData
(
xdata
,
AdemcoXDataLengthFormat
.
TWO_HEX
,
AdemcoXDataTransform
.
AdemcoXDataTransform_as_is
,
"123456"
.
getBytes
(),
6
);
libademco
.
ademcoMakeXData
(
xdata
,
AdemcoXDataLengthFormat
.
TWO_HEX
,
AdemcoXDataTransform
.
AdemcoXDataTransform_as_is
,
"123456"
.
getBytes
(),
6
);
AdemcoPacket
pkt
=
new
AdemcoPacket
();
libademco
.
ademcoMakeHbPacket2
(
pkt
,
1234
,
"861234567890"
,
666666
l
,
AdemcoEvent
.
EVENT_ARM
,
0
l
,
0
l
,
xdata
);
System
.
out
.
println
(
"data="
+
printable_bytes
(
pkt
.
getRaw
(),
pkt
.
getRaw_len
()));
...
...
@@ -116,15 +122,17 @@ public class JavaDemo {
// test with hex xdata
{
System
.
out
.
println
(
"testing pack with hex xdata..."
);
System
.
out
.
println
(
"using seq=1234, acct=861234567890, ademco_id=666666, event=3400, zone=0, gg=0, xdata=EB BA 3F A1 76"
);
System
.
out
.
println
(
"using seq=1234, acct=861234567890, ademco_id=666666, event=3400, zone=0, gg=0, xdata=EB BA 3F A1 76"
);
byte
[]
xdatacontent
=
new
byte
[
5
];
xdatacontent
[
0
]
=
(
byte
)
0xEB
;
xdatacontent
[
1
]
=
(
byte
)
0xBA
;
xdatacontent
[
2
]
=
(
byte
)
0x3F
;
xdatacontent
[
3
]
=
(
byte
)
0xA1
;
xdatacontent
[
4
]
=
(
byte
)
0x76
;
xdatacontent
[
0
]
=
(
byte
)
0xEB
;
xdatacontent
[
1
]
=
(
byte
)
0xBA
;
xdatacontent
[
2
]
=
(
byte
)
0x3F
;
xdatacontent
[
3
]
=
(
byte
)
0xA1
;
xdatacontent
[
4
]
=
(
byte
)
0x76
;
AdemcoXDataSegment
xdata
=
new
AdemcoXDataSegment
();
libademco
.
ademcoMakeXData
(
xdata
,
AdemcoXDataLengthFormat
.
TWO_HEX
,
AdemcoXDataTransform
.
AdemcoXDataTransform_as_is
,
xdatacontent
,
5
);
libademco
.
ademcoMakeXData
(
xdata
,
AdemcoXDataLengthFormat
.
TWO_HEX
,
AdemcoXDataTransform
.
AdemcoXDataTransform_as_is
,
xdatacontent
,
5
);
AdemcoPacket
pkt
=
new
AdemcoPacket
();
libademco
.
ademcoMakeHbPacket2
(
pkt
,
1234
,
"861234567890"
,
666666
l
,
AdemcoEvent
.
EVENT_ARM
,
0
l
,
0
l
,
xdata
);
System
.
out
.
println
(
"data="
+
printable_bytes
(
pkt
.
getRaw
(),
pkt
.
getRaw_len
()));
...
...
@@ -150,14 +158,14 @@ public class JavaDemo {
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
JavaDemo
.
test_libademco
();
int
port
=
12345
;
if
(
args
.
length
>
0
){
if
(
args
.
length
>
0
)
{
port
=
Integer
.
parseInt
(
args
[
0
]);
}
//new JavaDemo("localhost", port).start();
//
new JavaDemo("localhost", port).start();
new
JavaDemo
(
"0.0.0.0"
,
port
).
start
();
}
...
...
@@ -173,23 +181,23 @@ public class JavaDemo {
String
acct
=
""
;
long
lastTimeStatusChange
=
0
;
public
Client
(
SocketChannel
channel
){
public
Client
(
SocketChannel
channel
)
{
this
.
channel
=
channel
;
}
public
void
offline
(){
public
void
offline
()
{
System
.
out
.
println
(
id
()
+
" is offline"
);
libademco
.
delete_size_tp
(
cb
);
}
public
void
onMsg
(
byte
[]
data
)
throws
IOException
{
buf
=
append
(
buf
,
data
);
//System.out.println(printable_bytes(buf));
//
System.out.println(printable_bytes(buf));
AdemcoParseResult
res
=
libademco
.
ademcoPacketParse
(
buf
,
buf
.
length
,
pkt
,
cb
);
System
.
out
.
println
(
res
+
", "
+
libademco
.
size_tp_value
(
cb
));
switch
(
res
)
{
switch
(
res
)
{
case
RESULT_OK:
buf
=
trim
(
buf
,
(
int
)
libademco
.
size_tp_value
(
cb
));
buf
=
trim
(
buf
,
(
int
)
libademco
.
size_tp_value
(
cb
));
handleMsg
();
break
;
case
RESULT_NOT_ENOUGH:
...
...
@@ -200,26 +208,26 @@ public class JavaDemo {
}
}
private
byte
[]
getRawWithLen
(){
byte
[]
b
=
new
byte
[(
int
)
pkt
.
getRaw_len
()];
System
.
arraycopy
(
pkt
.
getRaw
(),
0
,
b
,
0
,
(
int
)
pkt
.
getRaw_len
());
private
byte
[]
getRawWithLen
()
{
byte
[]
b
=
new
byte
[(
int
)
pkt
.
getRaw_len
()];
System
.
arraycopy
(
pkt
.
getRaw
(),
0
,
b
,
0
,
(
int
)
pkt
.
getRaw_len
());
return
b
;
}
private
String
id
(){
private
String
id
()
{
String
str
=
"Client "
+
channel
.
socket
().
getRemoteSocketAddress
();
if
(!
acct
.
isEmpty
())
{
if
(!
acct
.
isEmpty
())
{
str
+=
" acct="
+
acct
;
}
if
(
ademco_id
!=
0
)
{
if
(
ademco_id
!=
0
)
{
str
+=
" ademco_id="
+
ademco_id
;
}
return
str
;
}
private
int
nextSeq
(){
private
int
nextSeq
()
{
seq
++;
if
(
seq
==
10000
)
{
if
(
seq
==
10000
)
{
seq
=
1
;
}
return
seq
;
...
...
@@ -227,42 +235,43 @@ public class JavaDemo {
private
void
handleMsg
()
throws
IOException
{
System
.
out
.
println
(
id
()
+
" R:"
+
printable_bytes
(
pkt
.
getRaw
(),
pkt
.
getRaw_len
()));
switch
(
pkt
.
getId
())
{
switch
(
pkt
.
getId
())
{
case
AID_NULL:
acct
=
pkt
.
getAcct
();
replyAck
();
break
;
case
AID_ACK:
break
;
case
AID_HB:
case
AID_ADM_CID:
acct
=
pkt
.
getAcct
();
ademco_id
=
pkt
.
getData
().
getAdemcoId
();
AdemcoEvent
event
=
pkt
.
getData
().
getAdemcoEvent
();
System
.
out
.
println
(
id
()
+
" event="
+
libademco
.
ademcoEventToString
(
event
)
+
" zone="
+
pkt
.
getData
().
getZone
());
if
(
libademco
.
ademcoIsMachineStatusEvent
(
event
)
!=
0
){
System
.
out
.
println
(
id
()
+
" event="
+
libademco
.
ademcoEventToString
(
event
)
+
" zone="
+
pkt
.
getData
().
getZone
());
if
(
libademco
.
ademcoIsMachineStatusEvent
(
event
)
!=
0
)
{
status
=
libademco
.
hbMachineStatusFromAdemcoEvent
(
event
);
//
test arm/disarm
//
演示如何进行布撤防,真实项目里可以删改本段
long
now
=
System
.
currentTimeMillis
();
if
(
now
-
lastTimeStatusChange
>
5000
)
{
if
(
now
-
lastTimeStatusChange
>
5000
)
{
lastTimeStatusChange
=
now
;
if
(
status
==
HbMachineStatus
.
HMS_ARM
)
{
if
(
status
==
HbMachineStatus
.
HMS_ARM
)
{
disarm
(
"123456"
);
}
else
{
}
else
{
arm
();
}
}
}
if
(
libademco
.
ademcoIsMachineTypeEvent
(
event
)
!=
0
)
{
if
(
libademco
.
ademcoIsMachineTypeEvent
(
event
)
!=
0
)
{
type
=
libademco
.
hbMachineTypeFromAdemcoEvent
(
event
);
}
replyAck
();
if
(
type
==
HbMachineType
.
HMT_INVALID
&&
!
acct
.
isEmpty
()
&&
ademco_id
!=
0
)
{
if
(
type
==
HbMachineType
.
HMT_INVALID
&&
!
acct
.
isEmpty
()
&&
ademco_id
!=
0
)
{
askType
();
}
break
;
break
;
}
}
...
...
@@ -273,12 +282,13 @@ public class JavaDemo {
}
private
void
askType
()
throws
IOException
{
libademco
.
ademcoMakeHbPacket2
(
pkt
,
nextSeq
(),
acct
,
ademco_id
,
AdemcoEvent
.
EVENT_WHAT_IS_YOUR_TYPE
,
0L
,
0L
,
null
);
libademco
.
ademcoMakeHbPacket2
(
pkt
,
nextSeq
(),
acct
,
ademco_id
,
AdemcoEvent
.
EVENT_WHAT_IS_YOUR_TYPE
,
0L
,
0L
,
null
);
channel
.
write
(
ByteBuffer
.
wrap
(
getRawWithLen
()));
System
.
out
.
println
(
id
()
+
" S:"
+
printable_bytes
(
pkt
.
getRaw
(),
pkt
.
getRaw_len
()));
}
private
void
arm
()
throws
IOException
{
private
void
arm
()
throws
IOException
{
libademco
.
ademcoMakeHbPacket2
(
pkt
,
nextSeq
(),
acct
,
ademco_id
,
AdemcoEvent
.
EVENT_ARM
,
0L
,
0L
,
null
);
channel
.
write
(
ByteBuffer
.
wrap
(
getRawWithLen
()));
System
.
out
.
println
(
id
()
+
" S:"
+
printable_bytes
(
pkt
.
getRaw
(),
pkt
.
getRaw_len
()));
...
...
@@ -286,9 +296,10 @@ public class JavaDemo {
private
void
disarm
(
String
pwd
)
throws
IOException
{
AdemcoXDataSegment
xdata
=
null
;
if
(
pwd
!=
null
&&
!
pwd
.
isEmpty
())
{
if
(
pwd
!=
null
&&
!
pwd
.
isEmpty
())
{
xdata
=
new
AdemcoXDataSegment
();
libademco
.
ademcoMakeXData
(
xdata
,
AdemcoXDataLengthFormat
.
TWO_HEX
,
AdemcoXDataTransform
.
AdemcoXDataTransform_as_is
,
pwd
.
getBytes
(),
pwd
.
length
());
libademco
.
ademcoMakeXData
(
xdata
,
AdemcoXDataLengthFormat
.
TWO_HEX
,
AdemcoXDataTransform
.
AdemcoXDataTransform_as_is
,
pwd
.
getBytes
(),
pwd
.
length
());
}
libademco
.
ademcoMakeHbPacket2
(
pkt
,
nextSeq
(),
acct
,
ademco_id
,
AdemcoEvent
.
EVENT_DISARM
,
0L
,
0L
,
xdata
);
channel
.
write
(
ByteBuffer
.
wrap
(
getRawWithLen
()));
...
...
@@ -296,18 +307,18 @@ public class JavaDemo {
}
}
public
static
String
printable_bytes
(
byte
[]
b
){
public
static
String
printable_bytes
(
byte
[]
b
)
{
return
printable_bytes
(
b
,
b
.
length
);
}
public
static
String
printable_bytes
(
byte
[]
b
,
long
length
){
public
static
String
printable_bytes
(
byte
[]
b
,
long
length
)
{
String
HEX_STRING
=
"0123456789ABCDEF"
;
String
s
=
""
;
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
byte
c
=
b
[
i
];
if
(
32
<=
c
&&
c
<=
127
)
{
s
+=
(
char
)
c
;
}
else
{
if
(
32
<=
c
&&
c
<=
127
)
{
s
+=
(
char
)
c
;
}
else
{
s
+=
"\\x"
+
HEX_STRING
.
charAt
((
b
[
i
]
>>>
4
)
&
0x0F
);
s
+=
HEX_STRING
.
charAt
(
b
[
i
]
&
0x0F
);
}
...
...
@@ -315,14 +326,14 @@ public class JavaDemo {
return
s
;
}
public
static
String
printable_bytes
(
char
[]
b
){
public
static
String
printable_bytes
(
char
[]
b
)
{
String
HEX_STRING
=
"0123456789ABCDEF"
;
String
s
=
""
;
for
(
int
i
=
0
;
i
<
b
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
b
.
length
;
i
++)
{
int
c
=
b
[
i
]
&
0xFF
;
if
(
32
<=
c
&&
c
<=
127
)
{
s
+=
(
char
)
c
;
}
else
{
if
(
32
<=
c
&&
c
<=
127
)
{
s
+=
(
char
)
c
;
}
else
{
s
+=
"\\x"
+
HEX_STRING
.
charAt
(
c
>>>
4
);
s
+=
HEX_STRING
.
charAt
(
c
&
0x0F
);
}
...
...
@@ -330,14 +341,14 @@ public class JavaDemo {
return
s
;
}
public
static
String
printable_bytes
(
String
b
){
public
static
String
printable_bytes
(
String
b
)
{
String
HEX_STRING
=
"0123456789ABCDEF"
;
String
s
=
""
;
for
(
int
i
=
0
;
i
<
b
.
length
();
i
++)
{
for
(
int
i
=
0
;
i
<
b
.
length
();
i
++)
{
char
c
=
b
.
charAt
(
i
);
if
(
32
<=
c
&&
c
<=
127
)
{
s
+=
(
char
)
c
;
}
else
{
if
(
32
<=
c
&&
c
<=
127
)
{
s
+=
(
char
)
c
;
}
else
{
s
+=
"\\x"
+
HEX_STRING
.
charAt
(
c
>>>
4
);
s
+=
HEX_STRING
.
charAt
(
c
&
0x0F
);
}
...
...
@@ -345,38 +356,38 @@ public class JavaDemo {
return
s
;
}
public
static
char
[]
append
(
char
[]
origin
,
char
[]
buf
)
{
public
static
char
[]
append
(
char
[]
origin
,
char
[]
buf
)
{
char
[]
dst
=
new
char
[
origin
.
length
+
buf
.
length
];
System
.
arraycopy
(
origin
,
0
,
dst
,
0
,
origin
.
length
);
System
.
arraycopy
(
buf
,
0
,
dst
,
origin
.
length
,
buf
.
length
);
System
.
arraycopy
(
buf
,
0
,
dst
,
origin
.
length
,
buf
.
length
);
return
dst
;
}
public
static
byte
[]
append
(
byte
[]
origin
,
byte
[]
buf
)
{
public
static
byte
[]
append
(
byte
[]
origin
,
byte
[]
buf
)
{
byte
[]
dst
=
new
byte
[
origin
.
length
+
buf
.
length
];
System
.
arraycopy
(
origin
,
0
,
dst
,
0
,
origin
.
length
);
System
.
arraycopy
(
buf
,
0
,
dst
,
origin
.
length
,
buf
.
length
);
System
.
arraycopy
(
buf
,
0
,
dst
,
origin
.
length
,
buf
.
length
);
return
dst
;
}
public
byte
[]
trim
(
byte
[]
origin
,
int
pos
){
public
byte
[]
trim
(
byte
[]
origin
,
int
pos
)
{
byte
[]
dst
=
new
byte
[
origin
.
length
-
pos
];
System
.
arraycopy
(
origin
,
pos
,
dst
,
0
,
origin
.
length
-
pos
);
return
dst
;
}
public
static
byte
[]
c2b
(
char
[]
arr
){
public
static
byte
[]
c2b
(
char
[]
arr
)
{
byte
[]
b
=
new
byte
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
b
[
i
]
=
(
byte
)
arr
[
i
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
b
[
i
]
=
(
byte
)
arr
[
i
];
}
return
b
;
}
public
static
char
[]
b2c
(
byte
[]
arr
){
public
static
char
[]
b2c
(
byte
[]
arr
)
{
char
[]
b
=
new
char
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
b
[
i
]
=
(
char
)
arr
[
i
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
b
[
i
]
=
(
char
)
arr
[
i
];
}
return
b
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment