203 lines
10 KiB
C
203 lines
10 KiB
C
/*----------------------------------------------------------------------------
|
||
* Copyright (c) Fenda Technologies Co., Ltd. 2022. All rights reserved.
|
||
*
|
||
* Description: ble_protocol.h header file for ble protocol
|
||
*
|
||
* Author: lzc
|
||
*
|
||
* Create: 2024-05-27
|
||
*--------------------------------------------------------------------------*/
|
||
|
||
#ifndef _BLE_PORT_PROTOCOL_H_
|
||
#define _BLE_PORT_PROTOCOL_H_
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include "stdint.h"
|
||
#include "bts_gatt_server.h"
|
||
#include "sys_typedef.h"
|
||
#include "ble_api.h"
|
||
#include "ble_protocol_file_upload.h"
|
||
|
||
#define BLE_PROTOCOL_MAX_DATA_LEN 16
|
||
#define PROTOCOL_FRAME_RSP_HEAD 0x5A
|
||
#define PROTOCOL_FRAME_RSP_HEAD_2 0x5B
|
||
#define PROTOCOL_FILE_NAME_LEN_MAX (64)
|
||
|
||
// 定义数据包结构体
|
||
typedef struct {
|
||
uint8_t * pck_data;
|
||
uint8_t pck_len;
|
||
} Packet;
|
||
|
||
typedef struct {
|
||
uint16_t expected_seq;
|
||
uint8_t * buffer;
|
||
uint32_t buffer_offset;
|
||
} UpgradeContext;
|
||
|
||
typedef enum {
|
||
PICTURES_USED_WALLPAPERS = 0x00,
|
||
FILE_USAGE_TYPE_MAX
|
||
} FileUsageType;
|
||
|
||
typedef struct {
|
||
FileType_Enum file_type;
|
||
uint32_t file_size;
|
||
uint32_t file_crc32;
|
||
uint8_t file_name[PROTOCOL_FILE_NAME_LEN_MAX];
|
||
uint16_t pictures_width;
|
||
uint16_t pictures_height;
|
||
uint16_t video_width;
|
||
uint16_t video_height;
|
||
} FileDescriptionInfo_t;
|
||
typedef struct {
|
||
FileTransfer_Enum file_status; //用于管理传输,方便超时打断。
|
||
uint32_t operation_total_size; //当前的传输情况
|
||
uint32_t operation_total_number;
|
||
uint32_t operation_file_size;
|
||
uint64_t operation_last_time;
|
||
bool breakpoint_en; //断点使能
|
||
} FileTransferInfo_t;
|
||
|
||
//扩展功能支持文件夹传输。目前OTA,GPS星历有使用
|
||
typedef struct {
|
||
uint32_t file_total_size;
|
||
uint32_t file_total_number;
|
||
FileType_Enum file_total_type; //文件夹类型
|
||
} DirDescriptionInfo_t;
|
||
|
||
// 定义协议命令枚举
|
||
enum {
|
||
HEART_RATE = 0x01, // 心率
|
||
BLOOD_PRESSURE = 0x02, // 血压
|
||
BLOOD_OXYGEN = 0x04, // 设备信息
|
||
TEMPERATURE = 0x08, // 设备控制
|
||
SLEEP_DATA = 0x10, // 睡眠数据
|
||
BLOOD_SUGAR = 0x20, // 设备时间
|
||
BODY_TEMPERATURE = 0x40, // 体温
|
||
};
|
||
|
||
typedef enum {
|
||
READ_DEVICE_INFO = 0x00, // 读取设备基本信息
|
||
AUTHENTICATION_BINDING_SET, // 认证绑定设置
|
||
SET_READ_DEVICE_FORMAT, // 设置/读取设备制式
|
||
POWER_SYNCHRONIZATION = 0x03, // 电量同步
|
||
TIME_SETTING_READ, // 读取/设置时间
|
||
SET_READ_DEVICE_ALARM, // 设置/读取设备闹钟
|
||
SET_READ_USER_PARAMETERS, // 设置/读取用户参数
|
||
SET_READ_UI_INTERFACE_DISPLAYED, // 设置/读取UI界面显示
|
||
SET_READ_FUNCTION_SWITCH, // 设置/读取功能开关
|
||
FIND_DEVICE, // 查找设备
|
||
FIND_MOBILE_PHONE, // 查找手机
|
||
SET_READ_SEDENTARY_REMINDER_PARAMETERS = 0x0B, // 设置/读取久坐提醒参数
|
||
SET_READ_WATER_DRINKING_REMINDER_PARAMETERS, // 设置/读取喝水提醒参数
|
||
ENTER_PHOTO_MODE, // 进入拍照模式
|
||
RESPOND_PHOTO_COMMAND, // 响应拍照命令
|
||
MEASUREMENT_DATA_UPLOAD = 0x10, // 测量结束发送测量结果
|
||
MEASUREMENT_DATA_SYNCHRONIZATION = 0x11, // 同步历史测量数据
|
||
READ_DETAILED_MOTION_DATA = 0x13, // 读取详细运动数据
|
||
READ_TOTAL_SLEEP_DATA = 0x14, // 读取睡眠总数据
|
||
READ_SLEEP_DATA = 0x15, // 读取睡眠数据
|
||
TOTAL_NUMBER_ANDROID_PUSH_MESSAGES = 0x16, // Android推送消息总数
|
||
ANDROID_PUSH_MESSAGES = 0x17, // Android推送消息
|
||
READ_MOBILE_PHONE_STEP_DATA = 0x20, // 读取手机步数数据
|
||
READ_SET_SYSTEM_LANGUAGE = 0x21, // 读取/设置系统语言
|
||
READ_SET_IOS_PUSH_SWITCH, // 读取/设置IOS推送开关
|
||
SET_READ_STEP_GOAL = 0x25, // 设置/读取步数目标
|
||
SET_READING_SCREEN_BRIGHTNESS_LEVEL = 0x26, // 设置/读取屏幕亮度等级
|
||
MULTIMEDIA_CONTROL = 0x27, // 多媒体控制
|
||
DIAL_PUSH_DIAL_START_COMMAND = 0x28, // 表盘推送表盘启动指令
|
||
DIAL_PUSH_DIAL_DATA_COMMAND = 0x29, // 表盘推送表盘数据指令
|
||
GET_WEATHER_DATA = 0x2a, // 获取天气数据
|
||
WALLPAPER_PUSH_START_COMMAND = 0x2b, // 壁纸推送启动指令
|
||
WALLPAPER_PUSH_DATA_COMMAND = 0x2c, // 壁纸推送数据指令
|
||
DO_NOT_DISTURB_MODE = 0x2d, // 勿扰模式
|
||
CONTACTS_PUSH_START_COMMAND = 0x2f, // 通讯录推送启动指令
|
||
CONTACTS_PUSH_DATA_COMMAND = 0x30, // 通讯录推送数据指令
|
||
GET_BLUETOOTH_MAC_ADDRESS = 0x31, // 获取3.0蓝牙MAC地址
|
||
DEV_SEND_BLUETOOTH_DISCONNECT_CMD = 0x32, // 设备发送蓝牙断开指令
|
||
IOS_GETS_DEV_BLUETOOTH_CONNEC_STATUS= 0x33, // IOS获取设备3.0蓝牙连接状态
|
||
APP_READS_DIAL_PARAMETERS = 0x39, // 读取拨号相关参数
|
||
MODIFY_BLUETOOTH_NAME = 0x46, // 修改蓝牙名称
|
||
DEV_REQ_SYN_SMS = 0x49, // 设备请求同步短信
|
||
REC_QR_CODE_INFORMATION = 0x50, // 接收二维码信息
|
||
DEVICE_OTHER_FUNCTION_EXTENSION = 0x51, // 设备其他功能扩展
|
||
STOP_FINE_PHONE = 0x54, // 停止查找手机
|
||
FIRST_CONNECTION_RESPONSE = 0x56, // 首次连接响应
|
||
GET_DEVICE_ID = 0x57, // 获取设备ID
|
||
APP_GETS_SPORT_DATA = 0x61, // APP获取运动记录数据
|
||
APP_SENDING_ADDRESS = 0x63, // APP发送地址
|
||
MS_GAME_MODE = 0x66, // MS游戏模式
|
||
SEND_GSENSOR_DATA = 0x67, // 发送加速度传感器数据
|
||
APP_SENDING_DEVICE_TYPE = 0x68, // APP发送设备类型
|
||
GET_MTU_SIZE = 0x70, // 获取MTU大小
|
||
GET_MAILLIST_FREE_NUM = 0x7B, // 获取设备联系人剩余可推送数量
|
||
GET_USER_NAME = 0xe1, // 获取用户名
|
||
GET_BLE_NAME = 0xe3, // 发送BLE名称
|
||
|
||
} ble_protocol_cmd_t;
|
||
|
||
enum{
|
||
CUSTOM_DIAL_REQUEST = 0x11, // 自定义表盘请求
|
||
REPORTED_CUSTOM_DIAL_PROPERTIES = 0x12, // 上报自定义表盘属性
|
||
ISSUE_DIAL_PARAMETERS = 0x13, // 下发自定义表盘参数
|
||
AI_FUNCTION_REQUEST = 0x14, // AI功能请求
|
||
REPORT_AI_FUNCTION_ATTRIBUTES = 0x15, // 上报AI功能属性
|
||
AI_AUDIO_TRANSMISSION_MANAGEMENT = 0x16, // AI音频传输管理
|
||
REQUEST_DIAGRAM_GENERATION = 0x17, // 请求表盘图生成
|
||
REPORT_DIAGRAM_TRANSMIT = 0x18, // 请求表盘图传输
|
||
REQUEST_DEVICE_DIAL_INFORMATION = 0x20, // 请求设备表盘信息
|
||
REQUEST_TO_DELETE_DIAL = 0x21, // 请求删除表盘
|
||
REQUEST_WEATHER_DATA = 0x2A, // 请求天气数据
|
||
OTA_MODE_SWITCH_NEW = 0xA0, // OTA模式切换新版本
|
||
DOWNLOAD_FILE_DESCRIPTION = 0xB0, // 下发文件描述信息
|
||
DOWNLOAD_FILE_SRART = 0xB1, // 下发文件开始
|
||
DOWNLOAD_FILE_END_DATA = 0xB2, // 下发文件结束
|
||
DOWNLOAD_FILE_DATA = 0xB3, // 下发文件数据
|
||
UPLOAD_FILE_DESCRIPTION = 0xB4, // 上传文件描述信息
|
||
UPLOAD_FILE_SRART = 0xB5, // 上传文件开始
|
||
UPLOAD_FILE_END_DATA = 0xB6, // 上传文件结束
|
||
UPLOAD_FILE_DATA = 0xB7, // 上传文件数据
|
||
DATA_FLOW_DOWNLOAD_STARTS = 0xBC, // 数据流下发开始
|
||
DATA_FLOW_DOWNLOAD_ENDS = 0xBD, // 数据流下发结束
|
||
DATA_FLOW_DOWNLOAD_SENDS_DATA = 0xBE, // 数据流下发发送数据
|
||
DATA_FLOW_UPLOAD_STARTS = 0xBF, // 数据流上传开始
|
||
DATA_FLOW_UPLOAD_ENDS = 0xC0, // 数据流上传结束
|
||
DATA_FLOW_UPLOAD_SENDS_DATA = 0xC1, // 数据流上传发送数据
|
||
REQUEST_LUCKY_CLOVER_DATA = 0xC2, // 请求四叶草数据
|
||
REQUEST_GPS_INFORMATION = 0xC3, // 获取GPS信息
|
||
REQUEST_SYNCHRONOUS_DATA = 0xC4, // 请求同步数据
|
||
REPORTED_JS_APP_INSTALL_STATUS = 0xCB, // 上报JS应用安装卸载状态,下发卸载请求,查询应用状态
|
||
GET_JS_APP_LIST = 0xCC, // 获取JS应用列表
|
||
GET_DEVICE_CRASH_LOG = 0xCD, // 获取设备死机日志
|
||
GET_DEVICE_REMAINING_SPACE = 0xCE, // 获取设备剩余空间
|
||
RECEIVE_JS_APP_ADDITIONAL_INFO = 0xCF, // 接收JS应用额外信息
|
||
GET_SLEEP_WEEK_DATA = 0xD1, // 获取睡眠七日数据
|
||
GET_OPENHARMONY_VERSION = 0xD3, // 获取OpenHarmony版本号
|
||
};
|
||
|
||
void tjd_ble_protocol_ctrlcmd_ab(uint8_t server_id, uint16_t conn_id, uint8_t *write_cb_para , uint16_t len);
|
||
void tjd_ble_protocol_ctrlcmd_ac(uint8_t server_id, uint16_t conn_id, uint8_t *write_cb_para , uint16_t len);
|
||
void tjd_ble_protocol_send_data(uint8_t pack_head, uint8_t *data, uint16_t len ,uint8_t cmd_id, uint8_t server_id, uint16_t conn_id);
|
||
void gatt_send_response(uint8_t *res_value, uint16_t res_len, uint8_t server_id, uint16_t conn_id);
|
||
uint8_t do_crc(uint8_t *ptr, uint32_t len);
|
||
uint32_t tjd_ble_load_file_data(const char *path, uint32_t oft, void *buffer, uint32_t size);
|
||
|
||
void tjd_ble_upload_ai_func_attribute(void);
|
||
|
||
typedef void (*upload_file_end_callback_t)(FileUploadEndEnum status);
|
||
upload_file_end_callback_t get_upload_file_recode_end_callback(void);
|
||
void register_upload_file_recode_end_callback(upload_file_end_callback_t callback);
|
||
void tjd_js_install_status_request(const uint8_t resultCode, const void *resultMessage);
|
||
extern bool uninstall_by_protocol;
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* _BLE_PORT_PROTOCOL_H_ */
|
||
|