📄 input.c
字号:
} else if (bIRINT & IR_INT_REPEAT) //repeat code { bData = (BYTE)(dwData & 0x000000ff);#ifdef SHOW_IR_MAP printf("IR Repeat Code = %2x\n", bData);#endif bIRstage = IR_INT_REPEAT; } else //IR_INT_INVALID { bData = 0xFF; bIRstage = IR_STAGE_IDLE; } } if ( bData < _IRInfo.bIRMapSize) { return _IRInfo.aIRMap[bData]; } else { return KEY_NO_KEY; }/* Alan2.05 if ( bData < (sizeof(aIRMap)/sizeof(BYTE)) ) return aIRMap[bData]; else return KEY_NO_KEY;*/}#endif // #if (IR_CODE_TYPE == HW_NEC)#if (IR_CODE_TYPE == SW_KONKA)VOID INPUT_SW_IR_Detect(VOID){ #define FALLING_EDGE 0x00000020 #define RISING_EDGE 0x00000010 extern cyg_handle_t __ClockHandle; DWORD dwTemp; DWORD dwTemp1; // get the system timer when enter interrupt dwTemp= (DWORD) cyg_counter_current_value(__ClockHandle); //UTL_GetSysTimer(); // printf("sys timer=%lx \n", dwTemp); //dwTemp1 = (dwTemp-_dwTimeISRKeyPrev2); dwTemp1 = REG_PLAT_IR_COUNTER; switch(bIRStep) { case 0: if(REG_PLAT_IR_STATUS & RISING_EDGE) //rising todo break; else goto INVALID_IR; case 1: if((dwTemp-_dwTimeISRKeyPrev2)==3 && (REG_PLAT_IR_STATUS & FALLING_EDGE)) break; else goto INVALID_IR; case 2: if((dwTemp-_dwTimeISRKeyPrev2)==3 &&(REG_PLAT_IR_STATUS & RISING_EDGE)) break; else goto INVALID_IR; case 3: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // customer code MSB 8 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x80; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x80; } else goto INVALID_IR; break; case 4: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 7 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x40; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x40; } else goto INVALID_IR; // or break? break; case 5: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 6 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x20; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x20; } else goto INVALID_IR; // or break? break; case 6: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 5 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x10; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x10; } else goto INVALID_IR; // or break? break; case 7: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 4 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x08; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x08; } else goto INVALID_IR; // or break? break; case 8: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 3 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x04; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x04; } else goto INVALID_IR; // or break? break; case 9: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 2 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x02; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x02; } else goto INVALID_IR; // or break? break; case 10: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 1 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { _bCustomerCode &= ~0x01; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { _bCustomerCode |= 0x01; } else goto INVALID_IR; // or break? break; case 11: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 8 data code start return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { bDataCode&= ~0x80; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { bDataCode|= 0x80; } else goto INVALID_IR; // or break? break; case 12: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 7 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { bDataCode&= ~0x40; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { bDataCode|= 0x40; } else goto INVALID_IR; // or break? break; case 13: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 6 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { bDataCode&= ~0x20; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { bDataCode|= 0x20; } else goto INVALID_IR; // or break? break; case 14: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 5 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { bDataCode&= ~0x10; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { bDataCode|= 0x10; } else goto INVALID_IR; // or break? break; case 15: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 4 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { bDataCode&= ~0x08; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { bDataCode|= 0x08; } else goto INVALID_IR; // or break? break; case 16: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 3 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { bDataCode&= ~0x04; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { bDataCode|= 0x04; } else goto INVALID_IR; // or break? break; case 17: if(REG_PLAT_IR_STATUS & FALLING_EDGE) // 2 return; if((dwTemp-_dwTimeISRKeyPrev2)==2) // it is 0 { bDataCode&= ~0x02; } else if((dwTemp-_dwTimeISRKeyPrev2)==3) // it is 1 { bDataCode|= 0x02; } else goto INVALID_IR; // or break?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -