From a4dead43f257ef3acff05d7460e1532aae59dcfe Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Fri, 25 Apr 2025 18:56:03 +0800 Subject: [PATCH] =?utf8?q?=E8=A7=A3=E5=86=B3=E9=98=BF=E9=87=8C=E4=B9=98?= =?utf8?q?=E8=BD=A6=E7=A0=81=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0=E9=97=AE?= =?utf8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/alipay/include/AlipayModel.h | 1 + .../nativeui/alipay/src/AlipayMainView.cpp | 6 +++ .../nativeui/alipay/src/AlipayModel.cpp | 41 +++++++++++++++++++ .../ble_service/transspecard/transspecard.c | 27 +++++++++--- .../factorytest_service/factorytestService.c | 12 +++--- 5 files changed, 75 insertions(+), 12 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h b/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h index 8f47146f5..b6cc00ca7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h @@ -93,6 +93,7 @@ public: char* AlipayGetCardTitle(void); void AlipayScreenControl(bool turnOnFlag); + void delete_all_files_in_folder(const char *folder_path); private: osTimerId_t bindTimerId = nullptr; osTimerId_t ble_disconnect_bindTimerId = nullptr; diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp index 0cb51957a..6a1cef5c7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp @@ -814,6 +814,12 @@ void AlipayMainView::DestroyTempView(int16 hideView) } } if (hideView == ALIPAY_TRANS_TIPS_VIEW) { + + if(AlipayModel::GetInstance()->AlipayGetSwitchIndex() == ALIPAY_TRANS_TIPS_LIST_UNKNOW) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DestroyTempView ALIPAY_TRANS_TIPS_UNKNOW"); + AlipayModel::GetInstance()->delete_all_files_in_folder("/user/alipay/"); + } delete alipayTransTips; alipayTransTips = nullptr; } else if (hideView == ALIPAY_TRANS_RES_VIEW) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp index ad815179d..d7f70e547 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp @@ -716,4 +716,45 @@ void AlipayModel::AlipayScreenControl(bool turnOnFlag) ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); } } + +#include +#include +#include +#include + +// 删除指定文件夹下的所有文件 +void AlipayModel::delete_all_files_in_folder(const char *folder_path) { + DIR *dir; + struct dirent *entry; + struct stat statbuf; + char path[1024]; + + if ((dir = opendir(folder_path)) == NULL) { + printf("无法打开文件夹"); + return; + } + + while ((entry = readdir(dir)) != NULL) { + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) { + continue; + } + + snprintf(path, sizeof(path), "%s/%s", folder_path, entry->d_name); + + if (stat(path, &statbuf) == -1) { + printf("无法获取文件状态"); + continue; + } + + if (S_ISREG(statbuf.st_mode)) { + if (unlink(path) == -1) { + printf("无法删除文件"); + } + } + } + + closedir(dir); + printf("文件夹 %s 下的所有文件已成功删除。\n", folder_path); +} + } \ No newline at end of file diff --git a/code/sdk/application/wearable/service/ble_service/transspecard/transspecard.c b/code/sdk/application/wearable/service/ble_service/transspecard/transspecard.c index 7c90840ae..63862816d 100644 --- a/code/sdk/application/wearable/service/ble_service/transspecard/transspecard.c +++ b/code/sdk/application/wearable/service/ble_service/transspecard/transspecard.c @@ -14,6 +14,7 @@ #define MAX_RETRY_TIMES 3 // 重传次数 #define PACKET_INTERVAL_TIMEOUT 1000 // 数据包间隔超时时间,单位:ms #define PACKET_DELTA_TIMEOUT 70 // 数据包时间差超时时间,单位:ms +#define PACKET_HEAD_AND_TAIL_LEN 18 // 数据包头部和尾部的长度 static const transspecard_pkt_recv_info_t g_transspecard_alipay_sec_tbl[] = { {ALIPAY_TRANSSPECARD, TRANSSPECARD_TYPE_ID_ALIPAY_NETWORK_STATUS, msg_center_alipay_network_status}, @@ -107,6 +108,20 @@ static uint8_t set_alipay_transspecard_type_Id(uint8_t type) return type_id; } +// 获取阿里的ble_nus最大数据长度 +static uint16_t get_alipay_ble_nus_max_data_len(void) +{ + uint16_t alipay_ble_nus_max_data_len = 0; + if (ble_nus_max_data_len > 512) + { + alipay_ble_nus_max_data_len = 512; + } + else + { + alipay_ble_nus_max_data_len = ble_nus_max_data_len; + } + return alipay_ble_nus_max_data_len; +} static uint8_t ble_transspecard_receive_ack_id = 0xff; static osSemaphoreId_t g_transspecard_ack_sem = NULL; // 全局信号量 static uint8_t send_retry_count = 0; @@ -166,8 +181,8 @@ static uint8_t *assemble_packet(uint8_t type_id, uint8_t packet_id, uint8_t send else { // 数据不为空 - memcpy(buf + 17, data + (packet_id - 1) * (ble_nus_max_data_len - 20), current_datalen); // 拷贝当前段数据到buf+17的位置 - buf[17 + current_datalen] = calculate_CRC_transspecard(buf, 17 + current_datalen); // 计算CRC校验码 + memcpy(buf + 17, data + (packet_id - 1) * (get_alipay_ble_nus_max_data_len() - PACKET_HEAD_AND_TAIL_LEN), current_datalen); // 拷贝当前段数据到buf+17的位置 + buf[17 + current_datalen] = calculate_CRC_transspecard(buf, 17 + current_datalen); // 计算CRC校验码 } #if alipay_transspecard_log @@ -186,7 +201,7 @@ static uint8_t *assemble_packet(uint8_t type_id, uint8_t packet_id, uint8_t send // 发送指定范围的数据包 static uint8_t send_packets_range(uint8_t type_id, void *data, uint16_t datalen, uint8_t start_packet, uint8_t send_packet_total) { - uint32_t singlebuflen = ble_nus_max_data_len - 20; + uint32_t singlebuflen = (get_alipay_ble_nus_max_data_len() - PACKET_HEAD_AND_TAIL_LEN); uint8_t current_packet = start_packet; while (current_packet <= send_packet_total) @@ -214,7 +229,7 @@ static uint8_t send_packets_range(uint8_t type_id, void *data, uint16_t datalen, // 发送数据的函数,支持分包发送 uint8_t send_transspecard_data(uint8_t type_id, void *data, uint16_t datalen) { - uint32_t singlebuflen = ble_nus_max_data_len - 20; + uint32_t singlebuflen = (get_alipay_ble_nus_max_data_len() - PACKET_HEAD_AND_TAIL_LEN); // 计算分包数量,即总包数 uint8_t send_packet_total = datalen / singlebuflen; if (datalen % singlebuflen != 0) @@ -236,7 +251,7 @@ uint8_t send_transspecard_data(uint8_t type_id, void *data, uint16_t datalen) // 发送数据 ble_factorytest_server_send_ota_report(buf, 17 + current_datalen + 1); - printf("发送第 1 个分包(总 1 包)\n"); + // printf("发送第 1 个分包(总 1 包)\n"); msleep(PACKET_DELTA_TIMEOUT); // 增加延时,确保可以成功发送成功 // 释放内存 @@ -694,7 +709,7 @@ uint8_t parse_transspecard_data(void *buf, uint16_t event_size) #endif // 拷贝数据到接收缓冲区 - memcpy(receive_buffer + (current_packet_id - 1) * (ble_nus_max_data_len - 20), buf + 17, current_datalen); + memcpy(receive_buffer + (current_packet_id - 1) * (get_alipay_ble_nus_max_data_len() - PACKET_HEAD_AND_TAIL_LEN), buf + 17, current_datalen); packet_received_flags[current_packet_id - 1] = 1; // 停止当前定时器(如果存在) diff --git a/code/sdk/application/wearable/service/factorytest_service/factorytestService.c b/code/sdk/application/wearable/service/factorytest_service/factorytestService.c index 5c69e4f8a..cb7c7f0d0 100644 --- a/code/sdk/application/wearable/service/factorytest_service/factorytestService.c +++ b/code/sdk/application/wearable/service/factorytest_service/factorytestService.c @@ -172,12 +172,12 @@ errcode_t ble_factorytest_server_send_ota_report(const uint8_t *data, uint16_t l return ERRCODE_BT_FAIL; } - printf("发送到app:"); - for(int i=0;i