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