transaction_id_define.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /* Copyright 2021 QMK
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #pragma once
  17. enum serial_transaction_id {
  18. #ifdef USE_I2C
  19. I2C_EXECUTE_CALLBACK,
  20. #endif // USE_I2C
  21. GET_SLAVE_MATRIX_CHECKSUM,
  22. GET_SLAVE_MATRIX_DATA,
  23. #ifdef SPLIT_TRANSPORT_MIRROR
  24. PUT_MASTER_MATRIX,
  25. #endif // SPLIT_TRANSPORT_MIRROR
  26. #ifdef ENCODER_ENABLE
  27. GET_ENCODERS_CHECKSUM,
  28. GET_ENCODERS_DATA,
  29. #endif // ENCODER_ENABLE
  30. #ifndef DISABLE_SYNC_TIMER
  31. PUT_SYNC_TIMER,
  32. #endif // DISABLE_SYNC_TIMER
  33. #if !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE)
  34. PUT_LAYER_STATE,
  35. PUT_DEFAULT_LAYER_STATE,
  36. #endif // !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE)
  37. #ifdef SPLIT_LED_STATE_ENABLE
  38. PUT_LED_STATE,
  39. #endif // SPLIT_LED_STATE_ENABLE
  40. #ifdef SPLIT_MODS_ENABLE
  41. PUT_MODS,
  42. #endif // SPLIT_MODS_ENABLE
  43. #ifdef BACKLIGHT_ENABLE
  44. PUT_BACKLIGHT,
  45. #endif // BACKLIGHT_ENABLE
  46. #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
  47. PUT_RGBLIGHT,
  48. #endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
  49. #if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
  50. PUT_LED_MATRIX,
  51. #endif // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
  52. #if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
  53. PUT_RGB_MATRIX,
  54. #endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
  55. #if defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
  56. PUT_WPM,
  57. #endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
  58. #if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
  59. PUT_OLED,
  60. #endif // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
  61. #if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
  62. PUT_ST7565,
  63. #endif // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
  64. #if defined(POINTING_DEVICE_ENABLE) && defined(SPLIT_POINTING_ENABLE)
  65. GET_POINTING_CHECKSUM,
  66. GET_POINTING_DATA,
  67. PUT_POINTING_CPI,
  68. #endif // defined(POINTING_DEVICE_ENABLE) && defined(SPLIT_POINTING_ENABLE)
  69. #if defined(SPLIT_WATCHDOG_ENABLE)
  70. PUT_WATCHDOG,
  71. #endif // defined(SPLIT_WATCHDOG_ENABLE)
  72. #if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
  73. PUT_RPC_INFO,
  74. PUT_RPC_REQ_DATA,
  75. EXECUTE_RPC,
  76. GET_RPC_RESP_DATA,
  77. #endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
  78. // keyboard-specific
  79. #ifdef SPLIT_TRANSACTION_IDS_KB
  80. SPLIT_TRANSACTION_IDS_KB,
  81. #endif // SPLIT_TRANSACTION_IDS_KB
  82. // user/keymap-specific
  83. #ifdef SPLIT_TRANSACTION_IDS_USER
  84. SPLIT_TRANSACTION_IDS_USER,
  85. #endif // SPLIT_TRANSACTION_IDS_USER
  86. NUM_TOTAL_TRANSACTIONS
  87. };
  88. // Ensure we only use 5 bits for transaction
  89. _Static_assert(NUM_TOTAL_TRANSACTIONS <= (1 << 5), "Max number of usable transactions exceeded");