Tange Cloud for Device
 Rev.345
载入中...
搜索中...
未找到
API参考

结构体

struct  ICECONFIG
 

类型定义

typedef void(* TCIONLIVEFRAMECB) (int channel, int stream, TCMEDIA mt, const uint8_t *pFrame, uint32_t size, uint32_t ts, int uFrameFlags)
 

函数

int TciReportError (const char *name, const char *detail)
 上报错误
 
void TciSelectEnvironment (int env)
 用于选择调试环境
 
void TciRegisterLiveFrameCB (TCIONLIVEFRAMECB cb)
 
void TciUnregisterLiveFrameCB (TCIONLIVEFRAMECB cb)
 
void TciSetParamFileOps (struct paramf_ops *ops)
 设置参数文件操作指针.
 
int TciSetMaxP2pClientsNum (int num)
 设置最大p2p连接数.
 
char * TciGetDeviceInfoString (void)
 

核心API

const char * TciGetVersion (void)
 获取SDK版本号 TciInit()之后调用
 
int TciInit (const char *path, const char *uuid)
 配置基本参数 在TciStart()之前调用
 
int TciStart (int isBound, unsigned int uCloudBuffSize)
 启动服务
 
int TciStart2 (int isBound, unsigned int uCloudBuffSize, const char *uuid)
 启动服务.
 
int TciStop (void)
 停止服务
 
int TciCleanup (void)
 释放资源
 
int TciSetCallback (const struct TciCB *cb)
 注册回调 – sdk内部事件
 
int TciSetCmdHandler (const TGCMDHANDLER cb)
 注册通用命令回调 在回调里处理APP发来的命令请求
 
void TciSetSessionUserData (p2phandle_t handle, void *pUser)
 绑定应用私有数据指针到p2p handle
 
void * TciGetSessionUserData (p2phandle_t handle)
 返回由TciSetSessionUserData()设置的应用私有数据指针
 
void TciSetLogOption (int b_output_to_console, const char *log_path, int max_log_size)
 控制日志输出.
 
void TciSetLogLevel (int level)
 设置SDK日志输出等级.
 
void TciSetCloudStream (int channel, int stream)
 设置云存储录像通道的码流
 
int TciSetSysOption (TCSYSOPTION opt, const void *pVal)
 通用sdk工作选项设置接口.
 
int TciGetSysOption (TCSYSOPTION opt, void *pVal)
 通用sdk工作选项获取接口.
 
int TciStartInTestMode (const char *key_path)
 开启p2p功能,进入厂测状态.
 

上报事件/状态/其它数据到平台

int TciSetEventEx (EVENTPARAM *evtp)
 上报事件。本版本允许附带事件特定参数.
 
int TciStopEvent (ECEVENT evt)
 停止事件, 仅少数事件才有意义.
 
int TciSetLockEvent (int cls, int msg, int usrtyp, int usrid)
 门锁事件上报。图片和录像都在内部处理了.
 
int TciSetDoorbellEvent ()
 包装了门铃事件
 
int TciReport4GInfo (const char *imei, const char *iccid, ECG4STATE state)
 
int TciReport4GInfoEx (const TG4GINFO *info, ECG4STATE state)
 上报4G设备信息,代替 TciReport4GInfo()
 
int TciReportGpsInfo (const unsigned int time, const double longitude, const double latitude, double speed, int angle, int signal_strength)
 上报GPS信息
 
int TciReportBatteryStatus (int qoe, int qoe_low, int charging)
 上报电池状态
 
void TciSetRtState (ENUMRTSTATE state, void *pData)
 报告系统运行时状态
 
int TciSendUserData (const unsigned char *data, int len)
 发送用户自定义数据到第三方平台.
 

发送音视频和消息

这个数据通过p2p通道传给App。或者,如果有服务,音视频会上传云端

int TciSendCmd (p2phandle_t handle, unsigned int cmd, const void *data, int dataSize)
 发送p2p命令请求
 
int TciSendCmdResp (p2phandle_t handle, unsigned int cmd, const void *data, int dataSize)
 发送p2p命令应答
 
int TciSendCmdRespStatus (p2phandle_t handle, unsigned int cmd, unsigned int status)
 发送一个 Tcis_ErrorResp 结构作应答.
 
int TciSendPbFrame (p2phandle_t handle, uint32_t id_mt, const uint8_t *frame, int len, uint32_t timestamp, int uFrameFlags)
 回放时发送数据帧.
 
int TciSendPbMessage (p2phandle_t handle, RTMTYPE type, unsigned int data1, unsigned int data2, const void *data, int data_len)
 在回放流中插入消息.
 
int TciSendFrameEx (int channel, int stream, TCMEDIA mt, const uint8_t *pFrame, int length, uint32_t ts, int uFrameFlags)
 发送实时音视频帧, SDK内部会将数据分发到云端和APP.
 
int TciSendLiveMessage (int channel, int stream, RTMTYPE type, unsigned int data1, unsigned int data2, const void *data, int data_len)
 发送实时流消息.
 
int TciSendRtMsg (p2phandle_t handle, RTMTYPE type, unsigned int data1, unsigned data2, const void *extra_data, int extra_len)
 在命令通道上发送通知.
 
#define TciSendPbSyncFrame(handle, utc_time, is_response_to_PLAY_START)
 发送回放时间同步帧.
 
#define TciSendPbTimelapseFlag(handle, flag)
 发送缩时录像回放标志。在进入和退出时发送.
 
#define TciSendPbEndOfEvent(handle)
 在事件回放结束时发送此标志通知App.
 
#define TciSendLiveMsg_ReachPsp(channel, psp_num)
 发送预置位到位通知.
 
