From 67f3887911ceff9530ad0d5718eaf519cd38daeb Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Tue, 29 Oct 2024 11:49:30 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E5=A4=8D=E5=AE=89=E8=A3=85=E8=A1=A8?= =?utf8?q?=E7=9B=98=E6=AD=BB=E6=9C=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../service/ble_service/blemoder/bletest.cpp | 52 ++++++- .../service/ble_service/bleservice/bleEvent.c | 129 +++++++++++------- 2 files changed, 127 insertions(+), 54 deletions(-) diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index 134023b92..4be97716d 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -947,11 +947,18 @@ void ble_save_dial_custom(msg_recv_custom_dial_info_t *data) #endif } +void ble_set_dial_by_id_(uint16_t id) +{ + #ifdef FD230 + OHOS::SetDialModel::GetInstance().UpdateDialSetting(id); + #endif + +} void ble_set_dial_by_id(uint16_t id) { #ifdef FD230 - OHOS::SetDialModel::GetInstance().UpdateDialSetting(id); - svr_ble_read_data_value_updata_noyify(); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(ble_set_dial_by_id_ ,id)); #endif } @@ -975,6 +982,8 @@ uint16_t ble_get_dial_id(void) #endif } + + bool ble_is_dial_install_by_id(uint16_t id) { #ifdef FD230 @@ -993,6 +1002,13 @@ int ble_get_dial_num(void) #endif } +void ble_delete_dial_(uint16_t id) +{ + #ifdef FD230 + OHOS::SetDialModel::GetInstance().UninstallDial(id); + #endif +} + bool ble_delete_dial(uint16_t id) { @@ -1000,7 +1016,23 @@ bool ble_delete_dial(uint16_t id) if(id==OHOS::SetDialModel::GetInstance().GetCurrentDialID()) return false; else - return OHOS::SetDialModel::GetInstance().UninstallDial(id); + { + switch (id) { + case OHOS::DEFAULT_DIAL_ID: + case OHOS::MAX_DEFAULT_DIAL_ID: + case OHOS::DEFAULT_DIAL_ID_0: + case OHOS::DEFAULT_DIAL_ID_1: + case OHOS::DEFAULT_DIAL_ID_2: + case OHOS::DEFAULT_DIAL_ID_3: + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "UninstallDial: Default dial %d cannot be uninstalled", id); + return false; + } + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(ble_delete_dial_,id)); + return true; + } + #else return false; #endif @@ -1024,11 +1056,19 @@ bool dial_file_save(void ) #endif } +void install_Register_dial_( char * name,uint16_t id) +{ + #ifdef FD230 + OHOS::SetDialModel::GetInstance().RegisterDial(id,name,0); + #endif + +} void install_Register_dial( char * name,uint16_t id) { -#ifdef FD230 - return OHOS::SetDialModel::GetInstance().RegisterDial(id,name,0); -#endif + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(install_Register_dial_,name ,id)); + return ; + } diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 03cec802a..32b78629a 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -108,6 +108,13 @@ static uint8_t timer_flie_type=0; static uint32_t timer_flie_flag=0; ble_read_data* ble_read_timer_p=NULL; +#ifdef SINGLE_USER_PARTITION +#define UP_DATE_FWPKG_PATH "/user/update/update.fwpkg" + +#else +#define UP_DATE_FWPKG_PATH "/update/update.fwpkg" +#endif + //MP3文件重命名 static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name) @@ -474,6 +481,62 @@ void send_big_data(ble_data_type type,char *data, uint16 datalen) } +bool is_free_ota_update(uint32_t size) +{ + uint64_t free_size=0; + int i; + struct statfs file_buf = {0}; + FILE *fp=NULL; + fp=fopen(UP_DATE_FWPKG_PATH,"rb+"); + if(fp) + { + fclose(fp); + remove(UP_DATE_FWPKG_PATH); + } + +#ifdef SINGLE_USER_PARTITION + static const char * const g_volume_names[1] = { "/user/"}; + for (i = 0; i < 1; i++) { +#else + static const char * const g_volume_names[4] = {"/system/", "/update/", "/music/", "/user/"}; + for (i = 0; i < 4; i++) { +#endif + + /* 获取文件系统状态 */ + if (statfs(g_volume_names[i], &file_buf) != 0) { + return false ; + } + + #ifdef SINGLE_USER_PARTITION + if(strcmp("/user/",g_volume_names[i])==0) + { + free_size= ((uint64_t)(file_buf.f_bfree * file_buf.f_bsize)); + // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"free_size :%ld\r\n",free_size); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"free_size :%lu\r\n",free_size); + } + int need_size=size*1.5; + if(need_size>free_size) + { + return false; + } + else + { + return true; + } + #else + //单分区不考虑是否足够空间 + return true; + #endif +#ifdef SINGLE_USER_PARTITION + } +#else + } +#endif + return false; +} + + + //发送训练状态[app发起的运动] void sendtraningstatedata(uint8_t state ,uint16_t time) { @@ -3956,7 +4019,7 @@ static void GetSDSpaceCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *total { free_size= ((uint64_t)(file_buf.f_bfree * file_buf.f_bsize)); // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"free_size :%ld\r\n",free_size); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"free_size :%lu\r\n",free_size); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"free_size :%lu\r\n",free_size); } } if(sdFlag == 1)// 1获取失败 2 获取成功 @@ -6851,13 +6914,10 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da buffer_handle->file_recv_stat.lrcvalue = 0; if (buffer_handle->file_recv_stat.file_type == 1) { -#ifdef SINGLE_USER_PARTITION - buffer_handle->file_recv_stat.file = fopen("/user/update/update.fwpkg","w+"); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /user/update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file); -#else - buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+"); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file); -#endif + + buffer_handle->file_recv_stat.file = fopen(UP_DATE_FWPKG_PATH,"w+"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file %s %X\n",UP_DATE_FWPKG_PATH,buffer_handle->file_recv_stat.file); + } else if (buffer_handle->file_recv_stat.file_type == 2) @@ -7015,22 +7075,7 @@ errcode_t decode_ota_json(ble_read_data *buffer_handle) uint8_t *data = buffer_handle->data+sizeof(msg_header_t); uint16_t datalen = buffer_handle->totalDataLen; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"ota_json_file_save %s\n",data); - - /** - * * OTA文件信息格式 - * { - "type":1, - //"name":"MT2523_FOTA.bin", - "size":3894464, - "major":0, - "mid":3, - "minor":2 - "isForced":1 - } - - {"isForced":0,"size":254208,"minor":1,"type":1,"major":1,"mid":0} - */ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"ota_json_file_save %s\n",data); cJSON* root = cJSON_Parse((const char *)data); if(root != NULL) @@ -7060,6 +7105,12 @@ errcode_t decode_ota_json(ble_read_data *buffer_handle) if(ota_size_json != NULL && cJSON_IsNumber(ota_size_json)) { buffer_handle->file_recv_stat.file_size = ota_size_json->valueint; + if(is_free_ota_update(ota_size_json->valueint)) + { + TRANSMIT_DATA=TRANS_OTA_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + return ERRCODE_FAIL; + } } cJSON* ota_major_json = cJSON_GetObjectItem(root, "major"); if(ota_major_json != NULL && cJSON_IsNumber(ota_major_json)) @@ -7112,16 +7163,7 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle) { uint8_t *data = buffer_handle->data+sizeof(msg_header_t); uint16_t datalen = buffer_handle->totalDataLen; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"MP3_file_save %s\n",data); - - /** - MP3文件信息格式 - { - "type":2, - "name":"夜曲.mp3", - "size":3894464 - } - */ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"MP3_file_save %s\n",data); cJSON* root = cJSON_Parse((const char *)data); @@ -7229,10 +7271,8 @@ errcode_t decode_dial_info(ble_read_data *buffer_handle) custom_dial_info->time_font); ble_save_dial_custom(custom_dial_info); - ble_dial_file_count=*(data+sizeof(msg_recv_custom_dial_info_t)); - - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," custom_dial file_count %d\r\n",ble_dial_file_count); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," custom_dial file_count %d\r\n",ble_dial_file_count); } else @@ -7267,10 +7307,6 @@ errcode_t decode_dial_info(ble_read_data *buffer_handle) buffer_handle->file_recv_stat.received_size = 0; buffer_handle->file_recv_stat.lrcvalue = 0; buffer_handle->receive_file_flag = 0; - - //进入特殊UI - - return ERRCODE_SUCC; @@ -8123,13 +8159,10 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t buffer_handle->file_recv_stat.lrcvalue = 0; if (buffer_handle->file_recv_stat.file_type == 1) { -#ifdef SINGLE_USER_PARTITION - buffer_handle->file_recv_stat.file = fopen("/user/update/update.fwpkg","w+"); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /user/update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file); -#else - buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+"); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file); -#endif + + buffer_handle->file_recv_stat.file = fopen(UP_DATE_FWPKG_PATH,"w+"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file %s %X\n",UP_DATE_FWPKG_PATH,buffer_handle->file_recv_stat.file); + } else if (buffer_handle->file_recv_stat.file_type == 2) { -- 2.17.1