Tange Cloud for Device
 Rev.333
载入中...
搜索中...
未找到
TgCloudConst.h
浏览该文件的文档.
1/**
2 * @file TgCloudConst.h
3 * @brief 探鸽云SDK常数定义
4 */
5
6#ifndef __TgCloudConst_h__
7#define __TgCloudConst_h__
8
9#include "ec_const.h"
10
11/** \defgroup api_const API用到的常数和枚举
12 * @{*/
13
14/** @defgroup status_code TciCB::on_status()回调状态码
15 * @{
16 * \name TciCB::on_status()回调状态码
17 * @{
18 */
19#define STATUS_LOGON 1 ///< 设备上线. data: NULL.
20#define STATUS_LOGOFF 2 ///< 设备下线. data: NULL.
21#define STATUS_DELETED 3 ///< 设备被删除. data: NULL.
22#define STATUS_UPDATE_SERVICE 4 ///< 更新云服务. data: TCISERVICEINFO *; len: sizeof(TCISERVICEINFO)
23#define STATUS_AP_CONNECT 5 ///< 用户通过ap直连. data:NULL
24#define STATUS_STREAMING 6 ///< 用户打开实时视频. data: int(number of clients); len:0
25#define STATUS_START_TELNETD 7 ///< 请求开启telnetd服务(用于调试). data:NULL
26#define STATUS_SDER 8 ///< 服务器定义事件上传(server defined event record). data: @ref SDER. Return: 0(ok), -1(错误, 无文件等)
27/** 设备休眠查询.
28 - \c data: NULL
29 - \c len:
30 - \c >0: 设备可以进入休眠时,应用在此回调里做清理动作,并与唤醒服务器建立。当这些动作完成后,再返回0
31 - \c ==0: sdk已经下线,设备要立即下电
32
33 本状态当 \c len!=0 时, 要求应用返回一个值。
34 - 返回值大于0时,sdk会在返回值(秒)后再次查询.
35 - 返回值<0时,sdk不会再触发本查询
36 - 返回值=0时,sdk执行内部的清理过程。清理完成后会以 `len=0` 再触发一次本事件. 此时设备应给主控下电, 系统进入休眠状态
37*/
38#define STATUS_IDLE 9
39#define STATUS_AI 10 ///< 服务器端AI检测到正的结果. data: struct AiResult *
40#define STATUS_SWD_TIMEOUT 11 ///< soft watchdog timeout. data: name
41//#define STATUS_ERROR_SERVICE 10 ///< 服务器或外部网络错
42#define STATUS_USER_DATA 12 ///< 用户数据. data: @ref TgUserData *; len: TgUserData结构长度
43
44/** 有用户呼入.
45 * - \c data: struct InCallInfo *
46 * - \c len: data指向的空间的长度
47 *
48 * 固件判断当前是否正在通话或正在呼叫,是则要调用 `TciRejectInCall(data)`拒绝呼入, \n
49 * 否则要显示一个界面展示是谁呼叫,并给用户决定是否接听。
50 * - 调用 `TciAcceptInCall(roomid)`接听
51 * - 调用`TciRejectInCall(roomid)`拒接。
52
53 应用不能阻塞`on_status`调用。返回`0`时,SDK会释放`data`指向的空间。所以如果应用 \n
54 弹出了待接界面,在回调里要保存 `data`指针并返回`1`.
55 */
56#define STATUS_INCALL 13
57
58/** 实时传输监控.
59 * - \c data: int *, 目前内容为发送缓冲区占用百分比. 如果以后扩展,len值会变化. \n
60 * 占比为100%时,表示出现丢帧. >0时,表示当前占比相对之前在增加,小于0时,相比上一次统计在减少.
61 * - \c len: sizeof(int)
62 */
63#define STATUS_TRANSFER_MONITOR 14
64
65#define STATUS_RESOLVE_FAILED 21 ///< 域名解析错
66
67#define STATUS_WRITE_BACKSTORE 22
68
69/** 长连接状态.
70 * - \c data:
71 * - \c NULL: 连接断开
72 * - \c non-NULL: 连接建立
73 */
74#define STATUS_WS_CONNECTION 23
75
76/** 获取取注册信息
77 * - \c data: 注册信息
78 * - \c len: 长度
79 */
80#define STATUS_GOT_REGINFO 24
81/**@}*/ //name: Status Code
82/**@}*/ //group status_code
83
84/** @name Wifi 配置获取方式
85 * @{ */
86#define GWM_QRCODE 0x1 ///<二维码
87#define GWM_AP 0x2 ///<AP或蓝牙模式
88/**@}@}*/
89
90/** @anchor pic_type*/
91/** @name 图片类别指示
92 * @{ */
93#define PIC_USE_THUMBNAIL 0 ///<缩略图。大小不超过320*240
94#define PIC_USE_AI_BD 1 ///<人形检测。图片大小约640*352
95#define PIC_USE_AI_FD 2 ///<人脸检测
96#define PIC_HIGH_RES 3 ///<高清晰度
97/**@}*/
98
99/** 呼叫者类型 */
100typedef enum {
101 CALLER_TANGE, ///< 探鸽
102 CALLER_WEIXIN ///< 微信小程序
104
105/**@}*///api_const
106
107/** \addtogroup api_structure
108 * @{*/
109/** 呼叫者信息. 除 type/user_id/nickname 外,其它域对应用是透明的 */
111 int type; ///< 呼叫者类型。 @ref ECALLERTYPE
112 char *user_id; ///< 呼叫者ID, 可为NULL
113 char *nickname; ///< 呼叫者昵称, 可为NULL
114
115 //以下数据在SDK内部使用并可能变化,应用不要访问
116 union {
117 char *roomid; // 微信呼叫房间号
118 struct {
119 int sub_type;
120 void *ptr;
121 } tg;
122 };
123 char data[1];
124};
125/**@}*/
126
127/** \addtogroup api_const
128 * @{*/
129
130/** 插入到媒体流(实时或回放)或命令通道中的消息类型.
131 * - 插入命令流的是通知类信息,用TciSendRtMsg()发送一个 RTMSG_t 结构
132 * - 插入媒体流的信息用于辅助描述流相关的事件或提供额外信息, 调用 TciSendLiveMessage() 或 TciSendPbMessage(),
133 * 发送的是 RTMSGHEAD_t 结构
134 * 有的消息是设备SDK自动插入,设备应用层不要主动发送.
135 */
136typedef enum {
137 /** 回放: 时间同步帧, 用于告诉播放器下一帧发生时的的UTC时间. 在时间戳中断时(例如自动跳到下一个文件)发送
138 * - data2 = 下一帧发生时的UTC时间;
139 * - data1 = 时间的毫秒部分;
140 * - extra_len = 0;
141 * SDK 提供辅助宏 @ref TciSendPbSyncFrame() 来发送这个帧
142 */
144
145 /** 实时流: 多目摄像机在变焦过程中发生镜头切换,在切换完成后、新镜头的第一个I帧前发送此标志
146 * - data1 = 视频通道号;
147 * - data2 = 码流编号;
148 * - extra_len = 0;
149 *
150 * \n使用辅助宏 @ref TciSendLiveMsg_LensSwitch() (或旧的 TciSendLensSwitchFlag())发送
151 */
153
154 /** 回放: 同 @ref RTM_SYNCTIME, 但在响应 @ref TCI_CMD_RECORD_PLAYCONTROL 命令发生跳转的第一帧前发送
155 * - data1 = 0;
156 * - data2 = 下一帧发生时的UTC时间;
157 * - extra_len = 0;
158 */
160
161 /** 实时: 到达预置位.
162 * 响应APP调用预置位命令, 在转到预置位置时在实时流中发送.用于通知APP更新预置位图片。 \n
163 * 当App端没有预置位缩略图时(分享、换手机、第三方设置了预置位等),依赖此特性自动更新。
164 * - data1: 视频通道号(或摄像头索引)
165 * - data2: 预置位编号(>0)
166 * - extra_len: 0
167 * \n使用辅助宏 @ref TciSendLiveMsg_ReachPsp() 来发送这个消息
168 */
170
171 /** 回放: 缩时录像回放启停标志.
172 * 在sd卡回放时进入和退出缩时录像发送此标志。
173 * - data1: 1:缩时录像回放开始; 0:缩时录像回放结束
174 * - data2: 0 或 倍速
175 * - extra_len: 0
176 * \n使用辅助宏 @ref TciSendPbTimelapseFlag() 发送本消息
177 */
179
180 /** 呼叫结束.
181 * 呼叫事件在设备端超时,或者接听者挂断,向所有(别的)连接发送此通知. \n
182 * 内部事件。目前在实时流里发送
183 * - data1: 状态 @ref ECALLSTATE
184 * - data2: 0
185 * - extra_len: 0
186 */
188
189 /** 实时或命令: 设备休眠通知, APP收到命令后要退出实时视频
190 * - data1: 0
191 * - data2: 0
192 * - extra_len: 0
193 */
195
196 /** 回放: 事件结束标志
197 * 事件(单文件)(参见 @ref TCIC_RECORD_PLAY_START)回放模式下,当事件(文件)播放结束时发送此标志。
198 * 支持单文件模式时必需发送
199 * - data1: 0
200 * - data2: 0
201 * - extra_len: 0
202 * \n使用辅助宏 @ref TciSendPbEndOfEvent() 发送本消息
203 */
205
206 /** 命令: 取消呼叫小程序. 这个是发给转发服务器的内部消息 */
208
209 /** 用户自定义的消息 */
210 RTM_USER = 255
212/**@}*/ //group: api_const
213
214/** \addtogroup api_structure
215 * @{*/
216
217/** 服务端定义的事件上报(Server Defined Event Report), 在 on_status() 回调里通过 STATUS_SDER 通知 */
218typedef struct SDER {
219 char event[16]; ///< 事件名。这个值传给 TciUduBegin2() 的evt参数
220 time_t t_start; ///< 录像开始时间
221 int tLen; ///< 录像长度
222 int need_image; ///< 1:上传图片和视频; 2:仅上传图片
223} SDER;
224
225/** 用户自定义数据通知.
226 * 用户自定义数据通过STATUS_USER_DATA 在本结构中传递给应用
227 */
228typedef struct TgUserData {
229 unsigned char *data; ///< 用户数据
230 int len; ///< 用户数据长度
231 const char *id; ///< 请求标识
232 unsigned char *resp; ///< 应用返回的数据. 目前忽略
233 int resp_len; ///< 返回数据长度
234} TgUserData;
235
236/** 在媒体流中插入的 消息/数据帧 帧头 (for App Developer).
237 * 本结构与 @ref FRAMEINFO_t 一样有相同的长度,并用 codec_id来区分结构体内容;extra_len 为结构后的数据长度。 \n
238 * 插放器遇到不能识别的 codec_id 时,可以跳过本结构和后面的 extra_len 字节。 \n
239 * 设备端调用 TciSendLiveMessage() 或 TciSendPbMessage() 分别在实时流或回放流中插入消息
240 */
241typedef struct RTMSGHEAD_t
242{
243 unsigned short codec_id; ///< 0: 标志本结构
244 unsigned short type; ///< 消息类型。 @ref RTMTYPE
245
246 unsigned int data1; ///< 消息类型相关数据1
247
248 unsigned int extra_len; ///< Size of frame
249
250 unsigned int data2; ///< 消息类型相关数据2
252
253/**@}*/ //addtogroup api_struct
254
255/** \defgroup error_code 错误码
256 * @{
257 * \name 错误码
258 * @{*/
259
260#define TCE_OK 0 ///< 成功
261#define TCE_GENERIC_ERROR -1 ///< 一般性错误
262
263/*一般性错误*/
264#define TCE_INVALID_PARAMETER -10001001 ///<输入参数错
265#define TCE_INVALID_UUID -10001002 ///<无效UUID
266#define TCE_INVALID_AI_UUID -10001003 ///<无效AI UUID
267#define TCE_NOT_ALLOWED -10001004 ///<操作不允许
268#define TCE_IN_PROCESSING -10001005 ///<操作进行中,不要重复启动
269
270/*服务器错误*/
271#define TCE_SERVER_FAILURE -10002001 ///<服务器错误
272#define TCE_SERVER_IS_DOWN -10002002 ///<服务器没有运行
273
274/*用户错误*/
275#define TCE_ALGRTHM_DISABLED -10003001 ///<算法没有开启
276#define TCE_BUFFER_TOO_SMALL -10003002 ///<缓冲区太小
277
278/*其它*/
279#define TCE_NETWORK_BUSY -10004001 ///<网络拥堵
280#define TCE_MD_NOT_MATCH -10004002 ///<下载文件内容校验失败
281#define TCE_SERVICE_UNVAILABLE -10004003 ///<服务不可用
282#define TCE_INCALL_HAS_GONE -10004004 ///<呼入已经无效
283#define TCE_LACK_OF_RESOURCE -10004005 ///<资源(内存)不足
284/**@}*/
285/**@}*///error_code
286
287
288#endif
常数和错误码定义
ECALLERTYPE
呼叫者类型
RTMTYPE
插入到媒体流(实时或回放)或命令通道中的消息类型.
@ CALLER_TANGE
探鸽
@ CALLER_WEIXIN
微信小程序
@ RTM_GOINGTO_SLEEP
实时或命令: 设备休眠通知, APP收到命令后要退出实时视频
@ RTM_END_OF_EVENT
回放: 事件结束标志 事件(单文件)(参见 TCIC_RECORD_PLAY_START)回放模式下,当事件(文件)播放结束时发送此标志。 支持单文件模式时必需发送
@ RTM_SYNCTIME_RESPONSE_TO_USER
回放: 同 RTM_SYNCTIME, 但在响应 TCI_CMD_RECORD_PLAYCONTROL 命令发生跳转的第一帧前发送
@ RTM_UPDATE_CALL_STATE
呼叫结束.
@ RTM_LENS_SWITCH
实时流: 多目摄像机在变焦过程中发生镜头切换,在切换完成后、新镜头的第一个I帧前发送此标志
@ RTM_REACH_PSP
实时: 到达预置位.
@ RTM_TIME_LAPSED
回放: 缩时录像回放启停标志.
@ RTM_SYNCTIME
回放: 时间同步帧, 用于告诉播放器下一帧发生时的的UTC时间.
@ RTM_USER
用户自定义的消息
@ RTM_CANCEL_CALL
命令: 取消呼叫小程序.
unsigned char * data
用户数据
unsigned int data2
消息类型相关数据2
int need_image
1:上传图片和视频; 2:仅上传图片
int type
呼叫者类型。 ECALLERTYPE
char * nickname
呼叫者昵称, 可为NULL
time_t t_start
录像开始时间
char * user_id
呼叫者ID, 可为NULL
unsigned int extra_len
Size of frame
int resp_len
返回数据长度
unsigned short type
消息类型。 RTMTYPE
unsigned short codec_id
0: 标志本结构
int tLen
录像长度
int len
用户数据长度
unsigned int data1
消息类型相关数据1
const char * id
请求标识
unsigned char * resp
应用返回的数据. 目前忽略
呼叫者信息.
在媒体流中插入的 消息/数据帧 帧头 (for App Developer).
服务端定义的事件上报(Server Defined Event Report), 在 on_status() 回调里通过 STATUS_SDER 通知
用户自定义数据通知.