#define TciSendLiveMsg_LensSwitch(channel, stream)
 多目摄像机镜头切换时发送的标志帧, 要求在新镜头的第一帧前发送.
 
#define TciSendLensSwitchFlag(channel, stream)
 

配网和注册

int TciConfigWifi (int mode)
 开始配置WIFI.
 
int TciCheckRegString (const char *s)
 在sdk外部扫二维码.
 
int TciStopConfigWifi (int mode)
 中止配网.
 
const void * TciGetRegisterConfiguration (int *len)
 保存wifi注册信息.
 
SA_BOOL TciSetRegisterConfiguration (const void *data, int len)
 恢复wifi注册信息.
 
int TciSetP2pInfo (const char *sss)
 
int TciProcessRegInfo (const void *data)
 处理从蓝牙收到的注册数据
 
int TciSetRegInfo (const char *s)
 手动处理注册信息
 

低功耗相关

int TciAllocCloudBuffer (unsigned int uCloudBuffSize)
 预分配云存储帧缓存空间.
 
void TciFlushCsCache ()
 等待录像缓冲区中的所有数据被消耗掉.
 
int TciSetKeyVideoTime (int channel, int stream, time_t t)
 告诉SDK下一个视频关键帧的实际发生时间(UTC).
 
int TciPrepareHiberation (int *socks, int size)
 准备休眠 本api建立到唤醒服务器的tcp连接,并且返回连接数.
 
int TciGetWakeupServers (Ipv4Addr servers[3])
 获取唤醒服务器ip地址
 
const uint8_t * TciPrepareAuthString (const char *randKey, int *len_of_authstring)
 生成唤醒服务器登录命令.
 
void TciSetPowerMode (PMODE mode)
 设置低功耗设备的工作模式.
 
void TciFastRecoverP2p (void)
 从NETDOWN模式下恢复网络后,调用本api使p2p快速上线
 
void TciSetWakeupReason (time_t t_wakeup, int r, const char *user_reason, int sig_lvl, int sdc_rec)
 设置低功耗设备唤醒原因, 设备进入休眠时会上报给服务器.
 
int TciForceSleeping (SA_BOOL bDiscardFilesInQueue)
 设备端准备强制休眠.
 

云存储自动补录

int TciSetBackStore (const char *sd_path, ECBUFFERHINT buffer_hint)
 设置云存储后备存储目录和缓存策略.
 
void TciBackStoreEnableUpload (int en)
 允许或禁止后备上传.
 
void TciBackStoreEnable (int en)
 这个接口用于sd卡格式化前释放backstore, 和格式化后重新开启后备存储
 

用户定义云上传

void * TciUduBegin2 (const char *evt, time_t tRecordStart, const char *jpg_pic, int pic_len)
 开始一个用户定义上传.
 
int TciUduPutFrame (void *hUdu, TCMEDIA mt, uint32_t ts, const uint8_t *pFrame, int size, int uFrameFlags)
 自定义上传过程,写入帧.
 
void TciUduEnd (void *hUdu)
 结束自定义上传
 
#define TciUduBegin(evt, tRecordStart)
 

手动OTA&文件上传下载

int TciUpgradeOnTheAir (const char *subdev)
 下载升级包
 
int TciQueryForOTA (const char *uuid, DEVICEOTAINFO *ota)
 查询升级包.
 
int TciQueryForOta2 (const char *fw_id, const char *fw_ver, DEVICEOTAINFO *ota)
 查询第三方升级包.
 
int TciPerformOTA (DEVICEOTAINFO *ota)
 执行下载过程,会调用回调里的 ota 接口.
 

下载用户文件

int TciGetUserFile (const char *name, SA_BOOL bToFile, union TgfDest *dest)
 查询并下载用户文件.
 
int TciQueryUserFile (const char *name, EcFileLink *flnk)
 获取用户文件的下载地址.
 
int TciDownloadUserFile (const EcFileLink *flink, SA_BOOL bToFile, union TgfDest *dest, int timeout)
 下载用户文件.
 

日志上传工具

以查询的方式上传日志,主要用于低功耗设备.

int TgQueryUploadReq (const char *uuid, const char *model_id, char **ppUrl)
 查询日志上传请求
 
int TgPostLogFile (const char *url, const char *uuid, const char *path, int timeout)
 传日志文件
 
int TgPostLogMem (const char *url, const char *uuid, const void *mem, int size, const char *name, int timeout)
 上传内存中的日志
 

MCU配网api

低功耗设备在MCU端进行配网.

char * TciGetActivationAttrs (void)
 获取设备属性字符串。调用者把该字符串传给MCU,用于在MCU端激活设备.
 
unsigned char * TciGetPlatConfig (int *pLen)
 返回要同步到MCU的数据.
 
int TciSyncPlatConfig (const unsigned char *pData, int len)
 同步从MCU来的数据.
 

其它功能

void TcnIpChanged ()
 设备上线后IP发生变化时通知SDK, 用于立即更新长连接
 
int TciLocalStart (const char *url, const ICECONFIG *cfg, int size)
 开启本地工作模式.
 
unsigned int TciGetSdkState (void)
 获取SDK内部状态.
 
int TciSetEventRecordLength (int erl)
 设置用户定义低功耗设备的事件云录像时长.
 

呼入处理

int TciAcceptInCall2 (ECALLFLAVOR flavor)
 接听.
 
int TciRejectInCall2 ()
 拒接.
 
int TciHangup (void)
 挂断当前通话
 

详细描述


结构体说明

◆ ICECONFIG

struct ICECONFIG

