From fa6d465b18d5ddbfe1215182254aaa07a112ad4e Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Wed, 26 Feb 2025 19:44:34 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9=E5=8D=87=E7=BA=A7=E5=88=A4?= =?utf8?q?=E6=96=AD=E6=9D=A1=E4=BB=B6=EF=BC=8C=E4=BF=AE=E6=94=B9Python?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...TE_OCPU_QPY_BETA0312_20241124-1030-V16.zip | 3 - ..._OCPU_QPY_BETA0312_20250226-1934_PYV18.zip | 3 + cat1modem/src/cat1Service.py | 2 +- cat1modem/src/main.py | 2 +- cat1modem/src/tcpserver.py | 602 ++++++++++++++++++ .../slip/cat1Service/cat1_tcpServer.cpp | 8 +- 6 files changed, 612 insertions(+), 8 deletions(-) delete mode 100644 cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20241124-1030-V16.zip create mode 100644 cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20250226-1934_PYV18.zip create mode 100644 cat1modem/src/tcpserver.py diff --git a/cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20241124-1030-V16.zip b/cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20241124-1030-V16.zip deleted file mode 100644 index 43baeab41..000000000 --- a/cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20241124-1030-V16.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:041206c1c5dccdbfd59d5fabd6ba67e993a9939a70761f4598df371fb234c866 -size 11641040 diff --git a/cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20250226-1934_PYV18.zip b/cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20250226-1934_PYV18.zip new file mode 100644 index 000000000..2ba711d15 --- /dev/null +++ b/cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20250226-1934_PYV18.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:080d987d4ebafeb12dc21a9f00b6603661241bde8ffdfc5b96074a3f4d330421 +size 11625022 diff --git a/cat1modem/src/cat1Service.py b/cat1modem/src/cat1Service.py index e0827c9c4..56e5d40bc 100644 --- a/cat1modem/src/cat1Service.py +++ b/cat1modem/src/cat1Service.py @@ -78,7 +78,7 @@ sms.setCallback(msg_cb)#sms注册回调 CAT1_SERVICE_HEAD = 'FE' #固定head PROJECT_NAME = "Cat1SlipUDPService" -PROJECT_VERSION = "PY_SRV_V17" +PROJECT_VERSION = "PY_SRV_V18" CONFIG_JSON="/usr/system_config.json" CURRENT_APP_TYPE="pysrv" diff --git a/cat1modem/src/main.py b/cat1modem/src/main.py index 8f1e40caf..ab14d8bf5 100644 --- a/cat1modem/src/main.py +++ b/cat1modem/src/main.py @@ -20,7 +20,7 @@ except Exception as e: clog.error("启动失败!!!!!\r\n".format(e)) try: - example.exec('/usr/tcpService.py') + example.exec('/usr/tcpserver.py') clog.info("启动tcpserver成功!!!!!\r\n") except Exception as e: clog.error("启动失败!!!!!\r\n".format(e)) diff --git a/cat1modem/src/tcpserver.py b/cat1modem/src/tcpserver.py new file mode 100644 index 000000000..afe23b2c1 --- /dev/null +++ b/cat1modem/src/tcpserver.py @@ -0,0 +1,602 @@ +from misc import Power +import usocket +import log +import utime +from machine import UART +import _thread +from queue import Queue +from machine import Pin +from machine import ExtInt +import osTimer +import utime +import ql_fs +import binascii +import ujson +import uos + + +log.basicConfig(level=log.INFO) +clog = log.getLogger("cat1") + +USR_FILE_PATH = "/usr" # +BAK_FILE_PATH = "{}/TmpPyFile".format(USR_FILE_PATH) +BAK_FILE_TMP = "_bak" +CAT1_SERVICE_HEAD = "FE" +CAT1_FILE_DATA_HEAD = "FF" +CAT1_REPLAY_STATE="00" +CAT1_CREAT_DIR_FAILE= "01" +CAT1_CREAT_DIR_OK= "02" +CAT1_NO_REPLAY_OTA_OK= "03" +CAT1_WRITE_FILE_SUCC= "04" +CAT1_WRITE_FILE_ERROR = "05" +CAT1_CRC_ERROR = "06" +CAT1_SEND_HEAD_ERR = "07" +CAT1_OTA_TIMEOUT_BLE_NO_REPLAY = "08" +CAT1_CREAT_FILE_ERROR = "09" +CAT1_CREAT_FILE_SUCC = "0A" +CAT1_ALLPY_FILE_TRANSFER_END = "0B" +CAT1_REPLAY_OTA_SUCC = "0C" +CAT1_REPLAY_OTA_FALIE = "0D" +CAT1_REPLAY_FILE_SIZE_OK = "0E" +CAT1_REPLAY_FILE_SIZE_ERR = "0F" +CAT1_REPLAY_OTA_END_FAILE = "10" +CAT1_NEED_UPDATE_OTA = "11" +CAT1_TCP_STOP_OTA = 0 +CAT1_TCP_START_OTA = 1 +CAT1_TCP_START_SEND_SINGLE_FILE_INFO= 2 +CAT1_TCP_START_SEND_FILE_DATA= 3 +CAT1_TCP_START_OTA_FAILE = 4 +CAT1_TCP_START_OTA_SUCC = 5 +CAT1_TCP_START_SEND_ALLFILE_FINESH = 6 +CAT1_TCP_SEND_SINGLE_FINESH = 7 +CAT1_TCP_START_ERROR_INFO = 255 + +gpioWakeBT = Pin(Pin.GPIO21, Pin.OUT, Pin.PULL_DISABLE, 1) +gpioWakeBT.set_dir(Pin.OUT) +gpioWakeBT.write(0) +FILE_TRANSFER_TIMEOUT=60 +class TcpServiceInit: + AP = 0 + STA = 1 + + def __init__(self, uart=UART.UART4, mode=AP): + self.__uart = uart + self.__mode = mode + self.Cat1FileState = 0 + self.Cat1FileReplayBle = 0 + self.Cat1TimeCount = 0 + self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT + self.Cat1FileTransTimer = osTimer() + self.Cat1OtaTimeOut = osTimer() + self.crc_err = 0 + self.allPyRecvFlag = 0 + self.ota_state =0 + self.ota_bstate =0 + self.fileNameTmp = "" + self.fileNameList = [] + self.fileSizeList = [] + self.fileSize = 0 + self.updateTimer = osTimer() + self.updateTimerCount = 0 + self.updateTimerFlag = 0 + self.sock = None + self.bakFlag = "0" + self.conn= None + self.__sock_file = None + self.__sock_file = self.__socket_file_init() + self.__thread_file = _thread.start_new_thread(self.__Socket_File_Thread, ()) + self.conn_thread=_thread.start_new_thread(self._client_conn_proc, ()) + + def __pack_tlv_format(self, head, content): + head1 = head + content1 = content + if len(content1) == 0 or len(content1) > 9999 or len(head1) != 2: + return -1 + len_str ='%04d' % len(content1) + tlv_pack = CAT1_SERVICE_HEAD+head1+len_str+content1 + return tlv_pack + + def __unpack_tlv_format(self, msg): + msg_tmp = str(msg)[2:] + tag = msg_tmp[0:2] + length = msg_tmp[2:6] + value = msg_tmp[6:] + len_str ='%04d' % len(value) + if len(value) == 0 or len(value) > 9999 or len(tag) != 2 or len_str != msg_tmp[2:6]: + return -1 + unpack = (tag,length,value) + return unpack + + def __socket_file_init(self): + self.sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM, usocket.IPPROTO_TCP_SER) + self.sock.setsockopt(usocket.SOL_SOCKET, usocket.SO_REUSEADDR, 1) + bind_addr = ('172.16.1.2', 5001) + self.sock.bind(bind_addr) + self.sock.listen(10) + return self.sock + + def __Socket_TCP_file_noreply(self, head, content): + head1 = head + content1 = content + gpioWakeBT.write(1) + utime.sleep_ms(2) + gpioWakeBT.write(0) + utime.sleep_ms(20) + msg = self.__pack_tlv_format(head1,content1) + if msg == -1: + return 0 + try: + self.conn.send(msg) + except Exception as e: + clog.info("self.__sock_file error {}".format(e)) + return 0 + + def _client_conn_proc(self): + while True: + if self.conn==None: + utime.sleep_ms(20) + continue + try: + data = self.conn.recv(1024) + if not data: + clog.info("__Socket_File_Thread data null:\r\n") + else: + self.src_data(data.decode('uft-8')) + except: + self.conn.close() + break + + def __Socket_File_Thread(self): + while True: + try : + cli_conn, cli_ip_addr, cli_port = self.__sock_file.accept() + self.conn=cli_conn + clog.info('[serveice] accept a client: %s, %s' % (cli_ip_addr, cli_port)) + except : + utime.sleep_ms(20) + + def cat1FileTimerCb(self,*argc): + clog.info("timer test\r\n") + if self.Cat1PyFileTimout > 0: + self.Cat1PyFileTimout-=1 + if self.Cat1PyFileTimout == 0: + self.Cat1PyFileTimout = 0 + self.Cat1FileState = 0 + self.deleteTmpFile() + self.deleteUsrTmpFile() + self.__Socket_TCP_file_noreply(CAT1_OTA_TIMEOUT_BLE_NO_REPLAY,"ota error") #结束文件接收不完整的 + self.Cat1FileTransTimer.stop() + pass + + def crc_cal(self,msg): + bytes_data = msg.encode('utf-8') + hex_data = binascii.hexlify(bytes_data) + hex_data = hex_data.decode() + data = hex_data + crcValue = 0 + j = 0 + i = 0 + json_state = 0 + crcbuf = 0 + data_len = len(str(data)) + try: + if data_len % 2 != 0: + json_state = 0 + return [json_state,crcbuf] + except Exception as e: + json_state = 0 + for i in range(data_len): + if j >= data_len: + break + try: + decimal_number = int(str(data[j:j+2]), 16) + crcValue=crcValue+decimal_number + crcValue = crcValue&0xff + except Exception as e: + clog.info("crc_cal") + j+=2 + crcbuf = crcValue%256 + crcbuf = 256-crcbuf + crcbuf = crcbuf%256 + return [json_state,"%02x"%(crcbuf)] + def deleteTmpFile(self): + tmp_dir = ql_fs.path_exists(BAK_FILE_PATH) + if tmp_dir == True: + ql_fs.rmdirs(BAK_FILE_PATH) + + def deleteUsrTmpFile(self): + return + + def src_data(self,data): + if self.updateTimerFlag == 0: + self.updateTimerFlag = 1 + self.updateTimer.stop() + msg = "" + json_state = 0 + try: + msg = ujson.loads(data) + json_state = 1 + except Exception as e: + json_state = 0 + if json_state == 0: + value = self.__unpack_tlv_format(data) + self.cmd_data(value[0],value[2]) + return + else: + self.file_data(msg) + pass + def cmd_data(self,cmd,parm): + if cmd == "01": + self.bakFlag = str(parm) + pass + def file_data(self,msg): + if "Code" in msg: + Code = int(msg["Code"]) + if Code == CAT1_TCP_STOP_OTA: + self.allPyRecvFlag = 0 + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.deleteTmpFile() + self.deleteUsrTmpFile() + pass + elif Code == CAT1_TCP_START_OTA: + self.ota_state =0 + self.ota_bstate =0 + self.allPyRecvFlag = 0 + self.fileNameList = [] + self.fileSizeList = [] + self.allPyRecvFlag = 0 + self.Cat1FileState = 0 + self.deleteUsrTmpFile() + self.Cat1OtaTimeOut.stop() + check_dir = ql_fs.path_exists(BAK_FILE_PATH) + mk_dir_state = 0 + if check_dir == True: + try: + self.deleteTmpFile() + except Exception as e: + clog.info("移除失败\r\n") + check_dir = ql_fs.path_exists(BAK_FILE_PATH) + if check_dir == False: + try: + ql_fs.mkdirs(BAK_FILE_PATH) + mk_dir_state = 1 + except Exception as e: + mk_dir_state = 0 + else: + mk_dir_state = 1 + if mk_dir_state == 0: + self.__Socket_TCP_file_noreply(CAT1_CREAT_DIR_FAILE,"creat dir error!") + else: + self.Cat1FileState = 1 + self.fileNameList = [] + self.fileSizeList = [] + self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT + self.Cat1FileTransTimer.stop() + self.Cat1FileTransTimer.start(1000,1,self.cat1FileTimerCb) + self.__Socket_TCP_file_noreply(CAT1_CREAT_DIR_OK,"creat dir success!") + + elif Code == CAT1_TCP_START_SEND_SINGLE_FILE_INFO and self.Cat1FileState == 1: + self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT + self.fileNameTmp = str(msg["fileName"]) + self.fileSize = msg["fileSize"] + self.fileNameList = msg["fileNameList"] + path = "{}/{}".format(BAK_FILE_PATH,self.fileNameTmp) + check_touch = ql_fs.path_exists("{}/{}".format(BAK_FILE_PATH,self.fileNameTmp)) + if check_touch == True: + try: + uos.remove("{}/{}".format(BAK_FILE_PATH,self.fileNameTmp)) + except Exception as e: + clog.info("移除文件失败\r\n") + try: + with open(path,"w+") as fd: + fd.write("") + fd.close() + self.__Socket_TCP_file_noreply(CAT1_CREAT_FILE_SUCC,"1creat file or dir success!") + except Exception as e: + self.__Socket_TCP_file_noreply(CAT1_CREAT_FILE_ERROR,"1creat file or dir err!") + else: + try: + with open(path,"w+") as fd: + fd.write("") + fd.close() + self.crc_err = 0 + + self.__Socket_TCP_file_noreply(CAT1_CREAT_FILE_SUCC,"2creat file or dir success!") + except Exception as e: + self.__Socket_TCP_file_noreply(CAT1_CREAT_FILE_ERROR,"2creat file or dir err!") + + + elif Code == CAT1_TCP_START_SEND_FILE_DATA and self.Cat1FileState == 1: + self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT + if len(self.fileNameTmp) == 0: + return + data = msg["data"] + if len(data) == 0: + return + tmpdata = str(data) + head = tmpdata[0:2] + if head != CAT1_FILE_DATA_HEAD or len(tmpdata) <= 8: + clog.info("head {}\r\n".format(head)) + self.__Socket_TCP_file_noreply(CAT1_SEND_HEAD_ERR,"head error!") + return + datalen = str(tmpdata[2:6]) + datalen = int("0x" + datalen, 16) + data_buf = tmpdata[6:] + data_buf = data_buf[:-2] + crc = tmpdata[-2:] + if len(str(data_buf)) == 0 or len(str(data_buf)) != datalen: + self.__Socket_TCP_file_noreply(CAT1_WRITE_FILE_ERROR,"crc error or data null!") + return + data = str(data_buf) + path = "{}/{}".format(BAK_FILE_PATH,str(self.fileNameTmp)) + try: + with open(path,"a") as fd: + fd.write(data) + fd.close() + self.__Socket_TCP_file_noreply(CAT1_WRITE_FILE_SUCC,"write file success!") + + except Exception as e: + self.__Socket_TCP_file_noreply(CAT1_WRITE_FILE_ERROR,"write file error!") + + elif Code == CAT1_TCP_START_OTA_FAILE and self.Cat1FileState == 1: + self.allPyRecvFlag = 0 + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"OTA FAILE") + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.deleteTmpFile() + self.deleteUsrTmpFile() + pass + elif Code == CAT1_TCP_START_SEND_ALLFILE_FINESH and self.Cat1FileState == 1: + if self.bakFlag == "0": + if self.allPyRecvFlag == 1: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") + else: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.Cat1OtaTimeOut.stop() + self.Cat1TimeCount = 0 + self.ota_state = 1 + self.allPyRecvFlag = 1 + self.Cat1OtaTimeOut.start(5000,0,self.otaTimeOut) + return + tmp_dir = ql_fs.path_exists(BAK_FILE_PATH) + if tmp_dir == True: + filenamesList = uos.listdir(BAK_FILE_PATH) + list1 = sorted(filenamesList) + list2 = sorted(self.fileNameList) + if list1 != list2: + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.deleteUsrTmpFile() + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!") + return + try: + copy_state = 1 + compare_flag = 1 + copy_flag = 0 + filenamesList = uos.listdir(BAK_FILE_PATH) + for tmp in filenamesList: + dst_path = "{}/{}".format(USR_FILE_PATH,tmp) + src_path = "{}/{}".format(BAK_FILE_PATH,tmp) + ret = False + file_size = 0 + try: + ret = ql_fs.file_copy(dst_path,src_path) + + if ret == True: + dstfile_size = ql_fs.path_getsize(dst_path) + srcfile_size = ql_fs.path_getsize(src_path) + if dstfile_size != srcfile_size: + compare_flag = 0 + break + else: + try: + compare_flag = 1 + uos.remove(src_path) + filenamesList = uos.listdir(BAK_FILE_PATH) + except Exception as e: + clog.info("copy file \r\n") + else: + compare_flag = 0 + break + except Exception as e: + clog.info("copy file \r\n") + + if copy_state == 0 or compare_flag == 0 : + self.deleteUsrTmpFile() + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota faile!22") + return + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.Cat1OtaTimeOut.stop() + self.Cat1TimeCount = 0 + self.ota_state = 1 + self.allPyRecvFlag = 1 + self.Cat1OtaTimeOut.start(5000,0,self.otaTimeOut) + except Exception as e: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota faile!33") + self.deleteUsrTmpFile() + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + else: + if self.ota_state == 1: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") + pass + else: + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.deleteUsrTmpFile() + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!") + + elif Code == CAT1_TCP_START_OTA_SUCC and self.Cat1FileState == 1: + if self.bakFlag == "0": + self.deleteUsrTmpFile() + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + if self.allPyRecvFlag == 1: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") + else: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!") + return + + if self.allPyRecvFlag == 0: + self.deleteTmpFile() + self.deleteUsrTmpFile() + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!") + return + tmp_dir = ql_fs.path_exists(BAK_FILE_PATH) + if tmp_dir == True: + filenamesList = uos.listdir(BAK_FILE_PATH) + list1 = sorted(filenamesList) + list2 = sorted(self.fileNameList) + if list1 != list2: + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.deleteUsrTmpFile() + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!") + return + + try: + copy_state = 1 + compare_flag = 1 + filenamesList = uos.listdir(BAK_FILE_PATH) + for tmp in filenamesList: + dst_path = "{}/{}".format(USR_FILE_PATH,tmp) + src_path = "{}/{}".format(BAK_FILE_PATH,tmp) + ret = False + file_size = 0 + try: + ret = ql_fs.file_copy(dst_path,src_path) + if ret == True: + dstfile_size = ql_fs.path_getsize(dst_path) + srcfile_size = ql_fs.path_getsize(src_path) + if dstfile_size != srcfile_size: + compare_flag = 0 + break + else: + try: + compare_flag = 1 + uos.remove(src_path) + filenamesList = uos.listdir(BAK_FILE_PATH) + except Exception as e: + clog.info("file\r\n") + else: + compare_flag = 0 + break + + except Exception as e: + clog.info("file\r\n") + if copy_state == 0 or compare_flag == 0 : + self.deleteUsrTmpFile() + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota faile!22") + return + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.Cat1OtaTimeOut.stop() + self.Cat1TimeCount = 0 + self.ota_bstate = 1 + self.conn.close() + self.Cat1OtaTimeOut.start(10000,0,self.otaTimeOut) + except Exception as e: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota faile!33") + self.deleteUsrTmpFile() + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + else: + if self.ota_bstate == 1: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") + pass + else: + self.deleteTmpFile() + self.Cat1FileState = 0 + self.Cat1FileTransTimer.stop() + self.deleteUsrTmpFile() + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!") + + elif Code == CAT1_TCP_SEND_SINGLE_FINESH and self.Cat1FileState == 1: + self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT + tmp_dir = ql_fs.path_exists(BAK_FILE_PATH) + if tmp_dir == True: + tmp_file = ql_fs.path_exists("{}/{}".format(BAK_FILE_PATH,self.fileNameTmp)) + if tmp_file == True: + file_size = ql_fs.path_getsize("{}/{}".format(BAK_FILE_PATH,self.fileNameTmp)) + if self.fileSize != file_size: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file size err") + else: + if self.bakFlag == "0": + dst_path = "{}/{}".format(USR_FILE_PATH,self.fileNameTmp) + src_path = "{}/{}".format(BAK_FILE_PATH,self.fileNameTmp) + ret = False + try: + ret = ql_fs.file_copy(dst_path,src_path) + if ret == True: + dstfile_size = ql_fs.path_getsize(dst_path) + srcfile_size = ql_fs.path_getsize(src_path) + if dstfile_size != srcfile_size: + src_file = ql_fs.path_exists(src_path) + if src_file == True: + try: + uos.remove(src_path) + except Exception as e: + clog.info("copy 文件异常出错 yichu!{}:\r\n".format(e)) + self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file size err") + return + else: + src_file = ql_fs.path_exists(src_path) + if src_file == True: + try: + uos.remove(src_path) + except Exception as e: + clog.info("copy 文件异常出错!!!!!!!!!!{}:\r\n".format(e)) + self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_OK,"file size ok") + return + else: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file copy err") + except Exception as e: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file copy err") + else: + self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_OK,"file copy ok") + else: + self.__Socket_TCP_file_noreply(CAT1_CREAT_FILE_ERROR,"creat file or dir err!") + pass + else: + self.__Socket_TCP_file_noreply(CAT1_CREAT_DIR_FAILE,"creat file or dir error!") + pass + else: + if self.Cat1FileState == 0: + if self.Cat1FileReplayBle == 1: + return + self.Cat1FileReplayBle = 1 + self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"reset start!") + self.Cat1FileState == 0 + self.Cat1FileTransTimer.stop() + self.Cat1PyFileTimout = 0 + self.fileNameList=[] + self.deleteTmpFile() + self.deleteUsrTmpFile() + + def otaTimeOut(self,*argc): + clog.info("重启成功!!!!!!!!\r\n") + +TcpService = TcpServiceInit() + + diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_tcpServer.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_tcpServer.cpp index 62fc1b7af..9dfa47ad0 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_tcpServer.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_tcpServer.cpp @@ -1061,8 +1061,9 @@ static int udp_packet_parse(char *rx_buffer, int len) //成功直接重启 if(is_need_udp_updata) { - FILE *fp= fopen(CAT1_PY_IS_NEED_UDP_PATH,"wb+"); - fclose(fp); + // FILE *fp= fopen(CAT1_PY_IS_NEED_UDP_PATH,"wb+"); + // fclose(fp); + remove(CAT1_PY_IS_NEED_UDP_PATH); } CustomEventPublish(TOPIC_EVENT_SHUTDOWN_ANIMATIOR, &shutdowflag, sizeof(shutdowflag)); //添加GUI @@ -1302,10 +1303,11 @@ errcode_t cat1_tcp_server_init(void) taskcfg.func = cat1_server_file_task; taskcfg.use_mem = USE_EXTEND_MEM; FILE* fp= fopen(CAT1_PY_IS_NEED_UDP_PATH,"rb"); - if(fp==NULL) + if(fp) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"is_need_udp_updata !\r\n"); is_need_udp_updata=1; + fclose(fp); } errcode_t ret=uapi_create_osThread_custom(&taskcfg); -- 2.17.1