irkey.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "include.h"
  2. #if IRKEY_EN
  3. typedef struct {
  4. uint8_t key_val;
  5. bool state;
  6. } irkey_t;
  7. static irkey_t irkey AT(.bss.irkey.cb);
  8. //AT(.com_rodata.bb)
  9. //const char str_irkey_cb[] = "irkey: %04x,%04x, %02x\n";
  10. AT(.com_text.irkey)
  11. void ir_rx_press_cb(uint16_t addr, uint16_t cmd)
  12. {
  13. u8 key_val = NO_KEY;
  14. #if IR_ADDR_FF00_EN
  15. if (addr == IR_ADDR_FF00) {
  16. key_val = ir_tbl_FF00[cmd & 0xff];
  17. }
  18. #endif // IR_ADDR_FF00_EN
  19. #if IR_ADDR_BF00_EN
  20. if (addr == IR_ADDR_BF00) {
  21. key_val = ir_tbl_BF00[cmd & 0xff];
  22. }
  23. #endif // IR_ADDR_BF00_EN
  24. #if IR_ADDR_FD02_EN
  25. if (addr == IR_ADDR_FD02) {
  26. key_val = ir_tbl_FD02[cmd & 0xff];
  27. }
  28. #endif // IR_ADDR_FD02_EN
  29. #if IR_ADDR_FE01_EN
  30. if (addr == IR_ADDR_FE01) {
  31. key_val = ir_tbl_FE01[cmd & 0xff];
  32. }
  33. #endif // IR_ADDR_FE01_EN
  34. #if IR_ADDR_7F80_EN
  35. if (addr == IR_ADDR_7F80) {
  36. key_val = ir_tbl_7F80[cmd & 0xff];
  37. }
  38. #endif
  39. irkey.state = true;
  40. irkey.key_val = key_val;
  41. // printf(str_irkey_cb, addr, cmd, key_val);
  42. }
  43. AT(.com_text.irkey)
  44. void ir_rx_release_cb(void)
  45. {
  46. irkey.state = false;
  47. }
  48. AT(.com_text.irkey)
  49. uint8_t irkey_get_val(void)
  50. {
  51. if (irkey.state) {
  52. return irkey.key_val;
  53. }
  54. return NO_KEY;
  55. }
  56. void irkey_clr_state(void)
  57. {
  58. irkey.state = false;
  59. }
  60. void irkey_init(void)
  61. {
  62. irkey.state = false;
  63. bsp_irrx_init();
  64. }
  65. #endif // IRKEY_EN