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
b8d0dbdc
Commit
b8d0dbdc
authored
4 years ago
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix #acct
parent
9c16685c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
33 additions
and
26 deletions
+33
-26
dllmain.cpp
examples/javademo/cpp/dllmain.cpp
+12
-6
javademo_jni_AdemcoHbLibrary.h
examples/javademo/cpp/javademo_jni_AdemcoHbLibrary.h
+6
-6
AdemcoHbLibrary.java
examples/javademo/jni/AdemcoHbLibrary.java
+6
-4
SimpleServer.java
examples/javademo/jni/SimpleServer.java
+4
-4
SimpleServerThread.java
examples/javademo/jni/SimpleServerThread.java
+5
-6
No files found.
examples/javademo/cpp/dllmain.cpp
View file @
b8d0dbdc
...
...
@@ -62,12 +62,14 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_parse
}
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_pack
(
JNIEnv
*
env
,
jobject
,
jint
seq
,
jint
ademco_id
,
jint
ademco_event
,
jint
zone
,
jint
gg
)
(
JNIEnv
*
env
,
jobject
,
jint
seq
,
j
string
acct
,
j
int
ademco_id
,
jint
ademco_event
,
jint
zone
,
jint
gg
)
{
ademco
::
AdemcoPacket
ap
;
char
buff
[
1024
];
jboolean
iscopy
=
0
;
std
::
string
sacct
=
env
->
GetStringUTFChars
(
acct
,
&
iscopy
);
auto
res
=
ap
.
make_hb
(
buff
,
sizeof
(
buff
),
static_cast
<
uint16_t
>
(
seq
),
nullptr
,
static_cast
<
size_t
>
(
ademco_id
),
static_cast
<
unsigned
char
>
(
gg
),
sacct
,
static_cast
<
size_t
>
(
ademco_id
),
static_cast
<
unsigned
char
>
(
gg
),
static_cast
<
ademco
::
ADEMCO_EVENT
>
(
ademco_event
),
static_cast
<
size_t
>
(
zone
));
if
(
res
>
0
)
{
buff
[
res
]
=
0
;
...
...
@@ -77,17 +79,19 @@ JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_pack
}
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_pack2
(
JNIEnv
*
env
,
jobject
,
jint
seq
,
jint
ademco_id
,
jint
ademco_event
,
jint
zone
,
jint
gg
,
jstring
xdata
)
(
JNIEnv
*
env
,
jobject
,
jint
seq
,
j
string
acct
,
j
int
ademco_id
,
jint
ademco_event
,
jint
zone
,
jint
gg
,
jstring
xdata
)
{
jboolean
iscopy
=
0
;
std
::
string
sacct
=
env
->
GetStringUTFChars
(
acct
,
&
iscopy
);
std
::
string
s
=
env
->
GetStringUTFChars
(
xdata
,
&
iscopy
);
auto
xdata_
=
ademco
::
makeXData
(
s
.
data
(),
s
.
size
());
ademco
::
AdemcoPacket
ap
;
char
buff
[
1024
];
auto
res
=
ap
.
make_hb
(
buff
,
sizeof
(
buff
),
static_cast
<
uint16_t
>
(
seq
),
nullptr
,
static_cast
<
size_t
>
(
ademco_id
),
static_cast
<
unsigned
char
>
(
gg
),
sacct
,
static_cast
<
size_t
>
(
ademco_id
),
static_cast
<
unsigned
char
>
(
gg
),
static_cast
<
ademco
::
ADEMCO_EVENT
>
(
ademco_event
),
static_cast
<
size_t
>
(
zone
),
xdata_
);
if
(
res
>
0
)
{
//buff[res] = 0;
auto
ascii
=
ademco
::
detail
::
toString
(
buff
,
res
,
ademco
::
detail
::
ToStringOption
::
ALL_CHAR_AS_HEX
,
false
,
false
);
memcpy
(
buff
,
ascii
.
data
(),
ascii
.
size
());
return
env
->
NewStringUTF
(
buff
);
...
...
@@ -96,12 +100,14 @@ JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_pack2
}
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_packAck
(
JNIEnv
*
env
,
jobject
,
jint
seq
,
j
int
ademco_id
)
(
JNIEnv
*
env
,
jobject
,
jint
seq
,
j
string
acct
)
{
ademco
::
AdemcoPacket
ap
;
char
buff
[
1024
];
jboolean
iscopy
=
0
;
std
::
string
s
=
env
->
GetStringUTFChars
(
acct
,
&
iscopy
);
auto
res
=
ap
.
make_ack
(
buff
,
sizeof
(
buff
),
static_cast
<
uint16_t
>
(
seq
),
nullptr
,
static_cast
<
size_t
>
(
ademco_id
)
);
s
,
0
);
if
(
res
>
0
)
{
buff
[
res
]
=
0
;
return
env
->
NewStringUTF
(
buff
);
...
...
This diff is collapsed.
Click to expand it.
examples/javademo/cpp/javademo_jni_AdemcoHbLibrary.h
View file @
b8d0dbdc
...
...
@@ -26,26 +26,26 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_parse
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: pack
* Signature: (IIIII)Ljava/lang/String;
* Signature: (I
Ljava/lang/String;
IIII)Ljava/lang/String;
*/
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_pack
(
JNIEnv
*
,
jobject
,
jint
,
jint
,
jint
,
jint
,
jint
);
(
JNIEnv
*
,
jobject
,
jint
,
j
string
,
j
int
,
jint
,
jint
,
jint
);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: pack2
* Signature: (IIIIILjava/lang/String;)Ljava/lang/String;
* Signature: (I
Ljava/lang/String;
IIIILjava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_pack2
(
JNIEnv
*
,
jobject
,
jint
,
jint
,
jint
,
jint
,
jint
,
jstring
);
(
JNIEnv
*
,
jobject
,
jint
,
j
string
,
j
int
,
jint
,
jint
,
jint
,
jstring
);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: packAck
* Signature: (I
I
)Ljava/lang/String;
* Signature: (I
Ljava/lang/String;
)Ljava/lang/String;
*/
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_packAck
(
JNIEnv
*
,
jobject
,
jint
,
j
int
);
(
JNIEnv
*
,
jobject
,
jint
,
j
string
);
#ifdef __cplusplus
}
...
...
This diff is collapsed.
Click to expand it.
examples/javademo/jni/AdemcoHbLibrary.java
View file @
b8d0dbdc
...
...
@@ -41,33 +41,35 @@ public class AdemcoHbLibrary
/*
* @brief 将远程控制命令(不包含xdata)打包成网络传输数据
* @param[in] seq 序号
* @param[in] acct 主机账号
* @param[in] ademco_id 安定宝ID
* @param[in] ademco_event 安定宝事件码
* @param[in] zone 防区号
* @param[in] gg 分防区号
* @return String
*/
public
native
String
pack
(
int
seq
,
int
ademco_id
,
int
ademco_event
,
int
zone
,
int
gg
);
public
native
String
pack
(
int
seq
,
String
acct
,
int
ademco_id
,
int
ademco_event
,
int
zone
,
int
gg
);
/*
* @brief 将远程控制命令(包含xdata)打包成网络传输数据
* @param[in] seq 序号
* @param[in] acct 主机账号
* @param[in] ademco_id 安定宝ID
* @param[in] ademco_event 安定宝事件码
* @param[in] zone 防区号
* @param[in] gg 分防区号
* @return hex String,如字符串"123456" 表示为 "313233343536", 需手动转换为byte[] 进行发送,参考SimpleServerThread
*/
public
native
String
pack2
(
int
seq
,
int
ademco_id
,
int
ademco_event
,
int
zone
,
int
gg
,
String
xdata
);
public
native
String
pack2
(
int
seq
,
String
acct
,
int
ademco_id
,
int
ademco_event
,
int
zone
,
int
gg
,
String
xdata
);
/*
* @brief 打包ACK
* @param[in] seq 序号
* @param[in] a
demco_id 安定宝ID
* @param[in] a
cct 主机账号
* @return String
*/
public
native
String
packAck
(
int
seq
,
int
ademco_id
);
public
native
String
packAck
(
int
seq
,
String
acct
);
// public void testPrint(){ nativePrint(); }
...
...
This diff is collapsed.
Click to expand it.
examples/javademo/jni/SimpleServer.java
View file @
b8d0dbdc
...
...
@@ -23,16 +23,16 @@ public class SimpleServer {
// test pack
{
System
.
out
.
println
(
"testing pack..."
);
System
.
out
.
println
(
"using seq=1234, ademco_id=666666, event=3400, zone=0, gg=0"
);
String
data
=
lib
.
pack
(
1234
,
666666
,
3400
,
0
,
0
);
System
.
out
.
println
(
"using seq=1234, a
cct=861234567890, a
demco_id=666666, event=3400, zone=0, gg=0"
);
String
data
=
lib
.
pack
(
1234
,
"861234567890"
,
666666
,
3400
,
0
,
0
);
System
.
out
.
println
(
"data="
+
data
);
}
// test pack ack
{
System
.
out
.
println
(
"testing packAck..."
);
System
.
out
.
println
(
"using seq=1234, a
demco_id=666666
"
);
String
data
=
lib
.
packAck
(
1234
,
666666
);
System
.
out
.
println
(
"using seq=1234, a
cct=861234567890,
"
);
String
data
=
lib
.
packAck
(
1234
,
"861234567890"
);
System
.
out
.
println
(
"data="
+
data
);
}
...
...
This diff is collapsed.
Click to expand it.
examples/javademo/jni/SimpleServerThread.java
View file @
b8d0dbdc
...
...
@@ -59,16 +59,16 @@ public class SimpleServerThread extends Thread {
if
(
m
.
find
())
{
String
id
=
m
.
group
(
1
);
int
seq
=
Integer
.
parseInt
(
m
.
group
(
2
));
int
ademco_id
=
Integer
.
parseInt
(
m
.
group
(
3
)
);
String
acct
=
m
.
group
(
3
);
System
.
out
.
println
(
"Found id: "
+
id
);
System
.
out
.
println
(
"Found seq: "
+
seq
);
System
.
out
.
println
(
"Found a
demco_id: "
+
ademco_id
);
System
.
out
.
println
(
"Found a
cct: "
+
acct
);
switch
(
id
){
case
"ACK"
:
break
;
case
"NULL"
:
// reply ack
{
String
ack
=
lib
.
packAck
(
seq
,
a
demco_id
);
String
ack
=
lib
.
packAck
(
seq
,
a
cct
);
System
.
out
.
println
(
"replying ack:"
+
ack
);
writer
.
write
(
ack
);
writer
.
flush
();
...
...
@@ -78,7 +78,7 @@ public class SimpleServerThread extends Thread {
case
"ADM-CID"
:
{
// reply ack
String
ack
=
lib
.
packAck
(
seq
,
a
demco_id
);
String
ack
=
lib
.
packAck
(
seq
,
a
cct
);
System
.
out
.
println
(
"replying ack:"
+
ack
);
writer
.
write
(
ack
);
writer
.
flush
();
...
...
@@ -87,7 +87,6 @@ public class SimpleServerThread extends Thread {
m
=
r2
.
matcher
(
line
);
if
(
m
.
find
())
{
int
ademco_id16
=
Integer
.
parseInt
(
m
.
group
(
1
),
16
);
assert
(
ademco_id
==
ademco_id16
);
int
ademco_event
=
Integer
.
parseInt
(
m
.
group
(
2
));
int
gg
=
Integer
.
parseInt
(
m
.
group
(
3
));
int
zone
=
Integer
.
parseInt
(
m
.
group
(
4
));
...
...
@@ -99,7 +98,7 @@ public class SimpleServerThread extends Thread {
long
now
=
System
.
currentTimeMillis
();
if
(
now
-
lastTimeStatusChange
>
5000
){
lastTimeStatusChange
=
now
;
String
cmd
=
lib
.
pack2
(
seq
+
1
,
ademco_id16
,
ademco_event
==
3400
?
1400
:
3400
,
gg
,
zone
,
"123456"
);
String
cmd
=
lib
.
pack2
(
seq
+
1
,
a
cct
,
a
demco_id16
,
ademco_event
==
3400
?
1400
:
3400
,
gg
,
zone
,
"123456"
);
System
.
out
.
println
(
"sending command:"
+
cmd
);
byte
[]
data
=
hexStringToByteArray
(
cmd
);
output
.
write
(
data
);
...
...
This diff is collapsed.
Click to expand it.
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