4G模块文档
一、简介
模块主要职责是拨号上网,记录仪需要完成拨号,设置本机apn,断联判断功能’
二、模块功能
1.直播
说明:
- 视频数据格式目前暂支持H264和MJPEG
- 摄像头需要保证每帧数据不大于300KB,分辨率控制在480p是最合理
2. 文件被动与主动上传
说明:
- 上传短视频,15秒以内,大小控制在20MB以内最好
- 上传日志
- 上传图片
3.GPS上传
说明:
- 上传GPS实时位置
- 上传GPS历史轨迹数据
4.APP互传控制与设置命令
说明:
- APP与服务器只透传,设备端需要定义好控制指令;
- 设备端的各种信息,电池,sd等信息均可以定义好后上传;
- App可以将设备端的设置指令发给设备端;
- APP可以将控制指令发给设备端,比如重启,等;
5.固件升级
说明: - 设备端需要定义好版本号与信息方便升级判断;
- 升级包下载到sd卡,设备端从sd卡自动升级;
- 升级包大小控制在10mb以内最佳;
三、设备端接口
1. void INIT()
功能:初始化基本库
参数说明:
返回值:
调用方式: 开机后调用一次
注意事项:
2. void Release(void);
功能: 初始化基本库; 参数说明: 返回值: 调用方式: 关机时候调用一次; 注意事项:
3. int SetCallBack(HBXCMDCB cb);
功能: 设置回调;
参数说明:HBXCMDCB cb:回调执行函数
返回值:
调用方式: 开机后调用一次;
注意事项:
说明:这个回调函数是收到来自app或者服务器的请求后回调给上层去处理,消息列表见附录;
4. int SendVideo(unsigned char *data,int length,int type,int key,int framerate,int width,int high);
功能: 发送直播预览视频数据;
参数说明:int type,编码类型 1 h264;int framerate 帧率数;int key,是否是关键帧֡;int width,int high 分辨率;
返回值:
调用方式:
注意事项:
5. int SendAudio(unsigned char *data,int length,int type,int rate,int audiotype);
功能: 发送直播预览音频数据;
参数说明:int type:编码类型 1 pcm , 2 aac ;int rate:帧率;int audiotype : 0 mono , 1 立体声;
返回值:
调用方式:
注意事项:
6. int Stop(int videoOraudio);
功能: 设备端停止直播;
参数说明:videoOraudio :0 video and auido ,1 video, 2 audio;
返回值:
调用方式:
注意事项:
7. int SendGps(float lat,float lon, char tLat,char tLon,float speed,float angle,int hour,int min,int sec,int year,int mon,int day,int battery);
功能: 上报GPS数据;
参数说明:
- lat,lon尽量使用double,从GPS的rmc里面解码出来;
- tLat,tLon,经纬度对应的南半球,北半球,东半球与西半球的标识符号, 南半球用‘S‘,北半球’N‘,东半球’E‘,西半球’W‘,使用大写;
- battery 电池电量 范围0-100; 返回值:
调用方式:
注意事项:
8. int SnapShot(unsigned char *filepath,int length);
功能: 上报截取得图片或者视频;
参数说明:filepath---上传文件完整路径,length--filepath字符串长度;
返回值:
调用方式:
注意事项:
9.int Knock(unsigned char *filepath,int length);
功能: 主动碰撞提醒上报视频或者图片;
参数说明:filepath---上传文件完整路径,length--filepath字符串长度;
返回值:
调用方式:
注意事项:
10. int WifiInfo(char wifiname,char passwd);
功能: 上报设备的wifi名字与密码;
参数说明:wifiname:上传的WIFE名;passwd:WIFE密码;
返回值:
调用方式:
注意事项:
11. int Transmission(unsigned char *data,int length);
功能: 上传设置项或者回复命令传输结果;
参数说明:DATA:设置项或命令的内容;length:data的字节长度;
返回值:
调用方式:
注意事项:
12. int SendLOG(unsigned char *filepath,int length);
功能: 上传日志文件;
参数说明:filepath:传输的日志文件完整路径;length:filepath的长度;
返回值:
调用方式:
注意事项:
13. int Carstatus(int status);
功能: 上报开车与停车状态;
参数说明:status :0 汽车启动 ,1 汽车停车
返回值:
调用方式:
注意事项:开机和关机调用,设备需要联网
14. int sossnap(unsigned char *data,int length);
功能: 上报紧急sos图片;
参数说明:data:传输的sos文件完整路径;length:data的字节长度;
返回值:
调用方式:
注意事项:
15. int suspend(void);
功能: 模块休眠指令;
参数说明:
返回值:
调用方式:
注意事项:关机前调用;
16. int TransFileform(unsigned char* data, int length);
功能:上传视频文件列表;
参数说明:data:视频回放文件名以及时长;length:data字符串长度;
返回值:
调用方式: 当接收到HBX_CMD_GET_FILELIST(1013)枚举值消息后调用
注意事项:字符串格式filename1:Times#filename2:Times#filename3:Times#filename4:Times;
17. int PLACBACKprocess(unsigned char* data, int length);
功能:回传在线回放进度;
参数说明:data:回放进度;length:data字符串长度;
返回值:
调用方式:
注意事项:字符串格式(Process)
附录-
函数回调
typedef int (*HBXCMDCB)(int cmdType,unsigned char *data,int size);
enum HBX_CMD_ID{
HBX_CMD_LIVE_START=1000,
HBX_CMD_LIVE_STOP,
HBX_CMD_SNOP_PHOTO,
HBX_CMD_SNOP_VIDEO,
HBX_CMD_WIFI_INFO,
HBX_CMD_SENDFILE_RESULT,
HBX_CMD_SLEEP_RESULT,
HBX_CMD_CONTENT_INFO,
HBX_CMD_ICON_RESULT,
HBX_CMD_ICON_SINGLE
};
pfunCB --- 就是设置的回调函数; 用例:
static void ReciveData(unsigned char * data,int length)
{
struct HBX_HEADER *header = (struct HBX_HEADER *)data;
unsigned char *pData = (unsigned char *)(data + sizeof(struct HBX_HEADER ));
if(header->length == 0) pData = NULL;
printf("hbxclient recive header->type %d ..\r\n",header->type);
switch(header->type)
{
case HBX_CMD_LIVE_START: //start live
s_bLiveStatus = 1;
nSetSpsPPS = 0;
if(pfunCB) pfunCB(header->type,(unsigned char *)&header->nFrameid,4);
break;
case HBX_CMD_LIVE_STOP: //stop live
s_bLiveStatus = 0;
nSetSpsPPS = 0;
if(pfunCB) pfunCB(header->type,NULL,0);
break ;
case HBX_CMD_SNOP_PHOTO: //stop live
if(pfunCB) pfunCB(header->type,(unsigned char *)&header->nFrameid,4);
break ;
case HBX_CMD_SNOP_VIDEO: //stop live
if(pfunCB) pfunCB(header->type,(unsigned char *)&header->nFrameid,4);
break ;
case HBX_CMD_WIFI_INFO: //stop live
if(pfunCB) pfunCB(header->type,NULL,0);
break ;
case HBX_CMD_CONTENT_INFO: //data translate 透传数据
if(pfunCB) pfunCB(header->type,pData,header->length);
break ;
case HBX_CMD_ICON_RESULT: // 4 + 128个字节的 文件目录 全名 不带 '/' 前面四个字节,第一个字节为0 表示停止 传输icon,为1 表示继续
case HBX_CMD_ICON_SINGLE: // 4 + 128个字节的 文件目录 全名 不带 '/' 前面四个字节,第一个字节为0 表示停止 传输icon,为1 表示继续
printf("hbxclient recive header->type %d pData %s \r\n",header->type,pData);
if(pfunCB) pfunCB(HBX_CMD_ICON_RESULT,pData,header->length);
break ;
}
}