修改升级判断条件,修改Python 1670/2 1670/head 1671/target/1 1672/target/1
authorhcj <1224667075@qq.com>
Wed, 26 Feb 2025 11:44:34 +0000 (19:44 +0800)
committerhcj <1224667075@qq.com>
Wed, 26 Feb 2025 11:44:34 +0000 (19:44 +0800)
cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20241124-1030-V16.zip [deleted file]
cat1modem/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312_20250226-1934_PYV18.zip [new file with mode: 0644]
cat1modem/src/cat1Service.py
cat1modem/src/main.py
cat1modem/src/tcpserver.py [new file with mode: 0644]
code/sdk/drivers/peripheral/slip/cat1Service/cat1_tcpServer.cpp

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 (file)
index 43baeab..0000000
+++ /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 (file)
index 0000000..2ba711d
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:080d987d4ebafeb12dc21a9f00b6603661241bde8ffdfc5b96074a3f4d330421
+size 11625022
index e0827c9..56e5d40 100644 (file)
@@ -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"
 
index 8f1e40c..ab14d8b 100644 (file)
@@ -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 (file)
index 0000000..afe23b2
--- /dev/null
@@ -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()
+
+
index 62fc1b7..9dfa47a 100644 (file)
@@ -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);