Skip to content

集成到设备端

本文说明如何把 TiRTC C SDK 放进设备端工程,并准备好设备端代码骨架。 下文以 Linux 为例。

1. 获取二进制库

需要先提供下面的信息,以获取匹配的 SDK:

  • 操作系统名称、版本与类型,比如 freeRTOSUbuntu 24.04.3 LTS
  • 芯片的具体型号
  • 供电类型,常电或低功耗
  • 完整的工具链文件压缩包

以 Linux 平台为例子,二进制库压缩包解压后至少包含头文件和静态库:

text
tirtc-c-sdk/
|-- include/
|   |-- tiRTC.h
|   |-- basedef.h
|   `-- ...
`-- lib/
    `-- libtirtc.a

2. 在工程中引用

Linux 工程引用 C SDK 时,把头文件目录加入搜索路径,链接 libtirtc.a,并同时链接 pthreadm

标准设备端 Demo 把 C SDK 放在 3rd/ 目录下,结构是 3rd/include/3rd/lib/libtirtc.a。如果你的工程也采用这个目录,最小 Makefile 可以这样写:

makefile
CC ?= gcc

BUILD_DIR := build
TARGET := $(BUILD_DIR)/device_demo
SRC_DIR := src
TIRTC_INCLUDE_DIR := 3rd/include
TIRTC_LIB := 3rd/lib/libtirtc.a

SRCS := $(SRC_DIR)/main.c
OBJS := $(SRCS:$(SRC_DIR)/%.c=$(BUILD_DIR)/%.o)
CFLAGS := -std=c11 -Wall -Wextra -Werror -I$(SRC_DIR) -I$(TIRTC_INCLUDE_DIR)
LDFLAGS := $(TIRTC_LIB) -pthread -lm

.PHONY: all clean

all: $(TARGET)

$(TARGET): $(OBJS) $(TIRTC_LIB)
	@mkdir -p $(dir $@)
	$(CC) $(OBJS) $(LDFLAGS) -o $@

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
	@mkdir -p $(dir $@)
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	rm -rf $(BUILD_DIR)

3. 准备设备端回调和初始化骨架

  • TiRtcInit() 用来初始化 SDK 运行时。
  • TIRTCCALLBACKS 用来注册设备端后面要用到的回调。
c
#include <signal.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#include "tiRTC.h"

static volatile sig_atomic_t g_should_exit = 0;


static const TIRTCCALLBACKS kCallbacks = {
    // ...
};

static void on_signal(int signo)
{
    (void)signo;
    g_should_exit = 1;
}

int main(int argc, char **argv)
{    
    signal(SIGINT, on_signal);
    signal(SIGTERM, on_signal);

    if (TiRtcInit() != 0) {
        return 1;
    }

    while (!g_should_exit) {
        sleep(1);
    }

    TiRtcUninit();
    return 0;
}

上文的步骤完成后,你的工程已经能正确引用 C SDK,并具备设备端主循环、回调集合和 TiRtcInit() 初始化入口。 下一步可以去参考连接设备端,继续完成 device_secret_key 设置、TiRtcStart() 启动和客户端建连处理。

Ti RTC 开发文档