update 2016-11-08 b2
1. optimized memory usage for PC
This commit is contained in:
@@ -79,6 +79,10 @@ lp_apply_ac_parameter apply_table[AC_APPLY_MAX] =
|
|||||||
apply_swing
|
apply_swing
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined BOARD_PC
|
||||||
|
void free_pirda(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
///////////////////////////////////////////////// Air Conditioner Begin /////////////////////////////////////////////////
|
///////////////////////////////////////////////// Air Conditioner Begin /////////////////////////////////////////////////
|
||||||
|
|
||||||
INT8 binary_parse_offset()
|
INT8 binary_parse_offset()
|
||||||
@@ -330,7 +334,7 @@ INT8 irda_context_init()
|
|||||||
INT8 irda_ac_lib_parse()
|
INT8 irda_ac_lib_parse()
|
||||||
{
|
{
|
||||||
UINT16 i = 0;
|
UINT16 i = 0;
|
||||||
// suggest not to call init function here for de-couple purpose
|
// suggest not to call init function here for de-couple purpose
|
||||||
irda_context_init();
|
irda_context_init();
|
||||||
|
|
||||||
if (IR_DECODE_FAILED == binary_parse_offset())
|
if (IR_DECODE_FAILED == binary_parse_offset())
|
||||||
@@ -690,9 +694,26 @@ INT8 irda_ac_lib_parse()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// it is strongly recommended that we free pirda_buffer
|
||||||
|
// or make global buffer shared in extreme memory case
|
||||||
|
/* in case of running with test - begin */
|
||||||
|
#if defined BOARD_PC
|
||||||
|
free_pirda();
|
||||||
|
#endif
|
||||||
|
/* in case of running with test - end */
|
||||||
|
|
||||||
return IR_DECODE_SUCCEEDED;
|
return IR_DECODE_SUCCEEDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined BOARD_PC
|
||||||
|
void free_pirda(void)
|
||||||
|
{
|
||||||
|
irda_free(pirda_buffer->data);
|
||||||
|
pirda_buffer->len = 0;
|
||||||
|
pirda_buffer->offset = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
BOOL is_solo_function(UINT8 function_code)
|
BOOL is_solo_function(UINT8 function_code)
|
||||||
{
|
{
|
||||||
return (((context->solo_function_mark >> (function_code - 1)) & 0x01) == 0x01) ? TRUE : FALSE;
|
return (((context->solo_function_mark >> (function_code - 1)) & 0x01) == 0x01) ? TRUE : FALSE;
|
||||||
|
|||||||
19
src/ir_decoder/irda_decoder.exe.stackdump
Normal file
19
src/ir_decoder/irda_decoder.exe.stackdump
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
Stack trace:
|
||||||
|
Frame Function Args
|
||||||
|
000005FC2E0 0018007252A (000005FE3F4, 00000000006, 00000000000, 000005FDE50)
|
||||||
|
000005FC380 00180073CC0 (00000000064, 00000000000, 00000000000, 00000000000)
|
||||||
|
000005FC5D0 0018012E28F (00000000000, 000005FC7A0, 00000000000, 00000000000)
|
||||||
|
000005FC8C0 0018012B040 (0000000000A, 00000000000, 00000000000, 001803013A8)
|
||||||
|
00100411E58 0018012B509 (000005FC820, 001803013A8, 001801C8DB3, 00000000006)
|
||||||
|
00100411E58 0018012B6DC (0018014CBC6, 000005FC9FC, 00600050CA0, 00600050CA0)
|
||||||
|
00100411E58 0018012B99F (000005FC9FC, 000005FD680, 00600060790, 00600060790)
|
||||||
|
00100411E58 0018016106A (001801F3930, 0010040C558, 0010040C5D8, 00000000001)
|
||||||
|
00100411E58 001800CDB63 (00000000000, 00000000002, 0000000000E, 00000000001)
|
||||||
|
00100411E58 0018012700B (00000000000, 00000000002, 0000000000E, 00000000001)
|
||||||
|
00100411E58 00100409FFE (00000000030, 00000000000, 00000000000, 000005FCB50)
|
||||||
|
000005FCBC0 0010040AB7C (00000000000, 00000000000, 00000000030, FF0700010302FF00)
|
||||||
|
000005FCBC0 001800483CD (00000000000, 00000000000, 00000000000, 00000000000)
|
||||||
|
00000000000 001800460DC (00000000000, 00000000000, 00000000000, 00000000000)
|
||||||
|
00000000000 00180046174 (00000000000, 00000000000, 00000000000, 00000000000)
|
||||||
|
00000000000 0010040A511 (00000000000, 00000000000, 00000000000, 00000000000)
|
||||||
|
End of stack trace (more stack frames may be present)
|
||||||
@@ -91,9 +91,6 @@ UINT8 decode_as_ac(const char* file_name)
|
|||||||
return IR_DECODE_FAILED;
|
return IR_DECODE_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
// no need to verify return value
|
|
||||||
irda_context_init();
|
|
||||||
|
|
||||||
if (IR_DECODE_FAILED == irda_ac_lib_parse())
|
if (IR_DECODE_FAILED == irda_ac_lib_parse())
|
||||||
{
|
{
|
||||||
IR_PRINTF("\nac lib parse failed\n");
|
IR_PRINTF("\nac lib parse failed\n");
|
||||||
|
|||||||
@@ -39,18 +39,14 @@ Revision log:
|
|||||||
/**************************************************************************************************
|
/**************************************************************************************************
|
||||||
* LOCAL DATA TYPES
|
* LOCAL DATA TYPES
|
||||||
**************************************************************************************************/
|
**************************************************************************************************/
|
||||||
#if defined BOARD_FREE_RTOS
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
#endif
|
|
||||||
struct buffer
|
struct buffer
|
||||||
{
|
{
|
||||||
UINT8 *data;
|
UINT8 *data;
|
||||||
UINT16 len;
|
UINT16 len;
|
||||||
UINT16 offset;
|
UINT16 offset;
|
||||||
} irda_file;
|
} irda_file;
|
||||||
#if defined BOARD_FREE_RTOS
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -367,23 +363,14 @@ static void print_irda_time(irda_data_t *data, UINT8 keyindex, UINT16 *irda_time
|
|||||||
|
|
||||||
if (irda_decode_flag == IRDA_DECODE_1_BIT)
|
if (irda_decode_flag == IRDA_DECODE_1_BIT)
|
||||||
{
|
{
|
||||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
|
||||||
NPI_PrintString("\r\n\r\n\r\n[TV-DECODE]: decode as 1 bit");
|
|
||||||
#endif
|
|
||||||
process_decode_number(keycode, data, 1, irda_time); // '0','1'
|
process_decode_number(keycode, data, 1, irda_time); // '0','1'
|
||||||
}
|
}
|
||||||
else if (irda_decode_flag == IRDA_DECODE_2_BITS)
|
else if (irda_decode_flag == IRDA_DECODE_2_BITS)
|
||||||
{
|
{
|
||||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
|
||||||
NPI_PrintString("\r\n\r\n\r\n[TV-DECODE]: decode as 2 bits");
|
|
||||||
#endif
|
|
||||||
process_decode_number(keycode, data, 2, irda_time); // '0','1','2','3'
|
process_decode_number(keycode, data, 2, irda_time); // '0','1','2','3'
|
||||||
}
|
}
|
||||||
else if (irda_decode_flag == IRDA_DECODE_4_BITS)
|
else if (irda_decode_flag == IRDA_DECODE_4_BITS)
|
||||||
{
|
{
|
||||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
|
||||||
NPI_PrintString("\r\n\r\n\r\n[TV-DECODE]: decode as 4 bits");
|
|
||||||
#endif
|
|
||||||
process_decode_number(keycode, data, 4, irda_time); // '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',
|
process_decode_number(keycode, data, 4, irda_time); // '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -398,17 +385,8 @@ static void process_decode_number(UINT8 keycode, irda_data_t *data, UINT8 valid_
|
|||||||
|
|
||||||
valid_value = (valid_bits == 1) ? 1 : (valid_bits * valid_bits - 1);
|
valid_value = (valid_bits == 1) ? 1 : (valid_bits * valid_bits - 1);
|
||||||
|
|
||||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
|
||||||
NPI_PrintValue("\r\n keycode : 0x", keycode, 16);
|
|
||||||
NPI_PrintValue("\r\n bits : ", data->bits, 10);
|
|
||||||
NPI_PrintValue("\r\n valid bits : 0x", valid_value, 16);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (data->lsb == IRDA_LSB)
|
if (data->lsb == IRDA_LSB)
|
||||||
{
|
{
|
||||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
|
||||||
NPI_PrintString("\r\n endian : lsb");
|
|
||||||
#endif
|
|
||||||
for (i = 0; i < bit_num; i++)
|
for (i = 0; i < bit_num; i++)
|
||||||
{
|
{
|
||||||
value = (keycode >> (valid_bits * i)) & valid_value;
|
value = (keycode >> (valid_bits * i)) & valid_value;
|
||||||
@@ -417,9 +395,6 @@ static void process_decode_number(UINT8 keycode, irda_data_t *data, UINT8 valid_
|
|||||||
}
|
}
|
||||||
else if (data->lsb == IRDA_MSB)
|
else if (data->lsb == IRDA_MSB)
|
||||||
{
|
{
|
||||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
|
||||||
NPI_PrintString("\r\n endian : msb");
|
|
||||||
#endif
|
|
||||||
for (i = 0; i < bit_num; i++)
|
for (i = 0; i < bit_num; i++)
|
||||||
{
|
{
|
||||||
value = (keycode >> (data->bits - valid_bits * (i + 1))) & valid_value;
|
value = (keycode >> (data->bits - valid_bits * (i + 1))) & valid_value;
|
||||||
@@ -430,9 +405,6 @@ static void process_decode_number(UINT8 keycode, irda_data_t *data, UINT8 valid_
|
|||||||
|
|
||||||
static void convert_to_irda_time(UINT8 value, UINT16 *irda_time)
|
static void convert_to_irda_time(UINT8 value, UINT16 *irda_time)
|
||||||
{
|
{
|
||||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
|
||||||
NPI_PrintValue("\r\n replace value : 0x", value, 16);
|
|
||||||
#endif
|
|
||||||
switch (value)
|
switch (value)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user