foundation.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. /* Bluetooth Mesh */
  2. /*
  3. * SPDX-FileCopyrightText: 2017 Intel Corporation
  4. *
  5. * SPDX-License-Identifier: Apache-2.0
  6. */
  7. #ifndef _FOUNDATION_H_
  8. #define _FOUNDATION_H_
  9. #include "mesh/byteorder.h"
  10. #include "net.h"
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. #define OP_APP_KEY_ADD BLE_MESH_MODEL_OP_1(0x00)
  15. #define OP_APP_KEY_UPDATE BLE_MESH_MODEL_OP_1(0x01)
  16. #define OP_COMP_DATA_STATUS BLE_MESH_MODEL_OP_1(0x02)
  17. #define OP_MOD_PUB_SET BLE_MESH_MODEL_OP_1(0x03)
  18. #define OP_HEALTH_CURRENT_STATUS BLE_MESH_MODEL_OP_1(0x04)
  19. #define OP_HEALTH_FAULT_STATUS BLE_MESH_MODEL_OP_1(0x05)
  20. #define OP_HEARTBEAT_PUB_STATUS BLE_MESH_MODEL_OP_1(0x06)
  21. #define OP_APP_KEY_DEL BLE_MESH_MODEL_OP_2(0x80, 0x00)
  22. #define OP_APP_KEY_GET BLE_MESH_MODEL_OP_2(0x80, 0x01)
  23. #define OP_APP_KEY_LIST BLE_MESH_MODEL_OP_2(0x80, 0x02)
  24. #define OP_APP_KEY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x03)
  25. #define OP_ATTENTION_GET BLE_MESH_MODEL_OP_2(0x80, 0x04)
  26. #define OP_ATTENTION_SET BLE_MESH_MODEL_OP_2(0x80, 0x05)
  27. #define OP_ATTENTION_SET_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x06)
  28. #define OP_ATTENTION_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x07)
  29. #define OP_COMP_DATA_GET BLE_MESH_MODEL_OP_2(0x80, 0x08)
  30. #define OP_BEACON_GET BLE_MESH_MODEL_OP_2(0x80, 0x09)
  31. #define OP_BEACON_SET BLE_MESH_MODEL_OP_2(0x80, 0x0A)
  32. #define OP_BEACON_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x0B)
  33. #define OP_DEFAULT_TTL_GET BLE_MESH_MODEL_OP_2(0x80, 0x0C)
  34. #define OP_DEFAULT_TTL_SET BLE_MESH_MODEL_OP_2(0x80, 0x0D)
  35. #define OP_DEFAULT_TTL_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x0E)
  36. #define OP_FRIEND_GET BLE_MESH_MODEL_OP_2(0x80, 0x0F)
  37. #define OP_FRIEND_SET BLE_MESH_MODEL_OP_2(0x80, 0x10)
  38. #define OP_FRIEND_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x11)
  39. #define OP_GATT_PROXY_GET BLE_MESH_MODEL_OP_2(0x80, 0x12)
  40. #define OP_GATT_PROXY_SET BLE_MESH_MODEL_OP_2(0x80, 0x13)
  41. #define OP_GATT_PROXY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x14)
  42. #define OP_KRP_GET BLE_MESH_MODEL_OP_2(0x80, 0x15)
  43. #define OP_KRP_SET BLE_MESH_MODEL_OP_2(0x80, 0x16)
  44. #define OP_KRP_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x17)
  45. #define OP_MOD_PUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x18)
  46. #define OP_MOD_PUB_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x19)
  47. #define OP_MOD_PUB_VA_SET BLE_MESH_MODEL_OP_2(0x80, 0x1A)
  48. #define OP_MOD_SUB_ADD BLE_MESH_MODEL_OP_2(0x80, 0x1B)
  49. #define OP_MOD_SUB_DEL BLE_MESH_MODEL_OP_2(0x80, 0x1C)
  50. #define OP_MOD_SUB_DEL_ALL BLE_MESH_MODEL_OP_2(0x80, 0x1D)
  51. #define OP_MOD_SUB_OVERWRITE BLE_MESH_MODEL_OP_2(0x80, 0x1E)
  52. #define OP_MOD_SUB_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x1F)
  53. #define OP_MOD_SUB_VA_ADD BLE_MESH_MODEL_OP_2(0x80, 0x20)
  54. #define OP_MOD_SUB_VA_DEL BLE_MESH_MODEL_OP_2(0x80, 0x21)
  55. #define OP_MOD_SUB_VA_OVERWRITE BLE_MESH_MODEL_OP_2(0x80, 0x22)
  56. #define OP_NET_TRANSMIT_GET BLE_MESH_MODEL_OP_2(0x80, 0x23)
  57. #define OP_NET_TRANSMIT_SET BLE_MESH_MODEL_OP_2(0x80, 0x24)
  58. #define OP_NET_TRANSMIT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x25)
  59. #define OP_RELAY_GET BLE_MESH_MODEL_OP_2(0x80, 0x26)
  60. #define OP_RELAY_SET BLE_MESH_MODEL_OP_2(0x80, 0x27)
  61. #define OP_RELAY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x28)
  62. #define OP_MOD_SUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x29)
  63. #define OP_MOD_SUB_LIST BLE_MESH_MODEL_OP_2(0x80, 0x2A)
  64. #define OP_MOD_SUB_GET_VND BLE_MESH_MODEL_OP_2(0x80, 0x2B)
  65. #define OP_MOD_SUB_LIST_VND BLE_MESH_MODEL_OP_2(0x80, 0x2C)
  66. #define OP_LPN_TIMEOUT_GET BLE_MESH_MODEL_OP_2(0x80, 0x2D)
  67. #define OP_LPN_TIMEOUT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x2E)
  68. #define OP_HEALTH_FAULT_CLEAR BLE_MESH_MODEL_OP_2(0x80, 0x2F)
  69. #define OP_HEALTH_FAULT_CLEAR_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x30)
  70. #define OP_HEALTH_FAULT_GET BLE_MESH_MODEL_OP_2(0x80, 0x31)
  71. #define OP_HEALTH_FAULT_TEST BLE_MESH_MODEL_OP_2(0x80, 0x32)
  72. #define OP_HEALTH_FAULT_TEST_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x33)
  73. #define OP_HEALTH_PERIOD_GET BLE_MESH_MODEL_OP_2(0x80, 0x34)
  74. #define OP_HEALTH_PERIOD_SET BLE_MESH_MODEL_OP_2(0x80, 0x35)
  75. #define OP_HEALTH_PERIOD_SET_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x36)
  76. #define OP_HEALTH_PERIOD_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x37)
  77. #define OP_HEARTBEAT_PUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x38)
  78. #define OP_HEARTBEAT_PUB_SET BLE_MESH_MODEL_OP_2(0x80, 0x39)
  79. #define OP_HEARTBEAT_SUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x3A)
  80. #define OP_HEARTBEAT_SUB_SET BLE_MESH_MODEL_OP_2(0x80, 0x3B)
  81. #define OP_HEARTBEAT_SUB_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x3C)
  82. #define OP_MOD_APP_BIND BLE_MESH_MODEL_OP_2(0x80, 0x3D)
  83. #define OP_MOD_APP_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x3E)
  84. #define OP_MOD_APP_UNBIND BLE_MESH_MODEL_OP_2(0x80, 0x3F)
  85. #define OP_NET_KEY_ADD BLE_MESH_MODEL_OP_2(0x80, 0x40)
  86. #define OP_NET_KEY_DEL BLE_MESH_MODEL_OP_2(0x80, 0x41)
  87. #define OP_NET_KEY_GET BLE_MESH_MODEL_OP_2(0x80, 0x42)
  88. #define OP_NET_KEY_LIST BLE_MESH_MODEL_OP_2(0x80, 0x43)
  89. #define OP_NET_KEY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x44)
  90. #define OP_NET_KEY_UPDATE BLE_MESH_MODEL_OP_2(0x80, 0x45)
  91. #define OP_NODE_IDENTITY_GET BLE_MESH_MODEL_OP_2(0x80, 0x46)
  92. #define OP_NODE_IDENTITY_SET BLE_MESH_MODEL_OP_2(0x80, 0x47)
  93. #define OP_NODE_IDENTITY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x48)
  94. #define OP_NODE_RESET BLE_MESH_MODEL_OP_2(0x80, 0x49)
  95. #define OP_NODE_RESET_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x4A)
  96. #define OP_SIG_MOD_APP_GET BLE_MESH_MODEL_OP_2(0x80, 0x4B)
  97. #define OP_SIG_MOD_APP_LIST BLE_MESH_MODEL_OP_2(0x80, 0x4C)
  98. #define OP_VND_MOD_APP_GET BLE_MESH_MODEL_OP_2(0x80, 0x4D)
  99. #define OP_VND_MOD_APP_LIST BLE_MESH_MODEL_OP_2(0x80, 0x4E)
  100. #define OP_REMOTE_PROV_SCAN_CAPS_GET BLE_MESH_MODEL_OP_2(0x80, 0x4F)
  101. #define OP_REMOTE_PROV_SCAN_CAPS_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x50)
  102. #define OP_REMOTE_PROV_SCAN_GET BLE_MESH_MODEL_OP_2(0x80, 0x51)
  103. #define OP_REMOTE_PROV_SCAN_START BLE_MESH_MODEL_OP_2(0x80, 0x52)
  104. #define OP_REMOTE_PROV_SCAN_STOP BLE_MESH_MODEL_OP_2(0x80, 0x53)
  105. #define OP_REMOTE_PROV_SCAN_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x54)
  106. #define OP_REMOTE_PROV_SCAN_REPORT BLE_MESH_MODEL_OP_2(0x80, 0x55)
  107. #define OP_REMOTE_PROV_EXTENDED_SCAN_START BLE_MESH_MODEL_OP_2(0x80, 0x56)
  108. #define OP_REMOTE_PROV_EXTENDED_SCAN_REPORT BLE_MESH_MODEL_OP_2(0x80, 0x57)
  109. #define OP_REMOTE_PROV_LINK_GET BLE_MESH_MODEL_OP_2(0x80, 0x58)
  110. #define OP_REMOTE_PROV_LINK_OPEN BLE_MESH_MODEL_OP_2(0x80, 0x59)
  111. #define OP_REMOTE_PROV_LINK_CLOSE BLE_MESH_MODEL_OP_2(0x80, 0x5A)
  112. #define OP_REMOTE_PROV_LINK_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x5B)
  113. #define OP_REMOTE_PROV_LINK_REPORT BLE_MESH_MODEL_OP_2(0x80, 0x5C)
  114. #define OP_REMOTE_PROV_PDU_SEND BLE_MESH_MODEL_OP_2(0x80, 0x5D)
  115. #define OP_REMOTE_PROV_PDU_OUTBOUND_REPORT BLE_MESH_MODEL_OP_2(0x80, 0x5E)
  116. #define OP_REMOTE_PROV_PDU_REPORT BLE_MESH_MODEL_OP_2(0x80, 0x5F)
  117. #define OP_DIRECTED_CONTROL_GET BLE_MESH_MODEL_OP_2(0x80, 0x7B)
  118. #define OP_DIRECTED_CONTROL_SET BLE_MESH_MODEL_OP_2(0x80, 0x7C)
  119. #define OP_DIRECTED_CONTROL_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x7D)
  120. #define OP_PATH_METRIC_GET BLE_MESH_MODEL_OP_2(0x80, 0x7E)
  121. #define OP_PATH_METRIC_SET BLE_MESH_MODEL_OP_2(0x80, 0x7F)
  122. #define OP_PATH_METRIC_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x80)
  123. #define OP_DISCOVERY_TABLE_CAPS_GET BLE_MESH_MODEL_OP_2(0x80, 0x81)
  124. #define OP_DISCOVERY_TABLE_CAPS_SET BLE_MESH_MODEL_OP_2(0x80, 0x82)
  125. #define OP_DISCOVERY_TABLE_CAPS_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x83)
  126. #define OP_FORWARDING_TABLE_ADD BLE_MESH_MODEL_OP_2(0x80, 0x84)
  127. #define OP_FORWARDING_TABLE_DEL BLE_MESH_MODEL_OP_2(0x80, 0x85)
  128. #define OP_FORWARDING_TABLE_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x86)
  129. #define OP_FORWARDING_TABLE_DEPS_ADD BLE_MESH_MODEL_OP_2(0x80, 0x87)
  130. #define OP_FORWARDING_TABLE_DEPS_DEL BLE_MESH_MODEL_OP_2(0x80, 0x88)
  131. #define OP_FORWARDING_TABLE_DEPS_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x89)
  132. #define OP_FORWARDING_TABLE_DEPS_GET BLE_MESH_MODEL_OP_2(0x80, 0x8A)
  133. #define OP_FORWARDING_TABLE_DEPS_GET_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x8B)
  134. #define OP_FORWARDING_TABLE_ENTRIES_CNT_GET BLE_MESH_MODEL_OP_2(0x80, 0x8C)
  135. #define OP_FORWARDING_TABLE_ENTRIES_CNT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x8D)
  136. #define OP_FORWARDING_TABLE_ENTRIES_GET BLE_MESH_MODEL_OP_2(0x80, 0x8E)
  137. #define OP_FORWARDING_TABLE_ENTRIES_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x8F)
  138. #define OP_WANTED_LANES_GET BLE_MESH_MODEL_OP_2(0x80, 0x90)
  139. #define OP_WANTED_LANES_SET BLE_MESH_MODEL_OP_2(0x80, 0x91)
  140. #define OP_WANTED_LANES_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x92)
  141. #define OP_TWO_WAY_PATH_GET BLE_MESH_MODEL_OP_2(0x80, 0x93)
  142. #define OP_TWO_WAY_PATH_SET BLE_MESH_MODEL_OP_2(0x80, 0x94)
  143. #define OP_TWO_WAY_PATH_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x95)
  144. #define OP_PATH_ECHO_INTERVAL_GET BLE_MESH_MODEL_OP_2(0x80, 0x96)
  145. #define OP_PATH_ECHO_INTERVAL_SET BLE_MESH_MODEL_OP_2(0x80, 0x97)
  146. #define OP_PATH_ECHO_INTERVAL_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x98)
  147. #define OP_DIRECTED_NET_TRANSMIT_GET BLE_MESH_MODEL_OP_2(0x80, 0x99)
  148. #define OP_DIRECTED_NET_TRANSMIT_SET BLE_MESH_MODEL_OP_2(0x80, 0x9A)
  149. #define OP_DIRECTED_NET_TRANSMIT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x9B)
  150. #define OP_DIRECTED_RELAY_RETRANSMIT_GET BLE_MESH_MODEL_OP_2(0x80, 0x9C)
  151. #define OP_DIRECTED_RELAY_RETRANSMIT_SET BLE_MESH_MODEL_OP_2(0x80, 0x9D)
  152. #define OP_DIRECTED_RELAY_RETRANSMIT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x9E)
  153. #define OP_RSSI_THRESHOLD_GET BLE_MESH_MODEL_OP_2(0x80, 0x9F)
  154. #define OP_RSSI_THRESHOLD_SET BLE_MESH_MODEL_OP_2(0x80, 0xA0)
  155. #define OP_RSSI_THRESHOLD_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xA1)
  156. #define OP_DIRECTED_PATHS_GET BLE_MESH_MODEL_OP_2(0x80, 0xA2)
  157. #define OP_DIRECTED_PATHS_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xA3)
  158. #define OP_DIRECTED_PUB_POLICY_GET BLE_MESH_MODEL_OP_2(0x80, 0xA4)
  159. #define OP_DIRECTED_PUB_POLICY_SET BLE_MESH_MODEL_OP_2(0x80, 0xA5)
  160. #define OP_DIRECTED_PUB_POLICY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xA6)
  161. #define OP_PATH_DISCOVERY_TIMING_CTL_GET BLE_MESH_MODEL_OP_2(0x80, 0xA7)
  162. #define OP_PATH_DISCOVERY_TIMING_CTL_SET BLE_MESH_MODEL_OP_2(0x80, 0xA8)
  163. #define OP_PATH_DISCOVERY_TIMING_CTL_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xA9)
  164. #define OP_DIRECTED_CTL_NET_TRANSMIT_GET BLE_MESH_MODEL_OP_2(0x80, 0xAB)
  165. #define OP_DIRECTED_CTL_NET_TRANSMIT_SET BLE_MESH_MODEL_OP_2(0x80, 0xAC)
  166. #define OP_DIRECTED_CTL_NET_TRANSMIT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xAD)
  167. #define OP_DIRECTED_CTL_RELAY_RETRANSMIT_GET BLE_MESH_MODEL_OP_2(0x80, 0xAE)
  168. #define OP_DIRECTED_CTL_RELAY_RETRANSMIT_SET BLE_MESH_MODEL_OP_2(0x80, 0xAF)
  169. #define OP_DIRECTED_CTL_RELAY_RETRANSMIT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xB0)
  170. #define OP_SUBNET_BRIDGE_GET BLE_MESH_MODEL_OP_2(0x80, 0xB1)
  171. #define OP_SUBNET_BRIDGE_SET BLE_MESH_MODEL_OP_2(0x80, 0xB2)
  172. #define OP_SUBNET_BRIDGE_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xB3)
  173. #define OP_BRIDGING_TABLE_ADD BLE_MESH_MODEL_OP_2(0x80, 0xB4)
  174. #define OP_BRIDGING_TABLE_REMOVE BLE_MESH_MODEL_OP_2(0x80, 0xB5)
  175. #define OP_BRIDGING_TABLE_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xB6)
  176. #define OP_BRIDGED_SUBNETS_GET BLE_MESH_MODEL_OP_2(0x80, 0xB7)
  177. #define OP_BRIDGED_SUBNETS_LIST BLE_MESH_MODEL_OP_2(0x80, 0xB8)
  178. #define OP_BRIDGING_TABLE_GET BLE_MESH_MODEL_OP_2(0x80, 0xB9)
  179. #define OP_BRIDGING_TABLE_LIST BLE_MESH_MODEL_OP_2(0x80, 0xBA)
  180. #define OP_BRIDGING_TABLE_SIZE_GET BLE_MESH_MODEL_OP_2(0x80, 0xBB)
  181. #define OP_BRIDGING_TABLE_SIZE_STATUS BLE_MESH_MODEL_OP_2(0x80, 0xBC)
  182. #define OP_PRIVATE_BEACON_GET BLE_MESH_MODEL_OP_2(0x80, 0x60)
  183. #define OP_PRIVATE_BEACON_SET BLE_MESH_MODEL_OP_2(0x80, 0x61)
  184. #define OP_PRIVATE_BEACON_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x62)
  185. #define OP_PRIVATE_GATT_PROXY_GET BLE_MESH_MODEL_OP_2(0x80, 0x63)
  186. #define OP_PRIVATE_GATT_PROXY_SET BLE_MESH_MODEL_OP_2(0x80, 0x64)
  187. #define OP_PRIVATE_GATT_PROXY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x65)
  188. #define OP_PRIVATE_NODE_IDENTITY_GET BLE_MESH_MODEL_OP_2(0x80, 0x66)
  189. #define OP_PRIVATE_NODE_IDENTITY_SET BLE_MESH_MODEL_OP_2(0x80, 0x67)
  190. #define OP_PRIVATE_NODE_IDENTITY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x68)
  191. #define OP_ON_DEMAND_PRIVATE_PROXY_GET BLE_MESH_MODEL_OP_2(0x80, 0x69)
  192. #define OP_ON_DEMAND_PRIVATE_PROXY_SET BLE_MESH_MODEL_OP_2(0x80, 0x6A)
  193. #define OP_ON_DEMAND_PRIVATE_PROXY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x6B)
  194. #define OP_SAR_TRANSMITTER_GET BLE_MESH_MODEL_OP_2(0x80, 0x6C)
  195. #define OP_SAR_TRANSMITTER_SET BLE_MESH_MODEL_OP_2(0x80, 0x6D)
  196. #define OP_SAR_TRANSMITTER_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x6E)
  197. #define OP_SAR_RECEIVER_GET BLE_MESH_MODEL_OP_2(0x80, 0x6F)
  198. #define OP_SAR_RECEIVER_SET BLE_MESH_MODEL_OP_2(0x80, 0x70)
  199. #define OP_SAR_RECEIVER_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x71)
  200. #define OP_OPCODES_AGG_SEQUENCE BLE_MESH_MODEL_OP_2(0x80, 0x72)
  201. #define OP_OPCODES_AGG_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x73)
  202. #define OP_LARGE_COMP_DATA_GET BLE_MESH_MODEL_OP_2(0x80, 0x74)
  203. #define OP_LARGE_COMP_DATA_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x75)
  204. #define OP_MODELS_METADATA_GET BLE_MESH_MODEL_OP_2(0x80, 0x76)
  205. #define OP_MODELS_METADATA_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x77)
  206. #define OP_SOLIC_PDU_RPL_ITEMS_CLEAR BLE_MESH_MODEL_OP_2(0x80, 0x78)
  207. #define OP_SOLIC_PDU_RPL_ITEMS_CLEAR_UNACK BLE_MESH_MODEL_OP_2(0x80, 0x79)
  208. #define OP_SOLIC_PDU_RPL_ITEMS_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x7A)
  209. #define STATUS_SUCCESS 0x00
  210. #define STATUS_INVALID_ADDRESS 0x01
  211. #define STATUS_INVALID_MODEL 0x02
  212. #define STATUS_INVALID_APPKEY 0x03
  213. #define STATUS_INVALID_NETKEY 0x04
  214. #define STATUS_INSUFF_RESOURCES 0x05
  215. #define STATUS_IDX_ALREADY_STORED 0x06
  216. #define STATUS_NVAL_PUB_PARAM 0x07
  217. #define STATUS_NOT_SUB_MOD 0x08
  218. #define STATUS_STORAGE_FAIL 0x09
  219. #define STATUS_FEAT_NOT_SUPP 0x0A
  220. #define STATUS_CANNOT_UPDATE 0x0B
  221. #define STATUS_CANNOT_REMOVE 0x0C
  222. #define STATUS_CANNOT_BIND 0x0D
  223. #define STATUS_TEMP_STATE_CHG_FAIL 0x0E
  224. #define STATUS_CANNOT_SET 0x0F
  225. #define STATUS_UNSPECIFIED 0x10
  226. #define STATUS_INVALID_BINDING 0x11
  227. #define STATUS_INVALID_PATH_ENTRY 0x12
  228. #define STATUS_CANNOT_GET 0x13
  229. #define STATUS_OBSOLETE_INFO 0x14
  230. #define STATUS_INVALID_BEARER 0x15
  231. /* Defines the status codes for Opcodes Aggregator messages. */
  232. #define AGG_STATUS_SUCCESS 0x00
  233. #define AGG_STATUS_INVALID_ADDRESS 0x01
  234. #define AGG_STATUS_WRONG_ACCESS_KEY 0x02
  235. #define AGG_STATUS_WRONG_OPCODE 0x03
  236. #define AGG_STATUS_MSG_NOT_UNDERSTOOD 0x04
  237. #define AGG_STATUS_RESPONSE_OVERFLOW 0x05
  238. enum {
  239. BLE_MESH_VA_CHANGED, /* Label information changed */
  240. };
  241. struct label {
  242. uint16_t ref;
  243. uint16_t addr;
  244. uint8_t uuid[16];
  245. bt_mesh_atomic_t flags[1];
  246. };
  247. void bt_mesh_mod_sub_reset(bool store);
  248. void bt_mesh_cfg_reset(bool store);
  249. void bt_mesh_attention(struct bt_mesh_model *model, uint8_t time);
  250. struct label *get_label(uint16_t index);
  251. uint8_t *bt_mesh_label_uuid_get(uint16_t addr);
  252. struct bt_mesh_hb_pub *bt_mesh_hb_pub_get(void);
  253. void bt_mesh_hb_pub_disable(void);
  254. struct bt_mesh_cfg_srv *bt_mesh_cfg_get(void);
  255. uint8_t bt_mesh_net_transmit_get(void);
  256. uint8_t bt_mesh_relay_get(void);
  257. uint8_t bt_mesh_friend_get(void);
  258. uint8_t bt_mesh_relay_retransmit_get(void);
  259. uint8_t bt_mesh_secure_beacon_get(void);
  260. uint8_t bt_mesh_gatt_proxy_get(void);
  261. uint8_t bt_mesh_default_ttl_get(void);
  262. void bt_mesh_subnet_del(struct bt_mesh_subnet *sub, bool store);
  263. struct bt_mesh_app_key *bt_mesh_app_key_alloc(uint16_t app_idx);
  264. void bt_mesh_app_key_del(struct bt_mesh_app_key *key, bool store);
  265. static inline void key_idx_pack(struct net_buf_simple *buf,
  266. uint16_t idx1, uint16_t idx2)
  267. {
  268. net_buf_simple_add_le16(buf, idx1 | ((idx2 & 0x00f) << 12));
  269. net_buf_simple_add_u8(buf, idx2 >> 4);
  270. }
  271. static inline void key_idx_unpack(struct net_buf_simple *buf,
  272. uint16_t *idx1, uint16_t *idx2)
  273. {
  274. *idx1 = sys_get_le16(&buf->data[0]) & 0xfff;
  275. *idx2 = sys_get_le16(&buf->data[1]) >> 4;
  276. net_buf_simple_pull(buf, 3);
  277. }
  278. #ifdef __cplusplus
  279. }
  280. #endif
  281. #endif /* _FOUNDATION_H_ */