luat_nimble_air101.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include "luat_base.h"
  2. #include "luat_msgbus.h"
  3. #include "luat_nimble.h"
  4. #include "wm_bt_config.h"
  5. #include "wm_regs.h"
  6. #include "wm_bt.h"
  7. #include "wm_bt_util.h"
  8. #include "host/ble_hs.h"
  9. #include "host/util/util.h"
  10. #include "nimble/nimble_port.h"
  11. #include "transport/uart/ble_hci_uart.h"
  12. #include "nimble/tls_nimble.h"
  13. #include "wm_ble_gap.h"
  14. #include "wm_ble_uart_if.h"
  15. #include "syscfg/syscfg.h"
  16. #define LUAT_LOG_TAG "nimble"
  17. #include "luat_log.h"
  18. int luat_nimble_deinit() {
  19. LLOGE("deinit not support yet");
  20. return -1;
  21. }
  22. int luat_nimble_trace_level(int level) {
  23. return 0;
  24. }
  25. int luat_nimble_init_peripheral(uint8_t uart_idx, char* name, int mode);
  26. int luat_nimble_init_central(uint8_t uart_idx, char* name, int mode);
  27. int luat_nimble_init_ibeacon(uint8_t uart_idx, char* name, int mode);
  28. int luat_nimble_init(uint8_t uart_idx, char* name, int mode) {
  29. int ret = 0;
  30. tls_reg_write32(HR_CLK_BBP_CLT_CTRL, 0x7F);
  31. ble_hs_cfg.sm_io_cap = MYNEWT_VAL(BLE_SM_IO_CAP),
  32. ble_hs_cfg.sm_oob_data_flag = MYNEWT_VAL(BLE_SM_OOB_DATA_FLAG),
  33. ble_hs_cfg.sm_bonding = MYNEWT_VAL(BLE_SM_BONDING),
  34. ble_hs_cfg.sm_mitm = MYNEWT_VAL(BLE_SM_MITM),
  35. ble_hs_cfg.sm_sc = MYNEWT_VAL(BLE_SM_SC),
  36. ble_hs_cfg.sm_keypress = MYNEWT_VAL(BLE_SM_KEYPRESS),
  37. ble_hs_cfg.sm_our_key_dist = MYNEWT_VAL(BLE_SM_OUR_KEY_DIST),
  38. ble_hs_cfg.sm_their_key_dist = MYNEWT_VAL(BLE_SM_THEIR_KEY_DIST);
  39. if (mode == 0) {
  40. LLOGD("CALL luat_nimble_init_peripheral");
  41. ret = luat_nimble_init_peripheral(uart_idx, name, mode);
  42. }
  43. else if (mode == 1) {
  44. LLOGD("CALL luat_nimble_init_central");
  45. ret = luat_nimble_init_central(uart_idx, name, mode);
  46. }
  47. else if (mode == 2) {
  48. ret = luat_nimble_init_ibeacon(uart_idx, name, mode);
  49. }
  50. else {
  51. return -1;
  52. }
  53. if (ret == 0) {
  54. /*Initialize the vuart interface and enable controller*/
  55. ble_hci_vuart_init(0xFF);
  56. /* As the last thing, process events from default event queue. */
  57. tls_nimble_start();
  58. }
  59. return 0;
  60. }