esp_blufi_api.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*
  2. * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "esp_blufi_api.h"
  7. #include "btc/btc_task.h"
  8. #include "btc_blufi_prf.h"
  9. #include "btc/btc_manage.h"
  10. #include "osi/future.h"
  11. #if (BLUFI_INCLUDED == TRUE)
  12. esp_err_t esp_blufi_register_callbacks(esp_blufi_callbacks_t *callbacks)
  13. {
  14. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  15. if (callbacks == NULL) {
  16. return ESP_FAIL;
  17. }
  18. btc_blufi_set_callbacks(callbacks);
  19. return (btc_profile_cb_set(BTC_PID_BLUFI, callbacks->event_cb) == 0 ? ESP_OK : ESP_FAIL);
  20. }
  21. esp_err_t esp_blufi_send_wifi_conn_report(wifi_mode_t opmode, esp_blufi_sta_conn_state_t sta_conn_state, uint8_t softap_conn_num, esp_blufi_extra_info_t *extra_info)
  22. {
  23. btc_msg_t msg;
  24. btc_blufi_args_t arg;
  25. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  26. msg.sig = BTC_SIG_API_CALL;
  27. msg.pid = BTC_PID_BLUFI;
  28. msg.act = BTC_BLUFI_ACT_SEND_CFG_REPORT;
  29. arg.wifi_conn_report.opmode = opmode;
  30. arg.wifi_conn_report.sta_conn_state = sta_conn_state;
  31. arg.wifi_conn_report.softap_conn_num = softap_conn_num;
  32. arg.wifi_conn_report.extra_info = extra_info;
  33. return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), btc_blufi_call_deep_copy,
  34. btc_blufi_call_deep_free) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  35. }
  36. esp_err_t esp_blufi_send_wifi_list(uint16_t apCount, esp_blufi_ap_record_t *list)
  37. {
  38. btc_msg_t msg;
  39. btc_blufi_args_t arg;
  40. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  41. msg.sig = BTC_SIG_API_CALL;
  42. msg.pid = BTC_PID_BLUFI;
  43. msg.act = BTC_BLUFI_ACT_SEND_WIFI_LIST;
  44. arg.wifi_list.apCount = apCount;
  45. arg.wifi_list.list = list;
  46. return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), btc_blufi_call_deep_copy,
  47. btc_blufi_call_deep_free) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  48. }
  49. esp_err_t esp_blufi_profile_init(void)
  50. {
  51. btc_msg_t msg;
  52. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  53. msg.sig = BTC_SIG_API_CALL;
  54. msg.pid = BTC_PID_BLUFI;
  55. msg.act = BTC_BLUFI_ACT_INIT;
  56. return (btc_transfer_context(&msg, NULL, 0, NULL, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  57. }
  58. esp_err_t esp_blufi_profile_deinit(void)
  59. {
  60. btc_msg_t msg;
  61. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  62. msg.sig = BTC_SIG_API_CALL;
  63. msg.pid = BTC_PID_BLUFI;
  64. msg.act = BTC_BLUFI_ACT_DEINIT;
  65. return (btc_transfer_context(&msg, NULL, 0, NULL, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  66. }
  67. uint16_t esp_blufi_get_version(void)
  68. {
  69. return btc_blufi_get_version();
  70. }
  71. esp_err_t esp_blufi_send_error_info(esp_blufi_error_state_t state)
  72. {
  73. btc_msg_t msg;
  74. btc_blufi_args_t arg;
  75. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  76. msg.sig = BTC_SIG_API_CALL;
  77. msg.pid = BTC_PID_BLUFI;
  78. msg.act = BTC_BLUFI_ACT_SEND_ERR_INFO;
  79. arg.blufi_err_infor.state = state;
  80. return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), NULL, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  81. }
  82. esp_err_t esp_blufi_send_custom_data(uint8_t *data, uint32_t data_len)
  83. {
  84. btc_msg_t msg;
  85. btc_blufi_args_t arg;
  86. if(data == NULL || data_len == 0) {
  87. return ESP_ERR_INVALID_ARG;
  88. }
  89. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  90. msg.sig = BTC_SIG_API_CALL;
  91. msg.pid = BTC_PID_BLUFI;
  92. msg.act = BTC_BLUFI_ACT_SEND_CUSTOM_DATA;
  93. arg.custom_data.data = data;
  94. arg.custom_data.data_len = data_len;
  95. return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), btc_blufi_call_deep_copy,
  96. btc_blufi_call_deep_free) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  97. }
  98. #endif ///BLUFI_INCLUDED == TRUE