/************************************************************************************************** * 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