在文件 TgCloudApi.h1165 行定义.

成员变量
char * ip
int port
char * username
char * password
int is_turn

宏定义说明

◆ TciSendPbSyncFrame

#define TciSendPbSyncFrame ( handle,
utc_time,
is_response_to_PLAY_START )
值:
TciSendPbMessage(handle, is_response_to_PLAY_START?RTM_SYNCTIME_RESPONSE_TO_USER:RTM_SYNCTIME, 0, utc_time, NULL, 0)
@ RTM_SYNCTIME_RESPONSE_TO_USER
回放: 同 RTM_SYNCTIME, 但在响应 TCI_CMD_RECORD_PLAYCONTROL 命令发生跳转的第一帧前发送
@ RTM_SYNCTIME
回放: 时间同步帧, 用于告诉播放器下一帧发生时的的UTC时间.
int TciSendPbMessage(p2phandle_t handle, RTMTYPE type, unsigned int data1, unsigned int data2, const void *data, int data_len)
在回放流中插入消息.

发送回放时间同步帧.

参数
handlep2p 连接句柄
utc_time下一帧的生成时间(utc, 单位s)
is_response_to_PLAY_START1:响应 TCI_CMD_RECORD_PLAYCONTROL; 0:自动跳到下一个文件

在文件 TgCloudApi.h718 行定义.

◆ TciSendPbTimelapseFlag

#define TciSendPbTimelapseFlag ( handle,
flag )
值:
TciSendPbMessage(handle, RTM_TIME_LAPSED, flag, 0, NULL, 0)
@ RTM_TIME_LAPSED
回放: 缩时录像回放启停标志.

发送缩时录像回放标志。在进入和退出时发送.

参数
handlep2p 连接句柄
flag1:进入缩时回放; 0:退出缩时回放

在文件 TgCloudApi.h725 行定义.

◆ TciSendPbEndOfEvent

#define TciSendPbEndOfEvent ( handle)
值:
TciSendPbMessage(handle, RTM_END_OF_EVENT, 0, 0, NULL, 0)
@ RTM_END_OF_EVENT
回放: 事件结束标志 事件(单文件)(参见 TCIC_RECORD_PLAY_START)回放模式下,当事件(文件)播放结束时发送此标志。 支持单文件模式时必需发送

在事件回放结束时发送此标志通知App.

在文件 TgCloudApi.h730 行定义.

◆ TciSendLiveMsg_ReachPsp

#define TciSendLiveMsg_ReachPsp ( channel,
psp_num )
值:
TciSendLiveMessage(channel, -1, RTM_REACH_PSP, channel, psp_num, NULL, 0)
@ RTM_REACH_PSP
实时: 到达预置位.
int TciSendLiveMessage(int channel, int stream, RTMTYPE type, unsigned int data1, unsigned int data2, const void *data, int data_len)
发送实时流消息.

发送预置位到位通知.

在文件 TgCloudApi.h764 行定义.

◆ TciSendLiveMsg_LensSwitch

#define TciSendLiveMsg_LensSwitch ( channel,
stream )
值:
TciSendLiveMessage(channel, stream, RTM_LENS_SWITCH, channel, stream, NULL, 0)
@ RTM_LENS_SWITCH
实时流: 多目摄像机在变焦过程中发生镜头切换,在切换完成后、新镜头的第一个I帧前发送此标志

多目摄像机镜头切换时发送的标志帧, 要求在新镜头的第一帧前发送.

在文件 TgCloudApi.h768 行定义.

◆ TciSendLensSwitchFlag

#define TciSendLensSwitchFlag ( channel,
stream )
值:
TciSendLiveMsg_LensSwitch(channel, stream)
#define TciSendLiveMsg_LensSwitch(channel, stream)
多目摄像机镜头切换时发送的标志帧, 要求在新镜头的第一帧前发送.
弃用
发送镜头切换通知, 旧的名字.

在文件 TgCloudApi.h773 行定义.

◆ TciUduBegin

#define TciUduBegin ( evt,
tRecordStart )
值:
TciUduBegin2(evt, tRecordStart, NULL, 0)
void * TciUduBegin2(const char *evt, time_t tRecordStart, const char *jpg_pic, int pic_len)
开始一个用户定义上传.

在文件 TgCloudApi.h996 行定义.

类型定义说明

◆ TCIONLIVEFRAMECB

typedef void(* TCIONLIVEFRAMECB) (int channel, int stream, TCMEDIA mt, const uint8_t *pFrame, uint32_t size, uint32_t ts, int uFrameFlags)

在文件 TgCloudApi.h1024 行定义.

函数说明

◆ TciGetVersion()

const char * TciGetVersion ( void )

获取SDK版本号 TciInit()之后调用

返回
SDK版本号字符串。如:"rev. nn"

◆ TciInit()

int TciInit ( const char * path,
const char * uuid )

配置基本参数 在TciStart()之前调用

参数
path用于保存sdk私有数据的目录, 需要有读写权限
uuid设备id. 新的id参数为 "uuid,key" 的形式, 烧号时由服务器分配
返回
0

◆ TciStart()

int TciStart ( int isBound,
unsigned int uCloudBuffSize )

启动服务

前置条件
调用本接口前需要保证网络已经配置好 本调用阻塞直到内部完成初始化或操作失败
参数
isBound设备本地记录的绑定状态. 复位或在TciCB::on_status()里 STATUS_DELETED 时清除。收到 STATUS_LOGON 时设置并保存
uCloudBuffSize云存储缓冲区大小(单位:字节). 要求能缓存3~5秒音视频数据, 为0会禁用云存
返回值
0启动成功
others.Refer to 错误码 TgCloudConst.h

