mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-16 19:38:56 +00:00
492 lines
12 KiB
C
492 lines
12 KiB
C
#ifndef __BT_API_H__
|
||
#define __BT_API_H__
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
#include "bt_type.h"
|
||
#include "bt_config.h"
|
||
#include "aic_log.h"
|
||
|
||
#define BT_MSG_MAX 512//BT MSG datalen
|
||
#define BT_CMD_MAX 512// 队列有512个元素
|
||
|
||
//蓝牙音乐播放状态获取
|
||
typedef enum __BT_STATUS
|
||
{
|
||
BT_STAT_IDLE = 0,
|
||
BT_STAT_PLAY ,
|
||
BT_STAT_PAUSE,
|
||
BT_STAT_
|
||
} bt_status_t;
|
||
|
||
//蓝牙时间获取
|
||
typedef struct
|
||
{
|
||
__u8 year;
|
||
__u8 month;
|
||
__u8 day;
|
||
__u8 hour;
|
||
__u8 minute;
|
||
__u8 second;
|
||
}bt_time_t;
|
||
|
||
/*******bt*******/
|
||
//蓝牙电话本获取
|
||
typedef struct
|
||
{
|
||
//////////////////电话本
|
||
__u8 phonebook_name[1000][64]; //名称
|
||
__u8 phonebook_number[1000][32]; //电话号码有两个以上的电话号码的用同一名称显示
|
||
__s32 cur_phone_total; //最后一个
|
||
//////////////////通话记录
|
||
//__u8 phonerem_name[64][64]; //通话记录,现在废弃
|
||
//__u8 phonerem_number[64][32]; //电话号码有两个以上的电话号码的用同一名称显示
|
||
//__u8 phonerem_date[64][32]; ////日期
|
||
//__u8 phonerem_type[64]; ////类型////1:打出2:打进,3 :拒接
|
||
//__s32 cur_phonerem_total;
|
||
|
||
__u8 phoneout_name[32][64]; //打出
|
||
__u8 phoneout_number[32][32]; //电话号码有两个以上的电话号码的用同一名称显示
|
||
__u8 phoneout_date[32][32]; ////日期
|
||
__s32 cur_phoneout_total;
|
||
|
||
__u8 phonein_name[32][64]; //打进
|
||
__u8 phonein_number[32][32]; //电话号码有两个以上的电话号码的用同一名称显示
|
||
__u8 phonein_date[32][32]; ////日期
|
||
__s32 cur_phonein_total;
|
||
|
||
__u8 phonemiss_name[32][64]; //未接
|
||
__u8 phonemiss_number[32][32]; //电话号码有两个以上的电话号码的用同一名称显示
|
||
__u8 phonemiss_date[32][32]; ////日期
|
||
__s32 cur_phonemiss_total;
|
||
|
||
}bt_phonebook_state;
|
||
|
||
|
||
//蓝牙音乐ID3信息获取
|
||
typedef struct BT_ID3_INFO
|
||
{
|
||
__u8 title_name[256];//歌词
|
||
__u8 artist_name[256];//歌名
|
||
__u8 album_name[256];//歌手
|
||
__u8 cur_time[32]; //当前播放时间
|
||
__u8 total_time[32]; //播放总时间
|
||
|
||
}bt_ID3_info_t;
|
||
|
||
//车机蓝牙连接状态
|
||
typedef enum
|
||
{
|
||
BT_STATE_INIT = 0,
|
||
BT_STATE_NOTCONNECTE,
|
||
BT_STATE_CONNECTED,
|
||
BT_STATE_MAX,
|
||
}bt_connect_flag_t;
|
||
|
||
typedef enum
|
||
{
|
||
BT_SPP_STATE_INIT = 0,
|
||
BT_SPP_STATE_DISCONNECTED,
|
||
BT_SPP_STATE_CONNECTED,
|
||
BT_SPP_STATE_MAX,
|
||
}bt_spp_connect_flag_t;
|
||
|
||
typedef enum
|
||
{
|
||
BT_BLE_STATE_INIT = 0,
|
||
BT_BLE_STATE_DISCONNECTED,
|
||
BT_BLE_STATE_CONNECTED,
|
||
BT_BLE_STATE_MAX,
|
||
}bt_ble_connect_flag_t;
|
||
|
||
typedef enum
|
||
{
|
||
BT_HID_STATE_INIT = 0,
|
||
BT_HID_STATE_DISCONNECTED,
|
||
BT_HID_STATE_CONNECTED,
|
||
BT_HID_STATE_MAX,
|
||
}bt_hid_connect_flag_t;
|
||
|
||
//蓝牙电话状态
|
||
typedef enum
|
||
{
|
||
BT_PHONE_INIT = 0, ////初始化和一般情况
|
||
BT_PHONE_INING, ////电话打进
|
||
BT_PHONE_OUTING, ////电话打出
|
||
BT_PHONE_TALKINING, ////通话中
|
||
BT_PHONE_TALKOUTING, ////通话中
|
||
BT_MAX
|
||
}bt_phone_state_t;
|
||
|
||
//手机连接类型
|
||
typedef enum
|
||
{
|
||
PHONE_ANDROID_AUTO, ////android系统原生手机
|
||
PHONE_CARPLAY , ////苹果手机
|
||
PHONE_ANDROID_CARLIFE, ////android系统魔改手机
|
||
PHONE_HARMONY, ////HARMONY手机
|
||
PHONE_MAX
|
||
}bt_phone_type_t;
|
||
|
||
|
||
extern u8 phone_macaddr_buf[12];//手机蓝牙MAC ADDR
|
||
extern u8 phone_name_buf[24];//手机蓝牙名字
|
||
extern u8 bt_hostname_buf[24];//车机蓝牙名字
|
||
extern u8 bt_pincard_buf[4]; //蓝牙配对码
|
||
extern u8 bt_macaddr_buf[12];//车机蓝牙MAC ADDR
|
||
extern u8 bt_callin_buf[64];//手机来电号码
|
||
extern u8 spp_rxdata[512]; //rfcomm 通讯后从手机接收透传的数据
|
||
extern u8 system_do_msg[BT_MSG_MAX]; //系统要处理的消息
|
||
extern bt_connect_flag_t bt_connect_flag; //蓝牙是否连接
|
||
extern bt_spp_connect_flag_t bt_spp_connect_flag;//蓝牙spp是否连接
|
||
extern bt_ble_connect_flag_t bt_ble_connect_flag; //蓝牙BLE是否连接
|
||
extern bt_phone_state_t bt_phone_state; //蓝牙电话状态
|
||
extern bt_phone_type_t bt_phone_type; //手机连接类型
|
||
extern bt_time_t bt_time;
|
||
extern bt_phonebook_state *bt_phonebook_para;
|
||
extern bt_ID3_info_t *bt_ID3_info;
|
||
|
||
|
||
/******************************FMRX********************************************/
|
||
//本记录是BT的FM在不断电情况下保存数据,如果BT要断电,那么就要获取FMRX的LIST表在主控端记录
|
||
typedef struct {
|
||
u16 freq; //当前频点
|
||
u8 ch_cur;//当前节目
|
||
u8 ch_cnt;//总节目数
|
||
} bt_fmrx_info_t;
|
||
|
||
typedef struct {
|
||
u8 ch_cnt; //总节目数
|
||
u16 freq[64]; //第一个节目从序号0开始
|
||
} bt_fmrx_list_t;
|
||
|
||
extern bt_fmrx_info_t bt_fmrx_info;//某个节目的信息包括总节目数,当前节目号,以及对应的频点
|
||
extern bt_fmrx_list_t bt_fmrx_list;//节目的频点列表
|
||
|
||
|
||
|
||
|
||
//system api
|
||
|
||
extern __s32 lowercase_2_uppercase(char *str);
|
||
|
||
//倒车控制
|
||
extern __s32 check_pev_key(void);
|
||
|
||
//接收蓝牙时间
|
||
extern __s32 sys_bt_set_time(u8 *time);
|
||
|
||
//获取蓝牙时间给应用
|
||
extern __s32 sys_bt_get_time_to_app(bt_time_t *time);
|
||
|
||
//设置时间给蓝牙
|
||
extern __s32 sys_bt_set_time_to_bt(bt_time_t *time);
|
||
|
||
//控制开关屏
|
||
extern void sys_bt_ctrl_lcd(u8 lcd_ctrl);
|
||
|
||
//控制开关屏
|
||
extern void sys_bt_ctrl_light(u8 light_ctrl);
|
||
|
||
//控制倒车影像
|
||
extern void sys_bt_ctrl_pev(u8 pev_ctrl);
|
||
|
||
//调用发送bt_phonename_get命令之后,以下函数获取电话本
|
||
extern __s32 sys_bt_set_phonebook(u8 *phonebook);
|
||
|
||
//清除本地获取电话本的BUFFER
|
||
extern void sys_bt_clear_phonebook(void);
|
||
|
||
//获取来电指示电话号码
|
||
extern __s32 sys_bt_get_phonenum(char *btstring);
|
||
|
||
//接收蓝牙FMRX信息执行的一些动作
|
||
extern __s32 sys_bt_fm_process(void);
|
||
|
||
//接收蓝牙信息执行的一些动作
|
||
extern __s32 sys_bt_dosomething(void);
|
||
|
||
//获取播放的蓝牙音乐的ID3等信息
|
||
extern __s32 sys_bt_set_music_info(void);
|
||
|
||
//获取播放的蓝牙音乐的状态(播放暂停)等信息
|
||
extern void sys_bt_set_music_status(u8 music_status);
|
||
|
||
//获取手机电话BT的状态
|
||
extern __s32 sys_bt_get_phone_state(void);
|
||
|
||
//bt返回设置手机电话BT的状态
|
||
extern __s32 sys_bt_set_phone_state(bt_phone_state_t phone_state);
|
||
|
||
//获取手机类型
|
||
__s32 sys_bt_get_phone_type(void);
|
||
|
||
//bt返回设置手机类型
|
||
__s32 sys_bt_set_phone_type(bt_phone_type_t phone_type);
|
||
|
||
//获取车机BT连接的状态,在CPU端的变量查询
|
||
extern __s32 sys_bt_is_connected(void);
|
||
|
||
//cpu-bt cmd api
|
||
extern void BtCmdSend (char *CmdStr,unsigned char len);
|
||
|
||
//获取车机蓝牙时间
|
||
extern __s32 bt_time_get(void);
|
||
|
||
//设置车机蓝牙时间
|
||
extern __s32 bt_time_set(void);
|
||
|
||
//获取大灯状态,需要车机蓝牙GPIO控制
|
||
extern __s32 bt_ill_get(void);
|
||
|
||
//获取车机蓝牙状态,通过发送UART命令返回的,第一次启动首先先要执行,
|
||
//后面只要不断电蓝牙就会自动返回连接状态给到CPU端变量,则通过sys_bt_is_connected查询
|
||
extern __s32 bt_state_get(void);
|
||
|
||
//获取手机连接的名字,这里默认都是车机列表第0个,由手机主动连接的车机蓝牙,
|
||
//车机蓝牙不做主动搜索蓝牙列表去连接手机
|
||
extern __s32 bt_phonename_get(void);
|
||
|
||
//获取车机蓝牙的名字小于24字节
|
||
extern __s32 bt_hostname_get(void);
|
||
|
||
//获取车机蓝牙的PIN码(4位数字配对码),现在不用
|
||
extern __s32 bt_pincard_get(void);
|
||
|
||
///HFP状态查询
|
||
extern __s32 bt_get_hfpstate(void);
|
||
|
||
//蓝牙音乐播放停止,调用一次与上一次相反
|
||
extern __s32 bt_audio_play_pause(void);
|
||
|
||
//蓝牙音乐播放
|
||
extern __s32 bt_audio_play(void);
|
||
|
||
//蓝牙音乐暂停
|
||
extern __s32 bt_audio_pause(void);
|
||
|
||
//蓝牙音乐停止
|
||
extern __s32 bt_audio_stop(void);
|
||
|
||
//蓝牙音乐上一曲
|
||
extern __s32 bt_audio_prev(void);
|
||
|
||
//蓝牙音乐下一曲
|
||
extern __s32 bt_audio_next(void);
|
||
|
||
//获取蓝牙音乐的本地播放状态,必须先手机上播放蓝牙音乐传过来状态先,然后才能调用
|
||
extern __s32 bt_audio_get_status(void);
|
||
|
||
//获取蓝牙音乐的本地播放状态,必须先手机上播放蓝牙音乐传过来状态先,然后才能调用
|
||
extern __s32 bt_audio_set_status(uint8_t play_status);
|
||
|
||
//获取手机电话本,通话记录等,记录在bt_phonebook_state数据结构里面
|
||
extern __s32 bt_phonebook_get(void);
|
||
|
||
//切换音频通道
|
||
extern __s32 bt_audio_change(void);
|
||
|
||
//强行切到手机上
|
||
extern __s32 bt_audio_to_phone(void);
|
||
|
||
//强行切到车机上
|
||
extern __s32 bt_audio_to_machine(void);
|
||
|
||
//通知bt power off CPU
|
||
//BT做电源管理时,才可以开关CPU电源
|
||
extern __s32 bt_power_off(void);
|
||
|
||
//来电接听
|
||
extern __s32 bt_phone_incoming(void);
|
||
|
||
//一次性发出电话号码。
|
||
extern __s32 bt_phone_call(char *phonenumber,__s32 len);
|
||
|
||
//挂断电话
|
||
extern __s32 bt_phone_break(void);
|
||
|
||
//拒接来电
|
||
extern __s32 bt_phone_reject(void);
|
||
|
||
//重拨电话
|
||
extern __s32 bt_phone_recall(void);
|
||
|
||
//BT是否已连接 ?
|
||
extern __s32 bt_is_connected(void);
|
||
|
||
//重新连接BT
|
||
extern __s32 bt_connect_set(void);
|
||
|
||
//断开连接BT
|
||
extern __s32 bt_disconnect_set(void);
|
||
|
||
//获取车机蓝牙MAC地址
|
||
extern __s32 bt_macaddr_get(void);
|
||
|
||
//EQ用户模式
|
||
extern __s32 bt_eq_user_mode(__u8 index, __u8 gain);
|
||
|
||
//EQ流行模式
|
||
extern __s32 bt_eq_pop_mode(__u8 index, __u8 gain);
|
||
|
||
//EQ摇滚模式
|
||
extern __s32 bt_eq_rock_mode(__u8 index, __u8 gain);
|
||
|
||
//EQ爵士模式
|
||
extern __s32 bt_eq_jazz_mode(__u8 index, __u8 gain);
|
||
|
||
//EQ经典模式
|
||
extern __s32 bt_eq_classic_mode(__u8 index, __u8 gain);
|
||
|
||
//EQ柔和模式
|
||
extern __s32 bt_eq_gentle_mode(__u8 index, __u8 gain);
|
||
|
||
//音效前移
|
||
extern __s32 bt_dac_vol_front(__u8 vol);
|
||
|
||
//音效后移
|
||
extern __s32 bt_dac_vol_behind(__u8 vol);
|
||
|
||
//音效左移
|
||
extern __s32 bt_dac_vol_left(__u8 vol);
|
||
|
||
//音效右移
|
||
extern __s32 bt_dac_vol_right(__u8 vol);
|
||
|
||
//vol+
|
||
extern __s32 bt_vol_add(void);
|
||
|
||
//vol-
|
||
extern __s32 bt_vol_dec(void);
|
||
|
||
//静音
|
||
extern __s32 bt_vol_mute(void);
|
||
|
||
//解除静音
|
||
extern __s32 bt_vol_unmute(void);
|
||
|
||
/*********************SPP COMM******************************/
|
||
//"AT#"打头的指令透传通道
|
||
//发送透传数据
|
||
extern __s32 bt_spp_tx_data (char *CmdStr,unsigned char len);
|
||
//接收透传数据
|
||
extern __s32 bt_spp_rx_data(char *CmdStr,unsigned char len);
|
||
|
||
extern __s32 bt_spp_rfcomm_is_connected(void);
|
||
|
||
extern __s32 bt_spp_rfcomm_connect(void);
|
||
|
||
extern __s32 bt_spp_rfcomm_disconnect(void);
|
||
|
||
//RFCOMM连接成功后,AT#SG加上第三方手机互联库发过来的形成数据串,转为AT##再通过RFCOMM发送给手机
|
||
extern __s32 bt_spp_tx_data_rfcomm(char *CmdStr,unsigned char len);
|
||
|
||
//RFCOMM连接成功后,手机上层发过来的RFCOMM数据串,后面可发送第三方手机互联库
|
||
extern __s32 bt_spp_rx_data_rfcomm(char *CmdStr,unsigned char len);
|
||
|
||
/*********************BLE COMM******************************/
|
||
|
||
//extern __s32 bt_ble_tx_data(char *CmdStr,unsigned char len);
|
||
|
||
//extern __s32 bt_ble_rx_data(char *CmdStr,unsigned char len);
|
||
|
||
//extern __s32 bt_ble_rfcomm_is_connected(void);
|
||
|
||
//extern __s32 bt_ble_rfcomm_is_connect(void);
|
||
|
||
//extern __s32 bt_ble_rfcomm_disconnect(void);
|
||
|
||
//extern __s32 bt_ble_tx_data_rfcomm(char *CmdStr,unsigned char len);
|
||
|
||
//extern __s32 bt_ble_rx_data_rfcomm(char *CmdStr,unsigned char len);
|
||
|
||
/*********************HID COMM******************************/
|
||
|
||
//"AT#@"打头的指令透传通道
|
||
//发送数据
|
||
extern __s32 bt_hid_tx_data(char *CmdStr,unsigned char len);
|
||
|
||
//接收bt数据
|
||
extern __s32 bt_hid_rx_data(char *CmdStr,unsigned char len);
|
||
|
||
//HID是否连接
|
||
extern __s32 bt_hid_is_connected(void);
|
||
|
||
// 注册HID连接callback
|
||
extern void bt_hid_request_connect_cb(void *cb(int status));
|
||
|
||
//连接HID
|
||
extern __s32 bt_hid_connect(void);
|
||
|
||
//断开HID
|
||
extern __s32 bt_hid_disconnect(void);
|
||
|
||
//设置手机光标指针的坐标位置给蓝牙
|
||
extern __s32 bt_hid_set_cursor_pos(s16 x_pos,s16 y_pos);
|
||
|
||
//发送触摸滑动点坐标相对变化值(需要减去上一次坐标值)给bt
|
||
//action 0:指针移动;1:鼠标左键按下;2:鼠标左键抬起;3:鼠标中键按下;4:鼠标中键抬起;
|
||
//5:鼠标右键按下;6:鼠标右键抬起;
|
||
extern __s32 bt_hid_set_cursor_xy(u8 action,s16 x_diff,s16 y_diff);
|
||
|
||
//重置手机光标指针的坐标位置给蓝牙,这个时候的光标位置就是bt_hid_set_cursor_pos函数设置的坐标
|
||
extern __s32 bt_hid_reset_cursor_pos(void);
|
||
|
||
//测试鼠标滑动点击效果给bt
|
||
extern __s32 bt_hid_mouse_test(void);
|
||
|
||
/*********************FMRX COMM******************************/
|
||
//搜台
|
||
extern __s32 bt_fmrx_search (void);
|
||
|
||
//获取节目频道号信息,如当前频点,总节目数
|
||
extern __s32 bt_fmrx_get_info (void);
|
||
|
||
//获取节目频道列表
|
||
extern __s32 bt_fmrx_get_list (void);
|
||
|
||
//获取总节目数
|
||
extern __s32 bt_fmrx_get_ch_cnt (void);
|
||
|
||
//播放节目号
|
||
extern __s32 bt_fmrx_set_ch (__u8 ch);
|
||
|
||
//播放频点
|
||
extern __s32 bt_fmrx_set_freq (__u16 freq);
|
||
|
||
//切节目号,dir为1往108M方向切,0往78.5M方向切
|
||
extern __s32 bt_fmrx_switch_channel (__s8 dir);
|
||
|
||
//切频点,dir为1往108M方向切,0往78.5M方向切
|
||
extern __s32 bt_fmrx_switch_freq (__s8 dir);
|
||
|
||
//获取节目号对应的频点
|
||
__s32 bt_fmrx_get_ch_to_freq (__u8 ch);
|
||
|
||
/*********************BT MOUDLE******************************/
|
||
|
||
//切换蓝牙的应用,BT启动默认蓝牙应用//
|
||
//index值如下:
|
||
//0x41: FMRX; 0x42:AUX2; 0x43:BT; 0x44:MUSIC
|
||
extern __s32 bt_switch_app(u8 index);
|
||
|
||
//字符转换成十六进制显示,转换后长度减半 srcLen/2
|
||
extern void bt_StrToHex(unsigned char *pbDest, unsigned char *pbSrc, int srcLen);
|
||
//十六进制转换成字符显示,转换后长度加倍 srcLen*2
|
||
extern void bt_HexToStr(char *pszDest, char *pbSrc, int srcLen);
|
||
|
||
|
||
//bt_init 初始化内部数据结构和创建线程/定时器
|
||
extern __s32 bt_init(void);
|
||
//bt_exit 初始化内部数据结构和释放线程/定时器
|
||
extern __s32 bt_exit(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|
||
|
||
|