mesh-defs.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /* SPDX-License-Identifier: LGPL-2.1-or-later */
  2. /*
  3. *
  4. * BlueZ - Bluetooth protocol stack for Linux
  5. *
  6. * Copyright (C) 2018-2019 Intel Corporation. All rights reserved.
  7. *
  8. *
  9. */
  10. #define MESH_AD_TYPE_PROVISION 0x29
  11. #define MESH_AD_TYPE_NETWORK 0x2A
  12. #define MESH_AD_TYPE_BEACON 0x2B
  13. #define FEATURE_RELAY 1
  14. #define FEATURE_PROXY 2
  15. #define FEATURE_FRIEND 4
  16. #define FEATURE_LPN 8
  17. #define MESH_MODE_DISABLED 0
  18. #define MESH_MODE_ENABLED 1
  19. #define MESH_MODE_UNSUPPORTED 2
  20. #define KEY_REFRESH_PHASE_NONE 0x00
  21. #define KEY_REFRESH_PHASE_ONE 0x01
  22. #define KEY_REFRESH_PHASE_TWO 0x02
  23. #define KEY_REFRESH_PHASE_THREE 0x03
  24. #define KEY_REFRESH_TRANS_TWO 0x02
  25. #define KEY_REFRESH_TRANS_THREE 0x03
  26. #define DEFAULT_TTL 0xff
  27. #define TTL_MASK 0x7f
  28. /* Supported algorithms for provisioning */
  29. #define ALG_FIPS_256_ECC 0x0001
  30. /* Input OOB action bit flags */
  31. #define OOB_IN_PUSH 0x0001
  32. #define OOB_IN_TWIST 0x0002
  33. #define OOB_IN_NUMBER 0x0004
  34. #define OOB_IN_ALPHA 0x0008
  35. /* Output OOB action bit flags */
  36. #define OOB_OUT_BLINK 0x0001
  37. #define OOB_OUT_BEEP 0x0002
  38. #define OOB_OUT_VIBRATE 0x0004
  39. #define OOB_OUT_NUMBER 0x0008
  40. #define OOB_OUT_ALPHA 0x0010
  41. /* Status codes */
  42. #define MESH_STATUS_SUCCESS 0x00
  43. #define MESH_STATUS_INVALID_ADDRESS 0x01
  44. #define MESH_STATUS_INVALID_MODEL 0x02
  45. #define MESH_STATUS_INVALID_APPKEY 0x03
  46. #define MESH_STATUS_INVALID_NETKEY 0x04
  47. #define MESH_STATUS_INSUFF_RESOURCES 0x05
  48. #define MESH_STATUS_IDX_ALREADY_STORED 0x06
  49. #define MESH_STATUS_INVALID_PUB_PARAM 0x07
  50. #define MESH_STATUS_NOT_SUB_MOD 0x08
  51. #define MESH_STATUS_STORAGE_FAIL 0x09
  52. #define MESH_STATUS_FEATURE_NO_SUPPORT 0x0a
  53. #define MESH_STATUS_CANNOT_UPDATE 0x0b
  54. #define MESH_STATUS_CANNOT_REMOVE 0x0c
  55. #define MESH_STATUS_CANNOT_BIND 0x0d
  56. #define MESH_STATUS_UNABLE_CHANGE_STATE 0x0e
  57. #define MESH_STATUS_CANNOT_SET 0x0f
  58. #define MESH_STATUS_UNSPECIFIED_ERROR 0x10
  59. #define MESH_STATUS_INVALID_BINDING 0x11
  60. #define UNASSIGNED_ADDRESS 0x0000
  61. #define PROXIES_ADDRESS 0xfffc
  62. #define FRIENDS_ADDRESS 0xfffd
  63. #define RELAYS_ADDRESS 0xfffe
  64. #define ALL_NODES_ADDRESS 0xffff
  65. #define VIRTUAL_ADDRESS_LOW 0x8000
  66. #define VIRTUAL_ADDRESS_HIGH 0xbfff
  67. #define GROUP_ADDRESS_LOW 0xc000
  68. #define GROUP_ADDRESS_HIGH 0xfeff
  69. #define FIXED_GROUP_LOW 0xff00
  70. #define FIXED_GROUP_HIGH 0xffff
  71. #define NODE_IDENTITY_STOPPED 0x00
  72. #define NODE_IDENTITY_RUNNING 0x01
  73. #define NODE_IDENTITY_NOT_SUPPORTED 0x02
  74. #define PRIMARY_ELE_IDX 0x00
  75. #define PRIMARY_NET_IDX 0x0000
  76. #define MAX_KEY_IDX 0x0fff
  77. #define MAX_MODEL_COUNT 0xff
  78. #define MAX_ELE_COUNT 0xff
  79. #define MAX_MSG_LEN 380
  80. #define VENDOR_ID_MASK 0xffff0000
  81. #define NET_IDX_INVALID 0xffff
  82. #define NET_NID_INVALID 0xff
  83. #define NET_IDX_MAX 0x0fff
  84. #define APP_IDX_MAX 0x0fff
  85. #define APP_AID_INVALID 0xff
  86. #define APP_IDX_MASK 0x0fff
  87. #define APP_IDX_DEV_REMOTE 0x6fff
  88. #define APP_IDX_DEV_LOCAL 0x7fff
  89. #define DEFAULT_SEQUENCE_NUMBER 0x000000
  90. #define SEQ_MASK 0xffffff
  91. #define IS_UNASSIGNED(x) ((x) == UNASSIGNED_ADDRESS)
  92. #define IS_UNICAST(x) (((x) > UNASSIGNED_ADDRESS) && \
  93. ((x) < VIRTUAL_ADDRESS_LOW))
  94. #define IS_UNICAST_RANGE(x, c) (IS_UNICAST(x) && IS_UNICAST(x + c - 1))
  95. #define IS_VIRTUAL(x) (((x) >= VIRTUAL_ADDRESS_LOW) && \
  96. ((x) <= VIRTUAL_ADDRESS_HIGH))
  97. #define IS_GROUP(x) ((((x) >= GROUP_ADDRESS_LOW) && \
  98. ((x) < FIXED_GROUP_HIGH)) || \
  99. ((x) == ALL_NODES_ADDRESS))
  100. #define IS_FIXED_GROUP_ADDRESS(x) ((x) >= PROXIES_ADDRESS)
  101. #define IS_ALL_NODES(x) ((x) == ALL_NODES_ADDRESS)