◆ TciStart2()

int TciStart2 ( int isBound,
unsigned int uCloudBuffSize,
const char * uuid )

启动服务.

参数
uuid设备id. 新的id参数为 "<uuid>,<key>" 的形式, 烧号时由服务器分配
注解
这个接口用于 TciInit() 没有传 uuid 参数的情形. 例如工厂生产测试烧号后立即
启动服务。烧号前调用TciInit()时uuid为NULL, 烧号后可以在这里传入uuid。 其它参数和返回值同 TciStart()

◆ TciStop()

int TciStop ( void )

停止服务

前置条件
TciStart() 返回0
返回
0(成功), 或 TCE_SERVER_IS_DOWN, TCE_INVALID_UUID TgCloudConst.h

◆ TciCleanup()

int TciCleanup ( void )

释放资源

前置条件
TciStop()
返回
Always return 0

◆ TciSetCallback()

int TciSetCallback ( const struct TciCB * cb)

注册回调 – sdk内部事件

参数
cb非局部TciCB结构指针
返回
0
注解
TciInit() 前调用

◆ TciSetCmdHandler()

int TciSetCmdHandler ( const TGCMDHANDLER cb)

注册通用命令回调 在回调里处理APP发来的命令请求

注解
TciInit() 前调用

◆ TciSetSessionUserData()

void TciSetSessionUserData ( p2phandle_t handle,
void * pUser )

绑定应用私有数据指针到p2p handle

参数
[in]handleP2P句柄, 来自命令回调
[in]pUser应用私有数据指针

◆ TciGetSessionUserData()

void * TciGetSessionUserData ( p2phandle_t handle)

返回由TciSetSessionUserData()设置的应用私有数据指针

参数
[in]handleP2P句柄
返回值
返回P2P句柄绑定的应用私有数据,没有则返回NULL

◆ TciSetLogOption()

void TciSetLogOption ( int b_output_to_console,
const char * log_path,
int max_log_size )

控制日志输出.

应该在TciInit()前调用

参数
b_output_to_console是否输出到控制台
log_pathlog文件路径。应该是一个全局或静态的字符串指针. 为NULL时不创建日志文件
max_log_size日志文件最大尺寸(单位:byte)

◆ TciSetLogLevel()

void TciSetLogLevel ( int level)

设置SDK日志输出等级.

参数
level3:Information(default); 5:verbose; 6:debug

◆ TciSetCloudStream()

void TciSetCloudStream ( int channel,
int stream )

设置云存储录像通道的码流

参数
channel视频通道
stream码流: 0-主; 1-辅
注解
本接口拟用于画中画设备.
当收到 TCI_CMD_SET_PRIMARY_VIEW 命令时,设备可能希望云录像通道与实时画面一致,就可以调用此接口.
非此情形,用户可以通过App发送 TCI_CMD_SET_CLOUD_VIDEO_QUALITY_REQ 来显式设置云录像通道和码流。这一命令在sdk内部处理, 不会回调给应用层.

◆ TciSetSysOption()

int TciSetSysOption ( TCSYSOPTION opt,
const void * pVal )

通用sdk工作选项设置接口.

参数
opt选项名. TCSYSOPTION
pVal传入选项值
返回
>=0:ok; <0:错误

◆ TciGetSysOption()

int TciGetSysOption ( TCSYSOPTION opt,
void * pVal )

通用sdk工作选项获取接口.

参数
opt选项名. TCSYSOPTION
pVal返回选项的值
返回
>=0:ok; <0:错误

◆ TciStartInTestMode()

int TciStartInTestMode ( const char * key_path)

开启p2p功能,进入厂测状态.

参数
key_pathkey 文件路径
返回值
0ok
-1failed

◆ TciSetEventEx()

int TciSetEventEx ( EVENTPARAM * evtp)

上报事件。本版本允许附带事件特定参数.

参数
evtp事件参数指针
返回
0:事件已经排队等待发送; non-zeor:错误码
注解
本操作是异步的,返回0后要求evtp->jpg_pic仍然有效。
如果evtp->evtp_flags 最低位非0, 上传结束后sdk会释放空间.
evtp->evtp_flags最低位为0,用于jpg_pic为全局空间的情形.
返回非0时,调用者要自己释放图片空间.

◆ TciStopEvent()

int TciStopEvent ( ECEVENT evt)

停止事件, 仅少数事件才有意义.

参数
evtECEVENT_DOORBELL 为取消呼叫.
注解
取消呼叫时, sdk内部自动取呼叫的时间

◆ TciSetLockEvent()

int TciSetLockEvent ( int cls,
int msg,
int usrtyp,
int usrid )

门锁事件上报。图片和录像都在内部处理了.

参数见外部文档

◆ TciReport4GInfo()

int TciReport4GInfo ( const char * imei,
const char * iccid,
ECG4STATE state )
弃用
上报4G设备信息. 请使用 TciReport4GInfoEx()
参数
imei
iccid
stateG4STATE_xxx
返回
0:成功; <0:错误码

◆ TciReport4GInfoEx()

int TciReport4GInfoEx ( const TG4GINFO * info,
ECG4STATE state )

上报4G设备信息,代替 TciReport4GInfo()

参数
info指向4G信息结构
state4G联网状态
返回
0:成功; <0:错误码

◆ TciReportGpsInfo()

int TciReportGpsInfo ( const unsigned int time,
const double longitude,
const double latitude,
double speed,
int angle,
int signal_strength )

上报GPS信息

