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

203 lines
10 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. 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_ */