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