参数
time当前时间
longitude当前经度值(单位:度). >0 东经,<0 西经
latitude当前纬度值(单位:度). >0 北纬,<0 南纬
speed速度 km/h
angle对正北方向的夹角: 0~359
signal_strength0:未知(忽略); 1:弱; 2:中; 3:强
返回
0:ok; non-zero: error code

◆ TciReportBatteryStatus()

int TciReportBatteryStatus ( int qoe,
int qoe_low,
int charging )

上报电池状态

参数
qoe电池电量百分比(0~100); -1:未知
qoe_low
  • 1: 电量低;
  • 0: 电量正常;
  • -1:未知
charging1-正在充电; 0-放电状态
返回
0-成功; 非0-错误码

◆ TciSetRtState()

void TciSetRtState ( ENUMRTSTATE state,
void * pData )

报告系统运行时状态

参数
state状态名. ENUMRTSTATE
pDatastate 相关参数。具体见

◆ TciSendUserData()

int TciSendUserData ( const unsigned char * data,
int len )

发送用户自定义数据到第三方平台.

需要平台间对接

◆ TciSendCmd()

int TciSendCmd ( p2phandle_t handle,
unsigned int cmd,
const void * data,
int dataSize )

发送p2p命令请求

参数
handle连接句柄,由 TciSetCmdHandler()设置的回调被调用时会收到此句柄
cmd命令标识
data指向命令参数
dataSize参数长度
返回
0 或 错误码

◆ TciSendCmdResp()

int TciSendCmdResp ( p2phandle_t handle,
unsigned int cmd,
const void * data,
int dataSize )

发送p2p命令应答

参数
handle连接句柄,由 TciSetCmdHandler()设置的回调被调用时会收到此句柄
cmd命令标识
data指向命令参数
dataSize参数长度
返回
0 或 错误码

◆ TciSendCmdRespStatus()

int TciSendCmdRespStatus ( p2phandle_t handle,
unsigned int cmd,
unsigned int status )

发送一个 Tcis_ErrorResp 结构作应答.

这个应答用于只需要简单地通知客户端命令执行成功或失败的情形.

参数
handleP2P句柄
cmd命令标识
statusTCI_OK 或 TCI_E_xxx, 参见 通用错误码
返回
0 或 错误码

◆ TciSendPbFrame()

int TciSendPbFrame ( p2phandle_t handle,
uint32_t id_mt,
const uint8_t * frame,
int len,
uint32_t timestamp,
int uFrameFlags )

回放时发送数据帧.

参数
handle连接句柄
id_mt低16位:媒体数据类型 TCMEDIA ; 高16位:视频通道号(0~N-1)
frame帧数据指针
len帧数据长度
timestamp帧的时间戳
uFrameFlags视频:关键帧标志(1:关键帧;0:非关键帧); 音频: 音频采样格式
返回值
>0ok
0当前为回放暂停状态。
TCE_NETWORK_BUSYTCE_NETWORK_BUSY :网络拥堵,应用层要延迟一会儿(例如300ms)后重新发送
-1其它错误,通常意味着连接无效
注解
每次设备在文件内或文件间重新定位, 或者自动跳到下一个文件,要通过 TciSendPbSyncFrame 先发一个绝对时间同步帧.
参见
TciSendPbSyncFrame

◆ TciSendPbMessage()

int TciSendPbMessage ( p2phandle_t handle,
RTMTYPE type,
unsigned int data1,
unsigned int data2,
const void * data,
int data_len )

在回放流中插入消息.

参数
handlep2p连接句柄。
type消息类型
data1RTMSGHEAD_t::data1
data2RTMSGHEAD_t::data2
data_len额外数据长度 RTMSGHEAD_t::frame_size
data指向额外数据

◆ TciSendFrameEx()

int TciSendFrameEx ( int channel,
int stream,
TCMEDIA mt,
const uint8_t * pFrame,
int length,
uint32_t ts,
int uFrameFlags )

发送实时音视频帧, SDK内部会将数据分发到云端和APP.

参数
channel视频通道号: 0|1|...
stream视频码流. 0: 高清; 1: 标清
mt媒体类型 TCMEDIA
pFrame指向数据帧。视频要带4个前导字节 00 00 00 01
length数据帧长度
tstimestamp. 单位为ms
uFrameFlags帧标志(低16位)
注解
该操作不会阻塞调用。如果没有消费者(没有云服务,没有人访问),实际不会做任何事情

◆ TciSendLiveMessage()

int TciSendLiveMessage ( int channel,
int stream,
RTMTYPE type,
unsigned int data1,
unsigned int data2,
const void * data,
int data_len )

发送实时流消息.

参数
channel通道。为-1时在全部通道上发送
stream码流。为-1时在全部码流上发送
type消息类型. 参见 RTMTYPE
data1消息相关数据
data2消息相关数据
data_len额外数据长度 RTMSGHEAD_t::frame_size
data指向额外数据

◆ TciSendRtMsg()

int TciSendRtMsg ( p2phandle_t handle,
RTMTYPE type,
unsigned int data1,
unsigned data2,
const void * extra_data,
int extra_len )

在命令通道上发送通知.

参数
handle指定连接。如果为NULL,则发广播.
type消息类型
type消息类型. 参见 RTMTYPE
data1消息相关数据
data2消息相关数据
extra_data指向额外数据, 可以为NULL
extra_len额外数据长度

◆ TciConfigWifi()

int TciConfigWifi ( int mode)

开始配置WIFI.

支持AP热点或设备扫描手机上的二维码的方式配置WIFI. AP热点名称为 "AICAM_uuid" 的形式.
该调用会一直阻塞直到获得了正确的wifi配置.

