goolink api v1.0
DESCRIPTION
GooLink API v1.0. 浪涛互动. GooLink 简介. 浪涛互动 GooLink 实现基于云计算的到监控设备的点对点连接,具有以下特点: 内网设备发现与直连; 内网设备穿透,广域网直连; 可靠的音视频数据传输; 离线告警信息推送;. GooLink 简介. LAN. LAN. LAN. GooLink cloud. GooLink API. GooLink API 是浪涛互动开发的设备端 SDK ,用于接入 GooLink 云服务; 采用类似 Socket 接口方式,方便设备程序集成; - PowerPoint PPT PresentationTRANSCRIPT
GooLink API v1.0
浪涛互动
GooLink 简介• 浪涛互动 GooLink 实现基于云计算的到监控
设备的点对点连接,具有以下特点:– 内网设备发现与直连;– 内网设备穿透,广域网直连;– 可靠的音视频数据传输;– 离线告警信息推送;
GooLink 简介
GooLink cloud
LAN LAN LAN
GooLink API
• GooLink API 是浪涛互动开发的设备端SDK ,用于接入 GooLink 云服务;– 采用类似 Socket 接口方式,方便设备程序集成;– Session ,每个连接对应一个 Session ,可以配
置最多支持的 session 数目;– 调试功能,可以获取某一 session 或者打印所有
session 的信息;
GooLink API
• glnk_get_version• glnk_set_max_ses_allowed• glnk_init• glnk_destroy• glnk_poll• glnk_ses_read• glnk_ses_write• glnk_ses_getinfo• glnk_ses_close• glnk_print_sessions• glnk_push_alarm
GooLink API
• unsigned long glnk_get_version()• 说明:
– 获取 GooLink SDK 版本号• 返回值:
– GooLink SDK 版本号,例如版本 1.0.0 ,用 16 进制表示为 0x100
GooLink API
• void glnk_set_max_ses_allowed(unsigned long num)
• 说明:– 设置最多支持的 session 数目,如果 num 为
0 ,则默认支持 16 个 session ;– 注意,如果需要设置 session 数目,必须在
glnk_init() 前调用;
GooLink API
• int glnk_init( unsigned char *dev, unsigned short locport, unsigned char *udid, NetParam *net_params, int param_size )
• 说明:初始化 GooLink SDK– dev ,网络设备(网卡)名,例如” eth0” ;– locport ,本地端口号;– udid ,设备全局 id ;– net_params ,网络设置参数集,见下页;– param_size ,网络设置参数个数,最多支持 3 个参
数设置;
GooLink APItypedef struct NetParam{ char extern_addr[16]; // 路由器地址,例如 192.168.1.1 char protocol[8]; // 网络传输协议,目前只支持” TCP” char description[48]; // 应用描述,例如” IP Camera” unsigned short intern_port; // 待映射内网端口 unsigned short extern_port; // 映射出去的外网端口} NetParam;
• 返回值– GLNK_ERR_NOERR ,初始化正常;– GLNK_ERR_NOMEM ,内存分配失败;– GLNK_ERR_THREAD ,线程错误;
GooLink API
• int glnk_destroy() • 说明:释放 GooLink SDK 资源• 返回值:
– GLNK_ERR_NOERR
GooLink API
• int glnk_poll(unsigned long to)• 说明:轮询 session
– to ,轮询超时,单位 ms ,最小不低于 200ms ,如果 to 为 0 ,则调用将一直阻塞,直到有新的session 创建;
• 返回值:– 如果在超时时间内有新的 session 创建,则返回该
session 的 id , session id 在读写数据时作为 session的唯一标识;
– 如果在超时时间没有新的 session 创建,返回 0 ;
GooLink API
• int glnk_ses_read(int sid, char *rbuf, int rbsize, unsigned long to)• 说明:从 session 读取数据
– sid , session id ;– rbuf ,读数据缓存;– rbsize ,读取数据长度, glnk_ses_read 实际读取的数据长度可能
小于 rbsize ;– to ,超时时间
• 返回值:– >0 ,实际读取的数据长度;– 0 ,连接中断,应用程序应调用 glnk_ses_close 清理 session 资源;– -1 ,读数据超时,应用程序可以再次读取或者关闭 session ;
GooLink API
• int glnk_ses_write( int sid, char *sbuf, int sbsize , unsigned long to)
• 说明:向 session 发送数据– sid , session id ;– sbuf ,数据缓存;– sbsize ,发送数据长度, glnk_ses_write 实际发送的数据长度可能
小于 sbsize ;– to ,超时时间
• 返回值:– >0 ,实际发送的数据长度;– 0 ,连接中断,应用程序应调用 glnk_ses_close 清理 session 资源;– -1 ,读数据超时,应用程序可以再次发送或者关闭 session ;
GooLink API
• int glnk_ses_getinfo(int sid, GTSessionInfo *info)• 说明:获取 session 信息
– sid , session id– info , session 信息结构体指针typedef struct _GTSessionInfo {
int32_t sid; // session id int32_t mode; // 0- 外网直连, 1- 内网直连, 2- 中转连接 int32_t protocol; // 传输协议, 0-TCP, 1-UDP int8_t addr[16]; // 对端地址 int32_t port; // 对端端口号
} GTSessionInfo;
GooLink API
• 返回值:– GLNK_ERR_PARAM ,参数为空;– GLNK_ERR_IVALSID ,无效 session id ;– GLNK_ERR_NOERR ,找到 session 信息;
GooLink API
• void glnk_ses_close(int sid)• 说明:关闭 session ,释放 session 资源
– sid , session id
GooLink API
• void glnk_print_sessions()• 说明:打印所有 session 信息,注意,该
API 仅在调试时使用;
GooLink API
• void glnk_push_alarm(PushAlarm alarm)• 说明:推送离线告警
– alarm ,告警信息typedef struct _PushAlarm {
int16_t alarm_type; // 告警类型 int16_t channel; // 告警通道号 GooTime timestamp; // 告警时间
} PushAlarm;
GooLink API– 目前支持的告警类型有ypedef enum _PushAlarmType {
PAT_VIDEO_FRAME = 0, // 视频帧检测告警PAT_DEVICE_RESTART = 1, // 设备重启 PAT_MOTION_DETECT = 2, // 移动侦测PAT_VIDEO_LOSS = 3, // 视频丢失 PAT_DISK_FULL = 4, // 磁盘满 PAT_BLIND_DETECT = 5, // 视频遮盖PAT_SD_ERROR = 6, // SD 卡错误 PAT_ADDR_CONFLICT = 7, // IP地址冲突PAT_INFRARED = 8, // 红外开关告警 PAT_VIDEO_ALARM = 9, // 视频告警 PAT_AUDIO_ALARM = 10, // 音频告警 PAT_TEMPERATURE = 11, // 温度传感器告警PAT_FUME = 12, // 烟感告警PAT_INVASION = 13 // 非法闯入告警
} PushAlarmType;
GooLink 设备端工作流程
glnk_set_max_ses_allowed
end
start
glnk_init
glnk_poll
glnk_ses_read/write
glnk_ses_close
glnk_destroy