goolink api v1.0

20
GooLink API v1.0 浪浪浪浪

Upload: stone-fischer

Post on 31-Dec-2015

92 views

Category:

Documents


3 download

DESCRIPTION

GooLink API v1.0. 浪涛互动. GooLink 简介. 浪涛互动 GooLink 实现基于云计算的到监控设备的点对点连接,具有以下特点: 内网设备发现与直连; 内网设备穿透,广域网直连; 可靠的音视频数据传输; 离线告警信息推送;. GooLink 简介. LAN. LAN. LAN. GooLink cloud. GooLink API. GooLink API 是浪涛互动开发的设备端 SDK ,用于接入 GooLink 云服务; 采用类似 Socket 接口方式,方便设备程序集成; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: GooLink API v1.0

GooLink API v1.0

浪涛互动

Page 2: GooLink API v1.0

GooLink 简介• 浪涛互动 GooLink 实现基于云计算的到监控

设备的点对点连接,具有以下特点:– 内网设备发现与直连;– 内网设备穿透,广域网直连;– 可靠的音视频数据传输;– 离线告警信息推送;

Page 3: GooLink API v1.0

GooLink 简介

GooLink cloud

LAN LAN LAN

Page 4: GooLink API v1.0

GooLink API

• GooLink API 是浪涛互动开发的设备端SDK ,用于接入 GooLink 云服务;– 采用类似 Socket 接口方式,方便设备程序集成;– Session ,每个连接对应一个 Session ,可以配

置最多支持的 session 数目;– 调试功能,可以获取某一 session 或者打印所有

session 的信息;

Page 5: GooLink API v1.0

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

Page 6: GooLink API v1.0

GooLink API

• unsigned long glnk_get_version()• 说明:

– 获取 GooLink SDK 版本号• 返回值:

– GooLink SDK 版本号,例如版本 1.0.0 ,用 16 进制表示为 0x100

Page 7: GooLink API v1.0

GooLink API

• void glnk_set_max_ses_allowed(unsigned long num)

• 说明:– 设置最多支持的 session 数目,如果 num 为

0 ,则默认支持 16 个 session ;– 注意,如果需要设置 session 数目,必须在

glnk_init() 前调用;

Page 8: GooLink API v1.0

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 个参

数设置;

Page 9: GooLink API v1.0

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 ,线程错误;

Page 10: GooLink API v1.0

GooLink API

• int glnk_destroy() • 说明:释放 GooLink SDK 资源• 返回值:

– GLNK_ERR_NOERR

Page 11: GooLink API v1.0

GooLink API

• int glnk_poll(unsigned long to)• 说明:轮询 session

– to ,轮询超时,单位 ms ,最小不低于 200ms ,如果 to 为 0 ,则调用将一直阻塞,直到有新的session 创建;

• 返回值:– 如果在超时时间内有新的 session 创建,则返回该

session 的 id , session id 在读写数据时作为 session的唯一标识;

– 如果在超时时间没有新的 session 创建,返回 0 ;

Page 12: GooLink API v1.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 ;

Page 13: GooLink API v1.0

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 ;

Page 14: GooLink API v1.0

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;

Page 15: GooLink API v1.0

GooLink API

• 返回值:– GLNK_ERR_PARAM ,参数为空;– GLNK_ERR_IVALSID ,无效 session id ;– GLNK_ERR_NOERR ,找到 session 信息;

Page 16: GooLink API v1.0

GooLink API

• void glnk_ses_close(int sid)• 说明:关闭 session ,释放 session 资源

– sid , session id

Page 17: GooLink API v1.0

GooLink API

• void glnk_print_sessions()• 说明:打印所有 session 信息,注意,该

API 仅在调试时使用;

Page 18: GooLink API v1.0

GooLink API

• void glnk_push_alarm(PushAlarm alarm)• 说明:推送离线告警

– alarm ,告警信息typedef struct _PushAlarm {

int16_t alarm_type; // 告警类型 int16_t channel; // 告警通道号 GooTime timestamp; // 告警时间

} PushAlarm;

Page 19: GooLink API v1.0

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;

Page 20: GooLink API v1.0

GooLink 设备端工作流程

glnk_set_max_ses_allowed

end

start

glnk_init

glnk_poll

glnk_ses_read/write

glnk_ses_close

glnk_destroy