Commit b5c539d7 authored by captainwong's avatar captainwong

test pack/packAck ok

parent bee6491a
......@@ -7,4 +7,5 @@ JAVA_INCLUDE='/usr/lib/jvm/java-8-openjdk-amd64/include'
javac -encoding utf-8 javademo/jni/AdemcoHbLibrary.java && javah -d javademo/cpp -jni javademo.jni.AdemcoHbLibrary
g++ -std=c++11 $JAVADEMO_SRC/pch.cpp $JAVADEMO_SRC/dllmain.cpp -I$JAVADEMO_SRC -Iinclude -I$JAVA_INCLUDE -I$JAVA_INCLUDE/linux -fPIC -shared -o build/libademcojava.so
java javademo.jni.AdemcoHbLibrary
javac -encoding utf-8 javademo/jni/SimpleServer.java
java javademo.jni.SimpleServer 12345
......@@ -63,3 +63,32 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
return obj;
}
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack
(JNIEnv* env, jclass clazz, jint seq, jint ademco_id, jint ademco_event, jint zone, jint gg)
{
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),
static_cast<ademco::ADEMCO_EVENT>(ademco_event), static_cast<size_t>(zone));
if (res > 0) {
buff[res] = 0;
return env->NewStringUTF(buff);
}
return 0;
}
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePackAck
(JNIEnv* env, jclass clazz, jint seq, jint ademco_id)
{
ademco::AdemcoPacket ap;
char buff[1024];
auto res = ap.make_ack(buff, sizeof(buff), static_cast<uint16_t>(seq),
nullptr, static_cast<size_t>(ademco_id));
if (res > 0) {
buff[res] = 0;
return env->NewStringUTF(buff);
}
return 0;
}
......@@ -23,6 +23,22 @@ JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePrint
JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
(JNIEnv *, jclass, jstring, jint);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativePack
* Signature: (IIIII)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack
(JNIEnv *, jclass, jint, jint, jint, jint, jint);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativePackAck
* Signature: (II)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePackAck
(JNIEnv *, jclass, jint, jint);
#ifdef __cplusplus
}
#endif
......
......@@ -6,7 +6,6 @@ public class AdemcoHbLibrary
{
static
{
if (System.getProperty("os.name").startsWith("Windows")) { // Windows
System.load(
FileSystems.getDefault()
......@@ -39,11 +38,30 @@ public class AdemcoHbLibrary
*/
private static native ParseResult nativeParse(String pack, int pack_len);
/*
* @brief 将远程控制命令打包成网络传输数据
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @param[in] ademco_event 安定宝事件码
* @param[in] zone 防区号
* @param[in] gg 分防区号
* @return String
*/
private static native String nativePack(int seq, int ademco_id, int ademco_event, int zone, int gg);
/*
* @brief 打包ACK
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @return String
*/
private static native String nativePackAck(int seq, int ademco_id);
public void testPprint(){ nativePrint(); }
public ParseResult parse(String pack, int pack_len){return nativeParse(pack, pack_len);}
public String pack(int seq, int ademco_id, int ademco_event, int zone, int gg){return nativePack(seq, ademco_id, ademco_event, zone, gg);}
public String packAck(int seq, int ademco_id){return nativePackAck(seq, ademco_id);}
public static void main(String[] args){
AdemcoHbLibrary lib = new AdemcoHbLibrary();
......@@ -57,26 +75,4 @@ public class AdemcoHbLibrary
}
/*
* @brief 将远程控制命令打包成网络传输数据
* @param[in|out] buff 缓冲区
* @param[in] buff_len 缓冲区长度
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @param[in] ademco_event 安定宝事件码
* @param[in] zone 防区号
* @param[in] gg 分防区号
* @return 大于0 成功,返回值代表包长;0 buff空间不足
*/
//DLL_FUNC int pack(char* buff, int buff_len, int seq, int ademco_id, int ademco_event, int zone, int gg);
/*
* @brief 打包ACK
* @param[in|out] buff 缓冲区
* @param[in] buff_len 缓冲区长度
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @return 大于0 成功,返回值代表包长;0 buff空间不足
*/
//DLL_FUNC int pack_ack(char* buff, int buff_len, int seq, int ademco_id);
}
......@@ -5,22 +5,53 @@ import java.net.*;
public class SimpleServer {
public static void main(String[] args) {
AdemcoHbLibrary lib = new AdemcoHbLibrary();
lib.testPprint();
// test parse
{
System.out.println("testing parse...");
String data = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r";
System.out.println("using data=" + data);
AdemcoHbLibrary.ParseResult res = lib.parse(data, data.length());
assert(res.result == 0);
assert(res.cb_commited == data.length());
System.out.println("parse result=" + res.result + ",cb_commited=" + res.cb_commited);
}
// 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("data=" + data);
}
// test pack ack
{
System.out.println("testing packAck...");
System.out.println("using seq=1234, ademco_id=666666");
String data = lib.packAck(1234, 666666);
System.out.println("data=" + data);
}
int port = 12345;
if (args.length > 0){
port = Integer.parseInt(args[0]);
}
// try (ServerSocket serverSocket = new ServerSocket(port)) {
// System.out.println("Server is listening on port " + port);
// while (true) {
// Socket socket = serverSocket.accept();
// System.out.println("New client connected");
// new SimpleServerThread(socket).start();
// }
// } catch (IOException ex) {
// System.out.println("Server exception: " + ex.getMessage());
// ex.printStackTrace();
// }
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Server is listening on port " + port);
while (true) {
Socket socket = serverSocket.accept();
System.out.println("New client connected");
new SimpleServerThread(socket).start();
}
} catch (IOException ex) {
System.out.println("Server exception: " + ex.getMessage());
ex.printStackTrace();
}
}
}
\ No newline at end of file
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