mcu_hi3321_watch/tjd/ble/protocol/ble_file_trans_server.h
2025-05-26 20:15:20 +08:00

165 lines
4.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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