/*---------------------------------------------------------------------------- * Copyright (c) Fenda Technologies Co., Ltd. 2021. All rights reserved. * * Description: ble_api.h * * Author: even * * Create: 2022-08-04 *--------------------------------------------------------------------------*/ #ifndef _BLE_API_H_ #define _BLE_API_H_ #ifdef __cplusplus extern "C" { #endif #include "ble_port.h" #include "bts_br_gap.h" #include "bts_gatt_client.h" #include "bts_gatt_server.h" #include "bts_le_gap.h" #include "cmsis_os2.h" #include "securec.h" #include "sys_typedef.h" #include #include #include #define BT_MAC_LEN 6 #define PROTOCOL_RES_FRAME_HEAD 0x5A #define PROTOCOL_RES_FRAME_HEAD_2 0x5B #define NAME_SIZE 20 #define MAX_PHONE_NUM 20 typedef struct { unsigned char addr[BT_MAC_LEN]; uint8_t type; } bth_bd_addr; struct gsensor_data { int16_t z; int16_t x; int16_t y; }; struct data_flow { uint8_t data_flow_id; bool data_flow_type; uint8_t *data; uint32_t len; }; typedef struct { uint16_t length; uint8_t *value; } tjd_ble_write_cb_t; typedef struct { unsigned char id; char name[NAME_SIZE]; char phone[MAX_PHONE_NUM]; } Contact; // typedef void (*hal_watchdog_deinit_t)(int *val); typedef void (*playing_state_callback_t)(int val); typedef void (*snk_connect_state_callback_t)(int val); typedef void (*src_connect_state_callback_t)(int val); typedef void (*sync_lrc_callback_t)(const char *lrc, bool isFirst); typedef void(*gap_connect_state_callback_t)(int val); typedef void (*lefun_ai_data_callback_t)(struct data_flow *data); typedef void (*play_dial_request_generate_picture_callback_t)(bool isSuccess); typedef void (*play_dial_original_callback_t)(char * original_picture_name); typedef void (*play_dial_preview_callback_t)(char * preview_picture_name); typedef void (*fine_phone_end_callback_t)(void); extern uint8_t g_server_id; extern uint16_t gatt_server_id; extern uint16_t g_server_conn_id; extern uint16_t g_server_handle; extern bool g_tjd_ble_into_camera_flag; void svr_ble_adv_start(void); bool ble_api_cmd_start_discovery(void); bool ble_api_cmd_stop_discovery(void); void ble_api_cmd_show_scan_list(void); void tjd_alipay_bt_gatts_noyify(uint8_t *data, uint16_t data_len); errcode_t tjd_ble_hid_server_send_input_report(void *data, uint8_t len); void tjd_get_gatt_server_conn_handle_id(uint8_t *server_id, uint16_t *conn_id, uint16_t *handle); bd_addr_t *tjd_get_lastconned_addr(void); void ble_api_cmd_info_reset(void); errcode_t ble_api_cmd_enable(void); errcode_t ble_api_cmd_disable(void); errcode_t ble_api_cmd_set_local_name(uint8_t *name, int len); errcode_t ble_api_cmd_get_local_name(void); errcode_t ble_api_cmd_set_local_addr(const bd_addr_t *addr); errcode_t ble_api_cmd_get_local_addr(void); errcode_t ble_api_cmd_get_bt_local_addr(void); errcode_t ble_api_cmd_set_adv_data(uint8_t adv_id, const gap_ble_config_adv_data_t *data); errcode_t ble_api_cmd_start_adv(uint8_t adv_id); errcode_t tjd_ble_api_cmd_open(void); errcode_t ble_api_cmd_close(void); errcode_t svr_bt_gatts_notify(uint8_t *data, uint16_t data_len); void tjd_ble_upload_file(const char *file_name, uint8_t file_type); void tjd_ble_request_gps(void); void tjd_ble_request_synchrodata(void); void tjd_ble_request_flover(void); void tjd_bt_set_mac_addr(void); extern bool tjd_get_bt_statue(void); extern bool tjd_get_bt_adv_statue(void); extern bool tjd_get_bt_is_connect(void); extern bool tjd_get_ble_is_connect(void); extern bool tjd_get_ble_into_camera_flag(void); void tjd_ble_remove_all_pairs(void); bool tjd_get_ble_is_link_to_app(void); void register_gap_connect_state_callback_t(gap_connect_state_callback_t callback); void unregister_gap_connect_state_callback_t(void); void register_playing_state_callback(playing_state_callback_t callback); void unregister_playing_state_callback(void); void register_snk_connect_state_callback(snk_connect_state_callback_t callback); void unregister_snk_connect_state_callback(void); void register_src_connect_state_callback(src_connect_state_callback_t callback); void unregister_src_connect_state_callback(void); void register_sync_lrc_callback(sync_lrc_callback_t callback); void unregister_sync_lrc_callback(void); void register_find_phone_end_callback(fine_phone_end_callback_t callback); void unregister_find_phone_end_callback(void); void tjd_ble_protocol_send_lefun_data(uint8_t *pack_head, uint8_t *data, uint16_t len, uint8_t cmd_id); void tjd_msgame_send_gesensor_data(uint8_t *data, uint8_t len);//向app发送三轴数据 void tjd_msgame_into(void); //向app发送进入体感游戏模式指令 void tjd_msgame_exit(void); //向app发送退出体感游戏模式指令 /*Lefun AI相关接口*/ void tjd_lefun_ai_request_into_lefun_ai(void); void tjd_lefun_ai_request_exit_lefun_ai(void); void register_lefun_ai_data_callback(lefun_ai_data_callback_t callback); void unregister_lefun_ai_data_callback(void); void register_lefun_ai_data_end_callback(lefun_ai_data_callback_t callback); void unregister_lefun_ai_data_end_callback(void); void tjd_ble_upload_ai_func_attribute(void); /*音源数据传输相关接口*/ void tjd_lefun_ai_request_into_audio_transmit(void); void tjd_lefun_ai_request_exit_audio_transmit(void); void tjd_lefun_ai_request_start_audio_transmit(void); //开始数据流-音频传输 void tjd_lefun_ai_request_end_audio_transmit(void); //结束数据流-音频传输 void tjd_ble_transmit_audio_data(uint8_t *data, uint16_t len); //音频流传输接口 bool tjd_ble_get_ai_audio_trans_flag(void); //获取音频传输状态 /*玩转表盘 相关接口*/ void tjd_lefun_ai_request_into_play_dial(void); //请求进入玩转表盘 void tjd_lefun_ai_request_exit_play_dial(void); //请求退出玩转表盘 play_dial_original_callback_t get_play_dial_original_callback(void); /* * @brief: 上报玩转表盘功能属性 * @param: style_type: 玩转表盘AI图片风格类型 * @param: language_to_translated: 待翻译语言 eg: 0x00 中文 0x01 英文 * @param: translation_language: 翻译语言 eg: 0x00 中文 0x01 英文 */ void tjd_ble_upload_play_dial_func_attribute(ai_picture_style_t style_type, uint8_t language_to_translated, uint8_t translation_language); /* * @brief: 请求生成图片 @param: data_flow_id: 数据流id * @param: isFirstRequest: 是否首次请求 0x00:首次 0x01:重试 */ void tjd_play_dial_request_diagram_generation(uint8_t data_flow_id, uint8_t isFirstRequest); //请求生成图片 /* * @brief: 请求传输图片 * @param: background_type: 请求传输的背景图片类型 0x00: 背景原图 0x01: 背景缩略图 */ void tjd_play_dial_request_diagram_transmit(uint8_t background_type); /* * @brief: 玩转表盘AI原图回调注册接口,AI原图下发完成后触发通知 * @param: play_dial_original_callback_t: 函数指针 函数指针参数:char * original_picture_name 背景原图名称 */ void register_play_dial_original_callback(play_dial_original_callback_t callback); /* * @brief: 玩转表盘AI原图回调赋空接口 */ void unregister_play_dial_original_callback(void); /* * @brief: 玩转表盘AI预览图回调注册接口 ,AI预览图下发结束后触发通知 * @param: play_dial_preview_callback_t: 函数指针 函数指针参数:char * preview_picture_name 背景预览图名称 */ void register_play_dial_preview_callback(play_dial_preview_callback_t callback); /* * @brief: 玩转表盘AI预览图回调赋空接口 */ void unregister_play_dial_preview_callback(void); /* * @brief: 玩转表盘请求生成图片回调注册接口,请求生成图片指令回复后调用 * @param: play_dial_original_callback_t: 函数指针 函数指针参数:bool isSuccess 生成图片是否成功 true:成功 false:失败 */ void register_play_dial_request_generate_picture_callback(play_dial_request_generate_picture_callback_t callback); /* * @brief: 玩转表盘请求生成图片回调赋空接口 */ void unregister_play_dial_request_generate_picture_callback(void); //请求天气数据接口 void tjd_lefun_request_weather_data(void); void tjd_lefun_request_find_phone(void); void tjd_lefun_request_find_phone_cancel(void); bool tjd_ble_get_weather_today_synchronization(void); void tjd_ble_set_weather_today_synchronization(bool flag); void tjd_open_bluetooth_only(void); //只开BT void tjd_close_bluetooth_only(void); //只关BT void tjd_test_dial_config_json_file(void);//测试表盘参数配置文件 int delete_directory(const char *path); uint8_t tjd_ble_get_hid_service_id(void); uint16_t tjd_ble_get_hid_srv_handle(void); void tjd_connect_param_update(void); errcode_t tjd_connect_param_revert(void); int tjd_service_connect_param_handle(void); void tjd_service_connect_param_send_star(void); void tjd_service_connect_param_send_stop(void); uint8_t tjd_service_send_sport_end_record_data(char * file_name); #ifdef __cplusplus } #endif #endif