-
- 蓝牙相关函数(ttyAMA1)
- 硬件资源:
- 蓝牙相关函数(ttyAMA1)
CYW43438
CYW43438设计的2.4G单频单通道蓝牙WiFi二合一模块有AW-NM230NF、AW-NB197SM、AW-CU289
CYW43438是是一款符合802.11b/g/n标准,1T1R单通道,支持BT4.2的高性能方案;
其中WiFi采用SDIO通信接口,最大通信速率150Mbps;BT采用UART/PCM接口通信;
MMI@AT测试:
mmi_test.c
hi_product_at.c
正常使用:
-
-
- 驱动层:
-
amp\a7_linux\drv\extdrv\bthid
驱动名称:bthid.ko
Y:\Aquila_backup\aquila-0303\Aquila-resourse\amp\a7_linux\drv\extdrv\bthid\bthid.c
Y:\Aquila_backup\aquila-0303\Aquila-resourse\amp\a7_linux\drv\extdrv\bthid\bthid.h
/* Declaration of brcm_linux.c functions */
static int bthid_open(struct inode *inode, struct file *filp);
static int bthid_release(struct inode *inode, struct file *filp);
static ssize_t bthid_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
static long bthid_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
#else
static int bthid_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
#endif
static void bthid_exit(void);
static int bthid_init(void);
-
-
- 开启蓝牙脚本
-
Y:\Aquila_backup\aquila-0303\Aquila-resourse\reference\dashcam\rootfs\appfs_priv\ble\ble.sh
./amp/a7_linux/drv/extdrv/wifi/sdio_ap6xxx/firmware/sdio_ap6214a/BCM4343A1.hcd
-
-
- 应用层:
-
reference\dashcam\modules\ui\carrecorder\src:
ui_common.c
setlist_page.c
1、应用层接口函数
reference\common\bluetooth
hi_bluetooth.h
/**
* 功能: 控制蓝牙实现对应功能
* 参数[输入]: enBTCmd 对应功能命令
* 参数[输出]:
* 返回:0(成功),非0(失败)
* 修改记录: 2019/05/16 yxq 创建
*/
HI_S32 HI_Bluetooth_Manager_control(HI_BT_CMD_E enBTCmd);
/**
* 功能: 获取蓝牙配对状态
* 参数[输入]:
* 参数[输出]:
* 返回:HI_TRUE(已配对),HI_FALSE (未配对)
* 修改记录: 2019/05/16 yxq 创建
*/
HI_BOOL HI_Bluetooth_IsConnecting(HI_VOID);
/**
* 功能: 获取蓝牙打开状态
* 参数[输入]:
* 参数[输出]:
* 返回: HI_TRUE(已打开),HI_FALSE (未打开)
* 修改记录: 2019/05/16 yxq 创建
*/
HI_BOOL HI_Bluetooth_Manager_IsInit(HI_VOID);
/**
* 功能: 蓝牙管理初始化并且设置可被发现和连接
* 参数[输入]:
* 参数[输出]:
* 返回: 0(成功),非0(失败)
* 修改记录: 2019/05/16 yxq 创建
*/
HI_S32 HI_Bluetooth_Manager_init(HI_VOID);
/**
* 功能: 蓝牙管理去初始化
* 参数[输入]:
* 参数[输出]:
* 返回: 0(成功),非0(失败)
* 修改记录: 2019/05/16 yxq 创建
*/
HI_S32 HI_Bluetooth_Manager_deinit(HI_VOID);
/**
* 功能: 注册蓝牙事件
* 参数[输入]:
* 参数[输出]:
* 返回: 0(成功),非0(失败)
* 修改记录: 2019/05/16 yxq 创建
*/
HI_S32 HI_PDT_Bluetooth_RegisterEvent(HI_VOID);
/**
* 功能: manager的回调
* 参数[输入]:
* 参数[输出]:
* 返回: 0(成功),非0(失败)
* 修改记录: 2019/05/16 yxq 创建
*/
void app_mgr_security_cback(tBSA_SEC_EVT event, tBSA_SEC_MSG *p_data);
/**
* 功能: 是否在蓝牙手咪状态
* 参数[输入]:
* 参数[输出]:
* 返回: HI_TRUE HI_FALSE
* 修改记录: 2019/05/16 yxq 创建
*/
HI_BOOL HI_PDT_IsInHandMic(HI_VOID);
/**
* 功能: 设置蓝牙MAC
* 参数[输入]:
* 参数[输出]:
* 返回: HI_TRUE HI_FALSE
* 修改记录: 2019/05/16 yxq 创建
*/
HI_VOID HI_PDT_SetBlueMacAddr(const char *macBlue);
/**
* 功能: 设置蓝牙名称
* 参数[输入]:
* 参数[输出]:
* 返回: HI_TRUE HI_FALSE
* 修改记录: 2019/05/16 yxq 创建
*/
配置变量名称;
s_stUSERPARAMCtx.pstUserParamCfg->stWireLessCfg.szDEVName
HI_VOID HI_PDT_SetBlueSSID(const char *blueSSID);
2、配置文件
#define APP_XML_CONFIG_FILE_PATH "/param/bt_config.xml"
#define APP_XML_REM_DEVICES_FILE_PATH "/param/bt_devices.xml"
- 蓝牙事件处理函数
PDT_PREVIEW_PAGE_OnEvent
PDT_UI_COMM_EventProc
PDT_UI_COMM_BluetoothEventProc
- UI界面的回调函数
- UI模块通过EventHub模块的HI_EVTHUB_Subscribe函数订阅系统事件并注册事件处理回调函数 PDT_UI_COMM_OnEvent。当UI订阅的事件发生时,EventHub模块在回调PDT_UI_COMM_OnEvent函数处理事件。例如,UI订阅HDMI插拔事件后,当发生HDMI插入事件时,EventHub模块通过回调函数将显示输出从LCD切换到HDMI。
- UI模块向HiGV模块注册回调函数(OnShow、OnHide、OnEvent、OnKeyDown、OnGestureFling、OnGestureTap 等函数),事件发生时HiGV模块回调相应的函数进行处理。如当界面显示时,HiGV会回调OnShow函数并执行OnShow函数中的代码逻辑。
- UI模块通过函数接口向StateMng模块、PM模块、Playback模块、WiFi模块、Screen模块发送相应调用。如调用HI_PDT_STATEMNG_SendMessage函数向StateMng发消息,调用HI_HAL_WIFI_Init、HI_HAL_WIFI_Deinit 函数初始化、去初始化WiFi模块等。
按键事件发生时回调 onkeydown
PDT_BTCtrl_Manager –蓝牙重连
HI_Bluetooth_Manager_init
PDT_ —thread
说明:
1. 蓝牙协议栈使用的是bsa协议栈,bsa应该是赛普拉斯自定义的协议栈,没听过有这个开源协议栈,以库的方式提供给我们:libbsa.a
2. 蓝牙代码和音频代码有耦合,目前我们主要是增加了一个蓝牙自动连接功能,入口:HI_Bluetooth_Manager_init,PDT_BTCtrl_Manager
3. 蓝牙上电原来是在一个shell脚本中实现,现在改成了使用himm来上电。
4. 蓝牙功能只能在配件模式下方可使用,集群模式下不可用。
-
-
- 蓝牙手咪相关函数
-
PDT_UI_COMM_OnEvent
HI_Bluetooth_Manager_control
app_hs_send_unat
-
-
- 蓝牙连接过程相关函数
-
HI_Bluetooth_Manager_init
app_mgr_config ---- Configure the BSA server
app_mgr_sec_set_security ----- Security configuration
app_mgr_security_cback ----- manager的回调
app_mgr_sp_cfm_reply ----- Function used to accept/refuse Simple Pairing
BSA_SecSpCfmReplyInit----- Initialize structure containing API parameters with default values
-
-
- 350M PDT蓝牙连接鼎桥记录仪失败问题讨论
-
/* Default COD SetTopBox (Major Service = none) (MajorDevclass = Audio/Video) (Minor=STB) */
#define APP_DEFAULT_CLASS_OF_DEVICE {0x00, 0x04, 0x24} set top box
A headset (HS) originated ACL connection is initiated (see Section 4.9) by a user action (e.g. pressing a button on the headset). Upon completion of a connection establishment that was initiated by pressing the “headset button”, the HS shall send the AT+CKPD=200 command to the AG. If the HS connection is initiated by an event other than a headset button press, the HS shall not send AT+CKPD=200.
蓝牙主讲
app_hs_start_usercback