BES2300X,BES2500X——UI(按键,提示音,指示灯)

本文是BES2300X,BES2500X系列博文UI部分
一个耳机/音箱,UI是联系使用者与开发者最直接的一个窗口。当然,对于吾等码农而言,UI设计并不是我们最关心的。
我们主要做的是UI实现。
本文!!!
写BES最基础UI:按键,指示灯,提示音

一,按键
按键显然是一个中断,我们需要关注以下3点

1,管脚配置
tgt_hardware.c文件的cfg_hw_gpio_key_c数组用以配置按键管脚。
值得一提的是,按键配置结构体的最后一个成员可以配置按键极性

2,中断函数
hal_key.c文件的hal_key_debounce_handler函数用以处理按键中断
并依次通过以下函数

send_key_event(HAL_KEY_CODE_PWR, key_status.event)
key_event_process(uint32_t key_code, uint8_t key_event)
APP_MODUAL_KEY( app_set_threadhandle(APP_MODUAL_KEY, app_key_handle_process);
)

将按键事件发送至app_thread中处理

具体细节就不说了,看代码的能力大家都有。重点是hal_key_debounce_handler函数中可以自定义按键操作,例如,双击
+长按,10击等等。

3,处理函数

app_thread中,app_key_handle_process会先查注册表,根据不同的按键code和按键event,分别处理。如下图:

既然需要查表处理,那么一定会有注册的位置:

app_key_handle_registration(&app_key_handle_cfg[i]);

此行代码在app_key_init函数中。
app_key_handle_cfg数组中包含了每一个key_code,每一个key_event对应的处理函数。
至此,按键从IO到上层再到初始化,形成通路。

4,TWS模式从耳通路

另外,TWS模式(IBRT)通路会多一条,从耳机的按键会在注册的按键处理函数中,将按键信息发送至主耳处理。
从耳发送:

app_ibrt_if_keyboard_notify(status,param);

主耳接收:

void app_ibrt_keyboard_request_handler(uint16_t rsp_seq, uint8_t *p_buff, uint16_t length)

主从通信相关问题在蓝牙操作及协议连接部分讲解,链接如下:
敬请期待

二,指示灯

tgt_hardware.c文件的cfg_hw_pinmux_pwl数组对指示灯IO进行配置
使用时就这个函数,调用就完了:

app_status_indication_set(APP_STATUS_INDICATION_CHARGENEED);

驱动流程以及呼吸灯有时间再更新

三,提示音

这里只讲如何播放提示音。
播放提示音有两种方式,如下:

1,播放提示音

打断播放:

app_voice_report(APP_STATUS_INDICATION_T status, uint8_t device_id)

混合播放(流程与打断播放近似,需要打开相关宏定义):

media_PlayAudio(AUD_ID_ENUM id,uint8_t device_id)

2,添加提示音

需要将WAV格式音频文件。打断播放通过BES给出的工具,编码并转换成TXT文件。混合播放直接另存为TXT文件。添加至资源文件夹。
打断播放参考该函数:

void media_runtime_audio_prompt_update(uint16_t id, uint8_t** ptr, uint32_t* len)

混合播放参考该函数:

app_ring_merge_start();

偷个懒,具体操作流程先不写了,有时间再完善

关于提示音如何从内存到Speaker,会在数据流及数据编码部分讲解链接如下:
敬请期待


版权声明:本文为CSDN博主「hoaquin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hoaquin/article/details/112759323

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值