| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #include "include.h"
- #include "wireless_client.h"
- #include "wireless_service.h"
- // #define WIRELESS_ADV_DATA_GET(buf, size) ble_get_adv_data(buf, size)
- #define WIRELESS_ADV_DATA_GET(buf, size) wireless_get_adv_data(buf, size)
- static const uint8_t adv_match_seq[4] = {0x03, 0xff, 0x42, 0x06};
- BT_WORK_MODE cfg_bt_work_mode = MODE_NORMAL;
- void ble_set_work_mode(BT_WORK_MODE mode)
- {
- cfg_bt_work_mode = mode;
- }
- BT_WORK_MODE ble_get_work_mode(void)
- {
- return cfg_bt_work_mode;
- }
- static uint8_t wireless_get_adv_data(uint8_t *buf, uint8_t size)
- {
- uint8_t len = sizeof(adv_match_seq);
- if (len <= size) {
- memset(buf, 0x00, size);
- memcpy(buf, adv_match_seq, len);
- return len;
- } else {
- return 0;
- }
- }
- void bsp_wireless_init(void)
- {
- #ifdef wireless_setup
- wireless_setup();
- #else
- wireless_setup_param_t param;
- memset(¶m, 0x00, sizeof(param));
- param.conn_nb_support = 1;
- param.conn_phy_forced = 2;
- wireless_setup(¶m);
- #endif
- #if WIRELESS_TRANSMIT_EN
- wireless_client_init();
- wireless_scan_param_set(1, 100, 50);
- wireless_scan_ctrl(true);
- #else
- wireless_service_init();
- /* ADV Initialize */
- wireless_adv_init(true);
- #endif
- }
- void bsp_wireless_link_info_write(wireless_addr_info_typedef *addr_info)
- {
- bsp_param_write((u8 *)addr_info, PARAM_WL_ADDR_INFO, PARAM_WL_ADDR_INFO_LEN);
- bsp_param_sync();
- }
- bool bsp_wireless_link_info_read(wireless_addr_info_typedef *addr_info)
- {
- u8 buf[7] = {0};
- bsp_param_read((u8 *)addr_info, PARAM_WL_ADDR_INFO, PARAM_WL_ADDR_INFO_LEN);
- return (0 != memcmp(buf, (u8 *)addr_info, 7));
- }
- void wireless_adv_init(bool adv_en)
- {
- wireless_addr_info_typedef wireless_addr_info;
- wireless_adv_param_t wireless_adv_param;
- memset(&wireless_adv_param, 0x00, sizeof(wireless_adv_param));
- wireless_adv_param.intv = 0x30;
- wireless_adv_param.data_len = WIRELESS_ADV_DATA_GET(wireless_adv_param.data_buf, sizeof(wireless_adv_param.data_buf));
- if (bsp_wireless_link_info_read(&wireless_addr_info)) {
- wireless_adv_param.adv_type = ADV_TYPE_DIRECT_LO_IND;
- wireless_adv_param.peer_addr_type = wireless_addr_info.address_type;
- memcpy(wireless_adv_param.peer_addr, wireless_addr_info.addr, 6);
- printf("direct - tyep: %d addr: ", wireless_addr_info.address_type);
- print_r(wireless_addr_info.addr, 6);
- } else {
- wireless_adv_param.adv_type = ADV_TYPE_IND;
- }
- wireless_adv_param_set(wireless_adv_param);
- if (adv_en) {
- wireless_adv_ctrl(true);
- }
- }
|