VOID Trace(TRACE trace, VOID *v) { for (BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl = BBL_Next(bbl)) { BasicBlockTrace(trace, bbl); for (INS ins = BBL_InsHead(bbl); INS_Valid(ins); ins = INS_Next(ins)) { CallTrace(trace, ins); MemoryTrace(trace, ins); } } }
/******************************************************************************* * Function Name : SendKey * Description : Send key to key processing proc. * Input : None * Output : None * Return : None *******************************************************************************/ void SendKey(u8 key) { key_proc_req_t *p_req = NULL; p_req = (key_proc_req_t*)Malloc(&g_SystemHeap,8); if( p_req != NULL) { p_req->cmd = KEY_CMD_IR_INPUT; p_req->key_msg.key_modifier = 0; p_req->key_msg.key_val = key; KeyProc_QPut((u8*)p_req); } else { CallTrace(TRACE_APP_LOW,"Remocon: Memory alloc fail !\n\r"); } }
/******************************************************************************* * Function Name : IRemoCon_ISR * Description : process IR remocon received pulse . * Input : None * Output : None * Return : None *******************************************************************************/ void IRemoCon_ISR() { // CallTrace(TRACE_DRV_HIGH, "IRemoCon_ISR %d %d\n\r",state,ir_count_100us); switch(state) { case lead : // between falling edge (8.5ms~9.5ms) // then, lead code!!! while((ir_count_100us >= 85) && (ir_count_100us < 95)){ state = code; bit_count = 0; temp = 0; CallTrace(TRACE_DRV_HIGH, "IRemoCon lead %d\n\r",ir_count_100us); break; } case code : if((ir_count_100us < 15)){ // dummy time }else if((ir_count_100us >= 20) && (ir_count_100us < 25)) // between falling edge (2ms~2.5ms) temp |= 0x80; // then, code is one(1)!!! else{ state = lead; break; } bit_count++; if(!(bit_count % 8)) { data[(bit_count / 8) - 1] = temp; temp = 0; if(bit_count >= 32) { state = lead; bit_count = 0; flag = 1; //CallTrace(TRACE_DRV_HIGH, "IRemoCon custom code:0x%02x%02x data:0x%02x%02x\n\r",data[0],data[1],data[2],data[3]); if(CustomCode1==data[0] && CustomCode2==data[1]) SendKey(Conv_Key(data[2])); } } temp = temp >> 1; break; default: state = lead; break; } ir_count_100us = 0; }