fixed decode algorithm memory free issue for jni call
This commit is contained in:
@@ -88,6 +88,6 @@ set(SOURCE_FILES_JNI_SHARED_LIB
|
||||
src/ir_decode.c
|
||||
include/ir_decode.h)
|
||||
|
||||
# add_executable(irda_decoder ${SOURCE_FILES_EXECUTABLE})
|
||||
add_executable(irda_decoder ${SOURCE_FILES_EXECUTABLE})
|
||||
# add_library(irda_decoder SHARED ${SOURCE_FILES_SHARED_LIB})
|
||||
add_library(irda_decoder SHARED ${SOURCE_FILES_JNI_SHARED_LIB})
|
||||
# add_library(irda_decoder SHARED ${SOURCE_FILES_JNI_SHARED_LIB})
|
||||
|
||||
@@ -37,6 +37,8 @@ typedef signed int INT;
|
||||
typedef unsigned int UINT;
|
||||
typedef int BOOL;
|
||||
|
||||
void noprint(const char *fmt, ...);
|
||||
|
||||
#if !defined BOARD_CC26XX
|
||||
#define ir_malloc(A) malloc(A)
|
||||
#define ir_free(A) free(A)
|
||||
@@ -48,7 +50,11 @@ typedef int BOOL;
|
||||
#define ir_memcpy(A, B, C) memcpy(A, B, C)
|
||||
#define ir_memset(A, B, C) memset(A, B, C)
|
||||
#define ir_strlen(A) strlen(A)
|
||||
#if (defined BOARD_PC) && (!defined BOARD_PC_JNI)
|
||||
#define ir_printf printf
|
||||
#else
|
||||
#define ir_printf noprint
|
||||
#endif
|
||||
#define USER_DATA_SIZE 1636
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -10,7 +10,6 @@ Revision log:
|
||||
**************************************************************************************************/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "ir_decode_jni.h"
|
||||
#include "../include/ir_defs.h"
|
||||
@@ -49,8 +48,6 @@ JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpenBinary
|
||||
return IR_DECODE_FAILED;
|
||||
}
|
||||
|
||||
(*env)->ReleaseByteArrayElements(env, binaries, j_buffer, JNI_ABORT);
|
||||
|
||||
return IR_DECODE_SUCCEEDED;
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +61,11 @@ static UINT16 ir_tv_lib_control(UINT8 key, UINT16 *l_user_data);
|
||||
static INT8 ir_tv_lib_close();
|
||||
|
||||
|
||||
void noprint(const char *fmt, ...)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// pubic function definitions
|
||||
|
||||
INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* file_name)
|
||||
@@ -111,7 +116,8 @@ INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* fi
|
||||
INT8 ir_binary_open(const UINT8 category, const UINT8 sub_category, UINT8* binary, UINT16 binary_length)
|
||||
{
|
||||
INT8 ret = IR_DECODE_SUCCEEDED;
|
||||
if (category == IR_TYPE_STATUS)
|
||||
|
||||
if (category == IR_CATEGORY_AC)
|
||||
{
|
||||
ir_binary_type = IR_TYPE_STATUS;
|
||||
ret = ir_ac_lib_open(binary, binary_length);
|
||||
@@ -352,11 +358,15 @@ static UINT16 ir_ac_lib_control(remote_ac_status_t ac_status, UINT16 *user_data,
|
||||
|
||||
time_length = create_ir_frame();
|
||||
|
||||
#if defined BOARD_PC
|
||||
#if (defined BOARD_PC)
|
||||
#if (defined BOARD_PC_JNI)
|
||||
ir_printf("code count = %d\n", context->code_cnt);
|
||||
#else
|
||||
for (i = 0; i < context->code_cnt; i++)
|
||||
{
|
||||
ir_printf("%d,", context->time[i]);
|
||||
}
|
||||
#endif
|
||||
ir_printf("\n");
|
||||
#endif
|
||||
|
||||
|
||||
@@ -70,22 +70,22 @@ INT8 decode_as_ac(char *file_name)
|
||||
break;
|
||||
case 's':
|
||||
case 'S':
|
||||
// temperature minus
|
||||
ac_status.acTemp = ((ac_status.acTemp == AC_TEMP_16) ? AC_TEMP_16 : (ac_status.acTemp - 1));
|
||||
function_code = AC_FUNCTION_TEMPERATURE_DOWN;
|
||||
// temperature minus
|
||||
break;
|
||||
case 'a':
|
||||
case 'A':
|
||||
// wind speed loop
|
||||
++ac_status.acWindSpeed;
|
||||
ac_status.acWindSpeed = ac_status.acWindSpeed % AC_WS_MAX;
|
||||
function_code = AC_FUNCTION_WIND_SPEED;
|
||||
// wind speed loop
|
||||
break;
|
||||
case 'd':
|
||||
case 'D':
|
||||
// wind swing loop
|
||||
ac_status.acWindDir = ((ac_status.acWindDir == 0) ? AC_SWING_OFF : AC_SWING_ON);
|
||||
function_code = AC_FUNCTION_WIND_SWING;
|
||||
// wind swing loop
|
||||
break;
|
||||
case 'q':
|
||||
case 'Q':
|
||||
|
||||
@@ -57,6 +57,7 @@ static void replace_with(ir_cycles_t *pcycles_num, UINT16 *ir_time);
|
||||
INT8 tv_lib_open(UINT8 *binary, UINT16 binary_length)
|
||||
{
|
||||
// load binary to buffer
|
||||
ir_printf("tv_lib_open entry, %d\n", binary_length);
|
||||
pbuffer->data = binary;
|
||||
pbuffer->len = binary_length;
|
||||
pbuffer->offset = 0;
|
||||
@@ -115,6 +116,7 @@ static BOOL get_ir_protocol(UINT8 encode_type)
|
||||
|
||||
/* cycles number */
|
||||
prot_cycles_num = pbuffer->data + pbuffer->offset;
|
||||
|
||||
if (encode_type == 0)
|
||||
{
|
||||
cycles_num_size = 8; /* "BOOT", "STOP", "SEP", "ONE", "ZERO", "FLIP", "TWO", "THREE" */
|
||||
@@ -190,6 +192,7 @@ static void print_ir_time(ir_data_t *data, UINT8 key_index, UINT16 *ir_time)
|
||||
|
||||
if (NULL == data || NULL == ir_time)
|
||||
{
|
||||
ir_printf("data or ir_time is null\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -198,11 +201,13 @@ static void print_ir_time(ir_data_t *data, UINT8 key_index, UINT16 *ir_time)
|
||||
|
||||
if (prot_cycles_num[IRDA_ONE] != 1 || prot_cycles_num[IRDA_ZERO] != 1)
|
||||
{
|
||||
ir_printf("logical 1 or 0 is invalid\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (time_index >= USER_DATA_SIZE)
|
||||
{
|
||||
ir_printf("time index exceeded\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -210,12 +215,14 @@ static void print_ir_time(ir_data_t *data, UINT8 key_index, UINT16 *ir_time)
|
||||
{
|
||||
if (pcycles == NULL)
|
||||
{
|
||||
ir_printf("pcycles is null\n");
|
||||
return;
|
||||
}
|
||||
|
||||
cycles_num = prot_cycles_num[data->index];
|
||||
if (cycles_num > 5)
|
||||
{
|
||||
ir_printf("cycles number exceeded\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user