From 20f805ec281e6655ea384d8d0a1a08bcd64e7939 Mon Sep 17 00:00:00 2001 From: strawmanbobi Date: Sat, 14 Mar 2020 14:19:41 +0800 Subject: [PATCH] updated embedded example for algorithm 0.2.5 --- .../{ => src}/include/ir_ac_apply.h | 90 +- .../{ => src}/include/ir_ac_binary_parse.h | 6 +- .../{ => src}/include/ir_ac_build_frame.h | 6 +- .../{ => src}/include/ir_ac_control.h | 882 ++++----- .../include/ir_ac_parse_forbidden_info.h | 6 +- .../include/ir_ac_parse_frame_info.h | 6 +- .../{ => src}/include/ir_ac_parse_parameter.h | 6 +- .../ir_decoder/{ => src}/include/ir_decode.h | 698 ++++---- .../ir_decoder/{ => src}/include/ir_defs.h | 151 +- .../{ => src}/include/ir_tv_control.h | 434 ++--- .../ir_decoder/{ => src}/include/ir_utils.h | 76 +- .../Source/ir_decoder/src/ir_ac_apply.c | 1570 +++++++++-------- .../ir_decoder/src/ir_ac_binary_parse.c | 6 +- .../Source/ir_decoder/src/ir_ac_build_frame.c | 289 +-- .../Source/ir_decoder/src/ir_ac_control.c | 1116 ++++++------ .../src/ir_ac_parse_forbidden_info.c | 292 +-- .../ir_decoder/src/ir_ac_parse_frame_info.c | 54 +- .../ir_decoder/src/ir_ac_parse_parameter.c | 256 +-- .../Source/ir_decoder/src/ir_decode.c | 1511 ++++++++-------- .../Source/ir_decoder/src/ir_tv_control.c | 898 +++++----- .../Source/ir_decoder/src/ir_utils.c | 8 +- .../SimpleBLEPeripheral-IREXT/CC26xx/IAR.zip | Bin 8825541 -> 8865662 bytes 22 files changed, 4269 insertions(+), 4092 deletions(-) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_ac_apply.h (84%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_ac_binary_parse.h (83%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_ac_build_frame.h (87%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_ac_control.h (92%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_ac_parse_forbidden_info.h (86%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_ac_parse_frame_info.h (89%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_ac_parse_parameter.h (94%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_decode.h (86%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_defs.h (83%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_tv_control.h (87%) rename cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/{ => src}/include/ir_utils.h (79%) diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_apply.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_apply.h similarity index 84% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_apply.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_apply.h index a9dc4d2..725d2e2 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_apply.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_apply.h @@ -1,43 +1,47 @@ -/************************************************************************************** -Filename: ir_ac_apply.h -Revised: Date: 2016-10-12 -Revision: Revision: 1.0 - -Description: This file provides methods for AC IR applying functionalities - -Revision log: -* 2016-10-12: created by strawmanbobi -**************************************************************************************/ - -#ifndef _IRDA_APPLY_H_ -#define _IRDA_APPLY_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "ir_decode.h" - -#define MIN_TAG_LENGTH_TYPE_1 4 -#define MIN_TAG_LENGTH_TYPE_2 6 - -INT8 apply_power(t_remote_ac_status ac_status, UINT8 function_code); - -INT8 apply_mode(t_remote_ac_status ac_status, UINT8 function_code); - -INT8 apply_wind_speed(t_remote_ac_status ac_status, UINT8 function_code); - -INT8 apply_swing(t_remote_ac_status ac_status, UINT8 function_code); - -INT8 apply_temperature(t_remote_ac_status ac_status, UINT8 function_code); - -INT8 apply_function(struct ac_protocol *protocol, UINT8 function); - -INT8 apply_checksum(struct ac_protocol *protocol); - -#ifdef __cplusplus -} -#endif - -#endif //_IRDA_APPLY_H_ \ No newline at end of file +/************************************************************************************** +Filename: ir_ac_apply.h +Revised: Date: 2016-10-12 +Revision: Revision: 1.0 + +Description: This file provides methods for AC IR applying functionalities + +Revision log: +* 2016-10-12: created by strawmanbobi +**************************************************************************************/ + +#ifndef _IR_APPLY_H_ +#define _IR_APPLY_H_ + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "OCUnusedMacroInspection" +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "ir_decode.h" + +#define MIN_TAG_LENGTH_TYPE_1 4 +#define MIN_TAG_LENGTH_TYPE_2 6 + +INT8 apply_power(t_remote_ac_status ac_status, UINT8 function_code); + +INT8 apply_mode(t_remote_ac_status ac_status, UINT8 function_code); + +INT8 apply_wind_speed(t_remote_ac_status ac_status, UINT8 function_code); + +INT8 apply_swing(t_remote_ac_status ac_status, UINT8 function_code); + +INT8 apply_temperature(t_remote_ac_status ac_status, UINT8 function_code); + +INT8 apply_function(struct ac_protocol *protocol, UINT8 function); + +INT8 apply_checksum(struct ac_protocol *protocol); + +#ifdef __cplusplus +} +#endif + +#endif // _IR_APPLY_H_ \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_binary_parse.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_binary_parse.h similarity index 83% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_binary_parse.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_binary_parse.h index 921437a..a24ed79 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_binary_parse.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_binary_parse.h @@ -9,8 +9,8 @@ Revision log: * 2017-01-03: created by strawmanbobi **************************************************************************************/ -#ifndef IRDA_DECODER_IR_AC_BINARY_PARSE_H -#define IRDA_DECODER_IR_AC_BINARY_PARSE_H +#ifndef _IR_DECODER_IR_AC_BINARY_PARSE_H +#define _IR_DECODER_IR_AC_BINARY_PARSE_H #ifdef __cplusplus extern "C" @@ -32,4 +32,4 @@ extern INT8 binary_parse_data(); #endif -#endif //IRDA_DECODER_IR_AC_BINARY_PARSE_H +#endif // _IR_DECODER_IR_AC_BINARY_PARSE_H diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_build_frame.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_build_frame.h similarity index 87% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_build_frame.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_build_frame.h index 8def3c8..1b55b11 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_build_frame.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_build_frame.h @@ -9,8 +9,8 @@ Revision log: * 2016-10-01: created by strawmanbobi **************************************************************************************/ -#ifndef _IRDA_IRFRAME_H_ -#define _IRDA_IRFRAME_H_ +#ifndef _IR_IRFRAME_H_ +#define _IR_IRFRAME_H_ #ifdef __cplusplus extern "C" @@ -25,4 +25,4 @@ extern UINT16 create_ir_frame(); } #endif -#endif // _IRDA_IRFRAME_H_ \ No newline at end of file +#endif // _IR_IRFRAME_H_ \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_control.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_control.h similarity index 92% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_control.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_control.h index 1ce4882..a7ed296 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_control.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_control.h @@ -1,439 +1,443 @@ -/************************************************************************************** -Filename: ir_ac_control.h -Revised: Date: 2016-12-31 -Revision: Revision: 1.0 - -Description: This file provides methods for AC IR control - -Revision log: -* 2016-10-12: created by strawmanbobi -**************************************************************************************/ -#ifndef IRDA_DECODER_IR_AC_CONTROL_H -#define IRDA_DECODER_IR_AC_CONTROL_H - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "ir_defs.h" - - -#define TAG_COUNT_FOR_PROTOCOL 29 - -#define TAG_INVALID 0xffff - -#define MAX_DELAYCODE_NUM 16 -#define MAX_BITNUM 16 - -#define AC_PARAMETER_TYPE_1 0 -#define AC_PARAMETER_TYPE_2 1 - -typedef enum -{ - AC_POWER_ON = 0, - AC_POWER_OFF, - AC_POWER_MAX -} t_ac_power; - -typedef enum -{ - AC_TEMP_16 = 0, - AC_TEMP_17, - AC_TEMP_18, - AC_TEMP_19, - AC_TEMP_20, - AC_TEMP_21, - AC_TEMP_22, - AC_TEMP_23, - AC_TEMP_24, - AC_TEMP_25, - AC_TEMP_26, - AC_TEMP_27, - AC_TEMP_28, - AC_TEMP_29, - AC_TEMP_30, - AC_TEMP_MAX -} t_ac_temperature; - -typedef enum -{ - AC_MODE_COOL = 0, - AC_MODE_HEAT, - AC_MODE_AUTO, - AC_MODE_FAN, - AC_MODE_DRY, - AC_MODE_MAX -} t_ac_mode; - -typedef enum -{ - AC_FUNCTION_POWER = 1, - AC_FUNCTION_MODE, - AC_FUNCTION_TEMPERATURE_UP, - AC_FUNCTION_TEMPERATURE_DOWN, - AC_FUNCTION_WIND_SPEED, - AC_FUNCTION_WIND_SWING, - AC_FUNCTION_WIND_FIX, - AC_FUNCTION_MAX, -} t_ac_function; - -typedef enum -{ - AC_WS_AUTO = 0, - AC_WS_LOW, - AC_WS_MEDIUM, - AC_WS_HIGH, - AC_WS_MAX -} t_ac_wind_speed; - -typedef enum -{ - AC_SWING_ON = 0, - AC_SWING_OFF, - AC_SWING_MAX -} t_ac_swing; - -typedef enum -{ - SWING_TYPE_SWING_ONLY = 0, - SWING_TYPE_NORMAL, - SWING_TYPE_NOT_SPECIFIED, - SWING_TYPE_MAX -} swing_type; - -typedef enum -{ - TEMP_TYPE_DYNAMIC = 0, - TEMP_TYPE_STATIC, - TEMP_TYPE_MAX, -} t_temp_type; - -// enumeration for application polymorphism -typedef enum -{ - AC_APPLY_POWER = 0, - AC_APPLY_MODE, - AC_APPLY_TEMPERATURE_UP, - AC_APPLY_TEMPERATURE_DOWN, - AC_APPLY_WIND_SPEED, - AC_APPLY_WIND_SWING, - AC_APPLY_WIND_FIX, - AC_APPLY_MAX -} t_ac_apply; - -typedef struct _ac_hex -{ - UINT8 len; - UINT8 *data; -} t_ac_hex; - -typedef struct _ac_level -{ - UINT16 low; - UINT16 high; -} t_ac_level; - -typedef struct _ac_bootcode -{ - UINT16 len; - UINT16 data[16]; -} t_ac_bootcode; - -typedef struct _ac_delaycode -{ - INT16 pos; - UINT16 time[8]; - UINT16 time_cnt; -} t_ac_delaycode; - -/* - * the array of tag_100X application data - * seg_len : length for each segment - * byte_pos : the position of update byte - * byte_value : the value to be updated to position - */ -typedef struct _tag_comp_type_1 -{ - UINT8 seg_len; - UINT8 *segment; -} t_tag_comp; - -typedef struct _tag_swing_info -{ - swing_type type; - UINT8 mode_count; - UINT8 dir_index; -} t_swing_info; - -typedef struct _tag_power_1 -{ - UINT8 len; - t_tag_comp comp_data[AC_POWER_MAX]; -} t_power_1; - -typedef struct _tag_temp_1 -{ - UINT8 len; - UINT8 type; - t_tag_comp comp_data[AC_TEMP_MAX]; -} t_temp_1; - -typedef struct tag_mode_1 -{ - UINT8 len; - t_tag_comp comp_data[AC_MODE_MAX]; -} t_mode_1; - -typedef struct tag_speed_1 -{ - UINT8 len; - t_tag_comp comp_data[AC_WS_MAX]; -} t_speed_1; - -typedef struct tag_swing_1 -{ - UINT8 len; - UINT16 count; - t_tag_comp *comp_data; -} t_swing_1; - -typedef struct tag_temp_2 -{ - UINT8 len; - UINT8 type; - t_tag_comp comp_data[AC_TEMP_MAX]; -} t_temp_2; - -typedef struct tag_mode_2 -{ - UINT8 len; - t_tag_comp comp_data[AC_MODE_MAX]; -} t_mode_2; - -typedef struct tag_speed_2 -{ - UINT8 len; - t_tag_comp comp_data[AC_WS_MAX]; -} t_speed_2; - -typedef struct tag_swing_2 -{ - UINT8 len; - UINT16 count; - t_tag_comp *comp_data; -} t_swing_2; - -#if defined SUPPORT_HORIZONTAL_SWING -typedef struct tag_horiswing_1 -{ - UINT16 len; - t_tag_comp comp_data[AC_HORI_SWING_MAX]; -} hori_swing_1; -#endif - -typedef struct _tag_checksum_data -{ - UINT8 len; - UINT8 type; - UINT8 start_byte_pos; - UINT8 end_byte_pos; - UINT8 checksum_byte_pos; - UINT8 checksum_plus; - UINT8 *spec_pos; -} t_tag_checksum_data; - -typedef struct tag_checksum -{ - UINT8 len; - UINT16 count; - t_tag_checksum_data *checksum_data; -} t_checksum; - -typedef struct tag_function_1 -{ - UINT8 len; - t_tag_comp comp_data[AC_FUNCTION_MAX - 1]; -} t_function_1; - -typedef struct tag_function_2 -{ - UINT8 len; - t_tag_comp comp_data[AC_FUNCTION_MAX - 1]; -} t_function_2; - -typedef struct tag_solo_code -{ - UINT8 len; - UINT8 solo_func_count; - UINT8 solo_function_codes[AC_FUNCTION_MAX - 1]; -} t_solo_code; - -typedef struct _ac_bitnum -{ - INT16 pos; - UINT16 bits; -} t_ac_bit_num; - -typedef enum -{ - N_COOL = 0, - N_HEAT, - N_AUTO, - N_FAN, - N_DRY, - N_MODE_MAX, -} t_ac_n_mode; - -typedef enum -{ - CHECKSUM_TYPE_BYTE = 1, - CHECKSUM_TYPE_BYTE_INVERSE, - CHECKSUM_TYPE_HALF_BYTE, - CHECKSUM_TYPE_HALF_BYTE_INVERSE, - CHECKSUM_TYPE_SPEC_HALF_BYTE, - CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE, - CHECKSUM_TYPE_SPEC_HALF_BYTE_ONE_BYTE, - CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE_ONE_BYTE, - CHECKSUM_TYPE_MAX, -} t_checksum_type; - -typedef struct _ac_n_mode_info -{ - UINT8 enable; - UINT8 all_speed; - UINT8 all_temp; - UINT8 temp[AC_TEMP_MAX]; - UINT8 temp_cnt; - UINT8 speed[AC_WS_MAX]; - UINT8 speed_cnt; -} t_ac_n_mode_info; - -typedef struct ac_protocol -{ - UINT8 endian; - // t_ac_hex default_code; - t_ac_hex default_code; - t_ac_level zero; - t_ac_level one; - t_ac_bootcode boot_code; - t_ac_delaycode dc[MAX_DELAYCODE_NUM]; - t_power_1 power1; - t_temp_1 temp1; - t_mode_1 mode1; - t_speed_1 speed1; - t_swing_1 swing1; - t_checksum checksum; - - t_function_1 function1; - t_function_2 function2; - - t_temp_2 temp2; - t_mode_2 mode2; - t_speed_2 speed2; - t_swing_2 swing2; - - t_swing_info si; - t_solo_code sc; - - UINT8 swing_status; - - BOOL change_wind_direction; - - UINT16 dc_cnt; - t_ac_bit_num bit_num[MAX_BITNUM]; - UINT16 bit_num_cnt; - UINT16 repeat_times; - t_ac_n_mode_info n_mode[N_MODE_MAX]; - UINT16 code_cnt; - UINT8 last_bit; - UINT16 *time; - UINT8 solo_function_mark; - - UINT16 frame_length; -} t_ac_protocol; - -typedef struct tag_head -{ - UINT16 tag; - UINT16 len; - UINT16 offset; - UINT8 *p_data; -} t_tag_head; - -struct ir_bin_buffer -{ - UINT8 *data; - UINT16 len; - UINT16 offset; -}; - -typedef struct REMOTE_AC_STATUS -{ - t_ac_power ac_power; - t_ac_temperature ac_temp; - t_ac_mode ac_mode; - t_ac_swing ac_wind_dir; - t_ac_wind_speed ac_wind_speed; - UINT8 ac_display; - UINT8 ac_sleep; - UINT8 ac_timer; -} t_remote_ac_status; - -// function polymorphism -typedef INT8 (*lp_apply_ac_parameter)(t_remote_ac_status ac_status, UINT8 function_code); - -#define TAG_AC_BOOT_CODE 1 -#define TAG_AC_ZERO 2 -#define TAG_AC_ONE 3 -#define TAG_AC_DELAY_CODE 4 -#define TAG_AC_FRAME_LENGTH 5 -#define TAG_AC_ENDIAN 6 -#define TAG_AC_LAST_BIT 7 - -#define TAG_AC_POWER_1 21 -#define TAG_AC_DEFAULT_CODE 22 -#define TAG_AC_TEMP_1 23 -#define TAG_AC_MODE_1 24 -#define TAG_AC_SPEED_1 25 -#define TAG_AC_SWING_1 26 -#define TAG_AC_CHECKSUM_TYPE 27 -#define TAG_AC_SOLO_FUNCTION 28 -#define TAG_AC_FUNCTION_1 29 -#define TAG_AC_TEMP_2 30 -#define TAG_AC_MODE_2 31 -#define TAG_AC_SPEED_2 32 -#define TAG_AC_SWING_2 33 -#define TAG_AC_FUNCTION_2 34 - -#define TAG_AC_BAN_FUNCTION_IN_COOL_MODE 41 -#define TAG_AC_BAN_FUNCTION_IN_HEAT_MODE 42 -#define TAG_AC_BAN_FUNCTION_IN_AUTO_MODE 43 -#define TAG_AC_BAN_FUNCTION_IN_FAN_MODE 44 -#define TAG_AC_BAN_FUNCTION_IN_DRY_MODE 45 -#define TAG_AC_SWING_INFO 46 -#define TAG_AC_REPEAT_TIMES 47 -#define TAG_AC_BIT_NUM 48 - - -// definition about size - -#define PROTOCOL_SIZE (sizeof(t_ac_protocol)) - -/* exported variables */ -extern UINT8 *ir_hex_code; -extern UINT8 ir_hex_len; -extern t_ac_protocol *context; - - -extern INT8 ir_ac_lib_parse(); - -extern INT8 free_ac_context(); - -extern BOOL is_solo_function(UINT8 function_code); - -#ifdef __cplusplus -} -#endif - -#endif //IRDA_DECODER_IR_AC_CONTROL_H +/************************************************************************************** +Filename: ir_ac_control.h +Revised: Date: 2016-12-31 +Revision: Revision: 1.0 + +Description: This file provides methods for AC IR control + +Revision log: +* 2016-10-12: created by strawmanbobi +**************************************************************************************/ +#ifndef _IR_DECODER_IR_AC_CONTROL_H +#define _IR_DECODER_IR_AC_CONTROL_H + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "ir_defs.h" + + +#define TAG_COUNT_FOR_PROTOCOL 29 + +#define TAG_INVALID 0xffff + +#define MAX_DELAYCODE_NUM 16 +#define MAX_BITNUM 16 + +#define AC_PARAMETER_TYPE_1 0 +#define AC_PARAMETER_TYPE_2 1 + +typedef enum +{ + AC_POWER_ON = 0, + AC_POWER_OFF, + AC_POWER_MAX +} t_ac_power; + +typedef enum +{ + AC_TEMP_16 = 0, + AC_TEMP_17, + AC_TEMP_18, + AC_TEMP_19, + AC_TEMP_20, + AC_TEMP_21, + AC_TEMP_22, + AC_TEMP_23, + AC_TEMP_24, + AC_TEMP_25, + AC_TEMP_26, + AC_TEMP_27, + AC_TEMP_28, + AC_TEMP_29, + AC_TEMP_30, + AC_TEMP_MAX +} t_ac_temperature; + +typedef enum +{ + AC_MODE_COOL = 0, + AC_MODE_HEAT, + AC_MODE_AUTO, + AC_MODE_FAN, + AC_MODE_DRY, + AC_MODE_MAX +} t_ac_mode; + +typedef enum +{ + AC_FUNCTION_POWER = 1, + AC_FUNCTION_MODE, + AC_FUNCTION_TEMPERATURE_UP, + AC_FUNCTION_TEMPERATURE_DOWN, + AC_FUNCTION_WIND_SPEED, + AC_FUNCTION_WIND_SWING, + AC_FUNCTION_WIND_FIX, + AC_FUNCTION_MAX, +} t_ac_function; + +typedef enum +{ + AC_WS_AUTO = 0, + AC_WS_LOW, + AC_WS_MEDIUM, + AC_WS_HIGH, + AC_WS_MAX +} t_ac_wind_speed; + +typedef enum +{ + AC_SWING_ON = 0, + AC_SWING_OFF, + AC_SWING_MAX +} t_ac_swing; + +typedef enum +{ + SWING_TYPE_SWING_ONLY = 0, + SWING_TYPE_NORMAL, + SWING_TYPE_NOT_SPECIFIED, + SWING_TYPE_MAX +} swing_type; + +typedef enum +{ + TEMP_TYPE_DYNAMIC = 0, + TEMP_TYPE_STATIC, + TEMP_TYPE_MAX, +} t_temp_type; + +// enumeration for application polymorphism +typedef enum +{ + AC_APPLY_POWER = 0, + AC_APPLY_MODE, + AC_APPLY_TEMPERATURE_UP, + AC_APPLY_TEMPERATURE_DOWN, + AC_APPLY_WIND_SPEED, + AC_APPLY_WIND_SWING, + AC_APPLY_WIND_FIX, + AC_APPLY_MAX +} t_ac_apply; + +typedef struct _ac_hex +{ + UINT8 len; + UINT8 *data; +} t_ac_hex; + +typedef struct _ac_level +{ + UINT16 low; + UINT16 high; +} t_ac_level; + +typedef struct _ac_bootcode +{ + UINT16 len; + UINT16 data[16]; +} t_ac_bootcode; + +typedef struct _ac_delaycode +{ + INT16 pos; + UINT16 time[8]; + UINT16 time_cnt; +} t_ac_delaycode; + +/* + * the array of tag_100X application data + * seg_len : length for each segment + * byte_pos : the position of update byte + * byte_value : the value to be updated to position + */ +typedef struct _tag_comp_type_1 +{ + UINT8 seg_len; + UINT8 *segment; +} t_tag_comp; + +typedef struct _tag_swing_info +{ + swing_type type; + UINT8 mode_count; + UINT8 dir_index; +} t_swing_info; + +typedef struct _tag_power_1 +{ + UINT8 len; + t_tag_comp comp_data[AC_POWER_MAX]; +} t_power_1; + +typedef struct _tag_temp_1 +{ + UINT8 len; + UINT8 type; + t_tag_comp comp_data[AC_TEMP_MAX]; +} t_temp_1; + +typedef struct tag_mode_1 +{ + UINT8 len; + t_tag_comp comp_data[AC_MODE_MAX]; +} t_mode_1; + +typedef struct tag_speed_1 +{ + UINT8 len; + t_tag_comp comp_data[AC_WS_MAX]; +} t_speed_1; + +typedef struct tag_swing_1 +{ + UINT8 len; + UINT16 count; + t_tag_comp *comp_data; +} t_swing_1; + +typedef struct tag_temp_2 +{ + UINT8 len; + UINT8 type; + t_tag_comp comp_data[AC_TEMP_MAX]; +} t_temp_2; + +typedef struct tag_mode_2 +{ + UINT8 len; + t_tag_comp comp_data[AC_MODE_MAX]; +} t_mode_2; + +typedef struct tag_speed_2 +{ + UINT8 len; + t_tag_comp comp_data[AC_WS_MAX]; +} t_speed_2; + +typedef struct tag_swing_2 +{ + UINT8 len; + UINT16 count; + t_tag_comp *comp_data; +} t_swing_2; + +#if defined SUPPORT_HORIZONTAL_SWING +typedef struct tag_horiswing_1 +{ + UINT16 len; + t_tag_comp comp_data[AC_HORI_SWING_MAX]; +} hori_swing_1; +#endif + +typedef struct _tag_checksum_data +{ + UINT8 len; + UINT8 type; + UINT8 start_byte_pos; + UINT8 end_byte_pos; + UINT8 checksum_byte_pos; + UINT8 checksum_plus; + UINT8 *spec_pos; +} t_tag_checksum_data; + +typedef struct tag_checksum +{ + UINT8 len; + UINT16 count; + t_tag_checksum_data *checksum_data; +} t_checksum; + +typedef struct tag_function_1 +{ + UINT8 len; + t_tag_comp comp_data[AC_FUNCTION_MAX - 1]; +} t_function_1; + +typedef struct tag_function_2 +{ + UINT8 len; + t_tag_comp comp_data[AC_FUNCTION_MAX - 1]; +} t_function_2; + +typedef struct tag_solo_code +{ + UINT8 len; + UINT8 solo_func_count; + UINT8 solo_function_codes[AC_FUNCTION_MAX - 1]; +} t_solo_code; + +typedef struct _ac_bitnum +{ + INT16 pos; + UINT16 bits; +} t_ac_bit_num; + +typedef enum +{ + N_COOL = 0, + N_HEAT, + N_AUTO, + N_FAN, + N_DRY, + N_MODE_MAX, +} t_ac_n_mode; + +typedef enum +{ + CHECKSUM_TYPE_BYTE = 1, + CHECKSUM_TYPE_BYTE_INVERSE, + CHECKSUM_TYPE_HALF_BYTE, + CHECKSUM_TYPE_HALF_BYTE_INVERSE, + CHECKSUM_TYPE_SPEC_HALF_BYTE, + CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE, + CHECKSUM_TYPE_SPEC_HALF_BYTE_ONE_BYTE, + CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE_ONE_BYTE, + CHECKSUM_TYPE_MAX, +} t_checksum_type; + +typedef struct _ac_n_mode_info +{ + UINT8 enable; + UINT8 all_speed; + UINT8 all_temp; + UINT8 temp[AC_TEMP_MAX]; + UINT8 temp_cnt; + UINT8 speed[AC_WS_MAX]; + UINT8 speed_cnt; +} t_ac_n_mode_info; + +typedef struct ac_protocol +{ + UINT8 endian; + // t_ac_hex default_code; + t_ac_hex default_code; + t_ac_level zero; + t_ac_level one; + t_ac_bootcode boot_code; + t_ac_delaycode dc[MAX_DELAYCODE_NUM]; + t_power_1 power1; + t_temp_1 temp1; + t_mode_1 mode1; + t_speed_1 speed1; + t_swing_1 swing1; + t_checksum checksum; + + t_function_1 function1; + t_function_2 function2; + + t_temp_2 temp2; + t_mode_2 mode2; + t_speed_2 speed2; + t_swing_2 swing2; + + t_swing_info si; + t_solo_code sc; + + UINT8 swing_status; + + BOOL change_wind_direction; + + UINT16 dc_cnt; + t_ac_bit_num bit_num[MAX_BITNUM]; + UINT16 bit_num_cnt; + UINT16 repeat_times; + t_ac_n_mode_info n_mode[N_MODE_MAX]; + UINT16 code_cnt; + UINT8 last_bit; + UINT16 *time; + UINT8 solo_function_mark; + + UINT16 frame_length; +} t_ac_protocol; + +typedef struct tag_head +{ + UINT16 tag; + UINT16 len; + UINT16 offset; + UINT8 *p_data; +} t_tag_head; + +struct ir_bin_buffer +{ + UINT8 *data; + UINT16 len; + UINT16 offset; +}; + +typedef struct REMOTE_AC_STATUS +{ + t_ac_power ac_power; + t_ac_temperature ac_temp; + t_ac_mode ac_mode; + t_ac_swing ac_wind_dir; + t_ac_wind_speed ac_wind_speed; + UINT8 ac_display; + UINT8 ac_sleep; + UINT8 ac_timer; +} t_remote_ac_status; + +// function polymorphism +typedef INT8 (*lp_apply_ac_parameter)(t_remote_ac_status ac_status, UINT8 function_code); + +#define TAG_AC_BOOT_CODE 1 +#define TAG_AC_ZERO 2 +#define TAG_AC_ONE 3 +#define TAG_AC_DELAY_CODE 4 +#define TAG_AC_FRAME_LENGTH 5 +#define TAG_AC_ENDIAN 6 +#define TAG_AC_LAST_BIT 7 + +#define TAG_AC_POWER_1 21 +#define TAG_AC_DEFAULT_CODE 22 +#define TAG_AC_TEMP_1 23 +#define TAG_AC_MODE_1 24 +#define TAG_AC_SPEED_1 25 +#define TAG_AC_SWING_1 26 +#define TAG_AC_CHECKSUM_TYPE 27 +#define TAG_AC_SOLO_FUNCTION 28 +#define TAG_AC_FUNCTION_1 29 +#define TAG_AC_TEMP_2 30 +#define TAG_AC_MODE_2 31 +#define TAG_AC_SPEED_2 32 +#define TAG_AC_SWING_2 33 +#define TAG_AC_FUNCTION_2 34 + +#define TAG_AC_BAN_FUNCTION_IN_COOL_MODE 41 +#define TAG_AC_BAN_FUNCTION_IN_HEAT_MODE 42 +#define TAG_AC_BAN_FUNCTION_IN_AUTO_MODE 43 +#define TAG_AC_BAN_FUNCTION_IN_FAN_MODE 44 +#define TAG_AC_BAN_FUNCTION_IN_DRY_MODE 45 +#define TAG_AC_SWING_INFO 46 +#define TAG_AC_REPEAT_TIMES 47 +#define TAG_AC_BIT_NUM 48 + + +// definition about size + +#define PROTOCOL_SIZE (sizeof(t_ac_protocol)) + +/* exported variables */ +extern UINT8 *ir_hex_code; +extern UINT8 ir_hex_len; +extern t_ac_protocol *context; + + +extern INT8 ir_ac_lib_parse(); + +extern INT8 free_ac_context(); + +extern BOOL is_solo_function(UINT8 function_code); + +#ifdef __cplusplus +} +#endif + +#endif // _IR_DECODER_IR_AC_CONTROL_H diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_forbidden_info.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_forbidden_info.h similarity index 86% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_forbidden_info.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_forbidden_info.h index 8f0f5b1..a134ff9 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_forbidden_info.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_forbidden_info.h @@ -9,8 +9,8 @@ Revision log: * 2016-10-05: created by strawmanbobi **************************************************************************************/ -#ifndef _IRDA_PARSE_PARSE_H_ -#define _IRDA_PARSE_PARSE_H_ +#ifndef _IR_PARSE_PARSE_H_ +#define _IR_PARSE_PARSE_H_ #ifdef __cplusplus extern "C" @@ -25,5 +25,5 @@ extern INT8 parse_nmode(struct tag_head *tag, t_ac_n_mode index); } #endif -#endif // _IRDA_PARSE_PARSE_H_ +#endif // _IR_PARSE_PARSE_H_ diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_frame_info.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_frame_info.h similarity index 89% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_frame_info.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_frame_info.h index 899f499..3016ea2 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_frame_info.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_frame_info.h @@ -9,8 +9,8 @@ Revision log: * 2016-10-11: created by strawmanbobi **************************************************************************************/ -#ifndef _IRDA_PARSE_FRAME_PARAMETER_H_ -#define _IRDA_PARSE_FRAME_PARAMETER_H_ +#ifndef _IR_PARSE_FRAME_PARAMETER_H_ +#define _IR_PARSE_FRAME_PARAMETER_H_ #ifdef __cplusplus extern "C" @@ -41,4 +41,4 @@ extern INT8 parse_bit_num(struct tag_head *tag); } #endif -#endif // _IRDA_PARSE_FRAME_PARAMETER_H_ \ No newline at end of file +#endif // _IR_PARSE_FRAME_PARAMETER_H_ \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_parameter.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_parameter.h similarity index 94% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_parameter.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_parameter.h index 6d53e89..c991e46 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_ac_parse_parameter.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_ac_parse_parameter.h @@ -9,8 +9,8 @@ Revision log: * 2016-10-12: created by strawmanbobi **************************************************************************************/ -#ifndef _IRDA_PARSE_AC_PARAMETER_H_ -#define _IRDA_PARSE_AC_PARAMETER_H_ +#ifndef _IR_PARSE_AC_PARAMETER_H_ +#define _IR_PARSE_AC_PARAMETER_H_ #ifdef __cplusplus extern "C" @@ -55,4 +55,4 @@ extern INT8 parse_solo_code(struct tag_head *tag, t_solo_code *sc); } #endif -#endif // _IRDA_PARSE_AC_PARAMETER_H_ \ No newline at end of file +#endif // _IR_PARSE_AC_PARAMETER_H_ \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_decode.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_decode.h similarity index 86% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_decode.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_decode.h index 75353ae..4ebe0c7 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_decode.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_decode.h @@ -1,329 +1,369 @@ -/************************************************************************************** -Filename: ir_decode.h -Revised: Date: 2016-10-01 -Revision: Revision: 1.0 - -Description: This file provides algorithms for IR decode - -Revision log: -* 2016-10-01: created by strawmanbobi -**************************************************************************************/ - -#ifndef _IRDA_DECODE_H_ -#define _IRDA_DECODE_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include "ir_defs.h" -#include "ir_ac_control.h" -#include "ir_tv_control.h" - -#define IR_DECODE_FAILED (-1) -#define IR_DECODE_SUCCEEDED (0) - -#define IR_CATEGORY_AC 1 -#define IR_CATEGORY_TV 2 - -#define IR_TYPE_STATUS 0 -#define IR_TYPE_COMMANDS 1 - -#define SUB_CATEGORY_QUATERNARY 0 -#define SUB_CATEGORY_HEXADECIMAL 1 - -// remote control key definition -#define KEY_TV_POWER 0 -#define KEY_TV_MUTE 1 -#define KEY_TV_UP 2 -#define KEY_TV_DOWN 3 -#define KEY_TV_LEFT 4 -#define KEY_TV_RIGHT 5 -#define KEY_TV_OK 6 -#define KEY_TV_VOL_PLUS 7 -#define KEY_TV_VOL_MINUS 8 -#define KEY_TV_BACK 9 -#define KEY_TV_INPUT 10 -#define KEY_TV_MENU 11 -#define KEY_TV_HOME 12 -#define KEY_TV_SETTINGS 13 - -#define KEY_AC_POWER 0 -#define KEY_AC_MODE_SWITCH 1 -#define KEY_AC_TEMP_PLUS 2 -#define KEY_AC_TEMP_MINUS 3 -#define KEY_AC_WIND_SPEED 9 -#define KEY_AC_WIND_SWING 10 -#define KEY_AC_WIND_FIX 11 - -#define KEY_STB_POWER 0 -#define KEY_STB_MUTE 1 -#define KEY_STB_UP 2 -#define KEY_STB_DOWN 3 -#define KEY_STB_LEFT 4 -#define KEY_STB_RIGHT 5 -#define KEY_STB_OK 6 -#define KEY_STB_VOL_PLUS 7 -#define KEY_STB_VOL_MINUS 8 -#define KEY_STB_BACK 9 -#define KEY_STB_INPUT 10 -#define KEY_STB_MENU 11 -#define KEY_STB_PAGE_UP 12 -#define KEY_STB_PAGE_DOWN 13 - -#define KEY_NETBOX_POWER 0 -#define KEY_NETBOX_UP 1 -#define KEY_NETBOX_DOWN 2 -#define KEY_NETBOX_LEFT 3 -#define KEY_NETBOX_RIGHT 4 -#define KEY_NETBOX_OK 5 -#define KEY_NETBOX_VOL_PLUS 6 -#define KEY_NETBOX_VOL_MINUS 7 -#define KEY_NETBOX_BACK 8 -#define KEY_NETBOX_MENU 9 -#define KEY_NETBOX_HOME 10 - -#define KEY_IPTV_POWER 0 -#define KEY_IPTV_MUTE 1 -#define KEY_IPTV_UP 2 -#define KEY_IPTV_DOWN 3 -#define KEY_IPTV_LEFT 4 -#define KEY_IPTV_RIGHT 5 -#define KEY_IPTV_OK 6 -#define KEY_IPTV_VOL_PLUS 7 -#define KEY_IPTV_VOL_MINUS 8 -#define KEY_IPTV_BACK 9 -#define KEY_IPTV_INPUT 10 -#define KEY_IPTV_MENU 11 -#define KEY_IPTV_PAGE_UP 12 -#define KEY_IPTV_PAGE_DOWN 13 - -#define KEY_DVD_POWER 0 -#define KEY_DVD_UP 1 -#define KEY_DVD_DOWN 2 -#define KEY_DVD_LEFT 3 -#define KEY_DVD_RIGHT 4 -#define KEY_DVD_OK 5 -#define KEY_DVD_VOL_PLUS 6 -#define KEY_DVD_VOL_MINUS 7 -#define KEY_DVD_PLAY 8 -#define KEY_DVD_PAUSE 9 -#define KEY_DVD_EJECT 10 -#define KEY_DVD_REWIND 11 -#define KEY_DVD_FASTFORWARD 12 -#define KEY_DVD_MENU 13 - -#define KEY_FAN_POWER 0 -#define KEY_FAN_WIND_PLUS 6 -#define KEY_FAN_WIND_MUNIS 7 -#define KEY_FAN_SWING 8 -#define KEY_FAN_WIND_SPEED 9 -#define KEY_FAN_WIND_TYPE 10 - -#define KEY_PROJECTOR_POWER 0 -#define KEY_PROJECTOR_UP 1 -#define KEY_PROJECTOR_DOWN 2 -#define KEY_PROJECTOR_LEFT 3 -#define KEY_PROJECTOR_RIGHT 4 -#define KEY_PROJECTOR_OK 5 -#define KEY_PROJECTOR_VOL_PLUS 6 -#define KEY_PROJECTOR_VOL_MINUS 7 -#define KEY_PROJECTOR_ZOOM_OUT 8 -#define KEY_PROJECTOR_MENU 9 -#define KEY_PROJECTOR_ZOOM_IN 10 -#define KEY_PROJECTOR_BACK 11 - -#define KEY_STEREO_POWER 0 -#define KEY_STEREO_UP 1 -#define KEY_STEREO_DOWN 2 -#define KEY_STEREO_LEFT 3 -#define KEY_STEREO_RIGHT 4 -#define KEY_STEREO_OK 5 -#define KEY_STEREO_VOL_PLUS 6 -#define KEY_STEREO_VOL_MINUS 7 -#define KEY_STEREO_MUTE 8 -#define KEY_STEREO_MENU 9 - -#define KEY_BULB_POWER 0 -#define KEY_BULB_COLOR_1 1 -#define KEY_BULB_COLOR_2 2 -#define KEY_BULB_COLOR_3 3 -#define KEY_BULB_COLOR_4 4 -#define KEY_BULB_COLOR_0 5 -#define KEY_BULB_BRIGHT_PLUS 6 -#define KEY_BULB_BRIGHT_MINUS 7 -#define KEY_BULB_BRIGHT_POWER_ON 8 -#define KEY_BULB_BRIGHT_RAINBOW 9 -#define KEY_BULB_BRIGHT_POWER_OFF 10 - -#define KEY_CLEANROBOT_POWER 0 -#define KEY_CLEANROBOT_FOWWARD 1 -#define KEY_CLEANROBOT_BACKWARD 2 -#define KEY_CLEANROBOT_LEFT 3 -#define KEY_CLEANROBOT_RIGHT 4 -#define KEY_CLEANROBOT_START 5 -#define KEY_CLEANROBOT_STOP 6 -#define KEY_CLEANROBOT_AUTO 8 -#define KEY_CLEANROBOT_SPOT 9 -#define KEY_CLEANROBOT_SPEED 10 -#define KEY_CLEANROBOT_TIMER 11 -#define KEY_CLEANROBOT_CHARGE 12 -#define KEY_CLEANROBOT_PRESERVE 13 - -#define KEY_AIRCLEANER_POWER 0 -#define KEY_AIRCLEANER_ION 5 -#define KEY_AIRCLEANER_AUTO 8 -#define KEY_AIRCLEANER_WIND_SPEED 9 -#define KEY_AIRCLEANER_MODE_SWITCH 10 -#define KEY_AIRCLEANER_TIMER 11 -#define KEY_AIRCLEANER_LIGHT 12 -#define KEY_AIRCLEANER_FORCE 13 - -#define KEY_DYSON_POWER 0 -#define KEY_DYSON_WIND_SPEED_PLUS 1 -#define KEY_DYSON_WIND_SPEED_MINUS 2 -#define KEY_DYSON_TIMER_MINUS 3 -#define KEY_DYSON_TIMER_PLUS 4 -#define KEY_DYSON_AUTO 5 -#define KEY_DYSON_TEMP_PLUS 6 -#define KEY_DYSON_TEMP_MINUS 7 -#define KEY_DYSON_SWING 8 -#define KEY_DYSON_DIFFUSION 9 -#define KEY_DYSON_FAV 10 -#define KEY_DYSON_TIMER 11 -#define KEY_DYSON_SLEEP 12 -#define KEY_DYSON_COOL 13 - - -// exported functions -/** - * function ir_file_open - * - * description: open IR binary code from file - * - * parameters: category (in) - category ID get from indexing API - * sub_category (in) - subcategory ID get from indexing API - * file_name (in) - file name of IR binary - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - * - */ -extern INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* file_name); - -/** - * function ir_binary_open - * - * description: open IR binary code from buffer - * - * parameters: category (in) - category ID get from indexing API - * sub_category (in) - subcategory ID get from indexing API - * binary (in) - pointer to binary buffer - * binary_length (in) - binary buffer size - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - */ -extern INT8 ir_binary_open(const UINT8 category, const UINT8 sub_category, UINT8* binary, UINT16 binary_length); - -/** - * function ir_decode - * - * description: decode IR binary into INT16 array which indicates the IR levels - * - * parameters: key_code (in) - the code of pressed key - * user_data (out) - output decoded data in INT16 array format - * ac_status(in) - pointer to AC status (optional) - * change_wind_direction (in) - if control changes wind direction for AC (for AC only) - * - * returns: length of decoded data (0 indicates decode failure) - */ -extern UINT16 ir_decode(UINT8 key_code, UINT16* user_data, t_remote_ac_status* ac_status, BOOL change_wind_direction); - -/** - * function ir_close - * - * description: close IR binary code - * - * parameters: N/A - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - */ -extern INT8 ir_close(); - -/** - * function get_temperature_range - * - * description: get the supported temperature range [min, max] for the opened AC IR binary - * - * parameters: ac_mode (in) specify in which AC mode the application need to get temperature info - * temp_min (out) the min temperature supported in a specified AC mode - * temp_max (out) the max temperature supported in a specified AC mode - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - */ -extern INT8 get_temperature_range(UINT8 ac_mode, INT8 *temp_min, INT8 *temp_max); - -/** - * function get_supported_mode - * - * description: get supported mode for the opened AC IR binary - * - * parameters: supported_mode (out) mode supported by the remote in lower 5 bits - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - */ -extern INT8 get_supported_mode(UINT8 *supported_mode); - -/** - * function get_supported_wind_speed - * - * description: get supported wind speed levels for the opened AC IR binary in certain mode - * - * parameters: ac_mode (in) specify in which AC mode the application need to get wind speed info - * supported_wind_speed (out) wind speed supported by the remote in lower 4 bits - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - */ -extern INT8 get_supported_wind_speed(UINT8 ac_mode, UINT8 *supported_wind_speed); - -/** - * function get_supported_swing - * - * description: get supported swing functions for the opened AC IR binary in certain mode - * - * parameters: ac_mode (in) specify in which AC mode the application need to get swing info - * supported_swing (out) swing supported by the remote in lower 2 bits - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - */ -extern INT8 get_supported_swing(UINT8 ac_mode, UINT8 *supported_swing); - -/** - * function get_supported_wind_direction - * - * description: get supported wind directions for the opened AC IR binary in certain mode - * - * parameters: supported_wind_direction (out) swing supported by the remote in lower 2 bits - * - * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED - */ -extern INT8 get_supported_wind_direction(UINT8 *supported_wind_direction); - - -// private extern function -#if (defined BOARD_PC || defined BOARD_PC_DLL) -extern void ir_lib_free_inner_buffer(); -#endif - -// this function is preferred being called by JNI only -UINT16 ir_decode_combo(const UINT8 category, const UINT8 sub_category, - UINT8* binary, UINT16 binary_length, - UINT8 key_code, UINT16* user_data, - t_remote_ac_status* ac_status, BOOL change_wind_direction); - -#ifdef __cplusplus -} -#endif - -#endif // _IRDA_DECODE_H_ +/************************************************************************************** +Filename: ir_decode.h +Revised: Date: 2016-10-01 +Revision: Revision: 1.0 + +Description: This file provides algorithms for IR decode + +Revision log: +* 2016-10-01: created by strawmanbobi +**************************************************************************************/ + +#ifndef _IR_DECODE_H_ +#define _IR_DECODE_H_ + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +#pragma ide diagnostic ignored "OCUnusedMacroInspection" +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include +#include "ir_defs.h" +#include "ir_ac_control.h" +#include "ir_tv_control.h" + +#define IR_DECODE_FAILED (-1) +#define IR_DECODE_SUCCEEDED (0) + +#define IR_TYPE_STATUS 0 +#define IR_TYPE_COMMANDS 1 + +// remote control key definition +#define KEY_TV_POWER 0 +#define KEY_TV_MUTE 1 +#define KEY_TV_UP 2 +#define KEY_TV_DOWN 3 +#define KEY_TV_LEFT 4 +#define KEY_TV_RIGHT 5 +#define KEY_TV_OK 6 +#define KEY_TV_VOL_PLUS 7 +#define KEY_TV_VOL_MINUS 8 +#define KEY_TV_BACK 9 +#define KEY_TV_INPUT 10 +#define KEY_TV_MENU 11 +#define KEY_TV_HOME 12 +#define KEY_TV_SETTINGS 13 + +#define KEY_AC_POWER 0 +#define KEY_AC_MODE_SWITCH 1 +#define KEY_AC_TEMP_PLUS 2 +#define KEY_AC_TEMP_MINUS 3 +#define KEY_AC_WIND_SPEED 9 +#define KEY_AC_WIND_SWING 10 +#define KEY_AC_WIND_FIX 11 + +#define KEY_STB_POWER 0 +#define KEY_STB_MUTE 1 +#define KEY_STB_UP 2 +#define KEY_STB_DOWN 3 +#define KEY_STB_LEFT 4 +#define KEY_STB_RIGHT 5 +#define KEY_STB_OK 6 +#define KEY_STB_VOL_PLUS 7 +#define KEY_STB_VOL_MINUS 8 +#define KEY_STB_BACK 9 +#define KEY_STB_INPUT 10 +#define KEY_STB_MENU 11 +#define KEY_STB_PAGE_UP 12 +#define KEY_STB_PAGE_DOWN 13 + +#define KEY_NETBOX_POWER 0 +#define KEY_NETBOX_UP 1 +#define KEY_NETBOX_DOWN 2 +#define KEY_NETBOX_LEFT 3 +#define KEY_NETBOX_RIGHT 4 +#define KEY_NETBOX_OK 5 +#define KEY_NETBOX_VOL_PLUS 6 +#define KEY_NETBOX_VOL_MINUS 7 +#define KEY_NETBOX_BACK 8 +#define KEY_NETBOX_MENU 9 +#define KEY_NETBOX_HOME 10 + +#define KEY_IPTV_POWER 0 +#define KEY_IPTV_MUTE 1 +#define KEY_IPTV_UP 2 +#define KEY_IPTV_DOWN 3 +#define KEY_IPTV_LEFT 4 +#define KEY_IPTV_RIGHT 5 +#define KEY_IPTV_OK 6 +#define KEY_IPTV_VOL_PLUS 7 +#define KEY_IPTV_VOL_MINUS 8 +#define KEY_IPTV_BACK 9 +#define KEY_IPTV_INPUT 10 +#define KEY_IPTV_MENU 11 +#define KEY_IPTV_PAGE_UP 12 +#define KEY_IPTV_PAGE_DOWN 13 + +#define KEY_DVD_POWER 0 +#define KEY_DVD_UP 1 +#define KEY_DVD_DOWN 2 +#define KEY_DVD_LEFT 3 +#define KEY_DVD_RIGHT 4 +#define KEY_DVD_OK 5 +#define KEY_DVD_VOL_PLUS 6 +#define KEY_DVD_VOL_MINUS 7 +#define KEY_DVD_PLAY 8 +#define KEY_DVD_PAUSE 9 +#define KEY_DVD_EJECT 10 +#define KEY_DVD_REWIND 11 +#define KEY_DVD_FASTFORWARD 12 +#define KEY_DVD_MENU 13 + +#define KEY_FAN_POWER 0 +#define KEY_FAN_WIND_PLUS 6 +#define KEY_FAN_WIND_MUNIS 7 +#define KEY_FAN_SWING 8 +#define KEY_FAN_WIND_SPEED 9 +#define KEY_FAN_WIND_TYPE 10 + +#define KEY_PROJECTOR_POWER 0 +#define KEY_PROJECTOR_UP 1 +#define KEY_PROJECTOR_DOWN 2 +#define KEY_PROJECTOR_LEFT 3 +#define KEY_PROJECTOR_RIGHT 4 +#define KEY_PROJECTOR_OK 5 +#define KEY_PROJECTOR_VOL_PLUS 6 +#define KEY_PROJECTOR_VOL_MINUS 7 +#define KEY_PROJECTOR_ZOOM_OUT 8 +#define KEY_PROJECTOR_MENU 9 +#define KEY_PROJECTOR_ZOOM_IN 10 +#define KEY_PROJECTOR_BACK 11 + +#define KEY_STEREO_POWER 0 +#define KEY_STEREO_UP 1 +#define KEY_STEREO_DOWN 2 +#define KEY_STEREO_LEFT 3 +#define KEY_STEREO_RIGHT 4 +#define KEY_STEREO_OK 5 +#define KEY_STEREO_VOL_PLUS 6 +#define KEY_STEREO_VOL_MINUS 7 +#define KEY_STEREO_MUTE 8 +#define KEY_STEREO_MENU 9 + +#define KEY_BULB_POWER 0 +#define KEY_BULB_COLOR_1 1 +#define KEY_BULB_COLOR_2 2 +#define KEY_BULB_COLOR_3 3 +#define KEY_BULB_COLOR_4 4 +#define KEY_BULB_COLOR_0 5 +#define KEY_BULB_BRIGHT_PLUS 6 +#define KEY_BULB_BRIGHT_MINUS 7 +#define KEY_BULB_BRIGHT_POWER_ON 8 +#define KEY_BULB_BRIGHT_RAINBOW 9 +#define KEY_BULB_BRIGHT_POWER_OFF 10 + +#define KEY_CLEANROBOT_POWER 0 +#define KEY_CLEANROBOT_FOWWARD 1 +#define KEY_CLEANROBOT_BACKWARD 2 +#define KEY_CLEANROBOT_LEFT 3 +#define KEY_CLEANROBOT_RIGHT 4 +#define KEY_CLEANROBOT_START 5 +#define KEY_CLEANROBOT_STOP 6 +#define KEY_CLEANROBOT_AUTO 8 +#define KEY_CLEANROBOT_SPOT 9 +#define KEY_CLEANROBOT_SPEED 10 +#define KEY_CLEANROBOT_TIMER 11 +#define KEY_CLEANROBOT_CHARGE 12 +#define KEY_CLEANROBOT_PRESERVE 13 + +#define KEY_AIRCLEANER_POWER 0 +#define KEY_AIRCLEANER_ION 5 +#define KEY_AIRCLEANER_AUTO 8 +#define KEY_AIRCLEANER_WIND_SPEED 9 +#define KEY_AIRCLEANER_MODE_SWITCH 10 +#define KEY_AIRCLEANER_TIMER 11 +#define KEY_AIRCLEANER_LIGHT 12 +#define KEY_AIRCLEANER_FORCE 13 + +#define KEY_DYSON_POWER 0 +#define KEY_DYSON_WIND_SPEED_PLUS 1 +#define KEY_DYSON_WIND_SPEED_MINUS 2 +#define KEY_DYSON_TIMER_MINUS 3 +#define KEY_DYSON_TIMER_PLUS 4 +#define KEY_DYSON_AUTO 5 +#define KEY_DYSON_TEMP_PLUS 6 +#define KEY_DYSON_TEMP_MINUS 7 +#define KEY_DYSON_SWING 8 +#define KEY_DYSON_DIFFUSION 9 +#define KEY_DYSON_FAV 10 +#define KEY_DYSON_TIMER 11 +#define KEY_DYSON_SLEEP 12 +#define KEY_DYSON_COOL 13 + +#define STANDARD_KEY_COUNT 14 +#define CHANNEL_KEY_COUNT 10 + +typedef enum +{ + REMOTE_CATEGORY_NONE = 0, + REMOTE_CATEGORY_AC = 1, + REMOTE_CATEGORY_TV = 2, + REMOTE_CATEGORY_STB = 3, + REMOTE_CATEGORY_NETBOX = 4, + REMOTE_CATEGORY_IPTV = 5, + REMOTE_CATEGORY_DVD = 6, + REMOTE_CATEGORY_FAN = 7, + REMOTE_CATEGORY_PROJECTOR = 8, + REMOTE_CATEGORY_STEREO = 9, + REMOTE_CATEGORY_LIGHT = 10, + REMOTE_CATEGORY_BSTB = 11, + REMOTE_CATEGORY_CLEANING_ROBOT = 12, + REMOTE_CATEGORY_AREMOTE_CLEANER = 13, + REMOTE_CATEGORY_NEXT, + REMOTE_CATEGORY_MAX = 64, +} t_remote_category; + +typedef enum +{ + SUB_CATEGORY_QUATERNARY = 0, + SUB_CATEGORY_HEXADECIMAL = 1, + SUB_CATEGORY_NEXT = 2, + SUB_CATEGORY_MAX = 7, +} t_remote_sub_category; + +/** + * function get_lib_version + * + * description: get version of library + * + * parameters: N/A + * + * returns: the string contains library version + * + */ +extern const char* get_lib_version(); + +/** + * function ir_file_open + * + * description: open IR binary code from file + * + * parameters: category (in) - category ID get from indexing API + * sub_category (in) - subcategory ID get from indexing API + * file_name (in) - file name of IR binary + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + * + */ +extern INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* file_name); + +/** + * function ir_binary_open + * + * description: open IR binary code from buffer + * + * parameters: category (in) - category ID get from indexing API + * sub_category (in) - subcategory ID get from indexing API + * binary (in) - pointer to binary buffer + * bin_length (in) - binary buffer size + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + */ +extern INT8 ir_binary_open(const UINT8 category, const UINT8 sub_category, UINT8* binary, UINT16 bin_length); + +/** + * function ir_decode + * + * description: decode IR binary into INT16 array which indicates the IR levels + * + * parameters: key_code (in) - the code of pressed key + * user_data (out) - output decoded data in INT16 array format + * ac_status(in) - pointer to AC status (optional) + * change_wind_direction (in) - if control changes wind direction for AC (for AC only) + * + * returns: length of decoded data (0 indicates decode failure) + */ +extern UINT16 ir_decode(UINT8 key_code, UINT16* user_data, t_remote_ac_status* ac_status, BOOL change_wind_direction); + +/** + * function ir_close + * + * description: close IR binary code + * + * parameters: N/A + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + */ +extern INT8 ir_close(); + +/** + * function get_temperature_range + * + * description: get the supported temperature range [min, max] for the opened AC IR binary + * + * parameters: ac_mode (in) specify in which AC mode the application need to get temperature info + * temp_min (out) the min temperature supported in a specified AC mode + * temp_max (out) the max temperature supported in a specified AC mode + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + */ +extern INT8 get_temperature_range(UINT8 ac_mode, INT8 *temp_min, INT8 *temp_max); + +/** + * function get_supported_mode + * + * description: get supported mode for the opened AC IR binary + * + * parameters: supported_mode (out) mode supported by the remote in lower 5 bits + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + */ +extern INT8 get_supported_mode(UINT8 *supported_mode); + +/** + * function get_supported_wind_speed + * + * description: get supported wind speed levels for the opened AC IR binary in certain mode + * + * parameters: ac_mode (in) specify in which AC mode the application need to get wind speed info + * supported_wind_speed (out) wind speed supported by the remote in lower 4 bits + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + */ +extern INT8 get_supported_wind_speed(UINT8 ac_mode, UINT8 *supported_wind_speed); + +/** + * function get_supported_swing + * + * description: get supported swing functions for the opened AC IR binary in certain mode + * + * parameters: ac_mode (in) specify in which AC mode the application need to get swing info + * supported_swing (out) swing supported by the remote in lower 2 bits + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + */ +extern INT8 get_supported_swing(UINT8 ac_mode, UINT8 *supported_swing); + +/** + * function get_supported_wind_direction + * + * description: get supported wind directions for the opened AC IR binary in certain mode + * + * parameters: supported_wind_direction (out) swing supported by the remote in lower 2 bits + * + * returns: IR_DECODE_SUCCEEDED / IR_DECODE_FAILED + */ +extern INT8 get_supported_wind_direction(UINT8 *supported_wind_direction); + + +// private extern function +#if (defined BOARD_PC || defined BOARD_PC_DLL) +extern void ir_lib_free_inner_buffer(); +#endif + +// this function is preferred being called by JNI only +UINT16 ir_decode_combo(const UINT8 category, const UINT8 sub_category, + UINT8* binary, UINT16 bin_length, + UINT8 key_code, UINT16* user_data, + t_remote_ac_status* ac_status, BOOL change_wind_direction); + +#ifdef __cplusplus +} +#endif + +#endif // _IR_DECODE_H_ \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_defs.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_defs.h similarity index 83% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_defs.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_defs.h index 940e6b5..0217651 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_defs.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_defs.h @@ -1,73 +1,78 @@ -/************************************************************************************** -Filename: ir_defs.h -Revised: Date: 2016-10-26 -Revision: Revision: 1.0 - -Description: This file provides algorithms for IR decode - -Revision log: -* 2016-10-01: created by strawmanbobi -**************************************************************************************/ - -#ifndef PARSE_IR_DEFS_H -#define PARSE_IR_DEFS_H - -#ifdef __cplusplus -extern "C" -{ -#endif - -#if defined BOARD_ANDROID -#include -#define LOG_TAG "ir_decode" -#endif - -#if defined BOARD_CC26XX -#include "OSAL.h" -#endif - -#define TRUE 1 -#define FALSE 0 - -#define FORMAT_HEX 16 -#define FORMAT_DECIMAL 10 - -// #define USE_DYNAMIC_TAG 1 - -#if defined USE_DYNAMIC_TAG -#include -#endif - -typedef unsigned char UINT8; -typedef signed char INT8; -typedef unsigned short UINT16; -typedef signed short INT16; -typedef signed int INT; -typedef unsigned int UINT; -typedef int BOOL; - -void noprint(const char *fmt, ...); - -#if defined BOARD_CC26XX -#define ir_malloc(A) ICall_malloc(A) -#define ir_free(A) ICall_free(A) -#else -#define ir_malloc(A) malloc(A) -#define ir_free(A) free(A) -#endif - -#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)) && (defined DEBUG) -#define ir_printf printf -#else -#define ir_printf noprint -#endif -#define USER_DATA_SIZE 1636 -// #define USER_DATA_SIZE 4096 - -#ifdef __cplusplus -} -#endif -#endif //PARSE_IR_DEFS_H +/************************************************************************************** +Filename: ir_defs.h +Revised: Date: 2016-10-26 +Revision: Revision: 1.0 + +Description: This file provides algorithms for IR decode + +Revision log: +* 2016-10-01: created by strawmanbobi +**************************************************************************************/ + +#ifndef _IR_DEFS_H +#define _IR_DEFS_H + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +#pragma ide diagnostic ignored "OCUnusedMacroInspection" +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#if defined BOARD_ANDROID +#include +#define LOG_TAG "ir_decode" +#endif + +#if defined BOARD_CC26XX +#include "OSAL.h" +#endif + +#define TRUE 1 +#define FALSE 0 + +#define FORMAT_HEX 16 +#define FORMAT_DECIMAL 10 + +// #define USE_DYNAMIC_TAG 1 + +#if defined USE_DYNAMIC_TAG +#include +#endif + +typedef unsigned char UINT8; +typedef signed char INT8; +typedef unsigned short UINT16; +typedef signed short INT16; +typedef signed int INT; +typedef unsigned int UINT; +typedef int BOOL; + +void noprint(const char *fmt, ...); + +#if defined BOARD_CC26XX +#define ir_malloc(A) ICall_malloc(A) +#define ir_free(A) ICall_free(A) +#else +#define ir_malloc(A) malloc(A) +#define ir_free(A) free(A) +#endif + +#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)) && (defined DEBUG) +#define ir_printf printf +#else +#define ir_printf noprint +#endif +#define USER_DATA_SIZE 1636 +// #define USER_DATA_SIZE 4096 + +#ifdef __cplusplus +} +#endif +#endif //_IR_DEFS_H \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_tv_control.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_tv_control.h similarity index 87% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_tv_control.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_tv_control.h index eafb9b7..d42d990 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_tv_control.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_tv_control.h @@ -1,215 +1,219 @@ -/************************************************************************************** -Filename: ir_lib.h -Revised: Date: 2016-02-23 -Revision: Revision: 1.0 - -Description: This file provides algorithms for IR decode (compressed command type) - -Revision log: -* 2016-10-21: created by strawmanbobi -**************************************************************************************/ - -#ifndef _IRDA_LIB_H_ -#define _IRDA_LIB_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "ir_defs.h" - -#define STB_CHANNEL_OFFSET 14 - -#define IRDA_FLAG_NORMAL 0 -#define IRDA_FLAG_INVERSE 1 - -#define IRDA_LEVEL_LOW 0 -#define IRDA_LEVEL_HIGH 1 - -#define IRDA_LSB 0 -#define IRDA_MSB 1 - -enum -{ - IRDA_DECODE_1_BIT = 0, - IRDA_DECODE_2_BITS, - IRDA_DECODE_4_BITS, -}; - -/* - * global type definitions - */ -typedef enum ir_flags -{ - IRDA_BOOT = 0, - IRDA_STOP, - IRDA_SEP, - IRDA_ONE, - IRDA_ZERO, - IRDA_FLIP, - IRDA_TWO, - IRDA_THREE = 7, - IRDA_FOUR, - IRDA_FIVE, - IRDA_SIX, - IRDA_SEVEN, - IRDA_EIGHT, - IRDA_NINE, - IRDA_A, - IRDA_B, - IRDA_C, - IRDA_D, - IRDA_E, - IRDA_F, - IRDA_MAX = 20, -} t_ir_flags; - -typedef struct ir_data -{ - UINT8 bits; - UINT8 lsb; - UINT8 mode; - UINT8 index; -} t_ir_data; - -#if !defined BOARD_51 && !defined BOARD_STM8 -#pragma pack(1) -#endif -typedef struct ir_cycles -{ - UINT8 flag; - UINT16 mask; - UINT16 space; -} t_ir_cycles; - -#if !defined BOARD_51 && !defined BOARD_STM8 -#pragma pack() -#endif - -typedef enum tv_key_value -{ - TV_POWER = 0, - TV_MUTE, - TV_UP, - TV_DOWN, - TV_LEFT, - TV_RIGHT, - TV_OK, - TV_VOL_UP, - TV_VOL_DOWN, - TV_BACK, - TV_INPUT, - TV_MENU, - TV_HOME, - TV_SET, - TV_0, - TV_1, - TV_2, - TV_3, - TV_4, - TV_5, - TV_6, - TV_7, - TV_8, - TV_9, - TV_KEY_MAX, -} t_tv_key_value; - - -typedef enum stb_key_value -{ - STB_POWER = 0, - STB_MUTE, - STB_UP, - STB_DOWN, - STB_LEFT, - STB_RIGHT, - STB_OK, - STB_VOL_UP, - STB_VOL_DOWN, - STB_BACK, - STB_INPUT, - STB_MENU, - STB_PAGE_UP, - STB_PAGE_DOWN, - STB_0, - STB_1, - STB_2, - STB_3, - STB_4, - STB_5, - STB_6, - STB_7, - STB_8, - STB_9, - STB_KEY_MAX, -} t_stb_key_value; - -typedef enum nw_key_value -{ - NW_POWER = 0, - NW_UP, - NW_DOWN, - NW_LEFT, - NW_RIGHT, - NW_OK, - NW_VOL_UP, - NW_VOL_DOWN, - NW_BACK, - NW_MENU, - NW_HOME, - NW_0, - NW_1, - NW_2, - NW_3, - NW_4, - NW_5, - NW_6, - NW_7, - NW_8, - NW_9, - NW_KEY_MAX, -} t_nw_key_value; - -typedef enum cm_key_value -{ - CM_POWER = 0, - CM_UP, - CM_DOWN, - CM_LEFT, - CM_RIGHT, - CM_OK, - CM_VOL_UP, - CM_VOL_DOWN, - CM_FUNC_1, - CM_FUNC_2, - CM_FUNC_3, - CM_BACK, - CM_HOME, - CM_MENU, - CM_MODE, - CM_KEY_MAX, -} t_cm_key_value; - -typedef struct ir_data_tv -{ - char magic[4]; - UINT8 per_keycode_bytes; -} t_ir_data_tv; - - -extern INT8 tv_binary_open(UINT8 *binary, UINT16 binary_length); - -extern BOOL tv_binary_parse(UINT8 encode_type); - -extern UINT16 tv_binary_decode(UINT8 key, UINT16 *user_data); - -extern UINT8 tv_lib_close(); - -#ifdef __cplusplus -} -#endif - -#endif /* _IRDA_LIB_H_ */ - +/************************************************************************************** +Filename: ir_lib.h +Revised: Date: 2016-02-23 +Revision: Revision: 1.0 + +Description: This file provides algorithms for IR decode (compressed command type) + +Revision log: +* 2016-10-21: created by strawmanbobi +**************************************************************************************/ + +#ifndef _IR_TV_CONTROL_H_ +#define _IR_TV_CONTROL_H_ + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "OCUnusedMacroInspection" +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "ir_defs.h" + +#define STB_CHANNEL_OFFSET 14 + +#define IRDA_FLAG_NORMAL 0 +#define IRDA_FLAG_INVERSE 1 + +#define IRDA_LEVEL_LOW 0 +#define IRDA_LEVEL_HIGH 1 + +#define IRDA_LSB 0 +#define IRDA_MSB 1 + +enum +{ + IRDA_DECODE_1_BIT = 0, + IRDA_DECODE_2_BITS, + IRDA_DECODE_4_BITS, +}; + +/* + * global type definitions + */ +typedef enum ir_flags +{ + IRDA_BOOT = 0, + IRDA_STOP, + IRDA_SEP, + IRDA_ONE, + IRDA_ZERO, + IRDA_FLIP, + IRDA_TWO, + IRDA_THREE = 7, + IRDA_FOUR, + IRDA_FIVE, + IRDA_SIX, + IRDA_SEVEN, + IRDA_EIGHT, + IRDA_NINE, + IRDA_A, + IRDA_B, + IRDA_C, + IRDA_D, + IRDA_E, + IRDA_F, + IRDA_MAX = 20, +} t_ir_flags; + +typedef struct ir_data +{ + UINT8 bits; + UINT8 lsb; + UINT8 mode; + UINT8 index; +} t_ir_data; + +#if !defined BOARD_51 && !defined BOARD_STM8 +#pragma pack(1) +#endif +typedef struct ir_cycles +{ + UINT8 flag; + UINT16 mask; + UINT16 space; +} t_ir_cycles; + +#if !defined BOARD_51 && !defined BOARD_STM8 +#pragma pack() +#endif + +typedef enum tv_key_value +{ + TV_POWER = 0, + TV_MUTE, + TV_UP, + TV_DOWN, + TV_LEFT, + TV_RIGHT, + TV_OK, + TV_VOL_UP, + TV_VOL_DOWN, + TV_BACK, + TV_INPUT, + TV_MENU, + TV_HOME, + TV_SET, + TV_0, + TV_1, + TV_2, + TV_3, + TV_4, + TV_5, + TV_6, + TV_7, + TV_8, + TV_9, + TV_KEY_MAX, +} t_tv_key_value; + + +typedef enum stb_key_value +{ + STB_POWER = 0, + STB_MUTE, + STB_UP, + STB_DOWN, + STB_LEFT, + STB_RIGHT, + STB_OK, + STB_VOL_UP, + STB_VOL_DOWN, + STB_BACK, + STB_INPUT, + STB_MENU, + STB_PAGE_UP, + STB_PAGE_DOWN, + STB_0, + STB_1, + STB_2, + STB_3, + STB_4, + STB_5, + STB_6, + STB_7, + STB_8, + STB_9, + STB_KEY_MAX, +} t_stb_key_value; + +typedef enum nw_key_value +{ + NW_POWER = 0, + NW_UP, + NW_DOWN, + NW_LEFT, + NW_RIGHT, + NW_OK, + NW_VOL_UP, + NW_VOL_DOWN, + NW_BACK, + NW_MENU, + NW_HOME, + NW_0, + NW_1, + NW_2, + NW_3, + NW_4, + NW_5, + NW_6, + NW_7, + NW_8, + NW_9, + NW_KEY_MAX, +} t_nw_key_value; + +typedef enum cm_key_value +{ + CM_POWER = 0, + CM_UP, + CM_DOWN, + CM_LEFT, + CM_RIGHT, + CM_OK, + CM_VOL_UP, + CM_VOL_DOWN, + CM_FUNC_1, + CM_FUNC_2, + CM_FUNC_3, + CM_BACK, + CM_HOME, + CM_MENU, + CM_MODE, + CM_KEY_MAX, +} t_cm_key_value; + +typedef struct ir_data_tv +{ + char magic[4]; + UINT8 per_keycode_bytes; +} t_ir_data_tv; + + +extern INT8 tv_binary_open(UINT8 *binary, UINT16 binary_length); + +extern BOOL tv_binary_parse(UINT8 encode_type); + +extern UINT16 tv_binary_decode(UINT8 key, UINT16 *user_data); + +extern UINT8 tv_lib_close(); + +#ifdef __cplusplus +} +#endif + +#endif // _IR_TV_CONTROL_H_ \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_utils.h b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_utils.h similarity index 79% rename from cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_utils.h rename to cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_utils.h index 667bdf1..587d243 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/include/ir_utils.h +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/include/ir_utils.h @@ -1,36 +1,40 @@ -/************************************************************************************** -Filename: ir_utils.c -Revised: Date: 2016-10-26 -Revision: Revision: 1.0 - -Description: This file provides generic utils for IRDA algorithms - -Revision log: -* 2016-10-01: created by strawmanbobi -**************************************************************************************/ - -#ifndef _IRDA_UTILS_H_ -#define _IRDA_UTILS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "ir_defs.h" -#include "ir_decode.h" - -#include - -extern void string_to_hex(UINT8 *p, t_ac_hex *pac_hex); - -extern void string_to_hex_common(UINT8 *p, UINT8 *hex_data, UINT16 len); - -extern BOOL is_in(const UINT8 *array, UINT8 value, UINT8 len); - -extern void hex_byte_to_double_char(char *dest, UINT8 length, UINT8 src); - -#ifdef __cplusplus -} -#endif -#endif // _IRDA_UTILS_H_ \ No newline at end of file +/************************************************************************************** +Filename: ir_utils.c +Revised: Date: 2016-10-26 +Revision: Revision: 1.0 + +Description: This file provides generic utils for IRDA algorithms + +Revision log: +* 2016-10-01: created by strawmanbobi +**************************************************************************************/ + +#ifndef _IR_UTILS_H_ +#define _IR_UTILS_H_ + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "ir_defs.h" +#include "ir_decode.h" + +#include + +extern void string_to_hex(UINT8 *p, t_ac_hex *pac_hex); + +extern void string_to_hex_common(UINT8 *p, UINT8 *hex_data, UINT16 len); + +extern BOOL is_in(const UINT8 *array, UINT8 value, UINT8 len); + +extern void hex_byte_to_double_char(char *dest, UINT8 length, UINT8 src); + +#ifdef __cplusplus +} +#endif +#endif // _IR_UTILS_H_ \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_apply.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_apply.c index 267df48..13848f9 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_apply.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_apply.c @@ -1,782 +1,790 @@ -/************************************************************************************** -Filename: ir_ac_apply.c -Revised: Date: 2016-10-12 -Revision: Revision: 1.0 - -Description: This file provides methods for AC IR applying functionalities - -Revision log: -* 2016-10-12: created by strawmanbobi -**************************************************************************************/ - -#include "../include/ir_utils.h" -#include "../include/ir_ac_apply.h" - - -static INT8 apply_ac_power(struct ac_protocol *protocol, UINT8 power_status); - -static INT8 apply_ac_mode(struct ac_protocol *protocol, UINT8 mode_status); - -static INT8 apply_ac_temperature(struct ac_protocol *protocol, UINT8 temp_diff); - -static INT8 apply_ac_wind_speed(struct ac_protocol *protocol, UINT8 wind_speed); - -static INT8 apply_ac_swing(struct ac_protocol *protocol, UINT8 swing_mode); - -static UINT8 has_function(struct ac_protocol *protocol, UINT8 function); - - -INT8 apply_ac_parameter_type_1(UINT8 *dc_data, t_tag_comp *comp_data, UINT8 current_seg, UINT8 is_temp) -{ - if (0 != (comp_data->seg_len & 0x01)) - { - return IR_DECODE_FAILED; - } - - if (1 == is_temp) - { - dc_data[comp_data->segment[current_seg]] += comp_data->segment[current_seg + 1]; - } - else - { - dc_data[comp_data->segment[current_seg]] = comp_data->segment[current_seg + 1]; - } - - return IR_DECODE_SUCCEEDED; -} - -INT8 apply_ac_parameter_type_2(UINT8 *dc_data, t_tag_comp *comp_data, UINT8 current_seg, UINT8 is_temp) -{ - UINT8 start_bit = 0; - UINT8 end_bit = 0; - UINT8 cover_byte_pos_hi = 0; - UINT8 cover_byte_pos_lo = 0; - UINT8 value; - UINT8 move_bit = 0; - - if (0 != (comp_data->seg_len % 3)) - { - return IR_DECODE_FAILED; - } - - start_bit = comp_data->segment[current_seg]; - end_bit = comp_data->segment[current_seg + 1]; - cover_byte_pos_hi = start_bit >> 3; - cover_byte_pos_lo = (UINT8) (end_bit - 1) >> 3; - if (cover_byte_pos_hi == cover_byte_pos_lo) - { - // cover_byte_pos_hi or cover_bytes_pos_lo is target byte to be applied with AC parameter - // try get raw value of byte to be applied - UINT8 raw_value = comp_data->segment[current_seg + 2]; - UINT8 int_start_bit = start_bit - (cover_byte_pos_hi << 3); - UINT8 int_end_bit = end_bit - (cover_byte_pos_lo << 3); - UINT8 bit_range = end_bit - start_bit; - UINT8 mask = (UINT8) ((0xFF << (8 - int_start_bit)) | (0xFF >> int_end_bit)); - UINT8 origin = dc_data[cover_byte_pos_lo]; - - if (TRUE == is_temp) - { - move_bit = (UINT8) (8 - int_end_bit); - value = (origin & mask) | (((((origin & ~mask) >> move_bit) + raw_value) << move_bit) & ~mask); - } - else - { - value = (origin & mask) | ((raw_value << (8 - int_start_bit - bit_range)) & ~mask); - } - dc_data[cover_byte_pos_lo] = value; - } - else - { - UINT8 origin_hi = 0; - UINT8 origin_lo = 0; - UINT8 mask_hi = 0; - UINT8 mask_lo = 0; - UINT8 raw_value = 0; - UINT8 int_start_bit = 0; - UINT8 int_end_bit = 0; - - if (cover_byte_pos_hi > cover_byte_pos_lo) - { - return IR_DECODE_FAILED; - } - // calculate the bit scope - UINT8 bit_range = end_bit - start_bit; - - raw_value = comp_data->segment[current_seg + 2]; - origin_hi = dc_data[cover_byte_pos_hi]; - origin_lo = dc_data[cover_byte_pos_lo]; - - int_start_bit = start_bit - (cover_byte_pos_hi << 3); - int_end_bit = end_bit - (cover_byte_pos_lo << 3); - - mask_hi = (UINT8) 0xFF << (8 - int_start_bit); - mask_lo = (UINT8) 0xFF >> int_end_bit; - - value = ((origin_hi & ~mask_hi) << int_end_bit) | ((origin_lo & ~mask_lo) >> (8 - int_end_bit)); - - if (TRUE == is_temp) - { - raw_value += value; - } - - dc_data[cover_byte_pos_hi] = (UINT8) ((origin_hi & mask_hi) | - (((0xFF >> (8 - bit_range)) & raw_value) >> int_end_bit)); - - dc_data[cover_byte_pos_lo] = (UINT8) ((origin_lo & mask_lo) | - (((0xFF >> (8 - bit_range)) & raw_value) << (8 - int_end_bit))); - } - - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_ac_power(struct ac_protocol *protocol, UINT8 power_status) -{ - UINT16 i = 0; - if (0 == protocol->power1.len) - { - return IR_DECODE_SUCCEEDED; - } - - if (0 == protocol->power1.comp_data[power_status].seg_len) - { - // force to apply power in any cases - return IR_DECODE_SUCCEEDED; - } - for (i = 0; i < protocol->power1.comp_data[power_status].seg_len; i += 2) - { - apply_ac_parameter_type_1(ir_hex_code, &(protocol->power1.comp_data[power_status]), (UINT8) i, FALSE); - } - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_ac_mode(struct ac_protocol *protocol, UINT8 mode_status) -{ - UINT16 i = 0; - - if (0 == protocol->mode1.len) - { - goto try_applying_mode2; - } - - if (0 == protocol->mode1.comp_data[mode_status].seg_len) - { - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->mode1.comp_data[mode_status].seg_len; i += 2) - { - apply_ac_parameter_type_1(ir_hex_code, &(protocol->mode1.comp_data[mode_status]), (UINT8) i, FALSE); - } - - // get return here since wind mode 1 is already applied - return IR_DECODE_SUCCEEDED; - - try_applying_mode2: - if (0 == protocol->mode2.len) - { - return IR_DECODE_SUCCEEDED; - } - - if (0 == protocol->mode2.comp_data[mode_status].seg_len) - { - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->mode2.comp_data[mode_status].seg_len; i += 3) - { - apply_ac_parameter_type_2(ir_hex_code, - &(protocol->mode2.comp_data[mode_status]), - (UINT8) i, FALSE); - } - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_ac_wind_speed(struct ac_protocol *protocol, UINT8 wind_speed) -{ - UINT16 i = 0; - - if (0 == protocol->speed1.len) - { - goto try_applying_wind_speed2; - } - - if (0 == protocol->speed1.comp_data[wind_speed].seg_len) - { - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->speed1.comp_data[wind_speed].seg_len; i += 2) - { - apply_ac_parameter_type_1(ir_hex_code, &(protocol->speed1.comp_data[wind_speed]), (UINT8) i, FALSE); - } - - // get return here since wind speed 1 is already applied - return IR_DECODE_SUCCEEDED; - - try_applying_wind_speed2: - if (0 == protocol->speed2.len) - { - return IR_DECODE_SUCCEEDED; - } - - if (0 == protocol->speed2.comp_data[wind_speed].seg_len) - { - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->speed2.comp_data[wind_speed].seg_len; i += 3) - { - apply_ac_parameter_type_2(ir_hex_code, - &(protocol->speed2.comp_data[wind_speed]), - (UINT8) i, FALSE); - } - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_ac_temperature(struct ac_protocol *protocol, UINT8 temp_diff) -{ - UINT16 i = 0; - - if (0 == protocol->temp1.len) - { - goto try_applying_temp2; - } - - if (0 == protocol->temp1.comp_data[temp_diff].seg_len) - { - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->temp1.comp_data[temp_diff].seg_len; i += 2) - { - if (TEMP_TYPE_DYNAMIC == protocol->temp1.type) - { - apply_ac_parameter_type_1(ir_hex_code, &(protocol->temp1.comp_data[temp_diff]), (UINT8) i, TRUE); - } - else if (TEMP_TYPE_STATIC == protocol->temp1.type) - { - apply_ac_parameter_type_1(ir_hex_code, &(protocol->temp1.comp_data[temp_diff]), (UINT8) i, FALSE); - } - } - - // get return here since temperature 1 is already applied - return IR_DECODE_SUCCEEDED; - - try_applying_temp2: - if (0 == protocol->temp2.len) - { - return IR_DECODE_SUCCEEDED; - } - - if (0 == protocol->temp2.comp_data[temp_diff].seg_len) - { - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->temp2.comp_data[temp_diff].seg_len; i += 3) - { - if (0 != protocol->temp2.comp_data[temp_diff].seg_len) - { - if (TEMP_TYPE_DYNAMIC == protocol->temp2.type) - { - apply_ac_parameter_type_2(ir_hex_code, &(protocol->temp2.comp_data[temp_diff]), (UINT8) i, TRUE); - } - else if (TEMP_TYPE_STATIC == protocol->temp2.type) - { - apply_ac_parameter_type_2(ir_hex_code, &(protocol->temp2.comp_data[temp_diff]), (UINT8) i, FALSE); - } - } - } - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_ac_swing(struct ac_protocol *protocol, UINT8 swing_mode) -{ - UINT16 i = 0; - - if (0 == protocol->swing1.len) - { - goto try_applying_swing2; - } - - if (swing_mode >= protocol->swing1.count) - { - return IR_DECODE_FAILED; - } - - if (0 == protocol->swing1.comp_data[swing_mode].seg_len) - { - // swing does not have any empty data segment - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->swing1.comp_data[swing_mode].seg_len; i += 2) - { - apply_ac_parameter_type_1(ir_hex_code, &(protocol->swing1.comp_data[swing_mode]), (UINT8) i, FALSE); - } - - // get return here since temperature 1 is already applied - return IR_DECODE_SUCCEEDED; - - try_applying_swing2: - if (0 == protocol->swing2.len) - { - return IR_DECODE_SUCCEEDED; - } - - if (swing_mode >= protocol->swing2.count) - { - return IR_DECODE_FAILED; - } - - if (0 == protocol->swing2.comp_data[swing_mode].seg_len) - { - // swing does not have any empty data segment - return IR_DECODE_FAILED; - } - - for (i = 0; i < protocol->swing2.comp_data[swing_mode].seg_len; i += 3) - { - apply_ac_parameter_type_2(ir_hex_code, - &(protocol->swing2.comp_data[swing_mode]), - (UINT8) i, FALSE); - } - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_checksum_byte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) -{ - UINT16 i = 0; - UINT8 checksum = 0x00; - - if (cs.len < 3) - { - return IR_DECODE_SUCCEEDED; - } - - for (i = cs.start_byte_pos; i < cs.end_byte_pos; i++) - { - checksum += ac_code[i]; - } - - checksum += cs.checksum_plus; - - if (TRUE == inverse) - { - checksum = ~checksum; - } - - // apply checksum - ac_code[cs.checksum_byte_pos] = checksum; - - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_checksum_halfbyte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) -{ - UINT16 i = 0; - UINT8 checksum = 0x00; - - if (cs.len < 3) - { - return IR_DECODE_SUCCEEDED; - } - - for (i = cs.start_byte_pos; i < cs.end_byte_pos; i++) - { - checksum += (ac_code[i] >> 4) + (ac_code[i] & 0x0F); - } - - checksum += cs.checksum_plus; - - if (TRUE == inverse) - { - checksum = ~checksum; - } - - // apply checksum - ac_code[cs.checksum_byte_pos] = checksum; - - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_checksum_spec_byte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) -{ - UINT16 i = 0; - UINT8 apply_byte_pos = 0; - UINT8 checksum = 0x00; - -#if 1 - if (cs.len < 4) - { - return IR_DECODE_SUCCEEDED; - } -#endif - - for (i = 0; i < cs.len - 3; i++) - { - UINT8 pos = cs.spec_pos[i]; - UINT8 byte_pos = pos >> 1; - - if (0 == (pos & 0x01)) - { - checksum += ac_code[byte_pos] >> 4; - } - else - { - checksum += ac_code[byte_pos] & 0x0F; - } - } - - checksum += cs.checksum_plus; - - if (TRUE == inverse) - { - checksum = ~checksum; - } - - // apply checksum, for specific-half-byte checksum, the byte pos actually indicates the half-byte pos - apply_byte_pos = cs.checksum_byte_pos >> 1; - if (0 == (cs.checksum_byte_pos & 0x01)) - { - // save low bits and add checksum as high bits - ac_code[apply_byte_pos] = (UINT8) ((ac_code[apply_byte_pos] & 0x0F) | (checksum << 4)); - } - else - { - // save high bits and add checksum as low bits - ac_code[apply_byte_pos] = (UINT8) ((ac_code[apply_byte_pos] & 0xF0) | (checksum & 0x0F)); - } - - return IR_DECODE_SUCCEEDED; -} - -static INT8 apply_checksum_spec_byte_onebyte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) -{ - UINT16 i = 0; - UINT8 apply_byte_pos = 0; - UINT8 checksum = 0x00; - -#if 1 - if (cs.len < 4) - { - return IR_DECODE_SUCCEEDED; - } -#endif - - for (i = 0; i < cs.len - 3; i++) - { - UINT8 pos = cs.spec_pos[i]; - UINT8 byte_pos = pos >> 1; - - if (0 == (pos & 0x01)) - { - checksum += ac_code[byte_pos] >> 4; - } - else - { - checksum += ac_code[byte_pos] & 0x0F; - } - } - - checksum += cs.checksum_plus; - - if (TRUE == inverse) - { - checksum = ~checksum; - } - - // apply checksum, for specific-half-byte checksum, the byte pos actually indicates the half-byte pos - apply_byte_pos = cs.checksum_byte_pos >> 1; - ac_code[apply_byte_pos] = checksum; - - return IR_DECODE_SUCCEEDED; -} - -static UINT8 has_function(struct ac_protocol *protocol, UINT8 function) -{ - if (function < AC_FUNCTION_POWER || function > AC_FUNCTION_WIND_FIX) - { - return FALSE; - } - - if (0 != protocol->function1.len) - { - if (0 != protocol->function1.comp_data[function - 1].seg_len) - { - return TRUE; - } - } - - if (0 != protocol->function2.len) - { - if (0 != protocol->function2.comp_data[function - 1].seg_len) - { - return TRUE; - } - } - - return FALSE; -} - -INT8 apply_function(struct ac_protocol *protocol, UINT8 function) -{ - UINT16 i = 0; - - if (function < AC_FUNCTION_POWER || function > AC_FUNCTION_WIND_FIX) - { - return IR_DECODE_FAILED; - } - - // function index starts from 1 (AC_FUNCTION_POWER), do -1 operation at first - if (0 == protocol->function1.len) - { - goto try_applying_function2; - } - - if (0 == protocol->function1.comp_data[function - 1].seg_len) - { - // force to apply function in any case - return IR_DECODE_SUCCEEDED; - } - - for (i = 0; i < protocol->function1.comp_data[function - 1].seg_len; i += 2) - { - apply_ac_parameter_type_1(ir_hex_code, &(protocol->function1.comp_data[function - 1]), (UINT8) i, FALSE); - } - - // get return here since function 1 is already applied - return IR_DECODE_SUCCEEDED; - - try_applying_function2: - if (0 == protocol->function2.len) - { - return IR_DECODE_SUCCEEDED; - } - - if (0 == protocol->function2.comp_data[function - 1].seg_len) - { - return IR_DECODE_SUCCEEDED; - } - - for (i = 0; i < protocol->function2.comp_data[function - 1].seg_len; i += 3) - { - apply_ac_parameter_type_2(ir_hex_code, - &(protocol->function2.comp_data[function - 1]), - (UINT8) i, FALSE); - } - return IR_DECODE_SUCCEEDED; -} - -INT8 apply_checksum(struct ac_protocol *protocol) -{ - UINT8 i = 0; - - if (0 == protocol->checksum.len) - { - return IR_DECODE_SUCCEEDED; - } - - for (i = 0; i < protocol->checksum.count; i++) - { - switch (protocol->checksum.checksum_data[i].type) - { - case CHECKSUM_TYPE_BYTE: - apply_checksum_byte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); - break; - case CHECKSUM_TYPE_BYTE_INVERSE: - apply_checksum_byte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); - break; - case CHECKSUM_TYPE_HALF_BYTE: - apply_checksum_halfbyte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); - break; - case CHECKSUM_TYPE_HALF_BYTE_INVERSE: - apply_checksum_halfbyte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); - break; - case CHECKSUM_TYPE_SPEC_HALF_BYTE: - apply_checksum_spec_byte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); - break; - case CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE: - apply_checksum_spec_byte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); - break; - case CHECKSUM_TYPE_SPEC_HALF_BYTE_ONE_BYTE: - apply_checksum_spec_byte_onebyte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); - break; - case CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE_ONE_BYTE: - apply_checksum_spec_byte_onebyte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); - break; - default: - break; - } - } - - return IR_DECODE_SUCCEEDED; -} - -INT8 apply_power(t_remote_ac_status ac_status, UINT8 function_code) -{ - apply_ac_power(context, ac_status.ac_power); - return IR_DECODE_SUCCEEDED; -} - -INT8 apply_mode(t_remote_ac_status ac_status, UINT8 function_code) -{ - if (IR_DECODE_FAILED == apply_ac_mode(context, ac_status.ac_mode)) - { - // do not implement this mechanism since mode, temperature, wind - // speed would have unspecified function - //if(FALSE == has_function(context, AC_FUNCTION_MODE)) - { - return IR_DECODE_FAILED; - } - } - - return IR_DECODE_SUCCEEDED; -} - -INT8 apply_wind_speed(t_remote_ac_status ac_status, UINT8 function_code) -{ - if (FALSE == context->n_mode[ac_status.ac_mode].all_speed) - { - // if this level is not in black list - if (!is_in(context->n_mode[ac_status.ac_mode].speed, - ac_status.ac_wind_speed, - context->n_mode[ac_status.ac_mode].speed_cnt)) - { - if (IR_DECODE_FAILED == apply_ac_wind_speed(context, ac_status.ac_wind_speed) && - function_code == AC_FUNCTION_WIND_SPEED) - { - // do not implement this mechanism since mode, temperature, wind - // speed would have unspecified function - //if(FALSE == has_function(context, AC_FUNCTION_WIND_SPEED)) - { - return IR_DECODE_FAILED; - } - } - } - else - { - // if this level is in black list, do not send IR wave if user want to apply this function - if (function_code == AC_FUNCTION_WIND_SPEED) - { - // do not implement this mechanism since mode, temperature, wind - // speed would have unspecified function - //if(FALSE == has_function(context, AC_FUNCTION_WIND_SPEED)) - { - return IR_DECODE_FAILED; - } - } - } - } - else - { - // if this level is in black list, do not send IR wave if user want to apply this function - if (function_code == AC_FUNCTION_WIND_SPEED) - { - // do not implement this mechanism since mode, temperature, wind - // speed would have unspecified function - //if(FALSE == has_function(context, AC_FUNCTION_WIND_SPEED)) - { - return IR_DECODE_FAILED; - } - } - } - return IR_DECODE_SUCCEEDED; -} - -INT8 apply_swing(t_remote_ac_status ac_status, UINT8 function_code) -{ - if (function_code == AC_FUNCTION_WIND_FIX) - { - // adjust fixed wind direction according to current status - if (context->si.type == SWING_TYPE_NORMAL && context->si.mode_count > 1) - { - if (TRUE == context->change_wind_direction) - { - context->si.dir_index++; - } - - if (context->si.dir_index == context->si.mode_count) - { - // reset dir index - context->si.dir_index = 1; - } - context->swing_status = context->si.dir_index; - } - } - else if (function_code == AC_FUNCTION_WIND_SWING) - { - context->swing_status = 0; - } - else - { - // do nothing - } - - if (IR_DECODE_FAILED == apply_ac_swing(context, context->swing_status)) - { - if (function_code == AC_FUNCTION_WIND_SWING && FALSE == has_function(context, AC_FUNCTION_WIND_SWING)) - { - return IR_DECODE_FAILED; - } - else if (function_code == AC_FUNCTION_WIND_FIX && FALSE == has_function(context, AC_FUNCTION_WIND_FIX)) - { - return IR_DECODE_FAILED; - } - } - return IR_DECODE_SUCCEEDED; -} - -INT8 apply_temperature(t_remote_ac_status ac_status, UINT8 function_code) -{ - if (FALSE == context->n_mode[ac_status.ac_mode].all_temp) - { - if (!is_in(context->n_mode[ac_status.ac_mode].temp, - ac_status.ac_temp, - context->n_mode[ac_status.ac_mode].temp_cnt)) - { - if (IR_DECODE_FAILED == apply_ac_temperature(context, ac_status.ac_temp)) - { - if (function_code == AC_FUNCTION_TEMPERATURE_UP - /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_UP)*/) - { - return IR_DECODE_FAILED; - } - else if (function_code == AC_FUNCTION_TEMPERATURE_DOWN - /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_DOWN)*/) - { - return IR_DECODE_FAILED; - } - } - } - else - { - // if this level is in black list, do not send IR wave if user want to apply this function - if (function_code == AC_FUNCTION_TEMPERATURE_UP - /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_UP)*/) - { - return IR_DECODE_FAILED; - } - else if (function_code == AC_FUNCTION_TEMPERATURE_DOWN - /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_DOWN)*/) - { - return IR_DECODE_FAILED; - } - } - } - else - { - // if this level is in black list, do not send IR wave if user want to apply this function - if (function_code == AC_FUNCTION_TEMPERATURE_UP - /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_UP)*/) - { - return IR_DECODE_FAILED; - } - else if (function_code == AC_FUNCTION_TEMPERATURE_DOWN - /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_DOWN)*/) - { - return IR_DECODE_FAILED; - } - } - return IR_DECODE_SUCCEEDED; +/************************************************************************************** +Filename: ir_ac_apply.c +Revised: Date: 2016-10-12 +Revision: Revision: 1.0 + +Description: This file provides methods for AC IR applying functionalities + +Revision log: +* 2016-10-12: created by strawmanbobi +**************************************************************************************/ +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "bugprone-branch-clone" +#pragma ide diagnostic ignored "hicpp-signed-bitwise" +#endif + +#include "include/ir_utils.h" +#include "include/ir_ac_apply.h" + +static INT8 apply_ac_power(struct ac_protocol *protocol, UINT8 power_status); + +static INT8 apply_ac_mode(struct ac_protocol *protocol, UINT8 mode_status); + +static INT8 apply_ac_temperature(struct ac_protocol *protocol, UINT8 temp_diff); + +static INT8 apply_ac_wind_speed(struct ac_protocol *protocol, UINT8 wind_speed); + +static INT8 apply_ac_swing(struct ac_protocol *protocol, UINT8 swing_mode); + +static UINT8 has_function(struct ac_protocol *protocol, UINT8 function); + + +INT8 apply_ac_parameter_type_1(UINT8 *dc_data, t_tag_comp *comp_data, UINT8 current_seg, UINT8 is_temp) +{ + if (0 != (comp_data->seg_len & 0x01)) + { + return IR_DECODE_FAILED; + } + + if (1 == is_temp) + { + dc_data[comp_data->segment[current_seg]] += comp_data->segment[current_seg + 1]; + } + else + { + dc_data[comp_data->segment[current_seg]] = comp_data->segment[current_seg + 1]; + } + + return IR_DECODE_SUCCEEDED; +} + +INT8 apply_ac_parameter_type_2(UINT8 *dc_data, t_tag_comp *comp_data, UINT8 current_seg, UINT8 is_temp) +{ + UINT8 start_bit = 0; + UINT8 end_bit = 0; + UINT8 cover_byte_pos_hi = 0; + UINT8 cover_byte_pos_lo = 0; + UINT8 value; + UINT8 move_bit = 0; + + if (0 != (comp_data->seg_len % 3)) + { + return IR_DECODE_FAILED; + } + + start_bit = comp_data->segment[current_seg]; + end_bit = comp_data->segment[current_seg + 1]; + cover_byte_pos_hi = start_bit >> 3; + cover_byte_pos_lo = (UINT8) (end_bit - 1) >> 3; + if (cover_byte_pos_hi == cover_byte_pos_lo) + { + // cover_byte_pos_hi or cover_bytes_pos_lo is target byte to be applied with AC parameter + // try get raw value of byte to be applied + UINT8 raw_value = comp_data->segment[current_seg + 2]; + UINT8 int_start_bit = start_bit - (cover_byte_pos_hi << 3); + UINT8 int_end_bit = end_bit - (cover_byte_pos_lo << 3); + UINT8 bit_range = end_bit - start_bit; + UINT8 mask = (UINT8) ((0xFF << (8 - int_start_bit)) | (0xFF >> int_end_bit)); + UINT8 origin = dc_data[cover_byte_pos_lo]; + + if (TRUE == is_temp) + { + move_bit = (UINT8) (8 - int_end_bit); + value = (origin & mask) | (((((origin & ~mask) >> move_bit) + raw_value) << move_bit) & ~mask); + } + else + { + value = (origin & mask) | ((raw_value << (8 - int_start_bit - bit_range)) & ~mask); + } + dc_data[cover_byte_pos_lo] = value; + } + else + { + UINT8 origin_hi = 0; + UINT8 origin_lo = 0; + UINT8 mask_hi = 0; + UINT8 mask_lo = 0; + UINT8 raw_value = 0; + UINT8 int_start_bit = 0; + UINT8 int_end_bit = 0; + + if (cover_byte_pos_hi > cover_byte_pos_lo) + { + return IR_DECODE_FAILED; + } + // calculate the bit scope + UINT8 bit_range = end_bit - start_bit; + + raw_value = comp_data->segment[current_seg + 2]; + origin_hi = dc_data[cover_byte_pos_hi]; + origin_lo = dc_data[cover_byte_pos_lo]; + + int_start_bit = start_bit - (cover_byte_pos_hi << 3); + int_end_bit = end_bit - (cover_byte_pos_lo << 3); + + mask_hi = (UINT8) 0xFF << (8 - int_start_bit); + mask_lo = (UINT8) 0xFF >> int_end_bit; + + value = ((origin_hi & ~mask_hi) << int_end_bit) | ((origin_lo & ~mask_lo) >> (8 - int_end_bit)); + + if (TRUE == is_temp) + { + raw_value += value; + } + + dc_data[cover_byte_pos_hi] = (UINT8) ((origin_hi & mask_hi) | + (((0xFF >> (8 - bit_range)) & raw_value) >> int_end_bit)); + + dc_data[cover_byte_pos_lo] = (UINT8) ((origin_lo & mask_lo) | + (((0xFF >> (8 - bit_range)) & raw_value) << (8 - int_end_bit))); + } + + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_ac_power(struct ac_protocol *protocol, UINT8 power_status) +{ + UINT16 i = 0; + if (0 == protocol->power1.len) + { + return IR_DECODE_SUCCEEDED; + } + + if (0 == protocol->power1.comp_data[power_status].seg_len) + { + // force to apply power in any cases + return IR_DECODE_SUCCEEDED; + } + for (i = 0; i < protocol->power1.comp_data[power_status].seg_len; i += 2) + { + apply_ac_parameter_type_1(ir_hex_code, &(protocol->power1.comp_data[power_status]), (UINT8) i, FALSE); + } + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_ac_mode(struct ac_protocol *protocol, UINT8 mode_status) +{ + UINT16 i = 0; + + if (0 == protocol->mode1.len) + { + goto try_applying_mode2; + } + + if (0 == protocol->mode1.comp_data[mode_status].seg_len) + { + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->mode1.comp_data[mode_status].seg_len; i += 2) + { + apply_ac_parameter_type_1(ir_hex_code, &(protocol->mode1.comp_data[mode_status]), (UINT8) i, FALSE); + } + + // get return here since wind mode 1 is already applied + return IR_DECODE_SUCCEEDED; + + try_applying_mode2: + if (0 == protocol->mode2.len) + { + return IR_DECODE_SUCCEEDED; + } + + if (0 == protocol->mode2.comp_data[mode_status].seg_len) + { + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->mode2.comp_data[mode_status].seg_len; i += 3) + { + apply_ac_parameter_type_2(ir_hex_code, + &(protocol->mode2.comp_data[mode_status]), + (UINT8) i, FALSE); + } + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_ac_wind_speed(struct ac_protocol *protocol, UINT8 wind_speed) +{ + UINT16 i = 0; + + if (0 == protocol->speed1.len) + { + goto try_applying_wind_speed2; + } + + if (0 == protocol->speed1.comp_data[wind_speed].seg_len) + { + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->speed1.comp_data[wind_speed].seg_len; i += 2) + { + apply_ac_parameter_type_1(ir_hex_code, &(protocol->speed1.comp_data[wind_speed]), (UINT8) i, FALSE); + } + + // get return here since wind speed 1 is already applied + return IR_DECODE_SUCCEEDED; + + try_applying_wind_speed2: + if (0 == protocol->speed2.len) + { + return IR_DECODE_SUCCEEDED; + } + + if (0 == protocol->speed2.comp_data[wind_speed].seg_len) + { + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->speed2.comp_data[wind_speed].seg_len; i += 3) + { + apply_ac_parameter_type_2(ir_hex_code, + &(protocol->speed2.comp_data[wind_speed]), + (UINT8) i, FALSE); + } + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_ac_temperature(struct ac_protocol *protocol, UINT8 temp_diff) +{ + UINT16 i = 0; + + if (0 == protocol->temp1.len) + { + goto try_applying_temp2; + } + + if (0 == protocol->temp1.comp_data[temp_diff].seg_len) + { + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->temp1.comp_data[temp_diff].seg_len; i += 2) + { + if (TEMP_TYPE_DYNAMIC == protocol->temp1.type) + { + apply_ac_parameter_type_1(ir_hex_code, &(protocol->temp1.comp_data[temp_diff]), (UINT8) i, TRUE); + } + else if (TEMP_TYPE_STATIC == protocol->temp1.type) + { + apply_ac_parameter_type_1(ir_hex_code, &(protocol->temp1.comp_data[temp_diff]), (UINT8) i, FALSE); + } + } + + // get return here since temperature 1 is already applied + return IR_DECODE_SUCCEEDED; + + try_applying_temp2: + if (0 == protocol->temp2.len) + { + return IR_DECODE_SUCCEEDED; + } + + if (0 == protocol->temp2.comp_data[temp_diff].seg_len) + { + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->temp2.comp_data[temp_diff].seg_len; i += 3) + { + if (0 != protocol->temp2.comp_data[temp_diff].seg_len) + { + if (TEMP_TYPE_DYNAMIC == protocol->temp2.type) + { + apply_ac_parameter_type_2(ir_hex_code, &(protocol->temp2.comp_data[temp_diff]), (UINT8) i, TRUE); + } + else if (TEMP_TYPE_STATIC == protocol->temp2.type) + { + apply_ac_parameter_type_2(ir_hex_code, &(protocol->temp2.comp_data[temp_diff]), (UINT8) i, FALSE); + } + } + } + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_ac_swing(struct ac_protocol *protocol, UINT8 swing_mode) +{ + UINT16 i = 0; + + if (0 == protocol->swing1.len) + { + goto try_applying_swing2; + } + + if (swing_mode >= protocol->swing1.count) + { + return IR_DECODE_FAILED; + } + + if (0 == protocol->swing1.comp_data[swing_mode].seg_len) + { + // swing does not have any empty data segment + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->swing1.comp_data[swing_mode].seg_len; i += 2) + { + apply_ac_parameter_type_1(ir_hex_code, &(protocol->swing1.comp_data[swing_mode]), (UINT8) i, FALSE); + } + + // get return here since temperature 1 is already applied + return IR_DECODE_SUCCEEDED; + + try_applying_swing2: + if (0 == protocol->swing2.len) + { + return IR_DECODE_SUCCEEDED; + } + + if (swing_mode >= protocol->swing2.count) + { + return IR_DECODE_FAILED; + } + + if (0 == protocol->swing2.comp_data[swing_mode].seg_len) + { + // swing does not have any empty data segment + return IR_DECODE_FAILED; + } + + for (i = 0; i < protocol->swing2.comp_data[swing_mode].seg_len; i += 3) + { + apply_ac_parameter_type_2(ir_hex_code, + &(protocol->swing2.comp_data[swing_mode]), + (UINT8) i, FALSE); + } + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_checksum_byte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) +{ + UINT16 i = 0; + UINT8 checksum = 0x00; + + if (cs.len < 3) + { + return IR_DECODE_SUCCEEDED; + } + + for (i = cs.start_byte_pos; i < cs.end_byte_pos; i++) + { + checksum += ac_code[i]; + } + + checksum += cs.checksum_plus; + + if (TRUE == inverse) + { + checksum = ~checksum; + } + + // apply checksum + ac_code[cs.checksum_byte_pos] = checksum; + + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_checksum_halfbyte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) +{ + UINT16 i = 0; + UINT8 checksum = 0x00; + + if (cs.len < 3) + { + return IR_DECODE_SUCCEEDED; + } + + for (i = cs.start_byte_pos; i < cs.end_byte_pos; i++) + { + checksum += (ac_code[i] >> 4) + (ac_code[i] & 0x0F); + } + + checksum += cs.checksum_plus; + + if (TRUE == inverse) + { + checksum = ~checksum; + } + + // apply checksum + ac_code[cs.checksum_byte_pos] = checksum; + + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_checksum_spec_byte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) +{ + UINT16 i = 0; + UINT8 apply_byte_pos = 0; + UINT8 checksum = 0x00; + +#if 1 + if (cs.len < 4) + { + return IR_DECODE_SUCCEEDED; + } +#endif + + for (i = 0; i < cs.len - 3; i++) + { + UINT8 pos = cs.spec_pos[i]; + UINT8 byte_pos = pos >> 1; + + if (0 == (pos & 0x01)) + { + checksum += ac_code[byte_pos] >> 4; + } + else + { + checksum += ac_code[byte_pos] & 0x0F; + } + } + + checksum += cs.checksum_plus; + + if (TRUE == inverse) + { + checksum = ~checksum; + } + + // apply checksum, for specific-half-byte checksum, the byte pos actually indicates the half-byte pos + apply_byte_pos = cs.checksum_byte_pos >> 1; + if (0 == (cs.checksum_byte_pos & 0x01)) + { + // save low bits and add checksum as high bits + ac_code[apply_byte_pos] = (UINT8) ((ac_code[apply_byte_pos] & 0x0F) | (checksum << 4)); + } + else + { + // save high bits and add checksum as low bits + ac_code[apply_byte_pos] = (UINT8) ((ac_code[apply_byte_pos] & 0xF0) | (checksum & 0x0F)); + } + + return IR_DECODE_SUCCEEDED; +} + +static INT8 apply_checksum_spec_byte_onebyte(UINT8 *ac_code, t_tag_checksum_data cs, BOOL inverse) +{ + UINT16 i = 0; + UINT8 apply_byte_pos = 0; + UINT8 checksum = 0x00; + +#if 1 + if (cs.len < 4) + { + return IR_DECODE_SUCCEEDED; + } +#endif + + for (i = 0; i < cs.len - 3; i++) + { + UINT8 pos = cs.spec_pos[i]; + UINT8 byte_pos = pos >> 1; + + if (0 == (pos & 0x01)) + { + checksum += ac_code[byte_pos] >> 4; + } + else + { + checksum += ac_code[byte_pos] & 0x0F; + } + } + + checksum += cs.checksum_plus; + + if (TRUE == inverse) + { + checksum = ~checksum; + } + + // apply checksum, for specific-half-byte checksum, the byte pos actually indicates the half-byte pos + apply_byte_pos = cs.checksum_byte_pos >> 1; + ac_code[apply_byte_pos] = checksum; + + return IR_DECODE_SUCCEEDED; +} + +static UINT8 has_function(struct ac_protocol *protocol, UINT8 function) +{ + if (function < AC_FUNCTION_POWER || function > AC_FUNCTION_WIND_FIX) + { + return FALSE; + } + + if (0 != protocol->function1.len) + { + if (0 != protocol->function1.comp_data[function - 1].seg_len) + { + return TRUE; + } + } + + if (0 != protocol->function2.len) + { + if (0 != protocol->function2.comp_data[function - 1].seg_len) + { + return TRUE; + } + } + + return FALSE; +} + +INT8 apply_function(struct ac_protocol *protocol, UINT8 function) +{ + UINT16 i = 0; + + if (function < AC_FUNCTION_POWER || function > AC_FUNCTION_WIND_FIX) + { + return IR_DECODE_FAILED; + } + + // function index starts from 1 (AC_FUNCTION_POWER), do -1 operation at first + if (0 == protocol->function1.len) + { + goto try_applying_function2; + } + + if (0 == protocol->function1.comp_data[function - 1].seg_len) + { + // force to apply function in any case + return IR_DECODE_SUCCEEDED; + } + + for (i = 0; i < protocol->function1.comp_data[function - 1].seg_len; i += 2) + { + apply_ac_parameter_type_1(ir_hex_code, &(protocol->function1.comp_data[function - 1]), (UINT8) i, FALSE); + } + + // get return here since function 1 is already applied + return IR_DECODE_SUCCEEDED; + + try_applying_function2: + if (0 == protocol->function2.len) + { + return IR_DECODE_SUCCEEDED; + } + + if (0 == protocol->function2.comp_data[function - 1].seg_len) + { + return IR_DECODE_SUCCEEDED; + } + + for (i = 0; i < protocol->function2.comp_data[function - 1].seg_len; i += 3) + { + apply_ac_parameter_type_2(ir_hex_code, + &(protocol->function2.comp_data[function - 1]), + (UINT8) i, FALSE); + } + return IR_DECODE_SUCCEEDED; +} + +INT8 apply_checksum(struct ac_protocol *protocol) +{ + UINT16 i = 0; + + if (0 == protocol->checksum.len) + { + return IR_DECODE_SUCCEEDED; + } + + for (i = 0; i < protocol->checksum.count; i++) + { + switch (protocol->checksum.checksum_data[i].type) + { + case CHECKSUM_TYPE_BYTE: + apply_checksum_byte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); + break; + case CHECKSUM_TYPE_BYTE_INVERSE: + apply_checksum_byte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); + break; + case CHECKSUM_TYPE_HALF_BYTE: + apply_checksum_halfbyte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); + break; + case CHECKSUM_TYPE_HALF_BYTE_INVERSE: + apply_checksum_halfbyte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); + break; + case CHECKSUM_TYPE_SPEC_HALF_BYTE: + apply_checksum_spec_byte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); + break; + case CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE: + apply_checksum_spec_byte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); + break; + case CHECKSUM_TYPE_SPEC_HALF_BYTE_ONE_BYTE: + apply_checksum_spec_byte_onebyte(ir_hex_code, protocol->checksum.checksum_data[i], FALSE); + break; + case CHECKSUM_TYPE_SPEC_HALF_BYTE_INVERSE_ONE_BYTE: + apply_checksum_spec_byte_onebyte(ir_hex_code, protocol->checksum.checksum_data[i], TRUE); + break; + default: + break; + } + } + + return IR_DECODE_SUCCEEDED; +} + +INT8 apply_power(t_remote_ac_status ac_status, UINT8 function_code) +{ + (void) function_code; + apply_ac_power(context, ac_status.ac_power); + return IR_DECODE_SUCCEEDED; +} + +INT8 apply_mode(t_remote_ac_status ac_status, UINT8 function_code) +{ + (void) function_code; + if (IR_DECODE_FAILED == apply_ac_mode(context, ac_status.ac_mode)) + { + // do not implement this mechanism since mode, temperature, wind + // speed would have unspecified function + //if(FALSE == has_function(context, AC_FUNCTION_MODE)) + { + return IR_DECODE_FAILED; + } + } + + return IR_DECODE_SUCCEEDED; +} + +INT8 apply_wind_speed(t_remote_ac_status ac_status, UINT8 function_code) +{ + if (FALSE == context->n_mode[ac_status.ac_mode].all_speed) + { + // if this level is not in black list + if (!is_in(context->n_mode[ac_status.ac_mode].speed, + ac_status.ac_wind_speed, + context->n_mode[ac_status.ac_mode].speed_cnt)) + { + if (IR_DECODE_FAILED == apply_ac_wind_speed(context, ac_status.ac_wind_speed) && + function_code == AC_FUNCTION_WIND_SPEED) + { + // do not implement this mechanism since mode, temperature, wind + // speed would have unspecified function + //if(FALSE == has_function(context, AC_FUNCTION_WIND_SPEED)) + { + return IR_DECODE_FAILED; + } + } + } + else + { + // if this level is in black list, do not send IR wave if user want to apply this function + if (function_code == AC_FUNCTION_WIND_SPEED) + { + // do not implement this mechanism since mode, temperature, wind + // speed would have unspecified function + //if(FALSE == has_function(context, AC_FUNCTION_WIND_SPEED)) + { + return IR_DECODE_FAILED; + } + } + } + } + else + { + // if this level is in black list, do not send IR wave if user want to apply this function + if (function_code == AC_FUNCTION_WIND_SPEED) + { + // do not implement this mechanism since mode, temperature, wind + // speed would have unspecified function + //if(FALSE == has_function(context, AC_FUNCTION_WIND_SPEED)) + { + return IR_DECODE_FAILED; + } + } + } + return IR_DECODE_SUCCEEDED; +} + +INT8 apply_swing(t_remote_ac_status ac_status, UINT8 function_code) +{ + (void) ac_status; + if (function_code == AC_FUNCTION_WIND_FIX) + { + // adjust fixed wind direction according to current status + if (context->si.type == SWING_TYPE_NORMAL && context->si.mode_count > 1) + { + if (TRUE == context->change_wind_direction) + { + context->si.dir_index++; + } + + if (context->si.dir_index == context->si.mode_count) + { + // reset dir index + context->si.dir_index = 1; + } + context->swing_status = context->si.dir_index; + } + } + else if (function_code == AC_FUNCTION_WIND_SWING) + { + context->swing_status = 0; + } + else + { + // do nothing + } + + if (IR_DECODE_FAILED == apply_ac_swing(context, context->swing_status)) + { + if (function_code == AC_FUNCTION_WIND_SWING && + FALSE == has_function(context, AC_FUNCTION_WIND_SWING)) + { + return IR_DECODE_FAILED; + } + else if (function_code == AC_FUNCTION_WIND_FIX && + FALSE == has_function(context, AC_FUNCTION_WIND_FIX)) + { + return IR_DECODE_FAILED; + } + } + return IR_DECODE_SUCCEEDED; +} + +INT8 apply_temperature(t_remote_ac_status ac_status, UINT8 function_code) +{ + if (FALSE == context->n_mode[ac_status.ac_mode].all_temp) + { + if (!is_in(context->n_mode[ac_status.ac_mode].temp, + ac_status.ac_temp, + context->n_mode[ac_status.ac_mode].temp_cnt)) + { + if (IR_DECODE_FAILED == apply_ac_temperature(context, ac_status.ac_temp)) + { + if (function_code == AC_FUNCTION_TEMPERATURE_UP + /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_UP)*/) + { + return IR_DECODE_FAILED; + } + else if (function_code == AC_FUNCTION_TEMPERATURE_DOWN + /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_DOWN)*/) + { + return IR_DECODE_FAILED; + } + } + } + else + { + // if this level is in black list, do not send IR wave if user want to apply this function + if (function_code == AC_FUNCTION_TEMPERATURE_UP + /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_UP)*/) + { + return IR_DECODE_FAILED; + } + else if (function_code == AC_FUNCTION_TEMPERATURE_DOWN + /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_DOWN)*/) + { + return IR_DECODE_FAILED; + } + } + } + else + { + // if this level is in black list, do not send IR wave if user want to apply this function + if (function_code == AC_FUNCTION_TEMPERATURE_UP + /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_UP)*/) + { + return IR_DECODE_FAILED; + } + else if (function_code == AC_FUNCTION_TEMPERATURE_DOWN + /*&& FALSE == has_function(context, AC_FUNCTION_TEMPERATURE_DOWN)*/) + { + return IR_DECODE_FAILED; + } + } + return IR_DECODE_SUCCEEDED; } \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_binary_parse.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_binary_parse.c index d154f54..c2ff2eb 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_binary_parse.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_binary_parse.c @@ -9,8 +9,8 @@ Revision log: * 2017-01-03: created by strawmanbobi **************************************************************************************/ -#include "../include/ir_ac_binary_parse.h" -#include "../include/ir_decode.h" +#include "include/ir_ac_binary_parse.h" +#include "include/ir_decode.h" UINT16 tag_head_offset = 0; @@ -45,7 +45,7 @@ INT8 binary_parse_offset() return IR_DECODE_FAILED; } - tag_head_offset = (UINT16) ((tag_count << 1) + 1); + tag_head_offset = (UINT16) ((tag_count << (UINT16) 1) + 1); #if defined USE_DYNAMIC_TAG tags = (t_tag_head *) ir_malloc(tag_count * sizeof(t_tag_head)); diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_build_frame.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_build_frame.c index 456d86a..b8452a7 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_build_frame.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_build_frame.c @@ -1,143 +1,146 @@ -/************************************************************************************** -Filename: ir_irframe.c -Revised: Date: 2016-10-01 -Revision: Revision: 1.0 - -Description: This file provides algorithms for IR frame build - -Revision log: -* 2016-10-01: created by strawmanbobi -**************************************************************************************/ - -#include "../include/ir_ac_build_frame.h" -#include "../include/ir_decode.h" - -extern t_ac_protocol *context; - - -//return bit number per byte,default value is 8 -UINT8 bits_per_byte(UINT8 index) -{ - UINT8 i = 0; - UINT8 size = 0; - - if (context->bit_num_cnt == 0) - return 8; //defaut value - - if (context->bit_num_cnt >= MAX_BITNUM) - size = MAX_BITNUM; - else - size = (UINT8) context->bit_num_cnt; - - for (i = 0; i < size; i++) - { - if (context->bit_num[i].pos == index) - return (UINT8) context->bit_num[i].bits; - if (context->bit_num[i].pos > index) - return 8; - } - return 8; -} - -UINT16 add_delaycode(UINT8 index) -{ - UINT8 i = 0, j = 0; - UINT8 size = 0; - UINT8 tail_delaycode = 0; - UINT16 tail_pos = 0; - - if (context->dc_cnt != 0) - { - size = (UINT8) context->dc_cnt; - - for (i = 0; i < size; i++) - { - if (context->dc[i].pos == index) - { - for (j = 0; j < context->dc[i].time_cnt; j++) - { - context->time[context->code_cnt++] = context->dc[i].time[j]; - } - } - else if (context->dc[i].pos == -1) - { - tail_delaycode = 1; - tail_pos = i; - } - } - } - - if ((context->last_bit == 0) && (index == (ir_hex_len - 1))) - { - context->time[context->code_cnt++] = context->one.low; //high - } - - if (context->dc_cnt != 0) - { - if ((index == (ir_hex_len - 1)) && (tail_delaycode == 1)) - { - for (i = 0; i < context->dc[tail_pos].time_cnt; i++) - { - context->time[context->code_cnt++] = context->dc[tail_pos].time[i]; - } - } - } - - return context->dc[i].time_cnt; -} - -UINT16 create_ir_frame() -{ - UINT16 i = 0, j = 0; - UINT8 bitnum = 0; - UINT8 *irdata = ir_hex_code; - UINT8 mask = 1; - UINT16 framelen = 0; - - context->code_cnt = 0; - - // boot code - for (i = 0; i < context->boot_code.len; i++) - { - context->time[context->code_cnt++] = context->boot_code.data[i]; - } - //code_cnt += context->boot_code.len; - - for (i = 0; i < ir_hex_len; i++) - { - bitnum = bits_per_byte((UINT8) i); - for (j = 0; j < bitnum; j++) - { - if (context->endian == 0) - mask = (UINT8) ((1 << (bitnum - 1)) >> j); - else - mask = (UINT8) (1 << j); - - if (irdata[i] & mask) - { - //ir_printf("%d,%d,", context->one.low, context->one.high); - context->time[context->code_cnt++] = context->one.low; - context->time[context->code_cnt++] = context->one.high; - } - else - { - //ir_printf("%d,%d,", context->zero.low, context->zero.high); - context->time[context->code_cnt++] = context->zero.low; - context->time[context->code_cnt++] = context->zero.high; - } - } - add_delaycode((UINT8) i); - } - - framelen = context->code_cnt; - - for (i = 0; i < (context->repeat_times - 1); i++) - { - for (j = 0; j < framelen; j++) - { - context->time[context->code_cnt++] = context->time[j]; - } - } - - return context->code_cnt; -} +/************************************************************************************** +Filename: ir_irframe.c +Revised: Date: 2016-10-01 +Revision: Revision: 1.0 + +Description: This file provides algorithms for IR frame build + +Revision log: +* 2016-10-01: created by strawmanbobi +**************************************************************************************/ + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "hicpp-signed-bitwise" +#pragma ide diagnostic ignored "readability-redundant-declaration" +#endif + +#include "include/ir_ac_build_frame.h" +#include "include/ir_decode.h" + +extern t_ac_protocol* context; + + +//return bit number per byte,default value is 8 +UINT8 bits_per_byte(UINT8 index) +{ + UINT8 i = 0; + UINT8 size = 0; + + if (context->bit_num_cnt == 0) + return 8; //defaut value + + if (context->bit_num_cnt >= MAX_BITNUM) + size = MAX_BITNUM; + else + size = (UINT8) context->bit_num_cnt; + + for (i = 0; i < size; i++) + { + if (context->bit_num[i].pos == index) + return (UINT8) context->bit_num[i].bits; + if (context->bit_num[i].pos > index) + return 8; + } + return 8; +} + +UINT16 add_delaycode(UINT8 index) +{ + UINT16 i = 0; + UINT16 j = 0; + UINT8 size = 0; + UINT8 tail_delay_code = 0; + UINT16 tail_pos = 0; + + if (context->dc_cnt != 0) + { + size = (UINT8) context->dc_cnt; + + for (i = 0; i < size; i++) + { + if (context->dc[i].pos == index) + { + for (j = 0; j < context->dc[i].time_cnt; j++) + { + context->time[context->code_cnt++] = context->dc[i].time[j]; + } + } + else if (context->dc[i].pos == -1) + { + tail_delay_code = 1; + tail_pos = i; + } + } + } + + if ((context->last_bit == 0) && (index == (ir_hex_len - 1))) + { + context->time[context->code_cnt++] = context->one.low; //high + } + + if (context->dc_cnt != 0) + { + if ((index == (ir_hex_len - 1)) && (tail_delay_code == 1)) + { + for (i = 0; i < context->dc[tail_pos].time_cnt; i++) + { + context->time[context->code_cnt++] = context->dc[tail_pos].time[i]; + } + } + } + + return context->dc[i].time_cnt; +} + +UINT16 create_ir_frame() +{ + UINT16 i = 0, j = 0; + UINT8 bit_num = 0; + UINT8 *ir_data = ir_hex_code; + UINT8 mask = 0; + UINT16 frame_length = 0; + + context->code_cnt = 0; + + // boot code + for (i = 0; i < context->boot_code.len; i++) + { + context->time[context->code_cnt++] = context->boot_code.data[i]; + } + + for (i = 0; i < ir_hex_len; i++) + { + bit_num = bits_per_byte((UINT8) i); + for (j = 0; j < bit_num; j++) + { + if (context->endian == 0) + mask = (UINT8) ((1 << (bit_num - 1)) >> j); + else + mask = (UINT8) (1 << j); + + if (ir_data[i] & mask) + { + context->time[context->code_cnt++] = context->one.low; + context->time[context->code_cnt++] = context->one.high; + } + else + { + context->time[context->code_cnt++] = context->zero.low; + context->time[context->code_cnt++] = context->zero.high; + } + } + add_delaycode((UINT8) i); + } + + frame_length = context->code_cnt; + + for (i = 0; i < (context->repeat_times - 1); i++) + { + for (j = 0; j < frame_length; j++) + { + context->time[context->code_cnt++] = context->time[j]; + } + } + + return context->code_cnt; +} \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_control.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_control.c index 3d07dc0..2526857 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_control.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_control.c @@ -1,556 +1,560 @@ -/************************************************************************************** -Filename: ir_ac_control.c -Revised: Date: 2017-01-02 -Revision: Revision: 1.0 - -Description: This file provides methods for AC IR control - -Revision log: -* 2016-10-12: created by strawmanbobi -**************************************************************************************/ - -#include -#include -#include - -#include "../include/ir_ac_control.h" -#include "../include/ir_ac_binary_parse.h" -#include "../include/ir_decode.h" -#include "../include/ir_ac_parse_parameter.h" -#include "../include/ir_ac_parse_forbidden_info.h" -#include "../include/ir_ac_parse_frame_info.h" -#include "../include/ir_utils.h" - - -#if defined USE_DYNAMIC_TAG -extern struct tag_head *tags; -#else -extern struct tag_head tags[]; -#endif - -extern UINT8 tag_count; - -static INT8 ir_context_init(); - - -static INT8 ir_context_init() -{ - ir_memset(context, 0, sizeof(t_ac_protocol)); - return IR_DECODE_SUCCEEDED; -} - - -INT8 ir_ac_lib_parse() -{ - UINT8 i = 0; - // suggest not to call init function here for de-couple purpose - ir_context_init(); - - if (IR_DECODE_FAILED == binary_parse_offset()) - { - return IR_DECODE_FAILED; - } - - if (IR_DECODE_FAILED == binary_parse_len()) - { - return IR_DECODE_FAILED; - } - - if (IR_DECODE_FAILED == binary_parse_data()) - { - return IR_DECODE_FAILED; - } - - binary_tags_info(); - - context->endian = 0; - context->last_bit = 0; - context->repeat_times = 1; - - for (i = 0; i < N_MODE_MAX; i++) - { - context->n_mode[i].enable = TRUE; - context->n_mode[i].all_speed = FALSE; - context->n_mode[i].all_temp = FALSE; - ir_memset(context->n_mode[i].speed, 0x00, AC_WS_MAX); - context->n_mode[i].speed_cnt = 0; - ir_memset(context->n_mode[i].temp, 0x00, AC_TEMP_MAX); - context->n_mode[i].temp_cnt = 0; - } - - // parse TAG 46 in first priority - for (i = 0; i < tag_count; i++) - { - if (tags[i].tag == TAG_AC_SWING_INFO) - { - if (tags[i].len != 0) - { - parse_swing_info(&tags[i], &(context->si)); - } - else - { - context->si.type = SWING_TYPE_NORMAL; - context->si.mode_count = 2; - } - context->si.dir_index = 0; - break; - } - } - - for (i = 0; i < tag_count; i++) - { - if (tags[i].len == 0) - { - continue; - } - // then parse TAG 26 or 33 - if (context->si.type == SWING_TYPE_NORMAL) - { - UINT16 swing_space_size = 0; - if (tags[i].tag == TAG_AC_SWING_1) - { - context->swing1.count = context->si.mode_count; - context->swing1.len = (UINT8) tags[i].len >> 1; - swing_space_size = sizeof(t_tag_comp) * context->si.mode_count; - context->swing1.comp_data = (t_tag_comp *) ir_malloc(swing_space_size); - if (NULL == context->swing1.comp_data) - { - return IR_DECODE_FAILED; - } - - ir_memset(context->swing1.comp_data, 0x00, swing_space_size); - if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], - context->swing1.comp_data, - context->si.mode_count, - AC_PARAMETER_TYPE_1)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_SWING_2) - { - context->swing2.count = context->si.mode_count; - context->swing2.len = (UINT8) tags[i].len >> 1; - swing_space_size = sizeof(t_tag_comp) * context->si.mode_count; - context->swing2.comp_data = (t_tag_comp *) ir_malloc(swing_space_size); - if (NULL == context->swing2.comp_data) - { - return IR_DECODE_FAILED; - } - ir_memset(context->swing2.comp_data, 0x00, swing_space_size); - if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], - context->swing2.comp_data, - context->si.mode_count, - AC_PARAMETER_TYPE_2)) - { - return IR_DECODE_FAILED; - } - } - } - - if (tags[i].tag == TAG_AC_DEFAULT_CODE) // default code TAG - { - context->default_code.data = (UINT8 *) ir_malloc(((size_t) tags[i].len - 2) >> 1); - if (NULL == context->default_code.data) - { - return IR_DECODE_FAILED; - } - if (IR_DECODE_FAILED == parse_default_code(&tags[i], &(context->default_code))) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_POWER_1) // power tag - { - context->power1.len = (UINT8) tags[i].len >> 1; - if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], - context->power1.comp_data, - AC_POWER_MAX, - AC_PARAMETER_TYPE_1)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_TEMP_1) // temperature tag type 1 - { - if (IR_DECODE_FAILED == parse_temp_1(&tags[i], &(context->temp1))) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_MODE_1) // mode tag - { - context->mode1.len = (UINT8) tags[i].len >> 1; - if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], - context->mode1.comp_data, - AC_MODE_MAX, - AC_PARAMETER_TYPE_1)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_SPEED_1) // wind speed tag - { - context->speed1.len = (UINT8) tags[i].len >> 1; - if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], - context->speed1.comp_data, - AC_WS_MAX, - AC_PARAMETER_TYPE_1)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_CHECKSUM_TYPE) - { - if (IR_DECODE_FAILED == parse_checksum(&tags[i], &(context->checksum))) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_MODE_2) - { - context->mode2.len = (UINT8) tags[i].len >> 1; - if (IR_DECODE_FAILED == - parse_common_ac_parameter(&tags[i], - context->mode2.comp_data, AC_MODE_MAX, AC_PARAMETER_TYPE_1)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_SPEED_2) - { - context->speed2.len = (UINT8) tags[i].len >> 1; - if (IR_DECODE_FAILED == - parse_common_ac_parameter(&tags[i], - context->speed2.comp_data, AC_WS_MAX, AC_PARAMETER_TYPE_1)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_TEMP_2) - { - if (IR_DECODE_FAILED == parse_temp_2(&tags[i], &(context->temp2))) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_SOLO_FUNCTION) - { - if (IR_DECODE_FAILED == parse_solo_code(&tags[i], &(context->sc))) - { - return IR_DECODE_FAILED; - } - context->solo_function_mark = 1; - } - else if (tags[i].tag == TAG_AC_FUNCTION_1) - { - if (IR_DECODE_FAILED == parse_function_1_tag29(&tags[i], &(context->function1))) - { - ir_printf("\nfunction code parse error\n"); - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_FUNCTION_2) - { - if (IR_DECODE_FAILED == parse_function_2_tag34(&tags[i], &(context->function2))) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_FRAME_LENGTH) - { - if (IR_DECODE_FAILED == parse_frame_len(&tags[i], tags[i].len)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_ZERO) - { - if (IR_DECODE_FAILED == parse_zero(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_ONE) - { - if (IR_DECODE_FAILED == parse_one(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_BOOT_CODE) - { - if (IR_DECODE_FAILED == parse_boot_code(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_REPEAT_TIMES) - { - if (IR_DECODE_FAILED == parse_repeat_times(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_BIT_NUM) - { - if (IR_DECODE_FAILED == parse_bit_num(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_ENDIAN) - { - if (IR_DECODE_FAILED == parse_endian(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_COOL_MODE) - { - if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_COOL)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_HEAT_MODE) - { - if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_HEAT)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_AUTO_MODE) - { - if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_AUTO)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_FAN_MODE) - { - if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_FAN)) - { - return IR_DECODE_FAILED; - } - } - else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_DRY_MODE) - { - if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_DRY)) - { - return IR_DECODE_FAILED; - } - } - } - - for (i = 0; i < tag_count; i++) - { - if (tags[i].len == 0) - { - continue; - } - if (tags[i].tag == TAG_AC_DELAY_CODE) - { - if (IR_DECODE_FAILED == parse_delay_code(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - if (tags[i].tag == TAG_AC_LAST_BIT) - { - if (IR_DECODE_FAILED == parse_lastbit(&tags[i])) - { - return IR_DECODE_FAILED; - } - } - } - -#if defined USE_DYNAMIC_TAG - if (NULL != tags) - { - ir_free(tags); - tags = NULL; - } -#endif - - ir_hex_code = (UINT8 *) ir_malloc(context->default_code.len); - if (NULL == ir_hex_code) - { - // warning: this AC bin contains no default code - return IR_DECODE_FAILED; - } - - ir_hex_len = context->default_code.len; - ir_memset(ir_hex_code, 0x00, ir_hex_len); - - // pre-calculate solo function status after parse phase - if (1 == context->solo_function_mark) - { - context->solo_function_mark = 0x00; - // bit order from right to left : power, mode, temp+, temp-, wind_speed, swing, fix - for (i = AC_FUNCTION_POWER; i < AC_FUNCTION_MAX; i++) - { - if (is_in(context->sc.solo_function_codes, i, context->sc.solo_func_count)) - { - context->solo_function_mark |= (1 << (i - 1)); - } - } - } - - // it is strongly recommended that we free p_ir_buffer - // or make global buffer shared in extreme memory case - /* in case of running with test - begin */ -#if (defined BOARD_PC || defined BOARD_PC_DLL) - ir_lib_free_inner_buffer(); - ir_printf("AC parse done\n"); -#endif - /* in case of running with test - end */ - - return IR_DECODE_SUCCEEDED; -} - - -INT8 free_ac_context() -{ - UINT16 i = 0; - - if (ir_hex_code != NULL) - { - ir_free(ir_hex_code); - ir_hex_code = NULL; - } - ir_hex_len = 0; - - if (context->default_code.data != NULL) - { - ir_free(context->default_code.data); - context->default_code.data = NULL; - context->default_code.len = 0; - } - - for (i = 0; i < AC_POWER_MAX; i++) - { - if (context->power1.comp_data[i].segment != NULL) - { - ir_free(context->power1.comp_data[i].segment); - context->power1.comp_data[i].segment = NULL; - context->power1.comp_data[i].seg_len = 0; - } - } - - for (i = 0; i < AC_TEMP_MAX; i++) - { - if (context->temp1.comp_data[i].segment != NULL) - { - ir_free(context->temp1.comp_data[i].segment); - context->temp1.comp_data[i].segment = NULL; - context->temp1.comp_data[i].seg_len = 0; - } - if (context->temp2.comp_data[i].segment != NULL) - { - ir_free(context->temp2.comp_data[i].segment); - context->temp2.comp_data[i].segment = NULL; - context->temp2.comp_data[i].seg_len = 0; - } - } - - for (i = 0; i < AC_MODE_MAX; i++) - { - if (context->mode1.comp_data[i].segment != NULL) - { - ir_free(context->mode1.comp_data[i].segment); - context->mode1.comp_data[i].segment = NULL; - context->mode1.comp_data[i].seg_len = 0; - } - if (context->mode2.comp_data[i].segment != NULL) - { - ir_free(context->mode2.comp_data[i].segment); - context->mode2.comp_data[i].segment = NULL; - context->mode2.comp_data[i].seg_len = 0; - } - } - for (i = 0; i < AC_WS_MAX; i++) - { - if (context->speed1.comp_data[i].segment != NULL) - { - ir_free(context->speed1.comp_data[i].segment); - context->speed1.comp_data[i].segment = NULL; - context->speed1.comp_data[i].seg_len = 0; - } - if (context->speed2.comp_data[i].segment != NULL) - { - ir_free(context->speed2.comp_data[i].segment); - context->speed2.comp_data[i].segment = NULL; - context->speed2.comp_data[i].seg_len = 0; - } - } - - for (i = 0; i < context->si.mode_count; i++) - { - if (context->swing1.comp_data != NULL && - context->swing1.comp_data[i].segment != NULL) - { - ir_free(context->swing1.comp_data[i].segment); - context->swing1.comp_data[i].segment = NULL; - context->swing1.comp_data[i].seg_len = 0; - } - if (context->swing2.comp_data != NULL && - context->swing2.comp_data[i].segment != NULL) - { - ir_free(context->swing2.comp_data[i].segment); - context->swing2.comp_data[i].segment = NULL; - context->swing2.comp_data[i].seg_len = 0; - } - } - - for (i = 0; i < AC_FUNCTION_MAX - 1; i++) - { - if (context->function1.comp_data[i].segment != NULL) - { - ir_free(context->function1.comp_data[i].segment); - context->function1.comp_data[i].segment = NULL; - context->function1.comp_data[i].seg_len = 0; - } - if (context->function2.comp_data[i].segment != NULL) - { - ir_free(context->function2.comp_data[i].segment); - context->function2.comp_data[i].segment = NULL; - context->function2.comp_data[i].seg_len = 0; - } - } - - // free composite data for swing1 and swing 2 - if (context->swing1.comp_data != NULL) - { - ir_free(context->swing1.comp_data); - context->swing1.comp_data = NULL; - } - if (context->swing2.comp_data != NULL) - { - ir_free(context->swing2.comp_data); - context->swing2.comp_data = NULL; - } - - for (i = 0; i < context->checksum.count; i++) - { - if (context->checksum.checksum_data != NULL && - context->checksum.checksum_data[i].spec_pos != NULL) - { - ir_free(context->checksum.checksum_data[i].spec_pos); - context->checksum.checksum_data[i].len = 0; - context->checksum.checksum_data[i].spec_pos = NULL; - } - } - if (context->checksum.checksum_data != NULL) - { - ir_free(context->checksum.checksum_data); - context->checksum.checksum_data = NULL; - } - - return IR_DECODE_SUCCEEDED; -} - -BOOL is_solo_function(UINT8 function_code) -{ - return (((context->solo_function_mark >> (function_code - 1)) & 0x01) == 0x01) ? TRUE : FALSE; -} +/************************************************************************************** +Filename: ir_ac_control.c +Revised: Date: 2017-01-02 +Revision: Revision: 1.0 + +Description: This file provides methods for AC IR control + +Revision log: +* 2016-10-12: created by strawmanbobi +**************************************************************************************/ + +#include +#include +#include + +#include "include/ir_ac_control.h" +#include "include/ir_ac_binary_parse.h" +#include "include/ir_decode.h" +#include "include/ir_ac_parse_parameter.h" +#include "include/ir_ac_parse_forbidden_info.h" +#include "include/ir_ac_parse_frame_info.h" +#include "include/ir_utils.h" + + +#if defined USE_DYNAMIC_TAG +extern struct tag_head *tags; +#else +extern struct tag_head tags[]; +#endif + +extern UINT8 tag_count; + +static INT8 ir_context_init(); + + +static INT8 ir_context_init() +{ + ir_memset(context, 0, sizeof(t_ac_protocol)); + return IR_DECODE_SUCCEEDED; +} + + +INT8 ir_ac_lib_parse() +{ + UINT i = 0; + // suggest not to call init function here for de-couple purpose + ir_context_init(); + + if (IR_DECODE_FAILED == binary_parse_offset()) + { + return IR_DECODE_FAILED; + } + + if (IR_DECODE_FAILED == binary_parse_len()) + { + return IR_DECODE_FAILED; + } + + if (IR_DECODE_FAILED == binary_parse_data()) + { + return IR_DECODE_FAILED; + } + + binary_tags_info(); + + context->endian = 0; + context->last_bit = 0; + context->repeat_times = 1; + + for (i = 0; i < N_MODE_MAX; i++) + { + context->n_mode[i].enable = TRUE; + context->n_mode[i].all_speed = FALSE; + context->n_mode[i].all_temp = FALSE; + ir_memset(context->n_mode[i].speed, 0x00, AC_WS_MAX); + context->n_mode[i].speed_cnt = 0; + ir_memset(context->n_mode[i].temp, 0x00, AC_TEMP_MAX); + context->n_mode[i].temp_cnt = 0; + } + + // parse TAG 46 in first priority + for (i = 0; i < tag_count; i++) + { + if (tags[i].tag == TAG_AC_SWING_INFO) + { + if (tags[i].len != 0) + { + parse_swing_info(&tags[i], &(context->si)); + } + else + { + context->si.type = SWING_TYPE_NORMAL; + context->si.mode_count = 2; + } + context->si.dir_index = 0; + break; + } + } + + for (i = 0; i < tag_count; i++) + { + if (tags[i].len == 0) + { + continue; + } + // then parse TAG 26 or 33 + if (context->si.type == SWING_TYPE_NORMAL) + { + UINT16 swing_space_size = 0; + if (tags[i].tag == TAG_AC_SWING_1) + { + context->swing1.count = context->si.mode_count; + context->swing1.len = (UINT8) tags[i].len >> (UINT8) 1; + swing_space_size = sizeof(t_tag_comp) * context->si.mode_count; + context->swing1.comp_data = (t_tag_comp *) ir_malloc(swing_space_size); + if (NULL == context->swing1.comp_data) + { + return IR_DECODE_FAILED; + } + + ir_memset(context->swing1.comp_data, 0x00, swing_space_size); + if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], + context->swing1.comp_data, + context->si.mode_count, + AC_PARAMETER_TYPE_1)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_SWING_2) + { + context->swing2.count = context->si.mode_count; + context->swing2.len = (UINT8) tags[i].len >> (UINT8) 1; + swing_space_size = sizeof(t_tag_comp) * context->si.mode_count; + context->swing2.comp_data = (t_tag_comp *) ir_malloc(swing_space_size); + if (NULL == context->swing2.comp_data) + { + return IR_DECODE_FAILED; + } + ir_memset(context->swing2.comp_data, 0x00, swing_space_size); + if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], + context->swing2.comp_data, + context->si.mode_count, + AC_PARAMETER_TYPE_2)) + { + return IR_DECODE_FAILED; + } + } + } + + if (tags[i].tag == TAG_AC_DEFAULT_CODE) // default code TAG + { + context->default_code.data = (UINT8 *) ir_malloc(((size_t) tags[i].len - 2) >> (UINT8) 1); + if (NULL == context->default_code.data) + { + return IR_DECODE_FAILED; + } + if (IR_DECODE_FAILED == parse_default_code(&tags[i], &(context->default_code))) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_POWER_1) // power tag + { + context->power1.len = (UINT8) tags[i].len >> (UINT8) 1; + if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], + context->power1.comp_data, + AC_POWER_MAX, + AC_PARAMETER_TYPE_1)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_TEMP_1) // temperature tag type 1 + { + if (IR_DECODE_FAILED == parse_temp_1(&tags[i], &(context->temp1))) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_MODE_1) // mode tag + { + context->mode1.len = (UINT8) tags[i].len >> (UINT8) 1; + if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], + context->mode1.comp_data, + AC_MODE_MAX, + AC_PARAMETER_TYPE_1)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_SPEED_1) // wind speed tag + { + context->speed1.len = (UINT8) tags[i].len >> (UINT8) 1; + if (IR_DECODE_FAILED == parse_common_ac_parameter(&tags[i], + context->speed1.comp_data, + AC_WS_MAX, + AC_PARAMETER_TYPE_1)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_CHECKSUM_TYPE) + { + if (IR_DECODE_FAILED == parse_checksum(&tags[i], &(context->checksum))) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_MODE_2) + { + context->mode2.len = (UINT8) tags[i].len >> (UINT8) 1; + if (IR_DECODE_FAILED == + parse_common_ac_parameter(&tags[i], + context->mode2.comp_data, AC_MODE_MAX, AC_PARAMETER_TYPE_1)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_SPEED_2) + { + context->speed2.len = (UINT8) tags[i].len >> (UINT8) 1; + if (IR_DECODE_FAILED == + parse_common_ac_parameter(&tags[i], + context->speed2.comp_data, AC_WS_MAX, AC_PARAMETER_TYPE_1)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_TEMP_2) + { + if (IR_DECODE_FAILED == parse_temp_2(&tags[i], &(context->temp2))) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_SOLO_FUNCTION) + { + if (IR_DECODE_FAILED == parse_solo_code(&tags[i], &(context->sc))) + { + return IR_DECODE_FAILED; + } + context->solo_function_mark = 1; + } + else if (tags[i].tag == TAG_AC_FUNCTION_1) + { + if (IR_DECODE_FAILED == parse_function_1_tag29(&tags[i], &(context->function1))) + { + ir_printf("\nfunction code parse error\n"); + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_FUNCTION_2) + { + if (IR_DECODE_FAILED == parse_function_2_tag34(&tags[i], &(context->function2))) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_FRAME_LENGTH) + { + if (IR_DECODE_FAILED == parse_frame_len(&tags[i], tags[i].len)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_ZERO) + { + if (IR_DECODE_FAILED == parse_zero(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_ONE) + { + if (IR_DECODE_FAILED == parse_one(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_BOOT_CODE) + { + if (IR_DECODE_FAILED == parse_boot_code(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_REPEAT_TIMES) + { + if (IR_DECODE_FAILED == parse_repeat_times(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_BIT_NUM) + { + if (IR_DECODE_FAILED == parse_bit_num(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_ENDIAN) + { + if (IR_DECODE_FAILED == parse_endian(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_COOL_MODE) + { + if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_COOL)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_HEAT_MODE) + { + if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_HEAT)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_AUTO_MODE) + { + if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_AUTO)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_FAN_MODE) + { + if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_FAN)) + { + return IR_DECODE_FAILED; + } + } + else if (tags[i].tag == TAG_AC_BAN_FUNCTION_IN_DRY_MODE) + { + if (IR_DECODE_FAILED == parse_nmode(&tags[i], N_DRY)) + { + return IR_DECODE_FAILED; + } + } + } + + for (i = 0; i < tag_count; i++) + { + if (tags[i].len == 0) + { + continue; + } + if (tags[i].tag == TAG_AC_DELAY_CODE) + { + if (IR_DECODE_FAILED == parse_delay_code(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + if (tags[i].tag == TAG_AC_LAST_BIT) + { + if (IR_DECODE_FAILED == parse_lastbit(&tags[i])) + { + return IR_DECODE_FAILED; + } + } + } + +#if defined USE_DYNAMIC_TAG + if (NULL != tags) + { + ir_free(tags); + tags = NULL; + } +#endif + + ir_hex_code = (UINT8 *) ir_malloc(context->default_code.len); + if (NULL == ir_hex_code) + { + // warning: this AC bin contains no default code + return IR_DECODE_FAILED; + } + + ir_hex_len = context->default_code.len; + ir_memset(ir_hex_code, 0x00, ir_hex_len); + + // pre-calculate solo function status after parse phase + if (1 == context->solo_function_mark) + { + context->solo_function_mark = 0x00; + // bit order from right to left : power, mode, temp+, temp-, wind_speed, swing, fix + for (i = AC_FUNCTION_POWER; i < AC_FUNCTION_MAX; i++) + { + if (is_in(context->sc.solo_function_codes, i, context->sc.solo_func_count)) + { + context->solo_function_mark |= (UINT8) ((UINT8) 1 << (i - 1)); + } + } + } + + // it is strongly recommended that we free p_ir_buffer + // or make global buffer shared in extreme memory case + /* in case of running with test - begin */ +#if (defined BOARD_PC || defined BOARD_PC_DLL) + ir_lib_free_inner_buffer(); + ir_printf("AC parse done\n"); +#endif + /* in case of running with test - end */ + + return IR_DECODE_SUCCEEDED; +} + + +INT8 free_ac_context() +{ + UINT16 i = 0; + + if (ir_hex_code != NULL) + { + ir_free(ir_hex_code); + ir_hex_code = NULL; + } + ir_hex_len = 0; + + if (context->default_code.data != NULL) + { + ir_free(context->default_code.data); + context->default_code.data = NULL; + context->default_code.len = 0; + } + + for (i = 0; i < (UINT16) AC_POWER_MAX; i++) + { + if (context->power1.comp_data[i].segment != NULL) + { + ir_free(context->power1.comp_data[i].segment); + context->power1.comp_data[i].segment = NULL; + context->power1.comp_data[i].seg_len = 0; + } + } + + for (i = 0; i < (UINT16) AC_TEMP_MAX; i++) + { + if (context->temp1.comp_data[i].segment != NULL) + { + ir_free(context->temp1.comp_data[i].segment); + context->temp1.comp_data[i].segment = NULL; + context->temp1.comp_data[i].seg_len = 0; + } + if (context->temp2.comp_data[i].segment != NULL) + { + ir_free(context->temp2.comp_data[i].segment); + context->temp2.comp_data[i].segment = NULL; + context->temp2.comp_data[i].seg_len = 0; + } + } + + for (i = 0; i < (UINT16) AC_MODE_MAX; i++) + { + if (context->mode1.comp_data[i].segment != NULL) + { + ir_free(context->mode1.comp_data[i].segment); + context->mode1.comp_data[i].segment = NULL; + context->mode1.comp_data[i].seg_len = 0; + } + if (context->mode2.comp_data[i].segment != NULL) + { + ir_free(context->mode2.comp_data[i].segment); + context->mode2.comp_data[i].segment = NULL; + context->mode2.comp_data[i].seg_len = 0; + } + } + for (i = 0; i < (UINT16) AC_WS_MAX; i++) + { + if (context->speed1.comp_data[i].segment != NULL) + { + ir_free(context->speed1.comp_data[i].segment); + context->speed1.comp_data[i].segment = NULL; + context->speed1.comp_data[i].seg_len = 0; + } + if (context->speed2.comp_data[i].segment != NULL) + { + ir_free(context->speed2.comp_data[i].segment); + context->speed2.comp_data[i].segment = NULL; + context->speed2.comp_data[i].seg_len = 0; + } + } + + for (i = 0; i < context->si.mode_count; i++) + { + if (context->swing1.comp_data != NULL && + context->swing1.comp_data[i].segment != NULL) + { + ir_free(context->swing1.comp_data[i].segment); + context->swing1.comp_data[i].segment = NULL; + context->swing1.comp_data[i].seg_len = 0; + } + if (context->swing2.comp_data != NULL && + context->swing2.comp_data[i].segment != NULL) + { + ir_free(context->swing2.comp_data[i].segment); + context->swing2.comp_data[i].segment = NULL; + context->swing2.comp_data[i].seg_len = 0; + } + } + + for (i = 0; i < (UINT16) AC_FUNCTION_MAX - 1; i++) + { + if (context->function1.comp_data[i].segment != NULL) + { + ir_free(context->function1.comp_data[i].segment); + context->function1.comp_data[i].segment = NULL; + context->function1.comp_data[i].seg_len = 0; + } + if (context->function2.comp_data[i].segment != NULL) + { + ir_free(context->function2.comp_data[i].segment); + context->function2.comp_data[i].segment = NULL; + context->function2.comp_data[i].seg_len = 0; + } + } + + // free composite data for swing1 and swing 2 + if (context->swing1.comp_data != NULL) + { + ir_free(context->swing1.comp_data); + context->swing1.comp_data = NULL; + } + if (context->swing2.comp_data != NULL) + { + ir_free(context->swing2.comp_data); + context->swing2.comp_data = NULL; + } + + for (i = 0; i < context->checksum.count; i++) + { + if (context->checksum.checksum_data != NULL && + context->checksum.checksum_data[i].spec_pos != NULL) + { + ir_free(context->checksum.checksum_data[i].spec_pos); + context->checksum.checksum_data[i].len = 0; + context->checksum.checksum_data[i].spec_pos = NULL; + } + } + if (context->checksum.checksum_data != NULL) + { + ir_free(context->checksum.checksum_data); + context->checksum.checksum_data = NULL; + } + + return IR_DECODE_SUCCEEDED; +} + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "hicpp-signed-bitwise" +#endif + +BOOL is_solo_function(UINT8 function_code) +{ + return (((context->solo_function_mark >> (function_code - 1)) & 0x01) == 0x01) ? TRUE : FALSE; +} diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_forbidden_info.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_forbidden_info.c index 331a243..4624411 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_forbidden_info.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_forbidden_info.c @@ -1,143 +1,149 @@ -/************************************************************************************** -Filename: ir_parse_forbidden_info.c -Revised: Date: 2016-10-05 -Revision: Revision: 1.0 - -Description: This file provides algorithms for forbidden area of AC code - -Revision log: -* 2016-10-05: created by strawmanbobi -**************************************************************************************/ - -#include -#include -#include - -#include "../include/ir_decode.h" -#include "../include/ir_ac_parse_forbidden_info.h" - - -extern t_ac_protocol *context; - - -INT8 parse_nmode_data_speed(char *pdata, t_ac_n_mode seq) -{ - char buf[16] = { 0 }; - char *p = pdata; - UINT16 pos = 0; - UINT16 cnt = 0, index = 0; - - while (index <= ir_strlen(pdata)) - { - while ((index != ir_strlen(pdata)) && (*(p++) != ',')) - { - index++; - } - ir_memcpy(buf, pdata + pos, index - pos); - pos = (UINT16) (index + 1); - index = pos; - context->n_mode[seq].speed[cnt++] = (UINT8) atoi(buf); - context->n_mode[seq].speed_cnt = (UINT8) cnt; - ir_memset(buf, 0, 16); - } - - return IR_DECODE_SUCCEEDED; -} - -INT8 parse_nmode_data_temp(char *pdata, t_ac_n_mode seq) -{ - - char buf[16] = { 0 }; - char *p = pdata; - UINT16 pos = 0; - UINT16 cnt = 0, index = 0; - - while (index <= ir_strlen(pdata)) - { - while ((index != ir_strlen(pdata)) && (*(p++) != ',')) - { - index++; - } - ir_memcpy(buf, pdata + pos, index - pos); - pos = (UINT16) (index + 1); - index = pos; - context->n_mode[seq].temp[cnt++] = (UINT8) (atoi(buf) - 16); - context->n_mode[seq].temp_cnt = (UINT8) cnt; - ir_memset(buf, 0, 16); - } - return IR_DECODE_SUCCEEDED; -} - -INT8 parse_nmode_pos(char *buf, t_ac_n_mode index) -{ - UINT16 i = 0; - char data[64] = { 0 }; - // char start[8] = { 0 }; - if (ir_strlen(buf) == 1) - { - if (buf[0] == 'S' || buf[0] == 's') - { - context->n_mode[index].all_speed = 1; - } - else if (buf[0] == 'T' || buf[0] == 't') - { - context->n_mode[index].all_temp = 1; - } - return IR_DECODE_SUCCEEDED; - } - - for (i = 0; i < ir_strlen(buf); i++) - { - if (buf[i] == '&') - { - ir_memcpy(data, buf + i + 1, ir_strlen(buf) - i - 1); - break; - } - } - if (buf[0] == 'S') - { - parse_nmode_data_speed(data, index); - } - else - { - parse_nmode_data_temp(data, index); - } - - return IR_DECODE_SUCCEEDED; -} - -INT8 parse_nmode(struct tag_head *tag, t_ac_n_mode index) -{ - UINT16 i = 0; - UINT16 preindex = 0; - - char buf[64] = { 0 }; - - if (tag->p_data[0] == 'N' && tag->p_data[1] == 'A') - { - // ban this function directly - context->n_mode[index].enable = 0; - return IR_DECODE_SUCCEEDED; - } - else - { - context->n_mode[index].enable = 1; - } - - preindex = 0; - for (i = 0; i < tag->len; i++) - { - if (tag->p_data[i] == '|') - { - ir_memcpy(buf, tag->p_data + preindex, i - preindex); - preindex = (UINT16) (i + 1); - parse_nmode_pos(buf, index); - ir_memset(buf, 0, 64); - } - - } - ir_memcpy(buf, tag->p_data + preindex, i - preindex); - parse_nmode_pos(buf, index); - ir_memset(buf, 0, 64); - return IR_DECODE_SUCCEEDED; -} +/************************************************************************************** +Filename: ir_parse_forbidden_info.c +Revised: Date: 2016-10-05 +Revision: Revision: 1.0 + +Description: This file provides algorithms for forbidden area of AC code + +Revision log: +* 2016-10-05: created by strawmanbobi +**************************************************************************************/ + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "readability-redundant-declaration" +#endif + +#include +#include +#include + +#include "include/ir_decode.h" +#include "include/ir_ac_parse_forbidden_info.h" + + +extern t_ac_protocol *context; + + +INT8 parse_nmode_data_speed(char *pdata, t_ac_n_mode seq) +{ + char buf[16] = { 0 }; + char *p = pdata; + char *ptr = NULL; + UINT16 pos = 0; + UINT16 cnt = 0, index = 0; + + while (index <= ir_strlen(pdata)) + { + while ((index != ir_strlen(pdata)) && (*(p++) != ',')) + { + index++; + } + ir_memcpy(buf, pdata + pos, index - pos); + pos = (UINT16) (index + 1); + index = pos; + context->n_mode[seq].speed[cnt++] = (UINT8) strtol(buf, &ptr, 10); + context->n_mode[seq].speed_cnt = (UINT8) cnt; + ir_memset(buf, 0, 16); + } + + return IR_DECODE_SUCCEEDED; +} + +INT8 parse_nmode_data_temp(char *pdata, t_ac_n_mode seq) +{ + + char buf[16] = { 0 }; + char *p = pdata; + char *ptr = NULL; + UINT16 pos = 0; + UINT16 cnt = 0, index = 0; + + while (index <= ir_strlen(pdata)) + { + while ((index != ir_strlen(pdata)) && (*(p++) != ',')) + { + index++; + } + ir_memcpy(buf, pdata + pos, index - pos); + pos = (UINT16) (index + 1); + index = pos; + context->n_mode[seq].temp[cnt++] = (UINT8) (strtol(buf, &ptr, 10) - 16); + context->n_mode[seq].temp_cnt = (UINT8) cnt; + ir_memset(buf, 0, 16); + } + return IR_DECODE_SUCCEEDED; +} + +INT8 parse_nmode_pos(char *buf, t_ac_n_mode index) +{ + UINT16 i = 0; + char data[64] = { 0 }; + // char start[8] = { 0 }; + if (ir_strlen(buf) == 1) + { + if (buf[0] == 'S' || buf[0] == 's') + { + context->n_mode[index].all_speed = 1; + } + else if (buf[0] == 'T' || buf[0] == 't') + { + context->n_mode[index].all_temp = 1; + } + return IR_DECODE_SUCCEEDED; + } + + for (i = 0; i < (UINT16) ir_strlen(buf); i++) + { + if (buf[i] == '&') + { + ir_memcpy(data, buf + i + 1, ir_strlen(buf) - i - 1); + break; + } + } + if (buf[0] == 'S') + { + parse_nmode_data_speed(data, index); + } + else + { + parse_nmode_data_temp(data, index); + } + + return IR_DECODE_SUCCEEDED; +} + +INT8 parse_nmode(struct tag_head *tag, t_ac_n_mode index) +{ + UINT16 i = 0; + UINT16 preindex = 0; + + char buf[64] = { 0 }; + + if (tag->p_data[0] == 'N' && tag->p_data[1] == 'A') + { + // ban this function directly + context->n_mode[index].enable = 0; + return IR_DECODE_SUCCEEDED; + } + else + { + context->n_mode[index].enable = 1; + } + + preindex = 0; + for (i = 0; i < tag->len; i++) + { + if (tag->p_data[i] == '|') + { + ir_memcpy(buf, tag->p_data + preindex, i - preindex); + preindex = (UINT16) (i + 1); + parse_nmode_pos(buf, index); + ir_memset(buf, 0, 64); + } + + } + ir_memcpy(buf, tag->p_data + preindex, i - preindex); + parse_nmode_pos(buf, index); + ir_memset(buf, 0, 64); + return IR_DECODE_SUCCEEDED; +} \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_frame_info.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_frame_info.c index 0a86f46..336530d 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_frame_info.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_frame_info.c @@ -13,14 +13,15 @@ Revision log: #include #include -#include "../include/ir_utils.h" -#include "../include/ir_ac_parse_frame_info.h" +#include "include/ir_utils.h" +#include "include/ir_ac_parse_frame_info.h" INT8 parse_boot_code(struct tag_head *tag) { UINT8 buf[16] = { 0 }; UINT8 *p = NULL; + char *ptr = NULL; UINT16 pos = 0; UINT16 cnt = 0, index = 0; @@ -44,7 +45,7 @@ INT8 parse_boot_code(struct tag_head *tag) ir_memcpy(buf, tag->p_data + pos, index - pos); pos = (UINT16) (index + 1); index = pos; - context->boot_code.data[cnt++] = (UINT16) (atoi((char *) buf)); + context->boot_code.data[cnt++] = (UINT16) (strtol((char *) buf, &ptr, 10)); ir_memset(buf, 0, 16); } context->boot_code.len = cnt; @@ -57,6 +58,8 @@ INT8 parse_zero(struct tag_head *tag) UINT8 high[16] = { 0 }; UINT16 index = 0; UINT8 *p = NULL; + char *ptr_low = NULL; + char *ptr_high = NULL; if (NULL == tag) { @@ -77,8 +80,8 @@ INT8 parse_zero(struct tag_head *tag) ir_memcpy(low, tag->p_data, index); ir_memcpy(high, tag->p_data + index + 1, (size_t) (tag->len - index - 1)); - context->zero.low = (UINT16) (atoi((char *) low)); - context->zero.high = (UINT16) (atoi((char *) high)); + context->zero.low = (UINT16) (strtol((char *) low, &ptr_low, 10)); + context->zero.high = (UINT16) (strtol((char *) high, &ptr_high, 10)); return IR_DECODE_SUCCEEDED; } @@ -88,6 +91,8 @@ INT8 parse_one(struct tag_head *tag) UINT8 high[16] = { 0 }; UINT16 index = 0; UINT8 *p = NULL; + char *ptr_low = NULL; + char *ptr_high = NULL; if (NULL == tag) { @@ -107,8 +112,8 @@ INT8 parse_one(struct tag_head *tag) ir_memcpy(low, tag->p_data, index); ir_memcpy(high, tag->p_data + index + 1, (size_t) (tag->len - index - 1)); - context->one.low = (UINT16) (atoi((char *) low)); - context->one.high = (UINT16) (atoi((char *) high)); + context->one.low = (UINT16) (strtol((char *) low, &ptr_low, 10)); + context->one.high = (UINT16) (strtol((char *) high, &ptr_high, 10)); return IR_DECODE_SUCCEEDED; } @@ -119,6 +124,7 @@ INT8 parse_delay_code_data(UINT8 *pdata) UINT8 *p = NULL; UINT16 pos = 0; UINT16 cnt = 0, index = 0; + char *ptr = NULL; if (NULL == pdata) { @@ -135,7 +141,7 @@ INT8 parse_delay_code_data(UINT8 *pdata) ir_memcpy(buf, pdata + pos, index - pos); pos = (UINT16) (index + 1); index = pos; - context->dc[context->dc_cnt].time[cnt++] = (UINT16) (atoi((char *) buf)); + context->dc[context->dc_cnt].time[cnt++] = (UINT16) (strtol((char *) buf, &ptr, 10)); context->dc[context->dc_cnt].time_cnt = cnt; ir_memset(buf, 0, 16); } @@ -146,14 +152,16 @@ INT8 parse_delay_code_data(UINT8 *pdata) INT8 parse_delay_code_pos(UINT8 *buf) { UINT16 i = 0; - UINT8 data[64] = { 0 }, start[8] = { 0 }; + UINT8 data[64] = { 0 }; + UINT8 start[8] = { 0 }; + char *ptr = NULL; if (NULL == buf) { return IR_DECODE_FAILED; } - for (i = 0; i < ir_strlen((char *) buf); i++) + for (i = 0; i < (UINT16) ir_strlen((char *) buf); i++) { if (buf[i] == '&') { @@ -163,7 +171,7 @@ INT8 parse_delay_code_pos(UINT8 *buf) } } parse_delay_code_data(data); - context->dc[context->dc_cnt].pos = (UINT16) (atoi((char *) start)); + context->dc[context->dc_cnt].pos = (UINT16) (strtol((char *) start, &ptr, 10)); context->dc_cnt++; return IR_DECODE_SUCCEEDED; @@ -202,6 +210,7 @@ INT8 parse_delay_code(struct tag_head *tag) INT8 parse_frame_len(struct tag_head *tag, UINT16 len) { UINT8 *temp = NULL; + char *ptr = NULL; if (NULL == tag) { @@ -220,7 +229,7 @@ INT8 parse_frame_len(struct tag_head *tag, UINT16 len) ir_memcpy(temp, tag->p_data, len); temp[len] = '\0'; - context->frame_length = (UINT16) (atoi((char *) temp)); + context->frame_length = (UINT16) (strtol((char *) temp, &ptr, 10)); ir_free(temp); return IR_DECODE_SUCCEEDED; @@ -229,32 +238,36 @@ INT8 parse_frame_len(struct tag_head *tag, UINT16 len) INT8 parse_endian(struct tag_head *tag) { UINT8 buf[8] = { 0 }; + char *ptr = NULL; if (NULL == tag) { return IR_DECODE_FAILED; } ir_memcpy(buf, tag->p_data, tag->len); - context->endian = (UINT8) (atoi((char *) buf)); + context->endian = (UINT8) (strtol((char *) buf, &ptr, 10)); return IR_DECODE_SUCCEEDED; } INT8 parse_lastbit(struct tag_head *tag) { UINT8 buf[8] = { 0 }; + char *ptr = NULL; if (NULL == tag) { return IR_DECODE_FAILED; } ir_memcpy(buf, tag->p_data, tag->len); - context->last_bit = (UINT8) (atoi((char *) buf)); + context->last_bit = (UINT8) (strtol((char *) buf, &ptr, 10)); return IR_DECODE_SUCCEEDED; } INT8 parse_repeat_times(struct tag_head *tag) { char asc_code[8] = { 0 }; + char *ptr = NULL; + if (NULL == tag) { return IR_DECODE_FAILED; @@ -262,7 +275,7 @@ INT8 parse_repeat_times(struct tag_head *tag) ir_memcpy(asc_code, tag->p_data, tag->len); - context->repeat_times = (UINT16) (atoi((char *) asc_code)); + context->repeat_times = (UINT16) (strtol((char *) asc_code, &ptr, 10)); return IR_DECODE_SUCCEEDED; } @@ -270,14 +283,17 @@ INT8 parse_repeat_times(struct tag_head *tag) INT8 parse_delay_code_tag48_pos(UINT8 *buf) { UINT16 i = 0; - UINT8 data[64] = { 0 }, start[8] = { 0 }; + UINT8 data[64] = { 0 }; + UINT8 start[8] = { 0 }; + char *ptr_start = NULL; + char *ptr_data = NULL; if (NULL == buf) { return IR_DECODE_FAILED; } - for (i = 0; i < ir_strlen((char *) buf); i++) + for (i = 0; i < (UINT16) ir_strlen((char *) buf); i++) { if (buf[i] == '&') { @@ -287,8 +303,8 @@ INT8 parse_delay_code_tag48_pos(UINT8 *buf) } } - context->bit_num[context->bit_num_cnt].pos = (UINT16) (atoi((char *) start)); - context->bit_num[context->bit_num_cnt].bits = (UINT16) (atoi((char *) data)); + context->bit_num[context->bit_num_cnt].pos = (UINT16) (strtol((char *) start, &ptr_start, 10)); + context->bit_num[context->bit_num_cnt].bits = (UINT16) (strtol((char *) data, &ptr_data, 10)); context->bit_num_cnt++; return IR_DECODE_SUCCEEDED; } diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_parameter.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_parameter.c index 2752aae..ee4e4e9 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_parameter.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_ac_parse_parameter.c @@ -13,8 +13,16 @@ Revision log: #include #include -#include "../include/ir_utils.h" -#include "../include/ir_ac_parse_parameter.h" +#include "include/ir_utils.h" +#include "include/ir_ac_parse_parameter.h" + +static INT8 parse_checksum_byte_typed(const UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len); + +static INT8 parse_checksum_half_byte_typed(const UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len); + +static INT8 parse_checksum_spec_half_byte_typed(const UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len); + +static INT8 parse_checksum_malloc(struct tag_head *tag, t_checksum *checksum); INT8 parse_comp_data_type_1(UINT8 *data, UINT16 *trav_offset, t_tag_comp *comp) @@ -86,7 +94,7 @@ INT8 parse_common_ac_parameter(t_tag_head *tag, t_tag_comp *comp_data, UINT8 wit return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) { @@ -164,7 +172,7 @@ INT8 parse_power_1(struct tag_head *tag, t_power_1 *power1) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -177,7 +185,7 @@ INT8 parse_power_1(struct tag_head *tag, t_power_1 *power1) // parse hex data to power1 data structure power1->len = (UINT8) hex_len; - for (seg_index = AC_POWER_ON; seg_index < AC_POWER_MAX; seg_index++) + for (seg_index = AC_POWER_ON; seg_index < (UINT16) AC_POWER_MAX; seg_index++) { if (IR_DECODE_FAILED == parse_comp_data_type_1(hex_data, &trav_offset, &power1->comp_data[seg_index])) { @@ -210,7 +218,7 @@ INT8 parse_temp_1(struct tag_head *tag, t_temp_1 *temp1) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -228,7 +236,7 @@ INT8 parse_temp_1(struct tag_head *tag, t_temp_1 *temp1) temp1->len = (UINT8) hex_len; UINT8 seg_len = hex_data[0]; - for (seg_index = AC_TEMP_16; seg_index < AC_TEMP_MAX; seg_index++) + for (seg_index = AC_TEMP_16; seg_index < (UINT16) AC_TEMP_MAX; seg_index++) { // 020210 indicates set the 02nd byte to [default] +10, +11, +12, +... temp1->comp_data[seg_index].seg_len = seg_len; @@ -253,7 +261,7 @@ INT8 parse_temp_1(struct tag_head *tag, t_temp_1 *temp1) // static temperature tag temp1->len = (UINT8) hex_len; temp1->type = TEMP_TYPE_STATIC; - for (seg_index = AC_TEMP_16; seg_index < AC_TEMP_MAX; seg_index++) + for (seg_index = AC_TEMP_16; seg_index < (UINT16) AC_TEMP_MAX; seg_index++) { if (IR_DECODE_FAILED == parse_comp_data_type_1(hex_data, &trav_offset, &temp1->comp_data[seg_index])) { @@ -284,7 +292,7 @@ INT8 parse_mode_1(struct tag_head *tag, t_mode_1 *mode1) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -297,7 +305,7 @@ INT8 parse_mode_1(struct tag_head *tag, t_mode_1 *mode1) // parse hex data to mode1 data structure mode1->len = (UINT8) hex_len; - for (seg_index = AC_MODE_COOL; seg_index < AC_MODE_MAX; seg_index++) + for (seg_index = AC_MODE_COOL; seg_index < (UINT16) AC_MODE_MAX; seg_index++) { if (IR_DECODE_FAILED == parse_comp_data_type_1(hex_data, &trav_offset, &mode1->comp_data[seg_index])) { @@ -328,7 +336,7 @@ INT8 parse_speed_1(struct tag_head *tag, t_speed_1 *speed1) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -341,7 +349,7 @@ INT8 parse_speed_1(struct tag_head *tag, t_speed_1 *speed1) // parse hex data to speed1 data structure speed1->len = (UINT8) hex_len; - for (seg_index = AC_WS_AUTO; seg_index < AC_WS_MAX; seg_index++) + for (seg_index = AC_WS_AUTO; seg_index < (UINT16) AC_WS_MAX; seg_index++) { if (IR_DECODE_FAILED == parse_comp_data_type_1(hex_data, &trav_offset, &speed1->comp_data[seg_index])) { @@ -372,7 +380,7 @@ INT8 parse_swing_1(struct tag_head *tag, t_swing_1 *swing1, UINT16 swing_count) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -411,95 +419,6 @@ INT8 parse_swing_1(struct tag_head *tag, t_swing_1 *swing1, UINT16 swing_count) return IR_DECODE_SUCCEEDED; } -INT8 parse_checksum_byte_typed(UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len) -{ - checksum->start_byte_pos = csdata[2]; - checksum->end_byte_pos = csdata[3]; - checksum->checksum_byte_pos = csdata[4]; - - if (len > 5) - { - checksum->checksum_plus = csdata[5]; - } - else - { - checksum->checksum_plus = 0; - } - checksum->spec_pos = NULL; - - return IR_DECODE_SUCCEEDED; -} - -INT8 parse_checksum_half_byte_typed(UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len) -{ - checksum->start_byte_pos = csdata[2]; - checksum->end_byte_pos = csdata[3]; - checksum->checksum_byte_pos = csdata[4]; - - if (len > 5) - { - checksum->checksum_plus = csdata[5]; - } - else - { - checksum->checksum_plus = 0; - } - checksum->spec_pos = NULL; - return IR_DECODE_SUCCEEDED; -} - -INT8 parse_checksum_spec_half_byte_typed(UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len) -{ - /* - * note: - * for the type of specified half byte checksum algorithm, - * the checksum byte positions are in unit of HALF BYTE, rather than in unit of BYTE - * as well as the specified half byte positions (spec_pos). - * Thus the specified half byte checksum only affects 4 bits of a position - * of half byte specified by check_sum_byte_pos property. - */ - UINT16 spec_pos_size = (UINT16) (len - 4); - - checksum->checksum_byte_pos = csdata[2]; - checksum->checksum_plus = csdata[3]; - checksum->start_byte_pos = 0; - checksum->end_byte_pos = 0; - checksum->spec_pos = (UINT8 *) ir_malloc(spec_pos_size); - if (NULL == checksum->spec_pos) - { - return IR_DECODE_FAILED; - } - ir_memcpy(checksum->spec_pos, &csdata[4], spec_pos_size); - - return IR_DECODE_SUCCEEDED; -} - -INT8 parse_checksum_malloc(struct tag_head *tag, t_checksum *checksum) -{ - UINT8 i = 0; - UINT8 cnt = 0; - - for (i = 0; i < tag->len; i++) - { - if (tag->p_data[i] == '|') - { - cnt++; - } - } - - checksum->len = (UINT8) ((tag->len - cnt) >> 1); - checksum->count = (UINT16) (cnt + 1); - checksum->checksum_data = (t_tag_checksum_data *) ir_malloc(sizeof(t_tag_checksum_data) * checksum->count); - - if (NULL == checksum->checksum_data) - { - return IR_DECODE_FAILED; - } - ir_memset(checksum->checksum_data, 0x00, sizeof(t_tag_checksum_data) * checksum->count); - - return IR_DECODE_SUCCEEDED; -} - INT8 parse_checksum_data(UINT8 *buf, t_tag_checksum_data *checksum, UINT8 length) { UINT8 *hex_data = NULL; @@ -591,13 +510,13 @@ INT8 parse_checksum(struct tag_head *tag, t_checksum *checksum) return IR_DECODE_FAILED; } - for (i = 0; i < tag->len; i++) + for (i = 0; i < (UINT8) tag->len; i++) { if (tag->p_data[i] == '|') { if (IR_DECODE_FAILED == parse_checksum_data(tag->p_data + preindex, checksum->checksum_data + num, - (UINT8) (i - preindex) >> 1)) + (UINT8) (i - preindex) >> (UINT8) 1)) { return IR_DECODE_FAILED; } @@ -608,7 +527,7 @@ INT8 parse_checksum(struct tag_head *tag, t_checksum *checksum) if (IR_DECODE_FAILED == parse_checksum_data(tag->p_data + preindex, checksum->checksum_data + num, - (UINT8) (i - preindex) >> 1)) + (UINT8) (i - preindex) >> (UINT8) 1)) { return IR_DECODE_FAILED; } @@ -700,7 +619,7 @@ INT8 parse_function_1_tag29(struct tag_head *tag, t_function_1 *function1) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -714,12 +633,11 @@ INT8 parse_function_1_tag29(struct tag_head *tag, t_function_1 *function1) function1->len = (UINT8) hex_len; // seg_index in TAG only refers to functional count - for (seg_index = AC_FUNCTION_POWER; seg_index < AC_FUNCTION_MAX; seg_index++) + for (seg_index = AC_FUNCTION_POWER; seg_index < (UINT16) AC_FUNCTION_MAX; seg_index++) { - INT8 fid = parse_function_1(hex_data, &trav_offset, &function1->comp_data[0]); - /** WARNING: for strict mode only **/ /** + INT8 fid = parse_function_1(hex_data, &trav_offset, &function1->comp_data[0]); if (fid > AC_FUNCTION_MAX - 1) { irda_free(hex_data); @@ -728,6 +646,7 @@ INT8 parse_function_1_tag29(struct tag_head *tag, t_function_1 *function1) } **/ + parse_function_1(hex_data, &trav_offset, &function1->comp_data[0]); if (trav_offset >= hex_len) { break; @@ -757,7 +676,7 @@ INT8 parse_temp_2(struct tag_head *tag, t_temp_2 *temp2) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -775,7 +694,7 @@ INT8 parse_temp_2(struct tag_head *tag, t_temp_2 *temp2) temp2->len = (UINT8) hex_len; UINT8 seg_len = hex_data[0]; - for (seg_index = AC_TEMP_16; seg_index < AC_TEMP_MAX; seg_index++) + for (seg_index = AC_TEMP_16; seg_index < (UINT16) AC_TEMP_MAX; seg_index++) { // 020210 indicates set the 02nd byte to [default] +10, +11, +12, +... temp2->comp_data[seg_index].seg_len = seg_len; @@ -800,7 +719,7 @@ INT8 parse_temp_2(struct tag_head *tag, t_temp_2 *temp2) // static temperature tag temp2->len = (UINT8) hex_len; temp2->type = TEMP_TYPE_STATIC; - for (seg_index = AC_TEMP_16; seg_index < AC_TEMP_MAX; seg_index++) + for (seg_index = AC_TEMP_16; seg_index < (UINT16) AC_TEMP_MAX; seg_index++) { if (IR_DECODE_FAILED == parse_comp_data_type_2(hex_data, &trav_offset, &temp2->comp_data[seg_index])) { @@ -836,7 +755,7 @@ INT8 parse_mode_2(struct tag_head *tag, t_mode_2 *mode2) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -849,7 +768,7 @@ INT8 parse_mode_2(struct tag_head *tag, t_mode_2 *mode2) // parse hex data to mode1 data structure mode2->len = (UINT8) hex_len; - for (seg_index = AC_MODE_COOL; seg_index < AC_MODE_MAX; seg_index++) + for (seg_index = AC_MODE_COOL; seg_index < (UINT16) AC_MODE_MAX; seg_index++) { if (IR_DECODE_FAILED == parse_comp_data_type_2(hex_data, &trav_offset, &mode2->comp_data[seg_index])) { @@ -885,7 +804,7 @@ INT8 parse_speed_2(struct tag_head *tag, t_speed_2 *speed2) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -898,7 +817,7 @@ INT8 parse_speed_2(struct tag_head *tag, t_speed_2 *speed2) // parse hex data to speed1 data structure speed2->len = (UINT8) hex_len; - for (seg_index = AC_WS_AUTO; seg_index < AC_WS_MAX; seg_index++) + for (seg_index = AC_WS_AUTO; seg_index < (UINT16) AC_WS_MAX; seg_index++) { if (IR_DECODE_FAILED == parse_comp_data_type_2(hex_data, &trav_offset, &speed2->comp_data[seg_index])) { @@ -934,7 +853,7 @@ INT8 parse_swing_2(struct tag_head *tag, t_swing_2 *swing2, UINT16 swing_count) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -1058,7 +977,7 @@ INT8 parse_function_2_tag34(struct tag_head *tag, t_function_2 *function2) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; hex_data = (UINT8 *) ir_malloc(hex_len); if (NULL == hex_data) @@ -1072,12 +991,11 @@ INT8 parse_function_2_tag34(struct tag_head *tag, t_function_2 *function2) function2->len = (UINT8) hex_len; // seg_index in TAG only refers to functional count - for (seg_index = AC_FUNCTION_POWER; seg_index < AC_FUNCTION_MAX; seg_index++) + for (seg_index = AC_FUNCTION_POWER; seg_index < (UINT16) AC_FUNCTION_MAX; seg_index++) { - INT8 fid = parse_function_2(hex_data, &trav_offset, &function2->comp_data[0]); - /** WARNING: for strict mode only **/ /** + INT8 fid = parse_function_2(hex_data, &trav_offset, &function2->comp_data[0]); if (fid > AC_FUNCTION_MAX - 1) { irda_free(hex_data); @@ -1086,6 +1004,7 @@ INT8 parse_function_2_tag34(struct tag_head *tag, t_function_2 *function2) } **/ + parse_function_2(hex_data, &trav_offset, &function2->comp_data[0]); if (trav_offset >= hex_len) { break; @@ -1164,7 +1083,7 @@ INT8 parse_solo_code(struct tag_head *tag, t_solo_code *sc) return IR_DECODE_FAILED; } - hex_len = tag->len >> 1; + hex_len = tag->len >> (UINT16) 1; if (hex_len > AC_FUNCTION_MAX) { @@ -1186,11 +1105,100 @@ INT8 parse_solo_code(struct tag_head *tag, t_solo_code *sc) // per each function takes just 1 byte of length sc->solo_func_count = hex_data[0]; - for (i = 1; i < hex_len; i++) + for (i = 1; i < (UINT8) hex_len; i++) { sc->solo_function_codes[i - 1] = hex_data[i]; } ir_free(hex_data); return IR_DECODE_SUCCEEDED; -} \ No newline at end of file +} + +static INT8 parse_checksum_byte_typed(const UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len) +{ + checksum->start_byte_pos = csdata[2]; + checksum->end_byte_pos = csdata[3]; + checksum->checksum_byte_pos = csdata[4]; + + if (len > 5) + { + checksum->checksum_plus = csdata[5]; + } + else + { + checksum->checksum_plus = 0; + } + checksum->spec_pos = NULL; + + return IR_DECODE_SUCCEEDED; +} + +static INT8 parse_checksum_half_byte_typed(const UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len) +{ + checksum->start_byte_pos = csdata[2]; + checksum->end_byte_pos = csdata[3]; + checksum->checksum_byte_pos = csdata[4]; + + if (len > 5) + { + checksum->checksum_plus = csdata[5]; + } + else + { + checksum->checksum_plus = 0; + } + checksum->spec_pos = NULL; + return IR_DECODE_SUCCEEDED; +} + +static INT8 parse_checksum_spec_half_byte_typed(const UINT8 *csdata, t_tag_checksum_data *checksum, UINT16 len) +{ + /* + * note: + * for the type of specified half byte checksum algorithm, + * the checksum byte positions are in unit of HALF BYTE, rather than in unit of BYTE + * as well as the specified half byte positions (spec_pos). + * Thus the specified half byte checksum only affects 4 bits of a position + * of half byte specified by check_sum_byte_pos property. + */ + UINT16 spec_pos_size = (UINT16) (len - 4); + + checksum->checksum_byte_pos = csdata[2]; + checksum->checksum_plus = csdata[3]; + checksum->start_byte_pos = 0; + checksum->end_byte_pos = 0; + checksum->spec_pos = (UINT8 *) ir_malloc(spec_pos_size); + if (NULL == checksum->spec_pos) + { + return IR_DECODE_FAILED; + } + ir_memcpy(checksum->spec_pos, &csdata[4], spec_pos_size); + + return IR_DECODE_SUCCEEDED; +} + +static INT8 parse_checksum_malloc(struct tag_head *tag, t_checksum *checksum) +{ + UINT8 i = 0; + UINT8 cnt = 0; + + for (i = 0; i < (UINT8) tag->len; i++) + { + if (tag->p_data[i] == '|') + { + cnt++; + } + } + + checksum->len = (UINT8) ((UINT8) (tag->len - cnt) >> (UINT8) 1); + checksum->count = (UINT16) (cnt + 1); + checksum->checksum_data = (t_tag_checksum_data *) ir_malloc(sizeof(t_tag_checksum_data) * checksum->count); + + if (NULL == checksum->checksum_data) + { + return IR_DECODE_FAILED; + } + ir_memset(checksum->checksum_data, 0x00, sizeof(t_tag_checksum_data) * checksum->count); + + return IR_DECODE_SUCCEEDED; +} diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_decode.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_decode.c index 59ca600..d3d2c09 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_decode.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_decode.c @@ -1,723 +1,790 @@ -/************************************************************************************** -Filename: ir_decode.c -Revised: Date: 2016-10-01 -Revision: Revision: 1.0 - -Description: This file provides algorithms for IR decode (status type) - -Revision log: -* 2016-10-01: created by strawmanbobi -**************************************************************************************/ - -#include -#include - -#include - -#include "../include/ir_decode.h" -#include "../include/ir_utils.h" -#include "../include/ir_ac_build_frame.h" -#include "../include/ir_ac_apply.h" - -struct ir_bin_buffer binary_file; -struct ir_bin_buffer *p_ir_buffer = &binary_file; - -const char* release = "0.2.4"; - -#if defined USE_DYNAMIC_TAG -struct tag_head *tags; -#else -struct tag_head tags[TAG_COUNT_FOR_PROTOCOL]; -#endif - -UINT8 *ir_hex_code = NULL; -UINT8 ir_hex_len = 0; - -UINT8 byteArray[PROTOCOL_SIZE] = { 0 }; - -size_t binary_length = 0; -UINT8 *binary_content = NULL; - -UINT8 ir_binary_type = IR_TYPE_STATUS; -UINT8 ir_hexadecimal = SUB_CATEGORY_QUATERNARY; - -t_ac_protocol *context = (t_ac_protocol *) byteArray; - -lp_apply_ac_parameter apply_table[AC_APPLY_MAX] = -{ - apply_power, - apply_mode, - apply_temperature, - apply_temperature, - apply_wind_speed, - apply_swing, - apply_swing -}; - -// static functions declarations -#if !defined NO_FS -static INT8 ir_ac_file_open(const char *file_name); -#endif - -static INT8 ir_ac_binary_open(UINT8 *binary, UINT16 binary_length); -static UINT16 ir_ac_control(t_remote_ac_status ac_status, UINT16 *user_data, UINT8 function_code, - BOOL change_wind_direction); -static INT8 ir_ac_binary_close(); - -#if !defined NO_FS -static INT8 ir_tv_file_open(const char *file_name); -#endif - -static INT8 ir_tv_binary_open(UINT8 *binary, UINT16 binary_length); -static INT8 ir_tv_binary_parse(UINT8 ir_hex_encode); -static UINT16 ir_tv_control(UINT8 key, UINT16 *l_user_data); -static INT8 ir_tv_binary_close(); - - -void noprint(const char *fmt, ...) -{ - return; -} - -// pubic function definitions -#if (!defined BOARD_51 && !defined BOARD_CC26XX) -INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* file_name) -{ - INT8 ret = IR_DECODE_SUCCEEDED; - if (category == IR_CATEGORY_AC) - { - ir_binary_type = IR_TYPE_STATUS; - ret = ir_ac_file_open(file_name); - if (IR_DECODE_SUCCEEDED == ret) - { - return ir_ac_lib_parse(); - } - else - { - return ret; - } - } - else - { - ir_binary_type = IR_TYPE_COMMANDS; - if (1 == sub_category) - { - ir_hexadecimal = SUB_CATEGORY_QUATERNARY; - } - else if (2 == sub_category) - { - ir_hexadecimal = SUB_CATEGORY_HEXADECIMAL; - } - else - { - return IR_DECODE_FAILED; - } - - ret = ir_tv_file_open(file_name); - if (IR_DECODE_SUCCEEDED == ret) - { - return ir_tv_binary_parse(ir_hexadecimal); - } - else - { - return ret; - } - } -} -#else -INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* file_name) -{ - return IR_DECODE_SUCCEEDED; -} -#endif - -INT8 ir_binary_open(const UINT8 category, const UINT8 sub_category, UINT8* binary, UINT16 binary_length) -{ - INT8 ret = IR_DECODE_SUCCEEDED; - - if (category == IR_CATEGORY_AC) - { - ir_binary_type = IR_TYPE_STATUS; - ret = ir_ac_binary_open(binary, binary_length); - if (IR_DECODE_SUCCEEDED == ret) - { - return ir_ac_lib_parse(); - } - else - { - return ret; - } - } - else - { - ir_binary_type = IR_TYPE_COMMANDS; - if (1 == sub_category) - { - ir_hexadecimal = SUB_CATEGORY_QUATERNARY; - } - else if (2 == sub_category) - { - ir_hexadecimal = SUB_CATEGORY_HEXADECIMAL; - } - else - { - return IR_DECODE_FAILED; - } - - ret = ir_tv_binary_open(binary, binary_length); - if (IR_DECODE_SUCCEEDED == ret) - { - return ir_tv_binary_parse(ir_hexadecimal); - } - else - { - return ret; - } - } -} - - -UINT16 ir_decode(UINT8 key_code, UINT16* user_data, - t_remote_ac_status* ac_status, BOOL change_wind_direction) -{ - if (IR_TYPE_COMMANDS == ir_binary_type) - { - return ir_tv_control(key_code, user_data); - } - else - { - if (NULL == ac_status) - { - return 0; - } - ir_printf("ac status is not null in decode core : power = %d, mode = %d, " - "temp = %d, wind_dir = %d, wind_speed = %d, " - "keycode = %d, change_wind_direction = %d\n", - ac_status->ac_power, ac_status->ac_mode, - ac_status->ac_temp, ac_status->ac_wind_dir, - ac_status->ac_wind_speed, - key_code, change_wind_direction); - return ir_ac_control(*ac_status, user_data, key_code, change_wind_direction); - } -} - - -INT8 ir_close() -{ - if (IR_TYPE_COMMANDS == ir_binary_type) - { - ir_printf("tv binary close\n"); - return ir_tv_binary_close(); - } - else - { - ir_printf("ac binary close\n"); - return ir_ac_binary_close(); - } -} - - -#if (defined BOARD_PC || defined BOARD_PC_DLL) -void ir_lib_free_inner_buffer(); -#endif - - -// static function definitions - -//////// AC Begin //////// -#if !defined NO_FS -static INT8 ir_ac_file_open(const char *file_name) -{ - size_t ret = 0; -#if !defined WIN32 - FILE *stream = fopen(file_name, "rb"); -#else - FILE *stream; - fopen_s(&stream, file_name, "rb"); -#endif - if (NULL == stream) - { - ir_printf("\nfile open failed\n"); - return IR_DECODE_FAILED; - } - - fseek(stream, 0, SEEK_END); - binary_length = (size_t) ftell(stream); - binary_content = (UINT8 *) ir_malloc(binary_length); - - if (NULL == binary_content) - { - ir_printf("\nfailed to alloc memory for binary\n"); - fclose(stream); - return IR_DECODE_FAILED; - } - - fseek(stream, 0, SEEK_SET); - ret = fread(binary_content, binary_length, 1, stream); - - if (ret <= 0) - { - fclose(stream); - ir_free(binary_content); - binary_length = 0; - return IR_DECODE_FAILED; - } - - fclose(stream); - - if (IR_DECODE_FAILED == ir_ac_binary_open(binary_content, (UINT16) binary_length)) - { - ir_free(binary_content); - binary_length = 0; - return IR_DECODE_FAILED; - } - return IR_DECODE_SUCCEEDED; -} -#endif - -static INT8 ir_ac_binary_open(UINT8 *binary, UINT16 binary_length) -{ - // it is recommended that the parameter binary pointing to - // a global memory block in embedded platform environment - p_ir_buffer->data = binary; - p_ir_buffer->len = binary_length; - p_ir_buffer->offset = 0; - return IR_DECODE_SUCCEEDED; -} - -static UINT16 ir_ac_control(t_remote_ac_status ac_status, UINT16 *user_data, UINT8 key_code, - BOOL change_wind_direction) -{ - UINT16 time_length = 0; - -#if defined BOARD_PC - UINT16 i = 0; -#endif - - UINT8 function_code = 0; - - ir_printf("key code = %d\n", key_code); - switch(key_code) - { - case 0: - function_code = AC_FUNCTION_POWER; - break; - case 1: - function_code = AC_FUNCTION_MODE; - break; - case 2: - case 7: - function_code = AC_FUNCTION_TEMPERATURE_UP; - break; - case 3: - case 8: - function_code = AC_FUNCTION_TEMPERATURE_DOWN; - break; - case 9: - function_code = AC_FUNCTION_WIND_SPEED; - break; - case 10: - function_code = AC_FUNCTION_WIND_SWING; - break; - case 11: - function_code = AC_FUNCTION_WIND_FIX; - break; - } - - if (0 == context->default_code.len) - { - ir_printf("\ndefault code is empty\n"); - return 0; - } - - // pre-set change wind direction flag here - context->change_wind_direction = change_wind_direction; - - context->time = user_data; - - // generate temp buffer for frame calculation - ir_memcpy(ir_hex_code, context->default_code.data, context->default_code.len); - -#if defined USE_APPLY_TABLE - if(ac_status.ac_power != AC_POWER_OFF) - { - for (i = AC_APPLY_POWER; i < AC_APPLY_MAX; i++) - { - apply_table[i](context, parameter_array[i]); - } - } -#else - if (ac_status.ac_power == AC_POWER_OFF) - { - // otherwise, power should always be applied - apply_power(ac_status, function_code); - } - else - { - // check the mode as the first priority, despite any other status - if (TRUE == context->n_mode[ac_status.ac_mode].enable) - { - if (is_solo_function(function_code)) - { - // this key press function needs to send solo code - apply_table[function_code - 1](ac_status, function_code); - } - else - { - if (!is_solo_function(AC_FUNCTION_POWER)) - { - apply_power(ac_status, function_code); - } - - if (!is_solo_function(AC_FUNCTION_MODE)) - { - if (IR_DECODE_FAILED == apply_mode(ac_status, function_code)) - { - return 0; - } - } - - if (!is_solo_function(AC_FUNCTION_WIND_SPEED)) - { - if (IR_DECODE_FAILED == apply_wind_speed(ac_status, function_code)) - { - return 0; - } - } - - if (!is_solo_function(AC_FUNCTION_WIND_SWING) && - !is_solo_function(AC_FUNCTION_WIND_FIX)) - { - if (IR_DECODE_FAILED == apply_swing(ac_status, function_code)) - { - return 0; - } - } - - if (!is_solo_function(AC_FUNCTION_TEMPERATURE_UP) && - !is_solo_function(AC_FUNCTION_TEMPERATURE_DOWN)) - { - if (IR_DECODE_FAILED == apply_temperature(ac_status, function_code)) - { - return 0; - } - } - } - } - else - { - return 0; - } - } -#endif - apply_function(context, function_code); - // checksum should always be applied - apply_checksum(context); - - time_length = create_ir_frame(); - -#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 - - return time_length; -} - -static INT8 ir_ac_binary_close() -{ -#if defined USE_DYNAMIC_TAG - // free context - if (NULL != tags) - { - ir_free(tags); - tags = NULL; - } -#endif - - free_ac_context(); - - return IR_DECODE_SUCCEEDED; -} - -// utils -INT8 get_temperature_range(UINT8 ac_mode, INT8 *temp_min, INT8 *temp_max) -{ - UINT8 i = 0; - - if (ac_mode >= AC_MODE_MAX) - { - return IR_DECODE_FAILED; - } - if (NULL == temp_min || NULL == temp_max) - { - return IR_DECODE_FAILED; - } - - if (1 == context->n_mode[ac_mode].all_temp) - { - *temp_min = *temp_max = -1; - return IR_DECODE_SUCCEEDED; - } - - *temp_min = -1; - *temp_max = -1; - for (i = 0; i < AC_TEMP_MAX; i++) - { - if (is_in(context->n_mode[ac_mode].temp, i, context->n_mode[ac_mode].temp_cnt) || - (context->temp1.len != 0 && 0 == context->temp1.comp_data[i].seg_len) || - (context->temp2.len != 0 && 0 == context->temp2.comp_data[i].seg_len)) - { - continue; - } - if (-1 == *temp_min) - { - *temp_min = i; - } - if (-1 == *temp_max || i > *temp_max) - { - *temp_max = i; - } - } - return IR_DECODE_SUCCEEDED; -} - -INT8 get_supported_mode(UINT8 *supported_mode) -{ - UINT8 i = 0; - if (NULL == supported_mode) - { - return IR_DECODE_FAILED; - } - *supported_mode = 0x1F; - - for (i = 0; i < AC_MODE_MAX; i++) - { - if (0 == context->n_mode[i].enable || - (context->mode1.len != 0 && 0 == context->mode1.comp_data[i].seg_len) || - (context->mode2.len != 0 && 0 == context->mode2.comp_data[i].seg_len)) - { - *supported_mode &= ~(1 << i); - } - } - - return IR_DECODE_SUCCEEDED; -} - -INT8 get_supported_wind_speed(UINT8 ac_mode, UINT8 *supported_wind_speed) -{ - UINT8 i = 0; - if (ac_mode >= AC_MODE_MAX) - { - return IR_DECODE_FAILED; - } - - if (NULL == supported_wind_speed) - { - return IR_DECODE_FAILED; - } - - if (1 == context->n_mode[ac_mode].all_speed) - { - *supported_wind_speed = 0; - return IR_DECODE_SUCCEEDED; - } - - *supported_wind_speed = 0x0F; - - for (i = 0; i < AC_WS_MAX; i++) - { - if (is_in(context->n_mode[ac_mode].speed, i, context->n_mode[ac_mode].speed_cnt) || - (context->speed1.len != 0 && 0 == context->speed1.comp_data[i].seg_len) || - (context->speed2.len != 0 && 0 == context->speed2.comp_data[i].seg_len)) - { - *supported_wind_speed &= ~(1 << i); - } - } - - return IR_DECODE_SUCCEEDED; -} - -INT8 get_supported_swing(UINT8 ac_mode, UINT8 *supported_swing) -{ - if (ac_mode >= AC_MODE_MAX) - { - return IR_DECODE_FAILED; - } - - if (NULL == supported_swing) - { - return IR_DECODE_FAILED; - } - - if (context->si.type == SWING_TYPE_NORMAL) - { - *supported_swing = 0x03; - } - else if (context->si.type == SWING_TYPE_SWING_ONLY) - { - *supported_swing = 0x02; - } - else if (context->si.type == SWING_TYPE_NOT_SPECIFIED) - { - *supported_swing = 0x00; - } - else - { - *supported_swing = 0x01; - } - return IR_DECODE_SUCCEEDED; -} - -INT8 get_supported_wind_direction(UINT8 *supported_wind_direction) -{ - if (NULL != context) - { - *supported_wind_direction = (UINT8) (context->si.mode_count - 1); - if (*supported_wind_direction < 0) { - *supported_wind_direction = 0; - } - return IR_DECODE_SUCCEEDED; - } - else - { - return IR_DECODE_FAILED; - } -} - -//////// AC End //////// - -//////// TV Begin //////// -#if !defined NO_FS -static INT8 ir_tv_file_open(const char *file_name) -{ - size_t ret = 0; - -#if !defined WIN32 - FILE *stream = fopen(file_name, "rb"); -#else - FILE *stream; - fopen_s(&stream, file_name, "rb"); -#endif - - if (stream == NULL) - { - ir_printf("\nfile open failed\n"); - return IR_DECODE_FAILED; - } - - fseek(stream, 0, SEEK_END); - binary_length = (size_t) ftell(stream); - - binary_content = (UINT8 *) ir_malloc(binary_length); - if (NULL == binary_content) - { - ir_printf("\nfailed to alloc memory for binary\n"); - fclose(stream); - return IR_DECODE_FAILED; - } - - fseek(stream, 0, SEEK_SET); - ret = fread(binary_content, binary_length, 1, stream); - if (ret <= 0) - { - fclose(stream); - ir_free(binary_content); - binary_length = 0; - return IR_DECODE_FAILED; - } - - fclose(stream); - - if (IR_DECODE_FAILED == ir_tv_binary_open(binary_content, (UINT16) binary_length)) - { - ir_free(binary_content); - binary_length = 0; - return IR_DECODE_FAILED; - } - return IR_DECODE_SUCCEEDED; -} -#endif - -static INT8 ir_tv_binary_open(UINT8 *binary, UINT16 binary_length) -{ - return tv_binary_open(binary, binary_length); -} - -static INT8 ir_tv_binary_parse(UINT8 ir_hex_encode) -{ - if (FALSE == tv_binary_parse(ir_hex_encode)) - { - ir_printf("parse irda binary failed\n"); - return IR_DECODE_FAILED; - } - return IR_DECODE_SUCCEEDED; -} - -static UINT16 ir_tv_control(UINT8 key, UINT16 *l_user_data) -{ -#if defined BOARD_PC - UINT16 print_index = 0; -#endif - UINT16 ir_code_length = 0; - memset(l_user_data, 0x00, USER_DATA_SIZE); - ir_code_length = tv_binary_decode(key, l_user_data); - -#if defined BOARD_PC - // have some debug - ir_printf("length of IR code = %d\n", ir_code_length); - for (print_index = 0; print_index < ir_code_length; print_index++) - { - ir_printf("%d ", l_user_data[print_index]); - } -#endif - - return ir_code_length; -} - -static INT8 ir_tv_binary_close() -{ -#if (defined BOARD_PC || defined BOARD_PC_DLL) - ir_lib_free_inner_buffer(); -#endif - return IR_DECODE_SUCCEEDED; -} -//////// TV End //////// - -// combo decode for JNI which means call open, decode and then close in one JNI call -UINT16 ir_decode_combo(const UINT8 category, const UINT8 sub_category, - UINT8* binary, UINT16 binary_length, - UINT8 key_code, UINT16* user_data, - t_remote_ac_status* ac_status, BOOL change_wind_direction) -{ - UINT16 decoded_length = 0; - if (IR_DECODE_SUCCEEDED == - ir_binary_open(category, sub_category, binary, binary_length)) - { - decoded_length = ir_decode(key_code, user_data, ac_status, change_wind_direction); - ir_close(); - return decoded_length; - } - else - { - return 0; - } -} - -#if (defined BOARD_PC || defined BOARD_PC_DLL) -void ir_lib_free_inner_buffer() -{ - if (NULL != binary_content) - { - ir_free(binary_content); - binary_content = NULL; - } -} +/************************************************************************************** +Filename: ir_decode.c +Revised: Date: 2016-10-01 +Revision: Revision: 1.0 + +Description: This file provides algorithms for IR decode (status type) + +Revision log: +* 2016-10-01: created by strawmanbobi +**************************************************************************************/ + +#include +#include + +#include + +#include "include/ir_decode.h" +#include "include/ir_utils.h" +#include "include/ir_ac_build_frame.h" +#include "include/ir_ac_apply.h" + +struct ir_bin_buffer binary_file; +struct ir_bin_buffer *p_ir_buffer = &binary_file; + +static const char* version = "0.2.5"; + +#if defined USE_DYNAMIC_TAG +struct tag_head *tags; +#else +struct tag_head tags[TAG_COUNT_FOR_PROTOCOL]; +#endif + +static UINT8 byte_array[PROTOCOL_SIZE] = { 0 }; +#if !defined NO_FS +static size_t binary_length = 0; +static UINT8 *binary_content = NULL; +#endif + +static t_remote_category remote_category = REMOTE_CATEGORY_NONE; +static UINT8 ir_binary_type = IR_TYPE_STATUS; +static UINT8 ir_hexadecimal = SUB_CATEGORY_QUATERNARY; + +static int KEY_CODE_MAX[] = +{ + 0, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT + CHANNEL_KEY_COUNT, + STANDARD_KEY_COUNT + CHANNEL_KEY_COUNT, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT + CHANNEL_KEY_COUNT, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT + CHANNEL_KEY_COUNT, + STANDARD_KEY_COUNT, + STANDARD_KEY_COUNT, +}; + +UINT8 *ir_hex_code = NULL; +UINT8 ir_hex_len = 0; +t_ac_protocol *context = (t_ac_protocol *) byte_array; + +static lp_apply_ac_parameter apply_table[AC_APPLY_MAX] = +{ + apply_power, + apply_mode, + apply_temperature, + apply_temperature, + apply_wind_speed, + apply_swing, + apply_swing +}; + +// static functions declarations +#if !defined NO_FS +static INT8 ir_ac_file_open(const char *file_name); +#endif + +static INT8 ir_ac_binary_open(UINT8 *binary, UINT16 bin_length); +static UINT16 ir_ac_control(t_remote_ac_status ac_status, UINT16* user_data, UINT8 key_code, + BOOL change_wind_direction); +static INT8 ir_ac_binary_close(); + +#if !defined NO_FS +static INT8 ir_tv_file_open(const char *file_name); +#endif + +static INT8 ir_tv_binary_open(UINT8 *binary, UINT16 bin_length); +static INT8 ir_tv_binary_parse(UINT8 ir_hex_encode); +static UINT16 ir_tv_control(UINT8 key, UINT16 *l_user_data); +static INT8 ir_tv_binary_close(); + + +void noprint(const char *fmt, ...) +{ + (void) fmt; +} + +// pubic function definitions +const char* get_lib_version() +{ + return version; +} + +#if (!defined BOARD_51 && !defined BOARD_CC26XX) +INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* file_name) +{ + INT8 ret = 0; + if (category < REMOTE_CATEGORY_AC || + category >= REMOTE_CATEGORY_NEXT) + { + ir_printf("wrong remote category : %d\n", category); + return IR_DECODE_FAILED; + } + remote_category = category; + + if (sub_category < SUB_CATEGORY_QUATERNARY || + sub_category >= SUB_CATEGORY_NEXT) + { + ir_printf("wrong remote sub category : %d\n", sub_category); + return IR_DECODE_FAILED; + } + + if (category == REMOTE_CATEGORY_AC) + { + ir_binary_type = IR_TYPE_STATUS; + ret = ir_ac_file_open(file_name); + if (IR_DECODE_SUCCEEDED == ret) + { + return ir_ac_lib_parse(); + } + else + { + return ret; + } + } + else + { + ir_binary_type = IR_TYPE_COMMANDS; + if (1 == sub_category) + { + ir_hexadecimal = SUB_CATEGORY_QUATERNARY; + } + else if (2 == sub_category) + { + ir_hexadecimal = SUB_CATEGORY_HEXADECIMAL; + } + else + { + return IR_DECODE_FAILED; + } + + ret = ir_tv_file_open(file_name); + if (IR_DECODE_SUCCEEDED == ret) + { + return ir_tv_binary_parse(ir_hexadecimal); + } + else + { + return ret; + } + } +} +#else +INT8 ir_file_open(const UINT8 category, const UINT8 sub_category, const char* file_name) +{ + return IR_DECODE_SUCCEEDED; +} +#endif + +INT8 ir_binary_open(const UINT8 category, const UINT8 sub_category, UINT8* binary, UINT16 bin_length) +{ + INT8 ret = 0; + + if (category < REMOTE_CATEGORY_AC || + category >= REMOTE_CATEGORY_NEXT) + { + ir_printf("wrong remote category\n"); + return IR_DECODE_FAILED; + } + remote_category = (t_remote_category) category; + + if (sub_category >= SUB_CATEGORY_NEXT) + { + ir_printf("wrong remote sub category : %d\n", sub_category); + return IR_DECODE_FAILED; + } + + if (category == REMOTE_CATEGORY_AC) + { + ir_binary_type = IR_TYPE_STATUS; + ret = ir_ac_binary_open(binary, bin_length); + if (IR_DECODE_SUCCEEDED == ret) + { + return ir_ac_lib_parse(); + } + else + { + return ret; + } + } + else + { + ir_binary_type = IR_TYPE_COMMANDS; + if (1 == sub_category) + { + ir_hexadecimal = SUB_CATEGORY_QUATERNARY; + } + else if (2 == sub_category) + { + ir_hexadecimal = SUB_CATEGORY_HEXADECIMAL; + } + else + { + return IR_DECODE_FAILED; + } + + ret = ir_tv_binary_open(binary, bin_length); + if (IR_DECODE_SUCCEEDED == ret) + { + return ir_tv_binary_parse(ir_hexadecimal); + } + else + { + return ret; + } + } +} + +/** the main entry of decode algorithm **/ +UINT16 ir_decode(UINT8 key_code, UINT16* user_data, + t_remote_ac_status* ac_status, BOOL change_wind_direction) +{ + ir_printf("remote_category = %d, KEY_CODE_MAX = %d\n", remote_category, KEY_CODE_MAX[remote_category]); + + if (key_code >= KEY_CODE_MAX[remote_category]) + { + ir_printf("key_code exceeded!\n"); + return 0; + } + + if (IR_TYPE_COMMANDS == ir_binary_type) + { + return ir_tv_control(key_code, user_data); + } + else + { + if (NULL == ac_status) + { + return 0; + } + ir_printf("ac status is not null in decode core : power = %d, mode = %d, " + "temp = %d, wind_dir = %d, wind_speed = %d, " + "key_code = %d, change_wind_direction = %d\n", + ac_status->ac_power, ac_status->ac_mode, + ac_status->ac_temp, ac_status->ac_wind_dir, + ac_status->ac_wind_speed, + key_code, change_wind_direction); + return ir_ac_control(*ac_status, user_data, key_code, change_wind_direction); + } +} + + +INT8 ir_close() +{ + if (IR_TYPE_COMMANDS == ir_binary_type) + { + ir_printf("tv binary close\n"); + return ir_tv_binary_close(); + } + else + { + ir_printf("ac binary close\n"); + return ir_ac_binary_close(); + } +} + + +// static function definitions + +//////// AC Begin //////// +#if !defined NO_FS +static INT8 ir_ac_file_open(const char *file_name) +{ + size_t ret = 0; +#if !defined WIN32 + FILE *stream = fopen(file_name, "rb"); +#else + FILE *stream; + fopen_s(&stream, file_name, "rb"); +#endif + if (NULL == stream) + { + ir_printf("\nfile open failed\n"); + return IR_DECODE_FAILED; + } + + fseek(stream, 0, SEEK_END); + binary_length = (size_t) ftell(stream); + binary_content = (UINT8 *) ir_malloc(binary_length); + + if (NULL == binary_content) + { + ir_printf("\nfailed to alloc memory for binary\n"); + fclose(stream); + return IR_DECODE_FAILED; + } + + fseek(stream, 0, SEEK_SET); + ret = fread(binary_content, binary_length, 1, stream); + + if (ret <= 0) + { + fclose(stream); + ir_free(binary_content); + binary_length = 0; + return IR_DECODE_FAILED; + } + + fclose(stream); + + if (IR_DECODE_FAILED == ir_ac_binary_open(binary_content, (UINT16) binary_length)) + { + ir_free(binary_content); + binary_length = 0; + return IR_DECODE_FAILED; + } + return IR_DECODE_SUCCEEDED; +} +#endif + +static INT8 ir_ac_binary_open(UINT8 *binary, UINT16 bin_length) +{ + // it is recommended that the parameter binary pointing to + // a global memory block in embedded platform environment + p_ir_buffer->data = binary; + p_ir_buffer->len = bin_length; + p_ir_buffer->offset = 0; + return IR_DECODE_SUCCEEDED; +} + +static UINT16 ir_ac_control(t_remote_ac_status ac_status, UINT16* user_data, UINT8 key_code, + BOOL change_wind_direction) +{ + UINT16 time_length = 0; + UINT8 function_code = 0; + + switch(key_code) + { + case 0: + function_code = AC_FUNCTION_POWER; + break; + case 1: + function_code = AC_FUNCTION_MODE; + break; + case 2: + case 7: + function_code = AC_FUNCTION_TEMPERATURE_UP; + break; + case 3: + case 8: + function_code = AC_FUNCTION_TEMPERATURE_DOWN; + break; + case 9: + function_code = AC_FUNCTION_WIND_SPEED; + break; + case 10: + function_code = AC_FUNCTION_WIND_SWING; + break; + case 11: + function_code = AC_FUNCTION_WIND_FIX; + break; + default: + ir_printf("unsupported key_code\n"); + return 0; + } + + if (0 == context->default_code.len) + { + ir_printf("\ndefault code is empty\n"); + return 0; + } + + // pre-set change wind direction flag here + context->change_wind_direction = change_wind_direction; + + context->time = user_data; + + // generate temp buffer for frame calculation + ir_memcpy(ir_hex_code, context->default_code.data, context->default_code.len); + +#if defined USE_APPLY_TABLE + if(ac_status.ac_power != AC_POWER_OFF) + { + for (i = AC_APPLY_POWER; i < AC_APPLY_MAX; i++) + { + apply_table[i](context, parameter_array[i]); + } + } +#else + if (ac_status.ac_power == AC_POWER_OFF) + { + // otherwise, power should always be applied + apply_power(ac_status, function_code); + } + else + { + // check the mode as the first priority, despite any other status + if (TRUE == context->n_mode[ac_status.ac_mode].enable) + { + if (is_solo_function(function_code)) + { + // this key press function needs to send solo code + apply_table[function_code - 1](ac_status, function_code); + } + else + { + if (!is_solo_function(AC_FUNCTION_POWER)) + { + apply_power(ac_status, function_code); + } + + if (!is_solo_function(AC_FUNCTION_MODE)) + { + if (IR_DECODE_FAILED == apply_mode(ac_status, function_code)) + { + return 0; + } + } + + if (!is_solo_function(AC_FUNCTION_WIND_SPEED)) + { + if (IR_DECODE_FAILED == apply_wind_speed(ac_status, function_code)) + { + return 0; + } + } + + if (!is_solo_function(AC_FUNCTION_WIND_SWING) && + !is_solo_function(AC_FUNCTION_WIND_FIX)) + { + if (IR_DECODE_FAILED == apply_swing(ac_status, function_code)) + { + return 0; + } + } + + if (!is_solo_function(AC_FUNCTION_TEMPERATURE_UP) && + !is_solo_function(AC_FUNCTION_TEMPERATURE_DOWN)) + { + if (IR_DECODE_FAILED == apply_temperature(ac_status, function_code)) + { + return 0; + } + } + } + } + else + { + return 0; + } + } +#endif + apply_function(context, function_code); + // checksum should always be applied + apply_checksum(context); + + time_length = create_ir_frame(); + +#if (defined BOARD_PC) +#if (defined BOARD_PC_JNI) + ir_printf("code count = %d\n", context->code_cnt); +#else + int i = 0; + for (i = 0; i < context->code_cnt; i++) + { + ir_printf("%d,", context->time[i]); + } +#endif + ir_printf("\n"); +#endif + + return time_length; +} + +static INT8 ir_ac_binary_close() +{ +#if defined USE_DYNAMIC_TAG + // free context + if (NULL != tags) + { + ir_free(tags); + tags = NULL; + } +#endif + + free_ac_context(); + + return IR_DECODE_SUCCEEDED; +} + +// utils +INT8 get_temperature_range(UINT8 ac_mode, INT8 *temp_min, INT8 *temp_max) +{ + UINT8 i = 0; + + if (ac_mode >= AC_MODE_MAX) + { + return IR_DECODE_FAILED; + } + if (NULL == temp_min || NULL == temp_max) + { + return IR_DECODE_FAILED; + } + + if (1 == context->n_mode[ac_mode].all_temp) + { + *temp_min = *temp_max = -1; + return IR_DECODE_SUCCEEDED; + } + + *temp_min = -1; + *temp_max = -1; + for (i = 0; i < (UINT8) AC_TEMP_MAX; i++) + { + if (is_in(context->n_mode[ac_mode].temp, i, context->n_mode[ac_mode].temp_cnt) || + (context->temp1.len != 0 && 0 == context->temp1.comp_data[i].seg_len) || + (context->temp2.len != 0 && 0 == context->temp2.comp_data[i].seg_len)) + { + continue; + } + if (-1 == *temp_min) + { + *temp_min = i; + } + if (-1 == *temp_max || i > *temp_max) + { + *temp_max = i; + } + } + return IR_DECODE_SUCCEEDED; +} + +INT8 get_supported_mode(UINT8 *supported_mode) +{ + UINT8 i = 0; + if (NULL == supported_mode) + { + return IR_DECODE_FAILED; + } + *supported_mode = 0x1F; + + for (i = 0; i < (UINT8) AC_MODE_MAX; i++) + { + if (0 == context->n_mode[i].enable || + (context->mode1.len != 0 && 0 == context->mode1.comp_data[i].seg_len) || + (context->mode2.len != 0 && 0 == context->mode2.comp_data[i].seg_len)) + { + *supported_mode &= (UINT8)(~(UINT8)((UINT8)1 << (UINT8)i)); + } + } + + return IR_DECODE_SUCCEEDED; +} + +INT8 get_supported_wind_speed(UINT8 ac_mode, UINT8 *supported_wind_speed) +{ + UINT8 i = 0; + if (ac_mode >= AC_MODE_MAX) + { + return IR_DECODE_FAILED; + } + + if (NULL == supported_wind_speed) + { + return IR_DECODE_FAILED; + } + + if (1 == context->n_mode[ac_mode].all_speed) + { + *supported_wind_speed = 0; + return IR_DECODE_SUCCEEDED; + } + + *supported_wind_speed = 0x0F; + + for (i = 0; i < (UINT8) AC_WS_MAX; i++) + { + if (is_in(context->n_mode[ac_mode].speed, i, context->n_mode[ac_mode].speed_cnt) || + (context->speed1.len != 0 && 0 == context->speed1.comp_data[i].seg_len) || + (context->speed2.len != 0 && 0 == context->speed2.comp_data[i].seg_len)) + { + *supported_wind_speed &= (UINT8)(~(UINT8)((UINT8)1 << (UINT8)i)); + } + } + + return IR_DECODE_SUCCEEDED; +} + +INT8 get_supported_swing(UINT8 ac_mode, UINT8 *supported_swing) +{ + if (ac_mode >= AC_MODE_MAX) + { + return IR_DECODE_FAILED; + } + + if (NULL == supported_swing) + { + return IR_DECODE_FAILED; + } + + if (context->si.type == SWING_TYPE_NORMAL) + { + *supported_swing = 0x03; + } + else if (context->si.type == SWING_TYPE_SWING_ONLY) + { + *supported_swing = 0x02; + } + else if (context->si.type == SWING_TYPE_NOT_SPECIFIED) + { + *supported_swing = 0x00; + } + else + { + *supported_swing = 0x01; + } + return IR_DECODE_SUCCEEDED; +} + +INT8 get_supported_wind_direction(UINT8 *supported_wind_direction) +{ + if (NULL != context) + { + *supported_wind_direction = (UINT8) (context->si.mode_count - 1); + return IR_DECODE_SUCCEEDED; + } + else + { + return IR_DECODE_FAILED; + } +} + +//////// AC End //////// + +//////// TV Begin //////// +#if !defined NO_FS +static INT8 ir_tv_file_open(const char *file_name) +{ + size_t ret = 0; + +#if !defined WIN32 + FILE *stream = fopen(file_name, "rb"); +#else + FILE *stream; + fopen_s(&stream, file_name, "rb"); +#endif + + if (stream == NULL) + { + ir_printf("\nfile open failed\n"); + return IR_DECODE_FAILED; + } + + fseek(stream, 0, SEEK_END); + binary_length = (size_t) ftell(stream); + + binary_content = (UINT8 *) ir_malloc(binary_length); + if (NULL == binary_content) + { + ir_printf("\nfailed to alloc memory for binary\n"); + fclose(stream); + return IR_DECODE_FAILED; + } + + fseek(stream, 0, SEEK_SET); + ret = fread(binary_content, binary_length, 1, stream); + if (ret <= 0) + { + fclose(stream); + ir_free(binary_content); + binary_length = 0; + return IR_DECODE_FAILED; + } + + fclose(stream); + + if (IR_DECODE_FAILED == ir_tv_binary_open(binary_content, (UINT16) binary_length)) + { + ir_free(binary_content); + binary_length = 0; + return IR_DECODE_FAILED; + } + return IR_DECODE_SUCCEEDED; +} +#endif + +static INT8 ir_tv_binary_open(UINT8 *binary, UINT16 bin_length) +{ + return tv_binary_open(binary, bin_length); +} + +static INT8 ir_tv_binary_parse(UINT8 ir_hex_encode) +{ + if (FALSE == tv_binary_parse(ir_hex_encode)) + { + ir_printf("parse irda binary failed\n"); + return IR_DECODE_FAILED; + } + return IR_DECODE_SUCCEEDED; +} + +static UINT16 ir_tv_control(UINT8 key, UINT16 *l_user_data) +{ +#if defined BOARD_PC + UINT16 print_index = 0; +#endif + UINT16 ir_code_length = 0; + memset(l_user_data, 0x00, USER_DATA_SIZE); + ir_code_length = tv_binary_decode(key, l_user_data); + +#if defined BOARD_PC + // have some debug + ir_printf("length of IR code = %d\n", ir_code_length); + for (print_index = 0; print_index < ir_code_length; print_index++) + { + ir_printf("%d ", l_user_data[print_index]); + } +#endif + + return ir_code_length; +} + +static INT8 ir_tv_binary_close() +{ +#if (defined BOARD_PC || defined BOARD_PC_DLL) + ir_lib_free_inner_buffer(); +#endif + return IR_DECODE_SUCCEEDED; +} +//////// TV End //////// + +// combo decode for JNI which means call open, decode and then close in one JNI call +UINT16 ir_decode_combo(const UINT8 category, const UINT8 sub_category, + UINT8* binary, UINT16 bin_length, + UINT8 key_code, UINT16* user_data, + t_remote_ac_status* ac_status, BOOL change_wind_direction) +{ + UINT16 decoded_length = 0; + + if (category < REMOTE_CATEGORY_AC || + category >= REMOTE_CATEGORY_NEXT) + { + ir_printf("wrong remote category\n"); + return IR_DECODE_FAILED; + } + + remote_category = (t_remote_category) category; + + if (key_code >= KEY_CODE_MAX[remote_category]) + { + ir_printf("key_code exceeded!\n"); + return 0; + } + + if (IR_DECODE_SUCCEEDED == + ir_binary_open(category, sub_category, binary, bin_length)) + { + decoded_length = ir_decode(key_code, user_data, ac_status, change_wind_direction); + ir_close(); + return decoded_length; + } + else + { + return 0; + } +} + +#if (defined BOARD_PC || defined BOARD_PC_DLL) +void ir_lib_free_inner_buffer() +{ + if (NULL != binary_content) + { + ir_free(binary_content); + binary_content = NULL; + } +} #endif \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_tv_control.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_tv_control.c index dd7869a..fe13cb0 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_tv_control.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_tv_control.c @@ -1,448 +1,452 @@ -/************************************************************************************** -Filename: ir_lib.c -Revised: Date: 2016-10-21 -Revision: Revision: 1.0 - -Description: This file provides algorithms for IR decode (compressed command type) - -Revision log: -* 2016-10-21: created by strawmanbobi -**************************************************************************************/ - -#include - -#include "../include/ir_defs.h" -#include "../include/ir_decode.h" -#include "../include/ir_tv_control.h" - - -struct buffer -{ - UINT8 *data; - UINT16 len; - UINT16 offset; -} ir_file; - - -static struct buffer *pbuffer = &ir_file; - -static UINT8 *prot_cycles_num = NULL; -static t_ir_cycles *prot_cycles_data[IRDA_MAX]; -static UINT8 prot_items_cnt = 0; -static t_ir_data *prot_items_data = NULL; -static t_ir_data_tv *remote_p; -static UINT8 *remote_pdata = NULL; - -static UINT16 time_index = 0; -static UINT8 ir_level = IRDA_LEVEL_LOW; -static UINT8 ir_toggle_bit = FALSE; -static UINT8 ir_decode_flag = IRDA_DECODE_1_BIT; -static UINT8 cycles_num_size = 0; - - -static BOOL get_ir_protocol(UINT8 encode_type); - -static BOOL get_ir_keymap(void); - -static void print_ir_time(t_ir_data *data, UINT8 key_index, UINT16 *ir_time); - -static void process_decode_number(UINT8 keycode, t_ir_data *data, UINT8 valid_bits, UINT16 *ir_time); - -static void convert_to_ir_time(UINT8 value, UINT16 *ir_time); - -static void replace_with(t_ir_cycles *pcycles_num, UINT16 *ir_time); - - -INT8 tv_binary_open(UINT8 *binary, UINT16 binary_length) -{ - // load binary to buffer - pbuffer->data = binary; - pbuffer->len = binary_length; - pbuffer->offset = 0; - return IR_DECODE_SUCCEEDED; -} - -BOOL tv_binary_parse(UINT8 encode_type) -{ - if (FALSE == get_ir_protocol(encode_type)) - { - return FALSE; - } - - return get_ir_keymap(); -} - -UINT16 tv_binary_decode(UINT8 key, UINT16 *user_data) -{ - UINT16 i = 0; - - time_index = 0; - ir_level = IRDA_LEVEL_LOW; - - for (i = 0; i < prot_items_cnt; i++) - { - print_ir_time(&prot_items_data[i], key, user_data); - } - - // next flip - if (2 == prot_cycles_num[IRDA_FLIP]) - { - ir_toggle_bit = (ir_toggle_bit == FALSE) ? TRUE : FALSE; - } - - return time_index; -} - - -static BOOL get_ir_protocol(UINT8 encode_type) -{ - UINT8 i = 0; - UINT8 name_size = 20; - UINT8 *prot_cycles = NULL; - UINT8 cycles_sum = 0; - - if (pbuffer->data == NULL) - { - return FALSE; - } - - pbuffer->offset = 0; - - /* t_ac_protocol name */ - pbuffer->offset += name_size; - - /* 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" */ - if (prot_cycles_num[IRDA_TWO] == 0 && prot_cycles_num[IRDA_THREE] == 0) - { - ir_decode_flag = IRDA_DECODE_1_BIT; - } - else - { - ir_decode_flag = IRDA_DECODE_2_BITS; - } - } - else if (encode_type == 1) - { - cycles_num_size = IRDA_MAX; - ir_decode_flag = IRDA_DECODE_4_BITS; - } - else - { - return FALSE; - } - pbuffer->offset += cycles_num_size; - - /* cycles data */ - prot_cycles = pbuffer->data + pbuffer->offset; - for (i = 0; i < cycles_num_size; i++) - { - if (0 != prot_cycles_num[i]) - { - prot_cycles_data[i] = (t_ir_cycles *) (&prot_cycles[sizeof(t_ir_cycles) * cycles_sum]); - } - else - { - prot_cycles_data[i] = NULL; - } - cycles_sum += prot_cycles_num[i]; - } - pbuffer->offset += sizeof(t_ir_cycles) * cycles_sum; - - /* items count */ - prot_items_cnt = pbuffer->data[pbuffer->offset]; - pbuffer->offset += sizeof(UINT8); - - /* items data */ - prot_items_data = (t_ir_data *) (pbuffer->data + pbuffer->offset); - pbuffer->offset += prot_items_cnt * sizeof(t_ir_data); - - ir_toggle_bit = FALSE; - - return TRUE; -} - -static BOOL get_ir_keymap(void) -{ - remote_p = (t_ir_data_tv *) (pbuffer->data + pbuffer->offset); - pbuffer->offset += sizeof(t_ir_data_tv); - - if (strncmp(remote_p->magic, "irda", 4) == 0) - { - remote_pdata = pbuffer->data + pbuffer->offset; - return TRUE; - } - - return FALSE; -} - -static void print_ir_time(t_ir_data *data, UINT8 key_index, UINT16 *ir_time) -{ - UINT8 i = 0; - UINT8 cycles_num = 0; - t_ir_cycles *pcycles = NULL; - UINT8 key_code = 0; - - if (NULL == data || NULL == ir_time) - { - ir_printf("data or ir_time is null\n"); - return; - } - - pcycles = prot_cycles_data[data->index]; - key_code = remote_pdata[remote_p->per_keycode_bytes * key_index + data->index - 1]; - - 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; - } - - if (data->bits == 1) - { - 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; - } - - for (i = cycles_num; i > 0; i--) - { - if (cycles_num == 2 && data->index == IRDA_FLIP) - { - if (ir_toggle_bit == TRUE) - { - pcycles += 1; - } - } - - if (pcycles->mask && pcycles->space) - { - if (pcycles->flag == IRDA_FLAG_NORMAL) - { - if (ir_level == IRDA_LEVEL_HIGH && time_index != 0) - { - time_index--; - ir_time[time_index++] += pcycles->mask; - } - else if (ir_level == IRDA_LEVEL_LOW) - { - ir_time[time_index++] = pcycles->mask; - } - ir_time[time_index++] = pcycles->space; - ir_level = IRDA_LEVEL_LOW; - } - else if (pcycles->flag == IRDA_FLAG_INVERSE) - { - if (ir_level == IRDA_LEVEL_LOW && time_index != 0) - { - time_index--; - ir_time[time_index++] += pcycles->space; - } - else if (ir_level == IRDA_LEVEL_HIGH) - { - ir_time[time_index++] = pcycles->space; - } - ir_time[time_index++] = pcycles->mask; - ir_level = IRDA_LEVEL_HIGH; - } - } - else if (0 == pcycles->mask && 0 != pcycles->space) - { - if (ir_level == IRDA_LEVEL_LOW && time_index != 0) - { - time_index--; - ir_time[time_index++] += pcycles->space; - } - else if (ir_level == IRDA_LEVEL_HIGH) - { - ir_time[time_index++] = pcycles->space; - } - ir_level = IRDA_LEVEL_LOW; - } - else if (0 == pcycles->space && 0 != pcycles->mask) - { - if (ir_level == IRDA_LEVEL_HIGH && time_index != 0) - { - time_index--; - ir_time[time_index++] += pcycles->mask; - } - else if (ir_level == IRDA_LEVEL_LOW) - { - ir_time[time_index++] = pcycles->mask; - } - ir_level = IRDA_LEVEL_HIGH; - } - else - { - // do nothing - } - - if (cycles_num == 2 && data->index == IRDA_FLIP) - { - break; - } - pcycles++; - } - } - else - { - // mode: inverse - if (data->mode == 1) - key_code = ~key_code; - - if (ir_decode_flag == IRDA_DECODE_1_BIT) - { - // for binary formatted code - process_decode_number(key_code, data, 1, ir_time); - } - else if (ir_decode_flag == IRDA_DECODE_2_BITS) - { - // for quaternary formatted code - process_decode_number(key_code, data, 2, ir_time); - } - else if (ir_decode_flag == IRDA_DECODE_4_BITS) - { - // for hexadecimal formatted code - process_decode_number(key_code, data, 4, ir_time); - } - } -} - -static void process_decode_number(UINT8 keycode, t_ir_data *data, UINT8 valid_bits, UINT16 *ir_time) -{ - UINT8 i = 0; - UINT8 value = 0; - UINT8 bit_num = data->bits / valid_bits; - UINT8 valid_value = 0; - - valid_value = (UINT8) ((valid_bits == 1) ? 1 : (valid_bits * valid_bits - 1)); - - if (data->lsb == IRDA_LSB) - { - for (i = 0; i < bit_num; i++) - { - value = (keycode >> (valid_bits * i)) & valid_value; - convert_to_ir_time(value, ir_time); - } - } - else if (data->lsb == IRDA_MSB) - { - for (i = 0; i < bit_num; i++) - { - value = (keycode >> (data->bits - valid_bits * (i + 1))) & valid_value; - convert_to_ir_time(value, ir_time); - } - } -} - -static void convert_to_ir_time(UINT8 value, UINT16 *ir_time) -{ - switch (value) - { - case 0: - replace_with(prot_cycles_data[IRDA_ZERO], ir_time); - break; - case 1: - replace_with(prot_cycles_data[IRDA_ONE], ir_time); - break; - case 2: - replace_with(prot_cycles_data[IRDA_TWO], ir_time); - break; - case 3: - replace_with(prot_cycles_data[IRDA_THREE], ir_time); - break; - case 4: - replace_with(prot_cycles_data[IRDA_FOUR], ir_time); - break; - case 5: - replace_with(prot_cycles_data[IRDA_FIVE], ir_time); - break; - case 6: - replace_with(prot_cycles_data[IRDA_SIX], ir_time); - break; - case 7: - replace_with(prot_cycles_data[IRDA_SEVEN], ir_time); - break; - case 8: - replace_with(prot_cycles_data[IRDA_EIGHT], ir_time); - break; - case 9: - replace_with(prot_cycles_data[IRDA_NINE], ir_time); - break; - case 0x0A: - replace_with(prot_cycles_data[IRDA_A], ir_time); - break; - case 0x0B: - replace_with(prot_cycles_data[IRDA_B], ir_time); - break; - case 0x0C: - replace_with(prot_cycles_data[IRDA_C], ir_time); - break; - case 0x0D: - replace_with(prot_cycles_data[IRDA_D], ir_time); - break; - case 0x0E: - replace_with(prot_cycles_data[IRDA_E], ir_time); - break; - case 0x0F: - replace_with(prot_cycles_data[IRDA_F], ir_time); - break; - default: - break; - } -} - -static void replace_with(t_ir_cycles *pcycles_num, UINT16 *ir_time) -{ - if (NULL == pcycles_num || NULL == ir_time) - { - return; - } - - if (pcycles_num->flag == IRDA_FLAG_NORMAL) - { - if (ir_level == IRDA_LEVEL_HIGH && time_index != 0) - { - time_index--; - ir_time[time_index++] += pcycles_num->mask; - } - else if (ir_level == IRDA_LEVEL_LOW) - { - ir_time[time_index++] = pcycles_num->mask; - } - ir_time[time_index++] = pcycles_num->space; - ir_level = IRDA_LEVEL_LOW; - } - else if (pcycles_num->flag == IRDA_FLAG_INVERSE) - { - if (ir_level == IRDA_LEVEL_LOW && time_index != 0) - { - time_index--; - ir_time[time_index++] += pcycles_num->space; - } - else if (ir_level == IRDA_LEVEL_HIGH) - { - ir_time[time_index++] = pcycles_num->space; - } - ir_time[time_index++] = pcycles_num->mask; - ir_level = IRDA_LEVEL_HIGH; - } +/************************************************************************************** +Filename: ir_lib.c +Revised: Date: 2016-10-21 +Revision: Revision: 1.0 + +Description: This file provides algorithms for IR decode (compressed command type) + +Revision log: +* 2016-10-21: created by strawmanbobi +**************************************************************************************/ + +#if defined (BOARD_PC) +#pragma ide diagnostic ignored "hicpp-signed-bitwise" +#endif + +#include + +#include "include/ir_defs.h" +#include "include/ir_decode.h" +#include "include/ir_tv_control.h" + + +struct buffer +{ + UINT8 *data; + UINT16 len; + UINT16 offset; +} ir_file; + + +static struct buffer *pbuffer = &ir_file; + +static UINT8 *prot_cycles_num = NULL; +static t_ir_cycles *prot_cycles_data[IRDA_MAX]; +static UINT8 prot_items_cnt = 0; +static t_ir_data *prot_items_data = NULL; +static t_ir_data_tv *remote_p; +static UINT8 *remote_pdata = NULL; + +static UINT16 time_index = 0; +static UINT8 ir_level = IRDA_LEVEL_LOW; +static UINT8 ir_toggle_bit = FALSE; +static UINT8 ir_decode_flag = IRDA_DECODE_1_BIT; +static UINT8 cycles_num_size = 0; + + +static BOOL get_ir_protocol(UINT8 encode_type); + +static BOOL get_ir_keymap(void); + +static void print_ir_time(t_ir_data *data, UINT8 key_index, UINT16 *ir_time); + +static void process_decode_number(UINT8 keycode, t_ir_data *data, UINT8 valid_bits, UINT16 *ir_time); + +static void convert_to_ir_time(UINT8 value, UINT16 *ir_time); + +static void replace_with(t_ir_cycles *pcycles_num, UINT16 *ir_time); + + +INT8 tv_binary_open(UINT8 *binary, UINT16 binary_length) +{ + // load binary to buffer + pbuffer->data = binary; + pbuffer->len = binary_length; + pbuffer->offset = 0; + return IR_DECODE_SUCCEEDED; +} + +BOOL tv_binary_parse(UINT8 encode_type) +{ + if (FALSE == get_ir_protocol(encode_type)) + { + return FALSE; + } + + return get_ir_keymap(); +} + +UINT16 tv_binary_decode(UINT8 key, UINT16 *user_data) +{ + UINT16 i = 0; + + time_index = 0; + ir_level = IRDA_LEVEL_LOW; + + for (i = 0; i < prot_items_cnt; i++) + { + print_ir_time(&prot_items_data[i], key, user_data); + } + + // next flip + if (2 == prot_cycles_num[IRDA_FLIP]) + { + ir_toggle_bit = (ir_toggle_bit == FALSE) ? TRUE : FALSE; + } + + return time_index; +} + + +static BOOL get_ir_protocol(UINT8 encode_type) +{ + UINT8 i = 0; + UINT8 name_size = 20; + UINT8 *prot_cycles = NULL; + UINT8 cycles_sum = 0; + + if (pbuffer->data == NULL) + { + return FALSE; + } + + pbuffer->offset = 0; + + /* t_ac_protocol name */ + pbuffer->offset += name_size; + + /* 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" */ + if (prot_cycles_num[IRDA_TWO] == 0 && prot_cycles_num[IRDA_THREE] == 0) + { + ir_decode_flag = IRDA_DECODE_1_BIT; + } + else + { + ir_decode_flag = IRDA_DECODE_2_BITS; + } + } + else if (encode_type == 1) + { + cycles_num_size = IRDA_MAX; + ir_decode_flag = IRDA_DECODE_4_BITS; + } + else + { + return FALSE; + } + pbuffer->offset += cycles_num_size; + + /* cycles data */ + prot_cycles = pbuffer->data + pbuffer->offset; + for (i = 0; i < cycles_num_size; i++) + { + if (0 != prot_cycles_num[i]) + { + prot_cycles_data[i] = (t_ir_cycles *) (&prot_cycles[sizeof(t_ir_cycles) * cycles_sum]); + } + else + { + prot_cycles_data[i] = NULL; + } + cycles_sum += prot_cycles_num[i]; + } + pbuffer->offset += sizeof(t_ir_cycles) * cycles_sum; + + /* items count */ + prot_items_cnt = pbuffer->data[pbuffer->offset]; + pbuffer->offset += sizeof(UINT8); + + /* items data */ + prot_items_data = (t_ir_data *) (pbuffer->data + pbuffer->offset); + pbuffer->offset += prot_items_cnt * sizeof(t_ir_data); + + ir_toggle_bit = FALSE; + + return TRUE; +} + +static BOOL get_ir_keymap(void) +{ + remote_p = (t_ir_data_tv *) (pbuffer->data + pbuffer->offset); + pbuffer->offset += sizeof(t_ir_data_tv); + + if (strncmp(remote_p->magic, "irda", 4) == 0) + { + remote_pdata = pbuffer->data + pbuffer->offset; + return TRUE; + } + + return FALSE; +} + +static void print_ir_time(t_ir_data *data, UINT8 key_index, UINT16 *ir_time) +{ + UINT8 i = 0; + UINT8 cycles_num = 0; + t_ir_cycles *pcycles = NULL; + UINT8 key_code = 0; + + if (NULL == data || NULL == ir_time) + { + ir_printf("data or ir_time is null\n"); + return; + } + + pcycles = prot_cycles_data[data->index]; + key_code = remote_pdata[remote_p->per_keycode_bytes * key_index + data->index - 1]; + + 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; + } + + if (data->bits == 1) + { + 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; + } + + for (i = cycles_num; i > 0; i--) + { + if (cycles_num == 2 && data->index == IRDA_FLIP) + { + if (ir_toggle_bit == TRUE) + { + pcycles += 1; + } + } + + if (pcycles->mask && pcycles->space) + { + if (pcycles->flag == IRDA_FLAG_NORMAL) + { + if (ir_level == IRDA_LEVEL_HIGH && time_index != 0) + { + time_index--; + ir_time[time_index++] += pcycles->mask; + } + else if (ir_level == IRDA_LEVEL_LOW) + { + ir_time[time_index++] = pcycles->mask; + } + ir_time[time_index++] = pcycles->space; + ir_level = IRDA_LEVEL_LOW; + } + else if (pcycles->flag == IRDA_FLAG_INVERSE) + { + if (ir_level == IRDA_LEVEL_LOW && time_index != 0) + { + time_index--; + ir_time[time_index++] += pcycles->space; + } + else if (ir_level == IRDA_LEVEL_HIGH) + { + ir_time[time_index++] = pcycles->space; + } + ir_time[time_index++] = pcycles->mask; + ir_level = IRDA_LEVEL_HIGH; + } + } + else if (0 == pcycles->mask && 0 != pcycles->space) + { + if (ir_level == IRDA_LEVEL_LOW && time_index != 0) + { + time_index--; + ir_time[time_index++] += pcycles->space; + } + else if (ir_level == IRDA_LEVEL_HIGH) + { + ir_time[time_index++] = pcycles->space; + } + ir_level = IRDA_LEVEL_LOW; + } + else if (0 == pcycles->space && 0 != pcycles->mask) + { + if (ir_level == IRDA_LEVEL_HIGH && time_index != 0) + { + time_index--; + ir_time[time_index++] += pcycles->mask; + } + else if (ir_level == IRDA_LEVEL_LOW) + { + ir_time[time_index++] = pcycles->mask; + } + ir_level = IRDA_LEVEL_HIGH; + } + else + { + // do nothing + } + + if (cycles_num == 2 && data->index == IRDA_FLIP) + { + break; + } + pcycles++; + } + } + else + { + // mode: inverse + if (data->mode == 1) + key_code = ~key_code; + + if (ir_decode_flag == IRDA_DECODE_1_BIT) + { + // for binary formatted code + process_decode_number(key_code, data, 1, ir_time); + } + else if (ir_decode_flag == IRDA_DECODE_2_BITS) + { + // for quaternary formatted code + process_decode_number(key_code, data, 2, ir_time); + } + else if (ir_decode_flag == IRDA_DECODE_4_BITS) + { + // for hexadecimal formatted code + process_decode_number(key_code, data, 4, ir_time); + } + } +} + +static void process_decode_number(UINT8 keycode, t_ir_data *data, UINT8 valid_bits, UINT16 *ir_time) +{ + UINT8 i = 0; + UINT8 value = 0; + UINT8 bit_num = data->bits / valid_bits; + UINT8 valid_value = 0; + + valid_value = (UINT8) ((valid_bits == 1) ? 1 : (valid_bits * valid_bits - 1)); + + if (data->lsb == IRDA_LSB) + { + for (i = 0; i < bit_num; i++) + { + value = (keycode >> (valid_bits * i)) & valid_value; + convert_to_ir_time(value, ir_time); + } + } + else if (data->lsb == IRDA_MSB) + { + for (i = 0; i < bit_num; i++) + { + value = (keycode >> (data->bits - valid_bits * (i + 1))) & valid_value; + convert_to_ir_time(value, ir_time); + } + } +} + +static void convert_to_ir_time(UINT8 value, UINT16 *ir_time) +{ + switch (value) + { + case 0: + replace_with(prot_cycles_data[IRDA_ZERO], ir_time); + break; + case 1: + replace_with(prot_cycles_data[IRDA_ONE], ir_time); + break; + case 2: + replace_with(prot_cycles_data[IRDA_TWO], ir_time); + break; + case 3: + replace_with(prot_cycles_data[IRDA_THREE], ir_time); + break; + case 4: + replace_with(prot_cycles_data[IRDA_FOUR], ir_time); + break; + case 5: + replace_with(prot_cycles_data[IRDA_FIVE], ir_time); + break; + case 6: + replace_with(prot_cycles_data[IRDA_SIX], ir_time); + break; + case 7: + replace_with(prot_cycles_data[IRDA_SEVEN], ir_time); + break; + case 8: + replace_with(prot_cycles_data[IRDA_EIGHT], ir_time); + break; + case 9: + replace_with(prot_cycles_data[IRDA_NINE], ir_time); + break; + case 0x0A: + replace_with(prot_cycles_data[IRDA_A], ir_time); + break; + case 0x0B: + replace_with(prot_cycles_data[IRDA_B], ir_time); + break; + case 0x0C: + replace_with(prot_cycles_data[IRDA_C], ir_time); + break; + case 0x0D: + replace_with(prot_cycles_data[IRDA_D], ir_time); + break; + case 0x0E: + replace_with(prot_cycles_data[IRDA_E], ir_time); + break; + case 0x0F: + replace_with(prot_cycles_data[IRDA_F], ir_time); + break; + default: + break; + } +} + +static void replace_with(t_ir_cycles *pcycles_num, UINT16 *ir_time) +{ + if (NULL == pcycles_num || NULL == ir_time) + { + return; + } + + if (pcycles_num->flag == IRDA_FLAG_NORMAL) + { + if (ir_level == IRDA_LEVEL_HIGH && time_index != 0) + { + time_index--; + ir_time[time_index++] += pcycles_num->mask; + } + else if (ir_level == IRDA_LEVEL_LOW) + { + ir_time[time_index++] = pcycles_num->mask; + } + ir_time[time_index++] = pcycles_num->space; + ir_level = IRDA_LEVEL_LOW; + } + else if (pcycles_num->flag == IRDA_FLAG_INVERSE) + { + if (ir_level == IRDA_LEVEL_LOW && time_index != 0) + { + time_index--; + ir_time[time_index++] += pcycles_num->space; + } + else if (ir_level == IRDA_LEVEL_HIGH) + { + ir_time[time_index++] = pcycles_num->space; + } + ir_time[time_index++] = pcycles_num->mask; + ir_level = IRDA_LEVEL_HIGH; + } } \ No newline at end of file diff --git a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_utils.c b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_utils.c index 6867df7..9045a52 100644 --- a/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_utils.c +++ b/cc25xx-8051-example/ti/BLE-CC254x/Projects/ble/SimpleBLEPeripheral-IREXT/Source/ir_decoder/src/ir_utils.c @@ -9,7 +9,7 @@ Revision log: * 2016-10-01: created by strawmanbobi **************************************************************************************/ -#include "../include/ir_utils.h" +#include "include/ir_utils.h" UINT8 char_to_hex(char chr) { @@ -25,7 +25,7 @@ UINT8 char_to_hex(char chr) UINT8 chars_to_hex(const UINT8 *p) { - return (char_to_hex(*p) << 4) + char_to_hex(*(p + 1)); + return ((UINT8) char_to_hex(*p) << (UINT8) 4) + char_to_hex(*(p + 1)); } void string_to_hex_common(UINT8 *p, UINT8 *hex_data, UINT16 len) @@ -77,8 +77,8 @@ void hex_byte_to_double_char(char *dest, UINT8 length, UINT8 src) { return; } - hi_num = (UINT8) ((src >> 4) & 0x0F); - lo_num = (UINT8) (src & 0x0F); + hi_num = (UINT8) ((UINT8) (src >> (UINT8) 4) & (UINT8) 0x0F); + lo_num = (UINT8) (src & (UINT8) 0x0F); dest[0] = hex_half_byte_to_single_char(1, hi_num); dest[1] = hex_half_byte_to_single_char(1, lo_num); diff --git a/cc26xx-ARM-Cortex-M3-example/ti/BLE-CC264x/ble_cc26xx/Projects/ble/SimpleBLEPeripheral-IREXT/CC26xx/IAR.zip b/cc26xx-ARM-Cortex-M3-example/ti/BLE-CC264x/ble_cc26xx/Projects/ble/SimpleBLEPeripheral-IREXT/CC26xx/IAR.zip index 90f12b6d9cf0c6d1da665c6d73d90e2d4e701050..ef0e81a20467107c4e15928bf5d334cf6256d6be 100644 GIT binary patch delta 301072 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 z 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%0A+s=%`R-Ry8f%9XrqlkO7~ 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�JF5Rb=Dx(AQS$nP`_8aMQ34dM*@ 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

AX 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 z zD9iEx<>Xb{~pQ2X&otW$mZ~GpcI)3Tc zG~>SWKbwqOPKuwI!pkKNdr5Z;hs#Wke#x)O?th^|oLI`lx8x7`eJW&Qce8VZcuSd8 zcItkv`yg#EwSHYes)n_vb6^tP99ys<4prdztLBLr%VW>yZX4VS3;Rpw{o<)0vJH_$ z*}wJoJ_c3A7u-6bxv@Sn9Joeh@H2a0Y>*^0PA=`t4Djr4mC#bHsk`AAQ#E)iFvMy3 z#l*%NKgsKjYac3tjbEvtcNbdS?{!v>I;hOC)3K4C(Bpkp#rv&Zz**SQ?-e`u<9++2 zJ``t+8Pf(%YD6*Jx%%Y;J@dZd=37yK#B%m4t|9;MI!iE6zI}I3#A|ZobfKKy)@i1W zKFbSseQhUbthUvH6WOsrWAmW+vLZw*z;hH*SY#(#^CMKSg{|+pmsO8koAK|z_br5v zZfnFk-0H|cBfk4S4PVkjpgjw%Md5cZgj?!WUcAJaef> z*_|mC6>B$W8`8^)jrrszxv#BkSatQFh12Zf@9}va6_Nf2Yt_TGsqtu)OCBG}_O*Os zpGRsyIu=;ZAn$&)_DOi1kOJERhAe2A1NYW^STanK*7i_3Z}y|UZ)#+i@?A~8!}+M| zGNPFN{P^(aEpCea#6@CiX~tZ#`O-AHnVP9uNvmak-sSfG?!SsT^RxX(WOc{G�r) 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

tH1kFKezJD|C^Hj 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

idv9kffg+5PkUdY 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