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