Tange Cloud for Device
 Rev.333
载入中...
搜索中...
未找到
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 初始化. 会调用 TciInit()/TciSetCallback().
17 * @param cfg_path 配置文件保存路径,要可读写
18 * @param cbs 必需的回调结构
19 * @return 0:成功
20 */
21int TgVdpInit(const char *cfg_path, struct TciCB *cbs);
22
23/** 设置p2p命令处理回调, 代替 TciSetCmdHandler().
24 * 被叫端(室内机)才会通过此回调接收命令。主叫端通过Caller接口(iCamP2pXxxx)发送命令和接收应答.
25 * @param p2pCmdHandler p2p命令处理回调。
26 * @note TgVdpInit()会设置一个内部命令处理回调,只把不处理的命令传给本回调. \n
27 * 如果应用很简单,除了音视频外没有额外的交互,可以不提供
28 */
30
31/** 开启VDP 服务.
32 * @param isBound 设备本地保存的是否绑定的标志。如果为0(没有绑定), 需要走绑定流程
33 * @param uuid 设备的 UUID
34 * @return 0:成功; 非0:错误码
35 */
36int TgVdpStart(int isBound, const char *uuid);
37
38/** 停止VDP服务, 释放资源
39 * 会调用 TciStop()/TciCleanup()
40 */
41void TgVdpStop();
42
43//================================================================
44
45/** 呼叫对象类型 */
46typedef enum {
47 CALLEE_TANGE, ///< 接入本SDK的设备
48 CALLEE_WEIXIN ///< 微信小程序
50
51struct CalleeEx;
52/** 被叫端传过来的命令数据.
53 * @param msg 消息头
54 * @param len 消息长度
55 * @param callee 同回调相匹配的 CalleeEx 结构
56 */
57typedef void (*RTMSGCALLBACK)(const RTMSG_t *msg, int len, struct CalleeEx *callee);
58
59/** 被叫 */
60struct CalleeEx {
61 int type; ///< 被叫类型 @ref CALLEETYPE
62 char *token; ///< 被叫标识
63
64 /** 该值为输出参数.
65 * 呼叫被接听后(收到 TVCS_ACCEPTED), hConn为与对端的连接句柄,用于进行更多通信。 \n
66 * 该返回值也可能为NULL, 表示无法与对端进行音视频之外的通信。
67 *
68 * - type = CALLEE_TANGE, hConn类型为 HP2PCLT, 可以用来调用 icam_p2p.h 中的接口.
69 * - type = CALLEE_WEIXIN, hConn = NULL
70 */
71 void *hConn;
72
73 /** 本回调用于接收对端的音视频之外的数据.
74 * - type = CALLEE_TANGE, 用于接收对端通过 TciSendRtMsg(.., RTM_USER, ...) 发过来的 RTM_USER 消息
75 * - type = CALLEE_WEIXIN, 不支持
76 */
78
79 /** 该值为输出参数.
80 * 当status = TVCS_FAILED 时, err 为错误码.
81 * 错误码取值同被叫类型有关:
82 * 微信呼叫错误范围 -10008, -20~20, 说明在 wx_err.h
83 * Tange呼叫错误码在 TgCloudConst.h
84 */
85 int err;
86
87 /** 用于向回调中传入用户自己的额外数据 */
88 void *pUser;
89};
90
91/** 呼叫/通话状态 */
93 TVCS_CALLING, ///< 呼叫中
94 TVCS_REJECTED, ///< 拒接
95 TVCS_ACCEPTED, ///< 接听
96 TVCS_TIMEDOUT, ///< 呼叫超时
97 TVCS_REMOTE_HANGUP, ///< 对端挂断
98 TVCS_FAILED, ///< 呼叫失败
99};
100/** 呼叫/通话状态回调.
101 * @param status 状态 @ref EVDPCALLSTATE
102 * @param pCallee status=TVCS_ACCEPTED为被叫指针,其于时候为NULL. \n
103 * 注意,这个指针不同于调用 TgVdpCall()时传入的数组元素的地址, \n
104 * 因为那个数组会被复制
105 * @return 未用到, Always return 0
106 */
107typedef int (*TGVDPCALLBACK)(int status, struct CalleeEx *pCallee);
108
109/** 呼叫.
110 * @param callees 被叫对象数组
111 * @param size 数组大小
112 * @param timeout 等待时间。单位: 秒
113 * @param cb 状态回调
114 * @return 0: 成功发起呼叫.
115 * 非0: 错误码。不能发起呼叫
116 *
117 * @note 每一次成功的呼叫要调用一次 TgVdpHangup();
118 */
119int TgVdpCallEx(struct CalleeEx *callees, int size, int timeout, TGVDPCALLBACK cb);
120
121/** 结束呼叫或通话.
122 * 对主叫端,可以在调用 TgVdpCall()成功后的任何时候调用本接口, 从而实现 取消呼叫、结束通话、响应对方挂断 的功能. \n
123 * 对被叫端,调用本接口实现通话中挂断的功能, 实际调用了TciHangup().
124 * @return 0
125 */
127
128//================================================================
129struct InCallInfo;
130/** 被叫接听, 等同于 TciAcceptInCall(). */
132
133/** 被叫拒接, 等同于 TciRejectInCall(). */
135
136/**@}*/ //defgroup vdp
137
138#ifdef __cplusplus
139} /* extern "C" */
140#endif
探鸽云SDK接口申明
实时事件通知
int(* TGCMDHANDLER)(p2phandle_t handle, int cmd, const void *data, int len)
命令回调类型
呼叫者信息.
sdk 回调函数结构
int err
该值为输出参数.
定义 vdp.h:85
int type
被叫类型 CALLEETYPE
定义 vdp.h:61
RTMSGCALLBACK msg_cb
本回调用于接收对端的音视频之外的数据.
定义 vdp.h:77
char * token
被叫标识
定义 vdp.h:62
void * pUser
用于向回调中传入用户自己的额外数据
定义 vdp.h:88
void * hConn
该值为输出参数.
定义 vdp.h:71
void TgVdpStop()
停止VDP服务, 释放资源 会调用 TciStop()/TciCleanup()
CALLEETYPE
呼叫对象类型
定义 vdp.h:46
int TgVdpAccept(struct InCallInfo *)
被叫接听, 等同于 TciAcceptInCall().
int TgVdpReject(struct InCallInfo *)
被叫拒接, 等同于 TciRejectInCall().
void TgVdpSetCmdHandler(TGCMDHANDLER func)
设置p2p命令处理回调, 代替 TciSetCmdHandler().
int TgVdpHangup()
结束呼叫或通话.
int(* TGVDPCALLBACK)(int status, struct CalleeEx *pCallee)
呼叫/通话状态回调.
定义 vdp.h:107
int TgVdpInit(const char *cfg_path, struct TciCB *cbs)
VDP 初始化.
int TgVdpStart(int isBound, const char *uuid)
开启VDP 服务.
void(* RTMSGCALLBACK)(const RTMSG_t *msg, int len, struct CalleeEx *callee)
被叫端传过来的命令数据.
定义 vdp.h:57
EVDPCALLSTATE
呼叫/通话状态
定义 vdp.h:92
int TgVdpCallEx(struct CalleeEx *callees, int size, int timeout, TGVDPCALLBACK cb)
呼叫.
@ CALLEE_WEIXIN
微信小程序
定义 vdp.h:48
@ CALLEE_TANGE
接入本SDK的设备
定义 vdp.h:47
@ TVCS_TIMEDOUT
呼叫超时
定义 vdp.h:96
@ TVCS_ACCEPTED
接听
定义 vdp.h:95
@ TVCS_FAILED
呼叫失败
定义 vdp.h:98
@ TVCS_CALLING
呼叫中
定义 vdp.h:93
@ TVCS_REMOTE_HANGUP
对端挂断
定义 vdp.h:97
@ TVCS_REJECTED
拒接
定义 vdp.h:94
被叫
定义 vdp.h:60