Skip to main content

CSK SDK开发示例

本篇介绍了CSK项目SDK的一些开发示例,看完本篇你将了解到:

  1. SDK文件目录。
  2. 回调事件的使用示例。
  3. 业务控制接口的使用示例。

本文档仅作示例说明,具体请查看: CSK SDK API详细文档

在正式开发前,请在 application.lini 配置文件中把协议模式选定为自定义双工协议 sys_mode = "custom"

1. SDK文件目录说明#

  • app/csk_callback.h回调接口头文件
  • app/csk_controller.h控制接口头文件
  • app/app_main.c自定义业务逻辑主函数
  • app/scripts/intents.rbEngineCore业务处理

2. 回调事件使用示例#

这个示例展示如何注册和使用回调事件,CSK识别命令词后触发的回调事件,开发者可以在识别结果回调获取识别结果并处理自定义逻辑,例如播放提示音。

// 唤醒回调cb_wake_up(keyword_attrs_t *key_attrs, asr_beam_e beam){ CLOGD("[APP]I'm here"); CLOGD("Wakeup beam : %d", beam); // 唤醒波束 csk_player_stop(); csk_player_start(1); //播放提示音1} // 命令词识别回调cb_esr_recognition(keyword_attrs_t *key_attrs){ CLOGD("[APP]ESR Recognition: kid=%d", key_attrs->kid); csk_player_stop(); csk_player_start(2); //播放提示音2} // 命令词识别超时回调cb_esr_timeout(){ CLOGD("[APP]ESR Recognition timeout");} app_main(void){ CLOGD("[APP]Hello world"); csk_handler_register(CSK_EVENT_WAKE_UP, cb_wake_up); //注册唤醒回调 csk_handler_register(CSK_EVENT_ESR_RECOGNITION, cb_esr_recognition); //注册识别回调 csk_handler_register(CSK_EVENT_ESR_TIMEOUT, cb_esr_timeout); //注册识别超时回调 ...}

3. 业务控制接口使用示例#

3.1 获取播放器状态#

csk_player_status_e csk_player_get_status(void); 参数说明:typedef enum { CSK_PLAYER_IDLE, // 空闲 CSK_PLAYER_RUNNING, // 正在播音} csk_player_status_e;

3.2 串口接收/发送使用示例#

初始化串口

static voiduart_init(void){ csk_uart_init(); if (xTaskCreate(uart_task_proc, "uart_task_proc", 2 * 1024, NULL, 13, NULL) != pdPASS) { CLOGW("[APP]Failed creating UART task"); }} app_main(void){ CLOGD("[APP]Hello world"); // 如使用 UART,解除下面这一行的注释 uart_init();}

创建串口接收任务

static voiduart_task_proc(void *arg){ uint8_t data[MAX_CUSTOM_UART_BUF_CNT]; uint16_t size = 0; while (true) { // 从 UART 读取数据 size = csk_uart_recv(&data, sizeof(data), portMAX_DELAY); } vTaskDelete(NULL);}
  • 没帮助 0