From ef1748986ac05a0ce0aac510e96f8941fdef92be Mon Sep 17 00:00:00 2001 From: strawmanbobi Date: Wed, 17 May 2017 17:53:11 +0800 Subject: [PATCH] updated open binary jni --- src/ir_decoder/jni/ir_decode_jni.c | 27 +++++++++++++++++++++++++-- src/ir_decoder/jni/ir_decode_jni.h | 8 ++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/ir_decoder/jni/ir_decode_jni.c b/src/ir_decoder/jni/ir_decode_jni.c index da1a9da..1c84e4e 100644 --- a/src/ir_decoder/jni/ir_decode_jni.c +++ b/src/ir_decoder/jni/ir_decode_jni.c @@ -35,6 +35,25 @@ JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpen return IR_DECODE_SUCCEEDED; } +JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpenBinary + (JNIEnv *env, jobject this_obj, jint category_id, jint sub_cate, + jbyteArray binaries, jint bin_length) +{ + jbyte* j_buffer = (*env)->GetByteArrayElements(env, binaries, 0); + unsigned char* buffer = (unsigned char*)j_buffer; + + if (IR_DECODE_FAILED == ir_binary_open(category_id, sub_cate, buffer, bin_length)) + { + ir_close(); + (*env)->ReleaseByteArrayElements(env, binaries, j_buffer, JNI_ABORT); + return IR_DECODE_FAILED; + } + + (*env)->ReleaseByteArrayElements(env, binaries, j_buffer, JNI_ABORT); + + return IR_DECODE_SUCCEEDED; +} + JNIEXPORT jintArray JNICALL Java_net_irext_decodesdk_IRDecode_irDecode (JNIEnv *env, jobject this_obj, jint key_code, jobject jni_ac_status, jint change_wind_direction) { @@ -102,8 +121,12 @@ JNIEXPORT jobject JNICALL Java_net_irext_decodesdk_IRDecode_irACGetTemperatureRa int tempMax = 0; jobject temperature_range = NULL; - jclass temperature_range_class = (*env)->FindClass(env, "com/irext/remote/bean/jnibean/JNITemperatureRange"); - jmethodID temperature_range_mid = (*env)->GetMethodID(env, temperature_range_class, "", "()V"); + jclass temperature_range_class = + (*env)->FindClass(env, "com/irext/remote/bean/jnibean/JNITemperatureRange"); + + jmethodID temperature_range_mid = + (*env)->GetMethodID(env, temperature_range_class, "", "()V"); + jfieldID min_temp_fid = (*env)->GetFieldID(env, temperature_range_class, "tempMin", "I"); jfieldID max_temp_fid = (*env)->GetFieldID(env, temperature_range_class, "tempMax", "I"); diff --git a/src/ir_decoder/jni/ir_decode_jni.h b/src/ir_decoder/jni/ir_decode_jni.h index 52e0286..c44a0aa 100644 --- a/src/ir_decoder/jni/ir_decode_jni.h +++ b/src/ir_decoder/jni/ir_decode_jni.h @@ -63,6 +63,14 @@ extern "C" { JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpen (JNIEnv *, jobject, jint, jint, jstring); +/* + * Class: net_irext_decodesdk_IRDecode + * Method: irOpenBinary + * Signature: II(Ljava/lang/String;) + */ +JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpenBinary + (JNIEnv *, jobject, jint, jint, jbyteArray, jint); + /* * Class: net_irext_decodesdk_IRDecode * Method: irDecode