From ebdb4f10d12151408d2205750ff007ec4b1f392f Mon Sep 17 00:00:00 2001 From: Petre Eftime Date: Tue, 1 Sep 2015 14:45:46 +0300 Subject: [PATCH] java: fix Java types for ZFM20 Signed-off-by: Petre Eftime Signed-off-by: Mihai Tudor Panu --- src/zfm20/javaupm_zfm20.i | 22 ++++++++++++++++++---- src/zfm20/zfm20.cxx | 4 ++-- src/zfm20/zfm20.h | 3 ++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/zfm20/javaupm_zfm20.i b/src/zfm20/javaupm_zfm20.i index 8b7327d8..1941d4af 100644 --- a/src/zfm20/javaupm_zfm20.i +++ b/src/zfm20/javaupm_zfm20.i @@ -4,16 +4,30 @@ %include "typemaps.i" %include "arrays_java.i"; -%apply unsigned char[] { unsigned char *pkt }; -%apply signed char[] { char *buffer }; - %apply uint16_t *OUTPUT { uint16_t *id, uint16_t *score }; - %{ #include "zfm20.h" speed_t int_B57600 = B57600; %} + +%typemap(jni) (char *buffer, size_t len) "jbyteArray"; +%typemap(jtype) (char *buffer, size_t len) "byte[]"; +%typemap(jstype) (char *buffer, size_t len) "byte[]"; + +%typemap(javain) (char *buffer, size_t len) "$javainput"; + +%typemap(in) (char *buffer, size_t len) { + $1 = (char *) JCALL2(GetByteArrayElements, jenv, $input, NULL); + $2 = JCALL1(GetArrayLength, jenv, $input); +} + +%typemap(freearg) (char *buffer, size_t len) { + JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *)$1, 0); +} + +%apply (char *buffer, size_t len) { (unsigned char *pkt, int len) }; + %include "zfm20.h" speed_t int_B57600 = B57600; diff --git a/src/zfm20/zfm20.cxx b/src/zfm20/zfm20.cxx index 90f83517..1b5ee9ad 100644 --- a/src/zfm20/zfm20.cxx +++ b/src/zfm20/zfm20.cxx @@ -229,7 +229,7 @@ uint32_t ZFM20::getMillis() return elapse; } -bool ZFM20::verifyPacket(unsigned char *pkt) +bool ZFM20::verifyPacket(unsigned char *pkt, int len) { // verify packet header if (pkt[0] != ZFM20_START1 || pkt[1] != ZFM20_START2) @@ -291,7 +291,7 @@ bool ZFM20::getResponse(unsigned char *pkt, int len) } // now verify it. - return verifyPacket(pkt); + return verifyPacket(pkt, len); } bool ZFM20::verifyPassword() diff --git a/src/zfm20/zfm20.h b/src/zfm20/zfm20.h index fbeefa27..42bce2de 100644 --- a/src/zfm20/zfm20.h +++ b/src/zfm20/zfm20.h @@ -212,9 +212,10 @@ namespace upm { * Verifies the packet header and indicates its validity * * @param pkt Packet to check + * @param len Length of packet * @return True if the checksum is valid, false otherwise */ - bool verifyPacket(unsigned char *pkt); + bool verifyPacket(unsigned char *pkt, int len); /** * Returns the number of milliseconds elapsed since initClock()