参数
mode配网方式. GWM_QRCODE, GWM_AP 的组合。

◆ TciCheckRegString()

int TciCheckRegString ( const char * s)

在sdk外部扫二维码.

调用此接口验证

返回
有效时返回SA_TRUE, 否则返回 SA_FALSE

◆ TciStopConfigWifi()

int TciStopConfigWifi ( int mode)

中止配网.

参数
mode要中止的配网方式. GWM_QRCODE: 只中止qrcode; GWM_AP 会中止全部配网方式。

◆ TciGetRegisterConfiguration()

const void * TciGetRegisterConfiguration ( int * len)

保存wifi注册信息.

用于wifi模块从AP模式切换到STA模式必须重启的情形。

返回
要保存的数据的地址。 *len 为要保存的数据的长度
注解
TciConfigWifi()返回后调用 TciGetRegisterConfiguration() 操作并且保存返回的数据。
重启后不调用 TciConfigWifi(), 而是用保存的内容调用 TciSetRegisterConfiguration()。 然后执行 TciStart() 完成注册过程。

◆ TciSetRegisterConfiguration()

SA_BOOL TciSetRegisterConfiguration ( const void * data,
int len )

恢复wifi注册信息.

返回
非0表示成功

◆ TciSetP2pInfo()

int TciSetP2pInfo ( const char * sss)
弃用
设置p2p信息.
参数
sss从平台获取的p2p信息字符串
返回
0:ok; -1:内容错误
注解
TciStart()前调用

◆ TciProcessRegInfo()

int TciProcessRegInfo ( const void * data)

处理从蓝牙收到的注册数据

参数
data命令0x8006的数据
注解
参看《蓝牙的应用层协议.md》文档

◆ TciSetRegInfo()

int TciSetRegInfo ( const char * s)

手动处理注册信息

参数
s另一台设备通过 STATUS_GOT_REGINFO 获取到的注册信息

◆ TciAllocCloudBuffer()

int TciAllocCloudBuffer ( unsigned int uCloudBuffSize)

预分配云存储帧缓存空间.

本功能用于对上传时间敏感的事件唤醒类设备录像。 可以在网络初始化前就调用本接口,之后调用 TciSendFrameEx()就会向缓冲写入帧。 设备TciStart()成功后调用TciSetEventEx(),已经缓存的帧得以上传。

不调用本接口,TciStart()内部会在设备注册成功后执行同样功能.

参数
uCloudBuffSize云存储缓冲区大小(单位:字节),最小1M
返回
内存不足时返回-1, 否则返回0
注解
TciStart()会通过回调修改系统时间,设备要保证 TciStart()前后帧的时间戳时连续的。
  • 要在 TciInit() 之后调用
  • 要在调用前从RTC恢复系统时间和设置时区

◆ TciFlushCsCache()

void TciFlushCsCache ( )

等待录像缓冲区中的所有数据被消耗掉.

注解
本功能用在缩时录像时缓存周期结束时通知sdk结束打包并立即上传.
操作会阻塞直到打包上传完成. 操作期间不要向sdk送入新的帧.

◆ TciSetKeyVideoTime()

int TciSetKeyVideoTime ( int channel,
int stream,
time_t t )

告诉SDK下一个视频关键帧的实际发生时间(UTC).

参数
channel/stream云存的通道和码流
t下一个关键帧的发生时间
注解
默认情况下SDK以调用 TciSendFrameEx()时的时间作为帧的产生时间, 这个时间用于确定云
存储的开始时间和回放定位. 当应用层存在缓存行为(帧在时间 T0 时产生, 但在n秒后的 T0+n 时发送), 需要调用本接口
告诉SDK传入的时间(T0)才是帧的实际发生时间。
调用本接口后,下一次事件时间如果等于或早于T0, 录像从缓冲区中的第一帧开始; 否则执行
普通的5秒预录。
这种情形一般发生在低功耗设备.

◆ TciPrepareHiberation()

int TciPrepareHiberation ( int * socks,
int size )

准备休眠 本api建立到唤醒服务器的tcp连接,并且返回连接数.

调用者对返回的socket调用getpeername()/getsockname()取得与唤醒服务器的连接信息, 并使用此信息配置wifi模组,然后对主芯片下电。在模组里每50"向唤醒 服务器发送64字节的心跳包,包内容任意。

注意: 设备如果要进入休眠,应用层不能关闭返回的socket.

参数
socks接收连接socket
sizesocks数组大小
返回值
>=0number of sockets connected to wakeup-servers
<0failed

◆ TciGetWakeupServers()

int TciGetWakeupServers ( Ipv4Addr servers[3])

获取唤醒服务器ip地址

参数
servers接收服务器地址。最多返回3个地址
返回
服务器个数

◆ TciPrepareAuthString()

const uint8_t * TciPrepareAuthString ( const char * randKey,
int * len_of_authstring )

生成唤醒服务器登录命令.

本接口用于到唤醒服务器的tcp连接不由主机创建的情形.

参数
randKey服务器生成的随机串
len_of_authstring登录命令长度
返回
登录字节串指针。如果失败返回 NULL
注解
应用要按以下步骤建立到唤醒服务器的有效连接:
  1. 应用调用 TciGetWakeupServers() 获取唤醒服务器的地址
  2. 通信模块建立到唤醒服务器的连接, 接收由服务器返回的randkey
  3. 应用使用此randkey调用本接口
  4. 通信模块向服务器发送本接口生成的认证字符串
  5. 主控下电. 通信模块每50"向服务器发送64字节的心跳包,包内容任意。

◆ TciSetPowerMode()

void TciSetPowerMode ( PMODE mode)

