Transcript Goolink API

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(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,
PAT_ADDR_CONFLICT = 7,
PAT_INFRARED
= 8,
PAT_VIDEO_ALARM = 9,
PAT_AUDIO_ALARM = 10,
PAT_TEMPERATURE = 11,
PAT_FUME
= 12,
PAT_INVASION
= 13
} PushAlarmType;
// 视频帧检测告警
// 设备重启
// 移动侦测
// 视频丢失
// 磁盘满
// 视频遮盖
// SD 卡错误
// IP地址冲突
// 红外开关告警
// 视频告警
// 音频告警
// 温度传感器告警
// 烟感告警
// 非法闯入告警
GooLink 设备端工作流程
start
glnk_poll
glnk_set_max_ses_allowed
glnk_ses_read/write
glnk_init
glnk_ses_close
glnk_destroy
end