transaction_id_define.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. #include "compiler_support.h"
  18. #if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
  19. # define SPLIT_TRANSACTION_RPC
  20. #endif
  21. enum serial_transaction_id {
  22. #ifdef USE_I2C
  23. I2C_EXECUTE_CALLBACK,
  24. #endif // USE_I2C
  25. GET_SLAVE_MATRIX_CHECKSUM,
  26. GET_SLAVE_MATRIX_DATA,
  27. #ifdef SPLIT_TRANSPORT_MIRROR
  28. PUT_MASTER_MATRIX,
  29. #endif // SPLIT_TRANSPORT_MIRROR
  30. #ifdef ENCODER_ENABLE
  31. GET_ENCODERS_CHECKSUM,
  32. GET_ENCODERS_DATA,
  33. CMD_ENCODER_DRAIN,
  34. #endif // ENCODER_ENABLE
  35. #ifndef DISABLE_SYNC_TIMER
  36. PUT_SYNC_TIMER,
  37. #endif // DISABLE_SYNC_TIMER
  38. #if !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE)
  39. PUT_LAYER_STATE,
  40. PUT_DEFAULT_LAYER_STATE,
  41. #endif // !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE)
  42. #ifdef SPLIT_LED_STATE_ENABLE
  43. PUT_LED_STATE,
  44. #endif // SPLIT_LED_STATE_ENABLE
  45. #ifdef SPLIT_MODS_ENABLE
  46. PUT_MODS,
  47. #endif // SPLIT_MODS_ENABLE
  48. #ifdef BACKLIGHT_ENABLE
  49. PUT_BACKLIGHT,
  50. #endif // BACKLIGHT_ENABLE
  51. #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
  52. PUT_RGBLIGHT,
  53. #endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
  54. #if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
  55. PUT_LED_MATRIX,
  56. #endif // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
  57. #if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
  58. PUT_RGB_MATRIX,
  59. #endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
  60. #if defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
  61. PUT_WPM,
  62. #endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
  63. #if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
  64. PUT_OLED,
  65. #endif // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
  66. #if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
  67. PUT_ST7565,
  68. #endif // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
  69. #if defined(POINTING_DEVICE_ENABLE) && defined(SPLIT_POINTING_ENABLE)
  70. GET_POINTING_CHECKSUM,
  71. GET_POINTING_DATA,
  72. PUT_POINTING_CPI,
  73. #endif // defined(POINTING_DEVICE_ENABLE) && defined(SPLIT_POINTING_ENABLE)
  74. #if defined(SPLIT_WATCHDOG_ENABLE)
  75. PUT_WATCHDOG,
  76. #endif // defined(SPLIT_WATCHDOG_ENABLE)
  77. #if defined(HAPTIC_ENABLE) && defined(SPLIT_HAPTIC_ENABLE)
  78. PUT_HAPTIC,
  79. #endif // defined(HAPTIC_ENABLE) && defined(SPLIT_HAPTIC_ENABLE)
  80. #if defined(SPLIT_ACTIVITY_ENABLE)
  81. PUT_ACTIVITY,
  82. #endif // SPLIT_ACTIVITY_ENABLE
  83. #if defined(SPLIT_TRANSACTION_RPC)
  84. PUT_RPC_INFO,
  85. PUT_RPC_REQ_DATA,
  86. EXECUTE_RPC,
  87. GET_RPC_RESP_DATA,
  88. #endif // defined(SPLIT_TRANSACTION_RPC)
  89. // keyboard-specific
  90. #ifdef SPLIT_TRANSACTION_IDS_KB
  91. SPLIT_TRANSACTION_IDS_KB,
  92. #endif // SPLIT_TRANSACTION_IDS_KB
  93. // user/keymap-specific
  94. #ifdef SPLIT_TRANSACTION_IDS_USER
  95. SPLIT_TRANSACTION_IDS_USER,
  96. #endif // SPLIT_TRANSACTION_IDS_USER
  97. // community module specific
  98. #ifdef COMMUNITY_MODULES_ENABLE
  99. # include "split_transaction_id_community_modules.inc"
  100. #endif // COMMUNITY_MODULES_ENABLE
  101. #if defined(OS_DETECTION_ENABLE) && defined(SPLIT_DETECTED_OS_ENABLE)
  102. PUT_DETECTED_OS,
  103. #endif // defined(OS_DETECTION_ENABLE) && defined(SPLIT_DETECTED_OS_ENABLE)
  104. NUM_TOTAL_TRANSACTIONS
  105. };
  106. // Ensure we only use 5 bits for transaction
  107. STATIC_ASSERT(NUM_TOTAL_TRANSACTIONS <= (1 << 5), "Max number of usable transactions exceeded");