设置低功耗设备的工作模式.

注解
需要在TciStart()之后调用. 调用逻辑一定参看文档 手动控制电源模式

◆ TciSetWakeupReason()

void TciSetWakeupReason ( time_t t_wakeup,
int r,
const char * user_reason,
int sig_lvl,
int sdc_rec )

设置低功耗设备唤醒原因, 设备进入休眠时会上报给服务器.

参数
t_wakeup唤醒时间
r<0:异常唤醒; 0:远程唤醒; >0:唤醒事件类型(ECEVENT)
user_reason当r=ECEVENT_USER_DEFINED, user_reason为用户定义的唤醒理由字符串,长度不超过15个字符.
其它情形下传NULL
sig_lvlwifi或4G信号强度: 0~100. 传负数时由用户自己解释
sdc_recSD卡录像长度
注解
要在 STATUS_IDLE 返回0的时候调用,因为随此上报的还有别的信息。

◆ TciForceSleeping()

int TciForceSleeping ( SA_BOOL bDiscardFilesInQueue)

设备端准备强制休眠.

本操作会先通知实时用户(app端收到通知后要停止视频),然后停止云上传、退出p2p、断开长连接等.
返回后设备可以立即下电。

参数
bDiscardFilesInQueue是否放弃上传队列中未处理的文件.
如果为 SA_FALSE, 会尝试上传队列中的所有文件.
建议在开启了后备存储并且存储路径有效时 SA_TRUE,这样在网络不好,队列中文件多时可以加速返回.
其它情况下的设置由应用自行载定.

◆ TciSetBackStore()

int TciSetBackStore ( const char * sd_path,
ECBUFFERHINT buffer_hint )

设置云存储后备存储目录和缓存策略.

当设置后备存储目录后,SDK会利用此目录暂存上传失败的录像和图片, 并在合适的时机重传.
本功能要在 TciStart() 前调用

参数
sd_path用于后备存储的目录
buffer_hint内存缓存策略.
返回值
0
注解
缓存策略影响用于云存储的内存大小。参看 ECBUFFERHINT 的说明

◆ TciBackStoreEnableUpload()

void TciBackStoreEnableUpload ( int en)

允许或禁止后备上传.

参数
en1:enable; 0:disable
注解
默认由sdk根据网络情况决定上传时间。如果应用层要临时禁止上传,可调用此接口

◆ TciBackStoreEnable()

void TciBackStoreEnable ( int en)

这个接口用于sd卡格式化前释放backstore, 和格式化后重新开启后备存储

参数
en0-释放; 非0-重新打开

◆ TciUduBegin2()

void * TciUduBegin2 ( const char * evt,
time_t tRecordStart,
const char * jpg_pic,
int pic_len )

开始一个用户定义上传.

自定义上传主要用于sdk本身预录时间不足或不能录像,要从SD卡录像上传的情形.
必须在 TciStart() 成功后调用

参数
evt事件类型. ECEVENT (作为参数传入时要强传为 const char *型), 或长度小于16的字符串。
目前仅支持行车记录仪的事件(ECEVENT_DR_BEGIN ~ ECEVENT_DR_END)
或者 TciCB::on_status(STATUS_SDER, SDER *, ...) 回调的平台定义事件( SDER::event )
tRecordStart录像起始时间
jpg_pic图片数据(如果有的话)指针(SDK不会take图片缓冲区的所有权)
pic_len图片数据长度
返回
如果允许上传,返回一个用户上传句柄。否则返回NULL
注解
用户自定义上传只能是事件上传,长度限制在30秒内.
自定义上传的是事后发觉的事件,这个时候录像已经保存到sd卡了。
自定义上传的时间范围不能与TciSetEvent 的时间重叠,也不能与另一个自定义事件的时间范围重叠

◆ TciUduPutFrame()

int TciUduPutFrame ( void * hUdu,
TCMEDIA mt,
uint32_t ts,
const uint8_t * pFrame,
int size,
int uFrameFlags )

自定义上传过程,写入帧.

参数
hUduTciUduBegin() 返回的上传句柄
mt媒体类型. 参见 TciSendPbFrame() 的 id_mt 参数
ts时间戳
pFrame帧数据指针
size帧数据大小
uFrameFlags视频:关键帧标志(1:关键帧;0:非关键帧); 音频: 音频采样格式
返回
0:ok; 非0:录像长度超限,用户要调用 TciUduEnd()

◆ TciUduEnd()

void TciUduEnd ( void * hUdu)

结束自定义上传

参数
hUduTciUduBegin() 返回的上传句柄

◆ TciSelectEnvironment()

void TciSelectEnvironment ( int env)

用于选择调试环境

参数
env1:测试环境; 0:正式环境
注解
TciStart() 之前调用

◆ TciSetParamFileOps()

void TciSetParamFileOps ( struct paramf_ops * ops)

设置参数文件操作指针.

SDK会保存工作参数到flash. 小系统设备在flash上没有标准文件I/O支持时,需要提供载入和写参数的操作。本操作要在 TciInit() 之前调用
linux和有文件系统的liteos不需要设置

参数
ops参数文件操作结构指针

◆ TciSetMaxP2pClientsNum()

int TciSetMaxP2pClientsNum ( int num)

设置最大p2p连接数.

参数
num要设置的最大连接数
返回
最大连接数有效值
注解
只能在 TciStart()和TciConfigWifi()前调用

◆ TciUpgradeOnTheAir()

int TciUpgradeOnTheAir ( const char * subdev)

下载升级包

参数
subdevNULL或子设备id. 用于选择相应的固件
返回
0:ok; <0:error code

◆ TciQueryForOTA()

