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
  • 文档反馈