le_user.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #ifndef _LE_USER_H_
  2. #define _LE_USER_H_
  3. #include "typedef.h"
  4. #include "btstack/btstack_typedef.h"
  5. #include "ble_api.h"
  6. #if defined __cplusplus
  7. extern "C" {
  8. #endif
  9. #define BT_NAME_LEN_MAX 29
  10. #define ADV_RSP_PACKET_MAX 31
  11. // hci con handles (12 bit): 0x0000..0x0fff
  12. #define HCI_CON_HANDLE_INVALID 0xffff
  13. #define BTSTACK_EVENT_STATE 0x60
  14. #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_RESPONSE 0x77
  15. #define SM_EVENT_JUST_WORKS_REQUEST 0xD0
  16. #define SM_EVENT_JUST_WORKS_CANCEL 0xD1
  17. #define SM_EVENT_PASSKEY_DISPLAY_NUMBER 0xD2
  18. #define SM_EVENT_PASSKEY_DISPLAY_CANCEL 0xD3
  19. #define SM_EVENT_PASSKEY_INPUT_NUMBER 0xD4
  20. #define SM_EVENT_PASSKEY_INPUT_CANCEL 0xD5
  21. #define SM_EVENT_NUMERIC_COMPARISON_REQUEST 0xD6
  22. #define SM_EVENT_NUMERIC_COMPARISON_CANCEL 0xD7
  23. #define SM_EVENT_IDENTITY_RESOLVING_STARTED 0xD8
  24. #define SM_EVENT_IDENTITY_RESOLVING_FAILED 0xD9
  25. #define SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED 0xDA
  26. #define SM_EVENT_AUTHORIZATION_REQUEST 0xDB
  27. #define SM_EVENT_AUTHORIZATION_RESULT 0xDC
  28. #define SM_EVENT_KEYPRESS_NOTIFICATION 0xDD
  29. #define SM_EVENT_IDENTITY_CREATED 0xDE
  30. #define SM_EVENT_PAIR_PROCESS 0xDF
  31. //0xdf 's sub
  32. #define SM_EVENT_PAIR_SUB_RECONNECT_START 0x01
  33. #define SM_EVENT_PAIR_SUB_PIN_KEY_MISS 0x02
  34. #define SM_EVENT_PAIR_SUB_PAIR_FAIL 0x03
  35. #define SM_EVENT_PAIR_SUB_PAIR_TIMEOUT 0x04
  36. #define SM_EVENT_PAIR_SUB_ENCRYPTION_FAIL 0x05
  37. #define SM_EVENT_PAIR_SUB_SEND_DISCONN 0x0f
  38. #define SM_EVENT_PAIR_SUB_ADD_LIST_SUCCESS 0x10
  39. #define SM_EVENT_PAIR_SUB_ADD_LIST_FAILED 0x11
  40. #define GATT_CLIENT_CHARACTERISTICS_CONFIGURATION_NONE 0
  41. #define GATT_CLIENT_CHARACTERISTICS_CONFIGURATION_NOTIFICATION 1
  42. #define GATT_CLIENT_CHARACTERISTICS_CONFIGURATION_INDICATION 2
  43. #define GATT_EVENT_NOTIFICATION 0xA7
  44. #define GATT_EVENT_INDICATION 0xA8
  45. #define GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT 0xA5
  46. #define GATT_EVENT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT 0xA6
  47. // #define GATT_EVENT_SERVICE_QUERY_RESULT 0xA1
  48. // #define GATT_EVENT_CHARACTERISTIC_QUERY_RESULT 0xA2
  49. #define GATT_EVENT_QUERY_COMPLETE 0xA0
  50. #define GAP_EVENT_ADVERTISING_REPORT 0xE2
  51. // Authentication requirement flags
  52. #define SM_AUTHREQ_NO_BONDING 0x00
  53. #define SM_AUTHREQ_BONDING 0x01
  54. #define SM_AUTHREQ_MITM_PROTECTION 0x04
  55. #define SM_AUTHREQ_SECURE_CONNECTION 0x08
  56. #define SM_AUTHREQ_KEYPRESS 0x10
  57. #define SM_AUTHREQ_CT2 0x20
  58. #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_RESPONSE 0x77
  59. #define BT_OP_SUCCESS 0x00
  60. #define BT_ERR_ADVERTISING_TIMEOUT 0x3C
  61. //--------------------------------------------
  62. struct ble_server_operation_t {
  63. int(*adv_enable)(void *priv, u32 enable);
  64. int(*disconnect)(void *priv);
  65. int(*get_buffer_vaild)(void *priv);
  66. int(*send_data)(void *priv, void *buf, u16 len);
  67. int(*regist_wakeup_send)(void *priv, void *cbk);
  68. int(*regist_recieve_cbk)(void *priv, void *cbk);
  69. int(*regist_state_cbk)(void *priv, void *cbk);
  70. int(*latency_enable)(void *priv, u32 enable);
  71. };
  72. void ble_get_server_operation_table(struct ble_server_operation_t **interface_pt);
  73. //--------------------------------------------
  74. struct ble_client_operation_t {
  75. int(*scan_enable)(void *priv, u32 enable);
  76. int(*disconnect)(void *priv);
  77. int(*get_buffer_vaild)(void *priv);
  78. int(*write_data)(void *priv, void *buf, u16 len);
  79. int(*read_do)(void *priv);
  80. int(*regist_wakeup_send)(void *priv, void *cbk);
  81. int(*regist_recieve_cbk)(void *priv, void *cbk);
  82. int(*regist_state_cbk)(void *priv, void *cbk);
  83. int (*init_config)(void *priv, void *cfg);
  84. int (*opt_comm_send)(u16 handle, u8 *data, u16 len, u8 att_op_type);
  85. int (*set_force_search)(u8 onoff, s8 rssi);
  86. int (*create_connect)(u8 *addr, u8 addr_type, u8 mode);
  87. int (*create_connect_cannel)(void);
  88. int (*get_work_state)(void);
  89. int (*opt_comm_send_ext)(u16 conn_handle, u16 handle, u8 *data, u16 len, u8 att_op_type);
  90. };
  91. struct ble_client_operation_t *ble_get_client_operation_table(void);
  92. static inline uint32_t ble_min(uint32_t a, uint32_t b)
  93. {
  94. return a < b ? a : b;
  95. }
  96. //---------------------------------------------------------------------------------------------------
  97. //----------------------------------------
  98. //----------------------------------------
  99. extern int get_ble_btstack_state(void);
  100. extern int get_indicate_state(void);
  101. extern u8 get_ble_local_name(u8 *name_buf);
  102. extern u8 get_ble_local_name_len();
  103. extern void hci_event_callback_set(void(*cbk_ph)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size));
  104. extern void ll_hci_connection_updata(u8 *data);
  105. #endif