集成到设备端
本文说明如何把 TiRTC C SDK 放进设备端工程,并准备好设备端代码骨架。 下文以 Linux 为例。
1. 获取二进制库
需要先提供下面的信息,以获取匹配的 SDK:
- 操作系统名称、版本与类型,比如
freeRTOS或Ubuntu 24.04.3 LTS - 芯片的具体型号
- 供电类型,常电或低功耗
- 完整的工具链文件压缩包
以 Linux 平台为例子,二进制库压缩包解压后至少包含头文件和静态库:
text
tirtc-c-sdk/
|-- include/
| |-- tiRTC.h
| |-- basedef.h
| `-- ...
`-- lib/
`-- libtirtc.a2. 在工程中引用
Linux 工程引用 C SDK 时,把头文件目录加入搜索路径,链接 libtirtc.a,并同时链接 pthread 和 m。
标准设备端 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() 启动和客户端建连处理。