165 lines
4.7 KiB
C
165 lines
4.7 KiB
C
/**************************************************************************************************
|
||
* Copyright (c) Fenda Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||
* Description: 蓝牙文件传输协议
|
||
* Author: leon.sunzhen
|
||
* Create: 2020-12-23
|
||
************************************************************************************************/
|
||
|
||
|
||
#ifndef _BLE_FILE_TRANS_H
|
||
#define _BLE_FILE_TRANS_H
|
||
|
||
|
||
#include "stdint.h"
|
||
#include "stdbool.h"
|
||
#include "ble_protocol.h"
|
||
|
||
|
||
enum {
|
||
//APP下发文件
|
||
FILE_TRANS_FILE_INFO = 0x01, //4.11.1 app发送文件信息
|
||
FILE_TRANS_REQUEST_CHECK, //4.11.2 设备端请求文件校验值
|
||
FILE_TRANS_REQUEST_DATA, //4.11.3 设备请求一帧文件
|
||
FILE_TRANS_RETURN_DATA, //4.11.4 app传输一帧文件到设备
|
||
FILE_TRANS_RCV_COMPLETE = 0x06, //4.11.6 设备端回复文件接收完毕
|
||
FILE_TRANS_REPORT_RCV_STATE, //4.11.7 设备端主动上报接收状态
|
||
FILE_TRANS_CANCEL, //4.11.8 取消传输
|
||
|
||
//APP请求文件
|
||
FILE_TRANS_APP_GET_INFO = 0x16, //4.11.16 APP获取设备文件信息
|
||
FILE_TRANS_APP_NOTIFY_READY, //4.11.17 设备主动通知APP来查询文件上报
|
||
FILE_TRANS_APP_REQUEST_DATA, //4.11.18 APP通过文件信息请求一帧数据
|
||
FILE_TRANS_APP_RETURN_DATA, //4.11.19 设备侧上传一帧数据
|
||
FILE_TRANS_APP_RCV_COMPLETE, //4.11.20 APP通知设备已接收完一个文件
|
||
FILE_TRANS_APP_CANCEL, //4.11.21 APP取消传输
|
||
FILE_TRANS_ACTION_MAX,
|
||
};
|
||
|
||
|
||
//为避免宏名过长,在TYPE宏中将FILE_TRANS缩写为FT
|
||
|
||
//4.11.1 TYPE
|
||
enum {
|
||
FT_FILE_INFO_TYPE_FILE_ID = 1,
|
||
FT_FILE_INFO_TYPE_VERSION,
|
||
FT_FILE_INFO_TYPE_FILE_NAME,
|
||
FT_FILE_INFO_TYPE_FILE_LENGTH,
|
||
FT_FILE_INFO_TYPE_FILE_ACTION,
|
||
FT_FILE_INFO_TYPE_FILE_CREATE_TIME,
|
||
FT_FILE_INFO_TYPE_MTU,
|
||
FT_FILE_INFO_TYPE_FRAME,
|
||
FT_FILE_INFO_TYPE_MODEL,
|
||
};
|
||
|
||
|
||
//4.11.2 TYPE
|
||
enum {
|
||
FT_REQUEST_CHECK_TYPE_FILE_ID = 1,
|
||
FT_REQUEST_CHECK_TYPE_CHECK_TYPE,
|
||
FT_REQUEST_CHECK_TYPE_CHECK_VALUE,
|
||
};
|
||
|
||
enum {
|
||
FT_CHECK_TYPE_CRC = 1,
|
||
FT_CHECK_TYPE_MD5 = 2,
|
||
};
|
||
|
||
|
||
//4.11.3 TYPE
|
||
enum {
|
||
FT_REQUEST_DATA_TYPE_FILE_ID = 1,
|
||
FT_REQUEST_DATA_TYPE_OFFSET,
|
||
FT_REQUEST_DATA_TYPE_LENGTH,
|
||
FT_REQUEST_DATA_TYPE_PSN,
|
||
FT_REQUEST_DATA_TYPE_FILE_SIZE,
|
||
FT_REQUEST_DATA_TYPE_FILE_RECEIVED,
|
||
};
|
||
|
||
|
||
//4.11.4 不遵循LTV格式
|
||
|
||
|
||
//4.11.6 TYPE
|
||
enum {
|
||
FT_RCV_COMPLETE_TYPE_FILE_ID = 1,
|
||
FT_RCV_COMPLETE_TYPE_CHECK_RESULT,
|
||
};
|
||
|
||
|
||
//4.11.7 TYPE
|
||
enum {
|
||
FT_REPORT_RCV_STATE_TYPE_FILE_ID = 1,
|
||
FT_REPORT_RCV_STATE_TYPE_ERROR_CODE,
|
||
};
|
||
|
||
|
||
//4.11.8 TYPE
|
||
enum {
|
||
FT_CANCEL_TYPE_FILE_ID = 1,
|
||
};
|
||
|
||
|
||
|
||
|
||
//4.11.16 TYPE
|
||
enum {
|
||
FT_UPLOAD_FILE_INFO_TYPE_GET_FILE = 1,
|
||
FT_UPLOAD_FILE_INFO_TYPE_TRANS,
|
||
FT_UPLOAD_FILE_INFO_TYPE_FILES,
|
||
FT_UPLOAD_FILE_INFO_TYPE_FILE_LIST = 0xFE,
|
||
FT_UPLOAD_FILE_INFO_TYPE_FILE_NAME = 4,
|
||
FT_UPLOAD_FILE_INFO_TYPE_FILE_LENGTH,
|
||
FT_UPLOAD_FILE_INFO_TYPE_FILE_FRAMES,
|
||
FT_UPLOAD_FILE_INFO_TYPE_FILE_ID
|
||
};
|
||
|
||
|
||
//4.11.17 TYPE
|
||
enum {
|
||
FT_UPLOAD_REQUEST_FILES = 1
|
||
};
|
||
|
||
|
||
//4.11.18 TYPE
|
||
enum {
|
||
FT_UPLOAD_REQUEST_DATA_FILE_ID = 1,
|
||
FT_UPLOAD_REQUEST_DATA_FILE_RECEIVED_FRAME,
|
||
FT_UPLOAD_REQUEST_DATA_FILE_FRAME
|
||
};
|
||
|
||
|
||
//4.11.19 TYPE
|
||
enum {
|
||
FT_UPLOAD_DATA_FILE_ID = 1,
|
||
FT_UPLOAD_DATA_FILE_FRAME
|
||
};
|
||
|
||
|
||
//4.11.20 TYPE
|
||
enum {
|
||
FT_UPLOAD_DONE_FILE_ID = 1
|
||
};
|
||
|
||
|
||
extern const p_func_t FileTransServerFunc[FILE_TRANS_ACTION_MAX];
|
||
|
||
|
||
void BLE_FileTransFileInfo(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_FileTransRequestCheck(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_SendFileTransRequestData(void);
|
||
void BLE_FileTransRequestData(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_FileTransReturnData(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_FileTransReportRcvState(uint16_t errCode);
|
||
void BLE_FileTransComplete(void);
|
||
void BLE_FileTransAllComplete(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_FileTransAppGetInfo(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_FileTransAppRequestData(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_FileTransAppRcvComplete(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
void BLE_FileTransAppCancel(uint8_t *inData, uint16_t inLen, uint8_t *outData, uint16_t *outLen);
|
||
|
||
|
||
|
||
|
||
#endif
|
||
|