esp_blufi_api.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  34. }
  35. esp_err_t esp_blufi_send_wifi_list(uint16_t apCount, esp_blufi_ap_record_t *list)
  36. {
  37. btc_msg_t msg;
  38. btc_blufi_args_t arg;
  39. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  40. msg.sig = BTC_SIG_API_CALL;
  41. msg.pid = BTC_PID_BLUFI;
  42. msg.act = BTC_BLUFI_ACT_SEND_WIFI_LIST;
  43. arg.wifi_list.apCount = apCount;
  44. arg.wifi_list.list = list;
  45. return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), btc_blufi_call_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  46. }
  47. esp_err_t esp_blufi_profile_init(void)
  48. {
  49. btc_msg_t msg;
  50. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  51. msg.sig = BTC_SIG_API_CALL;
  52. msg.pid = BTC_PID_BLUFI;
  53. msg.act = BTC_BLUFI_ACT_INIT;
  54. return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  55. }
  56. esp_err_t esp_blufi_profile_deinit(void)
  57. {
  58. btc_msg_t msg;
  59. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  60. msg.sig = BTC_SIG_API_CALL;
  61. msg.pid = BTC_PID_BLUFI;
  62. msg.act = BTC_BLUFI_ACT_DEINIT;
  63. return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  64. }
  65. uint16_t esp_blufi_get_version(void)
  66. {
  67. return btc_blufi_get_version();
  68. }
  69. esp_err_t esp_blufi_send_error_info(esp_blufi_error_state_t state)
  70. {
  71. btc_msg_t msg;
  72. btc_blufi_args_t arg;
  73. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  74. msg.sig = BTC_SIG_API_CALL;
  75. msg.pid = BTC_PID_BLUFI;
  76. msg.act = BTC_BLUFI_ACT_SEND_ERR_INFO;
  77. arg.blufi_err_infor.state = state;
  78. return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  79. }
  80. esp_err_t esp_blufi_send_custom_data(uint8_t *data, uint32_t data_len)
  81. {
  82. btc_msg_t msg;
  83. btc_blufi_args_t arg;
  84. if(data == NULL || data_len == 0) {
  85. return ESP_ERR_INVALID_ARG;
  86. }
  87. ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED);
  88. msg.sig = BTC_SIG_API_CALL;
  89. msg.pid = BTC_PID_BLUFI;
  90. msg.act = BTC_BLUFI_ACT_SEND_CUSTOM_DATA;
  91. arg.custom_data.data = data;
  92. arg.custom_data.data_len = data_len;
  93. return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), btc_blufi_call_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
  94. }
  95. #endif ///BLUFI_INCLUDED == TRUE