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
|
||||
};
|
||||
|
||||
#if defined BOARD_PC
|
||||
void free_pirda(void);
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////// Air Conditioner Begin /////////////////////////////////////////////////
|
||||
|
||||
INT8 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;
|
||||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
// no need to verify return value
|
||||
irda_context_init();
|
||||
|
||||
if (IR_DECODE_FAILED == irda_ac_lib_parse())
|
||||
{
|
||||
IR_PRINTF("\nac lib parse failed\n");
|
||||
|
||||
@@ -39,18 +39,14 @@ Revision log:
|
||||
/**************************************************************************************************
|
||||
* LOCAL DATA TYPES
|
||||
**************************************************************************************************/
|
||||
#if defined BOARD_FREE_RTOS
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct buffer
|
||||
{
|
||||
UINT8 *data;
|
||||
UINT16 len;
|
||||
UINT16 offset;
|
||||
} irda_file;
|
||||
#if defined BOARD_FREE_RTOS
|
||||
#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 (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'
|
||||
}
|
||||
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'
|
||||
}
|
||||
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',
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
#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 (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
||||
NPI_PrintString("\r\n endian : lsb");
|
||||
#endif
|
||||
for (i = 0; i < bit_num; i++)
|
||||
{
|
||||
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)
|
||||
{
|
||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
||||
NPI_PrintString("\r\n endian : msb");
|
||||
#endif
|
||||
for (i = 0; i < bit_num; i++)
|
||||
{
|
||||
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)
|
||||
{
|
||||
#if (defined BOARD_EMBEDDED) && (PRINT_IRDA_DATA == TRUE)
|
||||
NPI_PrintValue("\r\n replace value : 0x", value, 16);
|
||||
#endif
|
||||
switch (value)
|
||||
{
|
||||
case 0:
|
||||
|
||||
Reference in New Issue
Block a user