Tange Cloud for Device
 Rev.355
载入中...
搜索中...
未找到
vdp.h
浏览该文件的文档.
1/** \file vdp.h
2 *
3 * 探鸽双向呼叫设备开发接口.
4 */
5#pragma once
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11#include "TgCloudApi.h"
12
13/** @defgroup vdp_ref 双向呼叫API
14 * @{*/
15
16/** VDP 初始化.
17 * 会调用 TciInit()/TciSetCallback().
18 * @param cfg_path 配置文件保存路径,要可读写
19 * @param cbs 必需的回调结构
20 * @return 0:成功
21 */
22int TgVdpInit(const char *cfg_path, struct TciCB *cbs);
23
24/** 设置p2p命令处理回调, 代替 TciSetCmdHandler().
25 * 对端(只能另一个VDP设备)的请求和应答都通知本回调接收.
26 * @param func p2p命令处理回调。
27 * @note TgVdpInit()会设置一个内部命令处理回调,只把不处理的命令传给本回调. \n
28 * 如果应用很简单,除了音视频外没有额外的交互,可以不提供
29 */
31
32/** 开启VDP 服务.
33 * @param isBound 设备本地保存的是否绑定的标志。如果为0(没有绑定), 需要走绑定流程
34 * @param uuid 设备的 UUID
35 * @return 0:成功; 非0:错误码
36 */
37int TgVdpStart(int isBound, const char *uuid);
38
39/** 停止VDP服务, 释放资源
40 * 会调用 TciStop()/TciCleanup()
41 */
42void TgVdpStop();
43
44//================================================================
45
46struct CalleeEx;
47/** 被叫端传过来的命令数据.
48 * @param msg 消息头
49 * @param len 消息长度
50 * @param callee 同回调相匹配的 CalleeEx 结构
51 */
52typedef void (*RTMSGCALLBACK)(const RTMSG_t *msg, int len, struct CalleeEx *callee);
53
54/** 被叫 */
55struct CalleeEx {
56 int type; ///< 被叫类型 @ref CALLTYPE_TANGE 或 @ref CALLTYPE_WEIXIN 或 @ref CALLTYPE_EVENT
57 /** 被叫标识.
58 * - CALLTYPE_WEIXIN: 为微信用户的 open id
59 * - CALLTYPE_TANGE: 设备的连接token
60 * - CALLTYPE_EVENT: 如果为NULL, 呼叫全部App用户; 如果非空,则为指定App用户的 user id
61 */
62 char *token;
63
64 /** 该值为输出参数.
65 * 呼叫被接听后(收到 TVCS_ACCEPTED), hConn为与对端的连接句柄,可以调用TgVdpSend()来发送数据。 \n
66 * 该返回值也可能为NULL, 表示无法与对端进行音视频之外的通信。
67 *
68 * 仅当 type 为 CALLTYPE_TANGE 或 CALLTYPE_EVENT, hConn 才会非NULL.
69 */
70 void *hConn;
71
72 /** @deprecated
73 * <b><i>从rev.349起统一通过命令处理回调接收, 不再需要此回调</i></b>
74 *
75 * 本回调用于接收对端的音视频之外的数据.
76 * - type = CALLTYPE_TANGE, 用于接收对端通过 TciSendRtMsg(.., RTM_USER, ...) 发过来的 RTM_USER 消息
77 * - type = CALLTYPE_WEIXIN, 不支持
78 */
80
81 /** 该值为输出参数.
82 * 当status = TVCS_FAILED 时, err 为错误码.
83 * 错误码取值同被叫类型有关:
84 * 微信呼叫错误范围 -10008, -20~20, 说明在 wx_err.h
85 * Tange呼叫错误码在 TgCloudConst.h
86 */
87 int err;
88
89 /** 用于向回调中传入用户自己的额外数据 */
90 void *pUser;
91};
92
93/** 呼叫/通话状态 */
95 TVCS_CALLING, ///< 呼叫中
96 TVCS_REJECTED, ///< 拒接
97 TVCS_ACCEPTED, ///< 接听
98 TVCS_TIMEDOUT, ///< 呼叫超时
99 TVCS_REMOTE_HANGUP, ///< 对端挂断
100 TVCS_FAILED, ///< 呼叫失败
101};
102/** 呼叫/通话状态回调.
103 * @param status 状态 @ref EVDPCALLSTATE
104 * @param pCallee status=TVCS_ACCEPTED为被叫指针,其于时候为NULL. \n
105 * 注意,这个指针不同于调用 TgVdpCall()时传入的数组元素的地址, \n
106 * 因为那个数组会被复制
107 * @return 未用到, Always return 0
108 */
109typedef int (*TGVDPCALLBACK)(int status, struct CalleeEx *pCallee);
110
111/** 呼叫.
112 * @param callees 被叫对象数组.
113 * @param size 数组大小
114 * @param timeout 等待时间。单位: 秒.
115 * - 建议此处传0,然后主被叫都通过能力 @ref Feature_CallTime 设置一个相同的超时值, 以保持行为一致。-- 2025/6/5
116 * @param cb 状态回调
117 * @param whoami 呼叫者标识, 内容自定义。
118 * @param bShowMeBeforeAccepted 允许对方接听前看到主叫的视频. 门口机呼叫室内机时可以打开此选项。
119 * @return 0: 成功发起呼叫.
120 * 非0: 错误码。不能发起呼叫
121 *
122 * @note 被叫对象数组中可以有多个CALLTYPE_TANGE型,其它最多一个. \n
123 * 每一次成功的呼叫要调用一次 TgVdpHangup();
124 */
125int TgVdpCallEx(struct CalleeEx *callees, int size, int timeout, TGVDPCALLBACK cb, const char *whoami, int bShowMeBeforeAccepted);
126
127/** 结束呼叫或通话.
128 * 对主叫端,可以在调用 TgVdpCall()成功后的任何时候调用本接口, 从而实现 取消呼叫、结束通话、响应对方挂断 的功能. \n
129 * 对被叫端,调用本接口实现通话中挂断的功能, 实际调用了TciHangup().
130 * @return 0
131 * @note 不要在回调里调用
132 */
134
135//================================================================
136/** 被叫接听, 等同于 TciAcceptInCall2().
137 * @note 不要在回调里调用.
138 */
140
141/** 被叫拒接, 等同于 TciRejectInCall2().
142 * @note 不要在回调里调用
143 */
145
146/** 发送请求或应答.
147 * 只能对设备发送,目前不支持对小程序发送数据。
148 * @param handle 连接句柄. 来自不同地方, 见下面注释
149 * @param cmd 命令码。
150 * - 用户可用命令范围为0x9000~0xffff
151 * - 请求的命令码最低位为0
152 * - 应答的命令码为请求命令码最低位置1。
153 *
154 * @param data 请求或应答的数据
155 * @param size 数据长度
156 *
157 * @note 连接句柄handle的获取规则如下:
158 * - 对主叫端, 当呼叫被接听时, 连接句柄为@ref TVCS_ACCEPTED 状态回调的 struct CalleeEx::handle.
159 * - 对被叫端, 连接句柄为呼入回调(@ref STATUS_INCALL2)的参数 INCALLINFO::tg::ptr
160 * - 对主叫和被叫, 如果不是要主动发送请求, 可以从命令处理回调(@ref TGCMDHANDLER)的第一个参数获取
161 *
162 * <b>不要使用 TciSendCmdXxxx 接口来发送 !</b>
163 */
164int TgVdpSend(void *handle, int cmd, const void *data, size_t size);
165
166/** 发送请求 */
167#define TgVdpSendReq(handle, cmd, data, size) TgVdpSend(handle, (cmd)&0xfffe, data, size)
168
169/** 发送应答 */
170#define TgVdpSendResp(handle, cmd, data, size) TgVdpSend(handle, (cmd)|1, data, size)
171
172/** 发送状态应答.
173 * @param status @ref TCI_OK 或 TCI_E_xxx, 参见 @ref generic_err_code "通用错误码"
174 * @param handle 参见 TgVdpSend()
175 * @param cmd 请求命令
176 */
177int TgVdpSendRespStatus(void *handle, int cmd, int status);
178
179
180/**@}*/ //defgroup vdp
181
182#ifdef __cplusplus
183} /* extern "C" */
184#endif
探鸽云SDK接口申明
实时事件通知
int(* TGCMDHANDLER)(p2phandle_t handle, int cmd, const void *data, int len)
命令回调类型
sdk 回调函数结构
int err
该值为输出参数.
定义 vdp.h:87
int type
被叫类型 CALLTYPE_TANGE 或 CALLTYPE_WEIXIN 或 CALLTYPE_EVENT
定义 vdp.h:56
RTMSGCALLBACK msg_cb
定义 vdp.h:79
char * token
被叫标识.
定义 vdp.h:62
void * pUser
用于向回调中传入用户自己的额外数据
定义 vdp.h:90
void * hConn
该值为输出参数.
定义 vdp.h:70
int TgVdpAccept2()
被叫接听, 等同于 TciAcceptInCall2().
int TgVdpReject2()
被叫拒接, 等同于 TciRejectInCall2().
void TgVdpStop()
停止VDP服务, 释放资源 会调用 TciStop()/TciCleanup()
void TgVdpSetCmdHandler(TGCMDHANDLER func)
设置p2p命令处理回调, 代替 TciSetCmdHandler().
int TgVdpHangup()
结束呼叫或通话.
int TgVdpSend(void *handle, int cmd, const void *data, size_t size)
发送请求或应答.
int(* TGVDPCALLBACK)(int status, struct CalleeEx *pCallee)
呼叫/通话状态回调.
定义 vdp.h:109
int TgVdpInit(const char *cfg_path, struct TciCB *cbs)
VDP 初始化.
int TgVdpStart(int isBound, const char *uuid)
开启VDP 服务.
int TgVdpSendRespStatus(void *handle, int cmd, int status)
发送状态应答.
int TgVdpCallEx(struct CalleeEx *callees, int size, int timeout, TGVDPCALLBACK cb, const char *whoami, int bShowMeBeforeAccepted)
呼叫.
void(* RTMSGCALLBACK)(const RTMSG_t *msg, int len, struct CalleeEx *callee)
被叫端传过来的命令数据.
定义 vdp.h:52
EVDPCALLSTATE
呼叫/通话状态
定义 vdp.h:94
@ TVCS_TIMEDOUT
呼叫超时
定义 vdp.h:98
@ TVCS_ACCEPTED
接听
定义 vdp.h:97
@ TVCS_FAILED
呼叫失败
定义 vdp.h:100
@ TVCS_CALLING
呼叫中
定义 vdp.h:95
@ TVCS_REMOTE_HANGUP
对端挂断
定义 vdp.h:99
@ TVCS_REJECTED
拒接
定义 vdp.h:96
被叫
定义 vdp.h:55