210 likes | 532 Views
GooLink API v1.0. 浪涛互动. GooLink 简介. 浪涛互动 GooLink 实现基于云计算的到监控设备的点对点连接,具有以下特点: 内网设备发现与直连; 内网设备穿透,广域网直连; 可靠的音视频数据传输; 离线告警信息推送;. GooLink 简介. LAN. LAN. LAN. GooLink cloud. GooLink API. GooLink API 是浪涛互动开发的设备端 SDK ,用于接入 GooLink 云服务; 采用类似 Socket 接口方式,方便设备程序集成;
E N D
GooLink API v1.0 浪涛互动
GooLink简介 • 浪涛互动GooLink实现基于云计算的到监控设备的点对点连接,具有以下特点: • 内网设备发现与直连; • 内网设备穿透,广域网直连; • 可靠的音视频数据传输; • 离线告警信息推送;
GooLink简介 LAN LAN LAN GooLink cloud
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 API typedef 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(intsid, 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(intsid) • 说明:关闭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 • 目前支持的告警类型有 ypedefenum _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 设备端工作流程 start glnk_poll glnk_set_max_ses_allowed glnk_ses_read/write glnk_init glnk_ses_close glnk_destroy end