int TciQueryForOTA ( const char * uuid,
DEVICEOTAINFO * ota )

查询升级包.

参数
uuid
ota返回升级包信息
注解
先要调用 TciStart()

◆ TciQueryForOta2()

int TciQueryForOta2 ( const char * fw_id,
const char * fw_ver,
DEVICEOTAINFO * ota )

查询第三方升级包.

参数
fw_id第三方设备的 firmware id
fw_ver第三方设备的当前版本号。版本号在平台上是以8位数字("01010101")的方式记录.
如果第三方固件的版本有不同表示方式,需要在上传固件时自行维护一个映射关系.
ota返回升级包信息
返回
0:查询成功, 是否有可用升级包看 *ota 内容; <0:错误码
注解
先要调用 TciStart()

◆ TciPerformOTA()

int TciPerformOTA ( DEVICEOTAINFO * ota)

执行下载过程,会调用回调里的 ota 接口.

返回
0:下载完成; -1:没有设置回调; 其它<0:通信错误

◆ TciGetUserFile()

int TciGetUserFile ( const char * name,
SA_BOOL bToFile,
union TgfDest * dest )

查询并下载用户文件.

参数
name文件上传到服务器端时确定的文件标识
bToFile1:下载到文件; 0:下载到内存
dest下载到文件时,设置 dest->file.path 为本地文件路径; 下载到内存时,内容在dest->mem中返回

◆ TciQueryUserFile()

int TciQueryUserFile ( const char * name,
EcFileLink * flnk )

获取用户文件的下载地址.

参数
name文件上传到服务器端时确定的文件标识
flnk成功时返回文件信息
返回
0:成功; 非0:错误码

◆ TciDownloadUserFile()

int TciDownloadUserFile ( const EcFileLink * flink,
SA_BOOL bToFile,
union TgfDest * dest,
int timeout )

下载用户文件.

参数
flink用户文件信息
bToFile1:下载到文件; 0:下载到内存
dest下载到文件时,设置 dest->file.path 为本地文件路径; 下载到内存时,内容在dest->mem中返回
timeout超时值。单位:秒
返回
0:成功; 非0:错误码

◆ TgQueryUploadReq()

int TgQueryUploadReq ( const char * uuid,
const char * model_id,
char ** ppUrl )

查询日志上传请求

参数
uuid
model_idmay be NULL
ppUrl如果有请求,返回上传地址
返回
0:ok; none-zero: error code
注解
如果有请求,用返回的地址调用 TgPostMultiparts()

◆ TgPostLogFile()

int TgPostLogFile ( const char * url,
const char * uuid,
const char * path,
int timeout )

传日志文件

参数
urlTgQueryUploadReq() 返回的上传地址
uuid
path本地文件名
timeout超时值(ms)
返回
0:ok; otherwise error

◆ TgPostLogMem()

int TgPostLogMem ( const char * url,
const char * uuid,
const void * mem,
int size,
const char * name,
int timeout )

上传内存中的日志

参数
urlTgQueryUploadReq() 返回的上传地址
uuid
mem内存地址
size数据长度
name保存为文件名name
timeout超时值(ms)
返回
0:ok; otherwise error

◆ TciGetActivationAttrs()

char * TciGetActivationAttrs ( void )

获取设备属性字符串。调用者把该字符串传给MCU,用于在MCU端激活设备.

调用者要 free() 返回的字符串.

◆ TciGetPlatConfig()

unsigned char * TciGetPlatConfig ( int * pLen)

返回要同步到MCU的数据.

参数
pLen用于返回数据长度.
返回
要同步到MCU的数据缓冲区地址。调用者要负责释放(free())

◆ TciSyncPlatConfig()

int TciSyncPlatConfig ( const unsigned char * pData,
int len )

同步从MCU来的数据.

参数
pData从MCU收到的同步数据
len数据长度
返回
0:成功; <0:失败

◆ TciLocalStart()

int TciLocalStart ( const char * url,
const ICECONFIG * cfg,
int size )

开启本地工作模式.

该模式用于仅在局域网工作的设备. 有需要先要同我们联系.

参数
url
cfgwebrtc 服务配置数组
size数组大小
返回
0:成功; <0:错误码
注解
函数内部会复制cfg信息, 返回后用户可以释放cfg引用或间接引用的空间

◆ TciGetSdkState()

unsigned int TciGetSdkState ( void )

获取SDK内部状态.

返回
0 或 SDK状态标志 的组合
注解
本函数只是用来告诉用户当前用什么事件在处理.
不能用来代替 STATUS_IDLE 状态回调.

◆ TciSetEventRecordLength()

int TciSetEventRecordLength ( int erl)

设置用户定义低功耗设备的事件云录像时长.

参数
erl录像时长,可取值 -1/10/20/30. <=0时录像时长由sdk决定.
注解
非低功耗设备该设置无效. 在TciInit()后调用.
返回
0(ok) 或 TCI_E_NOT_ALLOWED

◆ TciAcceptInCall2()

int TciAcceptInCall2 ( ECALLFLAVOR flavor)

接听.

参数
flavor通话类型 VIDEO_CALLVOICE_CALL
返回
0:成功; 非0为错误码。如果呼叫来自微信小程序, 错误码定义在 wx_err.h
注解
flavor是对从STATUS_INCALL2 收到的INCALLINFO::flavor 的响应,
不得高于请求的值.
不要在回调中调用本接口。

◆ TciRejectInCall2()

int TciRejectInCall2 ( )

拒接.

返回
0:成功; 非0为错误码。如果呼叫来自微信小程序, 错误码定义在 wx_err.h