update 2016-11-08 b2

1. optimized memory usage for PC
This commit is contained in:
strawmanbobi
2016-11-08 22:08:26 +08:00
parent 9a6d1f38f8
commit 717984e12b
4 changed files with 41 additions and 32 deletions

View File

@@ -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;

View 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)

View File

@@ -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");

View File

@@ -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: