精简CAT1 TCP传输代码,增加传输成功概率 1669/1 1669/head 1670/target/1
authorhcj <1224667075@qq.com>
Wed, 26 Feb 2025 07:03:23 +0000 (15:03 +0800)
committerhcj <1224667075@qq.com>
Wed, 26 Feb 2025 07:03:23 +0000 (15:03 +0800)
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1otaudp/cat1Service.py
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1otaudp/is_need_updata.txt [deleted file]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1otaudp/main.py
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1otaudp/tcpserver.py [moved from code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1otaudp/tcpService.py with 56% similarity]
code/sdk/drivers/peripheral/slip/cat1Service/cat1_tcpServer.cpp

index e0827c9..f0d46dc 100644 (file)
@@ -1,29 +1,3 @@
-# Copyright (c) Quectel Wireless Solution, Co., Ltd.All Rights Reserved.
-#  
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#  
-#     http://www.apache.org/licenses/LICENSE-2.0
-#  
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-
-# net.getNetMode()
-# (0, '460', '11', 7)
-
-# net.getSignal(1)
-# ([99, 99, 255, 255], [-84, -117, -15, 255, -3])
-
-# net.nitzTime()
-# ('24/02/26 11:17:42 8 0', 1708946262, 0)
-
-
 import usocket
 import log
 import utime
@@ -37,63 +11,30 @@ from machine import ExtInt
 import dataCall
 import voiceCall
 import net
-import uping
-import example
 import osTimer
 import sim
 import modem
 import utime
 import checkNet
 import atcmd
-import fota
-import request
 import ql_fs
 import pm
 import sms
 
 from usr.EventMesh import eventMesh
 
-# from usr.telecom_dmp import telecomDmpCb
-# from usr.china_mobile_dmp import chinamobileCb
-
-# 设置日志输出级别
 log.basicConfig(level=log.INFO)
 clog = log.getLogger("cat1")
 
-def msg_cb(args):
-    index = args[1]
-    storage = args[2]
-    sms_data = sms.getSaveLoc()
-    if sms_data == -1:
-        return
-    sms_max = sms_data[0][2]
-    if index != -1:
-        eventMesh.publish("send_singal_data_toBle",index)
-        
-    if index >= sms_max-1:#删除短信
-        eventMesh.publish("delete_sms_event")#删除短信
-
-sms.setCallback(msg_cb)#sms注册回调
-
-CAT1_SERVICE_HEAD = 'FE' #固定head 
-
+CAT1_SERVICE_HEAD = 'FE' 
 PROJECT_NAME = "Cat1SlipUDPService"
 PROJECT_VERSION = "PY_SRV_V17"
 CONFIG_JSON="/usr/system_config.json"
 CURRENT_APP_TYPE="pysrv"
 
-
-
-
-
-
-#设置通话音量
 voiceCall.setVolume(10)
-clog.info("voice call volume {}".format(voiceCall.getVolume()))
 lpm_fd = pm.create_wakelock("system_lock", len("system_lock"))
-# pm.autosleep(1)
 pm.wakelock_lock(lpm_fd)
-clog.info("create_wakelock {}".format(pm.get_wakelock_num()))
 telecomTimerCount = 0
 def get_versionkeyname_by_py(app_type):
     return str("{}version".format(app_type))
@@ -105,8 +46,7 @@ def get_default_versionvalue_by_py(app_type):
         return  "PY_OTA_V14"
     elif (app_type == "pysrv"):
         return  "PY_SRV_V16"
-
-#如果没有configfile则创建它
+    
 if not ql_fs.path_exists(CONFIG_JSON):
     data = {str(get_versionkeyname_by_py(CURRENT_APP_TYPE)):get_default_versionvalue_by_py(CURRENT_APP_TYPE)}
     ql_fs.touch(CONFIG_JSON,data)
@@ -116,135 +56,90 @@ def set_version_to_json_config(app_type,keyvalue):
         config_data = ql_fs.read_json(CONFIG_JSON)
         config_data.update( {str(get_versionkeyname_by_py(app_type)):keyvalue})
         ql_fs.touch(CONFIG_JSON, config_data)
-        clog.info("{}={}".format(get_versionkeyname_by_py(app_type),keyvalue))
-        clog.info("{}".format(config_data))
     except Exception as e:
         clog.error("set_version_to_json_config")
 
 def get_version_from_json_config(app_type):
     config_data = ql_fs.read_json(CONFIG_JSON)
     keyvalue = config_data.get( get_versionkeyname_by_py(app_type),get_default_versionvalue_by_py(app_type))
-    clog.info("{}={}".format(get_versionkeyname_by_py(app_type),keyvalue))
     return keyvalue
 
 set_version_to_json_config(CURRENT_APP_TYPE,PROJECT_VERSION)
     
 
 audio.set_qdai_cfg(1,0,0,1,0,0,1,1)
-
-# GPIO21 - 引脚 86   KP_MKOUT1   唤醒主控
-# GPIO22 - 引脚 87   KP_MKIN     被主控唤醒
-
-# GPIOn - GPIO号,int类型,点此查看GPIO引脚编号与物理引脚的映射关系。
-
-# direction - 输入输出模式,int类型,IN - 输入模式,OUT - 输出模式。
-
-# pullMode - 上下拉模式,int类型,说明如下:
-# PULL_DISABLE - 浮空模式
-# PULL_PU - 上拉模式
-# PULL_PD - 下拉模式
-
-# level - 引脚电平,int类型,0 - 设置引脚为低电平, 1- 设置引脚为高电平。
-# recvDataPin = Pin(Pin.GPIO22, Pin.IN, Pin.PULL_PU, 0)
 def ExtIntfun(args):
-        # clog.info('### interrupt  {} ###'.format(args)) # args[0]:gpio号 args[1]:上升沿或下降沿
         if args[1] == 0:
-            clog.info("disable autosleep")
-            # pm.autosleep(0)
             pm.wakelock_lock(lpm_fd)
         elif args[1] == 1:
-            clog.info("enable autosleep")
             pm.wakelock_unlock(lpm_fd)
-            # pm.autosleep(1)
-        # clog.info("recvDataPin={}".format(recvDataPin.read()))
 extint = ExtInt(ExtInt.GPIO22, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_DISABLE, ExtIntfun)
 extint.enable()
 
-
-# 创建gpio对象
 gpioWakeBT = Pin(Pin.GPIO21, Pin.OUT, Pin.PULL_DISABLE, 1)
-# 设置输入输出模式
 gpioWakeBT.set_dir(Pin.OUT)
-
-# 设置引脚电平
 gpioWakeBT.write(0)
 
-UDP_CMD_GET_CAT1VER = '0'  #获取 Cat1 版本号
-UDP_CMD_DIAL_NUMB = '1'              #拨打电话
-UDP_CMD_HUNGUP = '2'               #挂断电话
-UDP_CMD_ANSWER = '3'            #接听电话
-UDP_CMD_CAT1_OTA_UPDATE = '4'       #触发Cat1 OTA升级,mcu提供url
-UDP_CMD_SEND_SMS = '5'         #发送SMS短信,mcu提供电话号及短信内容
-UDP_CMD_GET_TIME = '6'               #获取Cat1 时间 ,YYYYMMDD HHmmss zone
-UDP_CMD_GET_RECV_NETWORKSTAT = '7'      #获取Cat1 信号信息,VOLTE信息,信号强度,SIM卡状态  // 内容同UDP_CMD_GET_NETWORKSTAT,CAT主动发给MCU
-UDP_MSG_SMS = '8'           #  CAT1接收到的SMS信息给MCU,包含电话号及短信内容
-UDP_CMD_ATCMD = '9'           # 执行AT指令
-UDP_MSG_CALL_CONNECTED = 'A'       #  CAT1 电话接听消息
-UDP_MSG_CALL_DISCONNECTED = 'B'        #  CAT1 电话挂断消息
-UDP_MSG_COMMING_CALL = 'C'       #  CAT1 来电消息,包含电话号
-UDP_MSG_REPLY = 'F'         # 返回值 
-
+UDP_CMD_GET_CAT1VER = '0'
+UDP_CMD_DIAL_NUMB = '1'
+UDP_CMD_HUNGUP = '2'
+UDP_CMD_ANSWER = '3'
+UDP_CMD_CAT1_OTA_UPDATE = '4'
+UDP_CMD_SEND_SMS = '5'
+UDP_CMD_GET_TIME = '6'      
+UDP_CMD_GET_RECV_NETWORKSTAT = '7'
+UDP_MSG_SMS = '8'
+UDP_CMD_ATCMD = '9'   
+UDP_MSG_CALL_CONNECTED = 'A'       
+UDP_MSG_CALL_DISCONNECTED = 'B'    
+UDP_MSG_COMMING_CALL = 'C'     
+UDP_MSG_REPLY = 'F'
 
 class Cat1Service:
-    AP = 0  # SLIP_INNER
-    STA = 1 # SLIP_OUTER
-
+    AP = 0
+    STA = 1
     def __init__(self, uart=UART.UART4, mode=AP):
-        
         self.__uart = uart
         self.__mode = mode
         self.__message = ''
         self.__err = 0
         self.__net_connected = 0
-        # self.__value = None
         self.__wait_resp = 0
         self.__waiting_netstat = 0
         slip.destroy()
-        clog.info('slip uart={0}'.format (self.__uart))
-
         ret = slip.construct(self.__uart, self.__mode, 0)
         if ret != 0:
-            clog.error('slip netif construct fail')
             return None
-        clog.info('slip network card create success')
-        # self.__queue = Queue(1)
         self.__sock = self.__socket_init()
         self.__threadid = _thread.start_new_thread(self.__Socket_Thread, ())
         self.telecom_init_flag = 0
         self.telecomTimer = osTimer()
         eventMesh.subscribe("cat1_reply_iccid_to_ble",self.cat1_reply_iccid_to_ble)
         eventMesh.subscribe("cat1_reply_timesec_to_ble",self.cat1_reply_timesec_to_ble)
-        
         self.iccid_data = ""
         self.software_version = ""
         self.deletSmsTimer = osTimer()
-
-        self.volte_switch = 1 #默认是开启VOLTE通话功能
+        self.volte_switch = 1
         eventMesh.subscribe("set_dmp_change_mode",self.set_dmp_change_mode)
         eventMesh.subscribe("get_dmp_change_mode",self.get_dmp_change_mode)
         eventMesh.subscribe("delete_sms_event",self.delete_sms_event)
-        eventMesh.subscribe("remove_all_sms_cb", self.remove_all_sms_cb)#
+        eventMesh.subscribe("remove_all_sms_cb", self.remove_all_sms_cb)
         eventMesh.subscribe("send_sms_max_to_Ble",self.send_sms_max_to_Ble)
-        eventMesh.subscribe("get_all_sms_data",self.get_all_sms_data) #获取所有的短信内容
+        eventMesh.subscribe("get_all_sms_data",self.get_all_sms_data)
         eventMesh.subscribe("send_singal_data_toBle",self.send_singal_data_toBle)
         eventMesh.subscribe("delete_sms_single_data",self.delete_sms_single_data)
-
         eventMesh.subscribe("get_factory_status",self.get_factory_status)
         eventMesh.subscribe("set_factory_status",self.set_factory_status)
         eventMesh.subscribe("send_dmp_cm_address_toBLE",self.send_dmp_cm_address_toBLE)
         eventMesh.subscribe("set_volte_switch",self.set_volte_switch)
         eventMesh.subscribe("get_volte_switch",self.get_volte_switch)
         eventMesh.publish("delete_sms_event")
-
-       
         self.telecom_dmp_switch = 0
-
         self.send_data = []
         self.code_old = 0
         self.code_old_num = 1
         self.tmp_data = []
         self.total_num = 0
-        #
         self.msg_nums = 0
         self.msg_nums_old = 0
         self.china_mobile_init = 0
@@ -252,14 +147,11 @@ class Cat1Service:
         self.send_data_q = Queue(100)
         self.ack_sem=0
         _thread.start_new_thread(self.Socket_SEND_Thread,())
-        # 发数据线程
         return None
 
     def __socket_init(self):
-        # 创建一个socket实例
         sock = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM, usocket.TCP_CUSTOMIZE_PORT)
         sock.setsockopt(usocket.SOL_SOCKET, usocket.SO_REUSEADDR, 1)
-        # 绑定IP
         bind_addr = ('172.16.1.2', 5000)
         sock.bind(bind_addr)
         sock.settimeout(None)
@@ -274,26 +166,12 @@ class Cat1Service:
         self.reply_cmd('0F',"VOLUME:{}".format(voiceCall.getVolume()))
 
     def btmcu_cmd_handler(self,cmd,parm):
-        
-        # cmd = ""
-        # cmd_tmp= int(cmd_data)#将十进制数转换成int 再转换成十六进制
-        # cell_data = hex(cmd_tmp)
-        # decimal_number = int(cell_data, 16)
-        # cmd = "%02x"%(decimal_number)  # 使用两位表示,不足前面补0
-        clog.info(cmd)  # 输出: 07
-        clog.info("btmcu_cmd_handler cmd {0} , args {1}".format(cmd,parm))
         if cmd == "00":
-            clog.info(cmd)
-            # UDP_CMD_GET_CAT1VER
             modem_ver = modem.getDevFwVersion() 
             self.reply_cmd('00',"pyVer:{}@modemVer:{}".format(PROJECT_VERSION,modem_ver))
         elif cmd == "01":
-            # UDP_CMD_DIAL_NUMB
-            if eventMesh.publish("get_volte_switch") == 1: #只有BLE开了VOLTE才允许打电话
+            if eventMesh.publish("get_volte_switch") == 1:
                 ret = voiceCall.callStart(str(parm))
-                # if ret != 0:
-                #     ret = voiceCall.callStart(str(parm))
-                clog.info("ret={} {} {}".format(ret,cmd,parm))
                 if ret != 0:
                     self.reply_cmd('0F',"callcmd_fail")
                 else:
@@ -301,8 +179,6 @@ class Cat1Service:
             else:
                 self.reply_cmd('0F',"callcmd_fail")
         elif cmd == "02":
-            clog.info(cmd)
-            # UDP_CMD_HUNGUP
             ret = voiceCall.callEnd()
             if ret != 0:
                 ret = voiceCall.callEnd()
@@ -311,8 +187,6 @@ class Cat1Service:
             else:
                 self.reply_cmd('0F',"callend_success")
         elif cmd == "03":
-            clog.info(cmd)
-            # UDP_CMD_ANSWER
             ret = voiceCall.callAnswer()
             if ret != 0:
                 ret = voiceCall.callAnswer()
@@ -320,57 +194,36 @@ class Cat1Service:
                 self.reply_cmd('0F',"callanswer_fail")
             else:
                 self.reply_cmd('0F',"callanswer_success")
-        elif cmd == "04":
-            clog.info(cmd)
-        elif cmd == "05":
-            clog.info(cmd)
-            # UDP_CMD_SEND_SMS
         elif cmd == "06":
-            clog.info(cmd)
-            # UDP_CMD_GET_TIME
             time=utime.localtime()
             zone=utime.getTimeZone()
-            #(2024, 3, 2, 18, 31, 32, 5, 62),8
-            # 返回当前时间戳,参数为元组
-            # timestamp = utime.mktime(time)
-            # clog.info(timestamp)
             self.reply_cmd('06',"{0}@{1}".format(time,zone))
         elif cmd == "07":
-            clog.info("cmd ==== 07!")
-            # UDP_CMD_GET_RECV_NETWORKSTAT
             simstat = sim.getStatus()
             imei = modem.getDevImei()
             netstat = "0,10,0,10"
             netstat_ = net.getState()
             if netstat_ != -1 :
                 netstat = "{},{},{},{}".format(netstat_[0][0],netstat_[0][3],netstat_[1][0],netstat_[1][3])
-            # ([voice_state, voice_lac, voice_cid, voice_rat, voice_reject_cause, voice_psc], [data_state, data_lac, data_cid, data_rat, data_reject_cause, data_psc])
             operator =  net.operatorName()
             signal = net.csqQueryPoll()
-            clog.info("imei:{0},sim:{1},oper:{2},signal:{3},net:{4}".format(imei,simstat,operator,signal,netstat))
             self.reply_cmd('07',"imei:{0}@sim:{1}@oper:{2}@signal:{3}@net:{4}".format(imei,simstat,operator,signal,netstat))
         elif cmd == "09":
-            clog.info("{},{}".format(cmd,parm))
-            # UDP_CMD_ATCMD
-            # net.setModemFun(0)
-            # net.setModemFun(1)
             resp=bytearray(50)
             ret=atcmd.sendSync("{}\r\n".format(parm),resp,'',10)
             if ret == 0:
-                clog.info("reply:{},ret:{}".format(resp.decode(),ret))
                 self.reply_cmd('09',"{}".format(resp.decode()))
             else:
-                clog.info("cmd error ret:{}".format(ret))
                 self.reply_cmd('09',"{}".format("at error"))
         
-        elif cmd == "10" or cmd == "12" or cmd == "14": #获取固件版本号或者获取BT保存的SIM卡的ICCID BLE那边是否开启电信入库功能
-            if 1: #CHINA_TELECOM_DM_FUN_ENABLE == 1 :
+        elif cmd == "10" or cmd == "12" or cmd == "14":
+            if 1:
                 if eventMesh.publish("get_dmp_change_mode") == 1:
                     self.telecom_recv_cmd(cmd,parm)
             else:
                 pass
 
-            if 1:#CHINA_MOBILE_DM_FUN_ENABLE == 1:
+            if 1:
                 if eventMesh.publish("get_dmp_change_mode") > 1:
                     self.china_mobile_recv_cmd(cmd,parm)
             else:
@@ -378,24 +231,22 @@ class Cat1Service:
             pass
         elif cmd == "13":
             on = int(parm)
-            clog.info("set_dmp_change_mode on:{}".format(on))
             eventMesh.publish("set_dmp_change_mode",on)
-
         elif cmd == "16":
-            if 1: #CHINA_MOBILE_DM_FUN_ENABLE == 1:
+            if 1:
                 if eventMesh.publish("get_dmp_change_mode") > 1:
                     self.china_mobile_recv_cmd(cmd,parm)
             else:
                 pass
-        elif cmd == "17": #用于CAT1恢复出厂需要清空数据的标识通用
+        elif cmd == "17":
             eventMesh.publish("set_factory_status",int(parm))
         elif cmd == "18":
             eventMesh.publish("set_dmp_cm_address",str(parm))
-        elif cmd == "19": #DTMF功能
-            voiceCall.startDtmf(str(parm),100)  #100ms 持续时间 100-1000
+        elif cmd == "19":
+            voiceCall.startDtmf(str(parm),100)
         elif cmd == "1A":
             eventMesh.publish("set_volte_switch",int(parm))
-        elif cmd == "AC":#
+        elif cmd == "AC":
             if self.ack_sem==1:
                 self.ack_sem=0
 
@@ -403,33 +254,24 @@ class Cat1Service:
         if cmd == "10":
             self.software_version = str(parm)
             eventMesh.publish("set_dev_version",self.software_version)
-            clog.info("software_version:{},{}".format(self.software_version,parm))
         elif cmd == "12":
             pass
         elif cmd == "14":#
-            pass
-        
-                
+            pass    
         pass
 
-    def set_volte_switch(self,event,msg): #设置VOLTE开关
+    def set_volte_switch(self,event,msg):
         self.volte_switch = int(msg)
         
-
-    def get_volte_switch(self,event,msg): #获取VOLTE开关
-
+    def get_volte_switch(self,event,msg):
         return self.volte_switch
-        
 
-    def china_mobile_recv_cmd(self,cmd,parm): #移动入库相关指令
+    def china_mobile_recv_cmd(self,cmd,parm):
         if cmd == "10":
             self.software_version = str(parm)
             eventMesh.publish("set_dev_version",self.software_version)
-            clog.info("software_version:{},{}".format(self.software_version,parm))
-        elif cmd == "16": #获取BLE mac地址
-            eventMesh.publish("set_dev_mac",str(parm))
-            clog.info("parm:{}\r\n".format(parm))
-                
+        elif cmd == "16":
+            eventMesh.publish("set_dev_mac",str(parm))        
         pass
     def get_factory_status(self,event,msg):
         return self.factory_status
@@ -454,43 +296,34 @@ class Cat1Service:
     def delete_sms_cb(self,*argc):
         eventMesh.publish_async("remove_all_sms_cb","",1*1024)
     def remove_all_sms_cb(self, event, msg):
-        clog.info("remove_all_sms_cb\r\n")
-        msg_nums = sms.getMsgNums() #短信数量
+        msg_nums = sms.getMsgNums()
         if msg_nums == -1:
             msg_nums = 0
         sms_data = sms.getSaveLoc()
-        clog.info("{}\r\n".format(sms_data))
         if sms_data == -1:
             return
-        sms_max = sms_data[0][2] #最大存储短信数量
+        sms_max = sms_data[0][2] 
         if sms_max >= msg_nums and sms_max > 0:
-            sms.deleteMsg(1,4) #删除所有的sms信息
+            sms.deleteMsg(1,4)
 
     def send_singal_data_toBle(self,event,msg):
-        msg_nums = sms.getMsgNums() #短信数量
+        msg_nums = sms.getMsgNums()
         if msg_nums == -1:
             msg_nums = 0
         sms_data = sms.getSaveLoc()
         if sms_data == -1:
             return
-        sms_max = sms_data[0][2] #最大存储短信数量
-        clog.info("recv:{}".format(int(msg)))
+        sms_max = sms_data[0][2]
         message=self.sms_get_message_info(int(msg))
-        if message == -1: #说明没有这条短信
+        if message == -1:
             return
         message_pdu = sms.decodePdu(message[5],20)
-        
-        if message_pdu != -1: #解码出来的内容
-
-            message_ref = message[0] #编码
-            message_total_num = message[1] #总共条数
-            message_seq = message[2] #当前第几条
-            data = message[5] #内容
-            data_len = len(data) #内容长度
-            # ref        :短信参考标识,同一个标识表明为同一条短信 
-            # total_num  :此条长短信总条数 大于1属于长短信
-            # seq        :此条短信在长短信中的序号
-            # print("message:{} {}\r\n".format(message,message_pdu))
+        if message_pdu != -1:
+            message_ref = message[0]
+            message_total_num = message[1]
+            message_seq = message[2]
+            data = message[5]
+            data_len = len(data)
             msg_total = "ref:"+str(message_ref)+"@total_num:"+str(message_total_num)+"@seq:"+str(message_seq)+"@data:"+str(message[5])
             self.reply_cmd('15',msg_total)
         
@@ -511,25 +344,7 @@ class Cat1Service:
             data_str3=data_str3+data_str1[i]
         return data_str3
     def sms_get_message_info(self,index):
-        """
-        :param index    :短信索引值
-        :tyoe  index    :整形
-        
-        :return         :元组类型
-        元组内容:
-        (message_ref,message_total_num,message_seq,sub_message_data,pdu_tye,sub_message_len)
-        
-        :message_ref        :短信参考标识,同一个标识表明为同一条短信
-        :message_total_num  :此条长短信总条数
-        :message_seq        :此条短信在长短信中的序号
-        :sub_message_data   :词条短信的内容
-        :pdu_tye            :PDU类型,bit 6标记是否包含用户报文头,长短信需要
-        :sub_message_len    :此条短信内容长度
-        
-        """
-
         message0=sms.searchPduMsg(index)  
-        #print("sms_get_message_info:message0:{}".format(message0))
         if message0 == -1:
             return -1
         
@@ -539,14 +354,7 @@ class Cat1Service:
         data_len = data_len+1*2
         
         sca      = message0[data_len:data_len+sca_num*2]
-        # 电话号码高低位需要转换
         sca = self.sms_deal_phone_number(sca)
-
-        # if sca_num % 2 == 1:
-        #      print("Get SCA phone {}".format(sca[:-1]))
-        # else:
-        #      print("Get SCA phone {}".format(sca))
-
         data_len = data_len+sca_num*2
 
         pdu_tye   = int(message0[data_len:data_len+1*2],16)
@@ -563,14 +371,7 @@ class Cat1Service:
              oa_num_t   = int((oa_num )/2)
 
         oa       = message0[data_len:data_len+oa_num_t*2]
-        # 电话号码高低位需要转换
         oa       = self.sms_deal_phone_number(oa)
-
-        # if oa_num % 2 == 1:
-        #      print("Get OA phone {}".format(oa[:-1]))
-        # else:
-        #      print("get OA phone {}".format(oa))
-
         data_len = data_len+oa_num_t*2
         pid      = message0[data_len:data_len+1*2]
         
@@ -583,30 +384,25 @@ class Cat1Service:
         data_len = data_len+1*2
         sub_message_head = message0[data_len:data_len+6*2]
         data_len = data_len+6*2
-
-        # 或短信用户数据
         sub_message_data = message0[data_len:data_len+sub_message_len*2]
 
-        #长短信
         if ((pdu_tye & 0x40 ) >> 6) == 1:
-            #长短信,处理长短信用户报文头
             message_ref = int(sub_message_head[6:8],16)
             message_total_num = int(sub_message_head[8:10],16)
             message_seq = int(sub_message_head[10:12],16)
             return [message_ref,message_total_num,message_seq,pdu_tye,sub_message_len,message0]
         else:
-             # 短短信
             return [0,1,1,pdu_tye,sub_message_len,message0]
 
 
 
     def send_sms_max_to_Ble(self,event,msg):
-        msg_nums = sms.getMsgNums()#短信数量
+        msg_nums = sms.getMsgNums()
         if msg_nums == -1:
             msg_nums = 0
         sms_data = sms.getSaveLoc()
         if sms_data != -1:
-            sms_max = sms_data[0][2]#最大存储短信数量
+            sms_max = sms_data[0][2]
             self.reply_cmd('15',"@sms_max:"+str(sms_max)+"@current_num:"+str(msg_nums))
         pass
     
@@ -615,11 +411,9 @@ class Cat1Service:
         SMS_lis={}
         SMS_lis_count = 0
         sms_data = sms.getSaveLoc()
-        clog.info(sms_data)
         if sms_data == -1:
             return
-        sms_max = sms_data[0][2]#最大存储短信数量
-        clog.info(sms_max)
+        sms_max = sms_data[0][2]
         self.msg_nums = sms.getMsgNums() 
         if self.msg_nums_old != self.msg_nums:
             self.send_data = []
@@ -635,11 +429,11 @@ class Cat1Service:
                     break
                 data = message[5]
                 sms_data = []
-                code = message[0]#编码
-                num = message[1]#总共条数
-                curren_num = message[2]#当前第几条
+                code = message[0]
+                num = message[1]
+                curren_num = message[2]
                 data_len = message[4]
-                sms_data.append(code)#编码 编码相同是同一条短信的内容
+                sms_data.append(code)
                 sms_data.append(num)
                 sms_data.append(curren_num)
                 sms_data.append(data)
@@ -648,39 +442,28 @@ class Cat1Service:
         count = len(self.send_data)
         for i in range(count):
             text = self.send_data[i]
-            clog.info("text:{} {} {}\r\n".format(text[0],text[1],text[2]))
-
             msg_total = "@code:"+str(text[0])+"@totalcodenum:"+str(text[1])+"@currcodeid:"+str(text[2])+"@data:"+str(text[3])
             self.reply_cmd('17',msg_total)
 
-    # 来电提醒
     def notifyIncomingcall(self, incomming_numb):
         self.clear_remain()
         __head = '0C'
         __message = str(incomming_numb)
         self.__Socket_UDP(__head, __message)
-        # if self.__err == 1 or self.__value[2] != 'OK':
-        #     return -1
         return 0
 
-    # 电话接听消息
     def notifyConnecteCall(self, phone_numb):
         self.clear_remain()
         __head = '0A'
         __message = str(phone_numb)       
         self.__Socket_UDP(__head, __message)
-        # if self.__err == 1 or self.__value[2] != 'OK':
-        #     return -1
         return 0
 
-    # 电话拒接消息
     def notifyDisconnectCall(self, phone_numb):
         self.clear_remain()
         __head = '0B'
         __message = str(phone_numb)            
         self.__Socket_UDP(__head, __message)
-        # if self.__err == 1 or self.__value[2] != 'OK':
-        #     return -1
         return 0
     
     def wait_network_ready(self):
@@ -690,22 +473,18 @@ class Cat1Service:
         stage, state = checkNet.waitNetworkReady(30)
         pm.wakelock_unlock(lpm_fd)
         if stage == 3 and state == 1:
-            clog.info('Network connection successful.')
             self.set_network_config()
             self.__net_connected = 1
             eventMesh.publish("set_network_state",self.__net_connected)
             self.__waiting_netstat = 0
             return 0
         else:
-            clog.info('Network connection failed, stage={}, state={}'.format(stage, state))
             self.reset_network_config()
             self.__net_connected = 0
             eventMesh.publish("set_network_state",self.__net_connected)
-
             self.__waiting_netstat = 0
             return -1
 
-    # 查询网卡状态
     def timesync(self,_timesync):
         self.clear_remain()
         message = str(_timesync)
@@ -720,100 +499,72 @@ class Cat1Service:
 
     def reply_cmd(self,cmd,_timesync):
         try :
-            clog.info('reply_cmd 1')
             self.clear_remain()
             message = str(_timesync)
-            clog.info('reply_cmd 2')
             self.__Socket_UDP_noreply(cmd, message)
         except:
             clog.info('reply_cmd')
         return 0
     
     def clear_remain(self):
-        # if self.__queue.empty() == False:
-        #     self.__queue.get()
         self.__err = 0
-        # self.__value = None
-    #添加路由信息
     def router_add(self, ip='192.168.4.1', mask='255.255.255.0'):
         self.ip = ip
         self.mask = mask
-        
         return slip.router_add(self.ip, self.mask)
-
-    # 获取slip的网络配置
+    
     def ipconfig(self):
         return slip.ipconfig()
 
-       # 设置dns服务器
     def set_dns(self, pri_dns='8.8.8.8', sec_dns='114.114.114.114'):
         self.pri_dns = pri_dns
         self.sec_dns = sec_dns
         return slip.set_dns(self.pri_dns,self.sec_dns)
     
-       # 设置默认网卡
     def set_default_NIC(self, ip_str):
         self.ip_str = ip_str
         return slip.set_default_netif(self.ip_str)
     
     def reset_network_config(self):
         if (self.__net_connected == 0):
-            clog.info("skip reset_network_config")
             return 0
         Info = dataCall.getInfo(1,0)
-        clog.info("Info{}".format(Info))
-        default_NIC_ip = Info[2][2]    # 假设默认网卡ip地址为10.10.1.1,请根据实际情况更改
-        segment_ip = '172.16.4.0'      # 假设ap模式网段范围是[192.168.4.0 ~ 192.168.4.255],请根据实际情况更改
-        mask = '255.255.255.0'          # 假设子网掩码为255.255.255.0,请根据实际情况更改
-        # 配置默认网卡,通过默认网卡进行网络转发
+        default_NIC_ip = Info[2][2]    
+        segment_ip = '172.16.4.0'     
+        mask = '255.255.255.0'        
         cat1service.set_default_NIC(default_NIC_ip)
-        clog.info("default_NIC_ip {0} segment_ip {1}".format(default_NIC_ip,segment_ip))
-        #添加路由规则,只有该网段IP才进行转发
         cat1service.router_add(segment_ip, mask)
 
-        pri_dns = '8.8.8.8'             # 假设DNS首选地址为8.8.8.8,请根据实际情况更改
-        sec_dns = '114.114.114.114'     # 假设DNS备选地址为114.114.114.114,请根据实际情况更改
-        # 配置网卡DNS服务器
+        pri_dns = '8.8.8.8'          
+        sec_dns = '114.114.114.114'     
         cat1service.set_dns(pri_dns, sec_dns)
-        # 网卡IP信息查询
         cat1service.ipconfig()
 
     def set_network_config(self):
-        
-
         if (self.__net_connected == 1) :
-            clog.info("skip set_network_config")
             return 0
         Info = dataCall.getInfo(1,0)
-        clog.info("Info{}".format(Info))
-        default_NIC_ip = Info[2][2]    # 假设默认网卡ip地址为10.10.1.1,请根据实际情况更改
-        segment_ip = '172.16.1.0'      # 假设ap模式网段范围是[192.168.4.0 ~ 192.168.4.255],请根据实际情况更改
-        mask = '255.255.255.0'          # 假设子网掩码为255.255.255.0,请根据实际情况更改
-        # 配置默认网卡,通过默认网卡进行网络转发
+        default_NIC_ip = Info[2][2]  
+        segment_ip = '172.16.1.0'      
+        mask = '255.255.255.0'       
         cat1service.set_default_NIC(default_NIC_ip)
-        clog.info("default_NIC_ip {0} segment_ip {1}".format(default_NIC_ip,segment_ip))
-        #添加路由规则,只有该网段IP才进行转发
         cat1service.router_add(segment_ip, mask)
 
-        pri_dns = '8.8.8.8'             # 假设DNS首选地址为8.8.8.8,请根据实际情况更改
-        sec_dns = '114.114.114.114'     # 假设DNS备选地址为114.114.114.114,请根据实际情况更改
-        # 配置网卡DNS服务器
+        pri_dns = '8.8.8.8'             
+        sec_dns = '114.114.114.114'  
         cat1service.set_dns(pri_dns, sec_dns)
-        # 网卡IP信息查询
         cat1service.ipconfig()
-        if eventMesh.publish("get_dmp_change_mode") == 0:#入库功能关闭
+        if eventMesh.publish("get_dmp_change_mode") == 0:
             return
-        if 1: #CHINA_TELECOM_DM_FUN_ENABLE == 1:#电信入库功能 不使用设置 0 防止两边不同步修改
+        if 1:
             if eventMesh.publish("get_dmp_change_mode") == 1:
                 eventMesh.publish("set_network_state",1)
-                # telecomDmpCb.telecom_dmp_power_on_init()
-        if 1: #CHINA_MOBILE_DM_FUN_ENABLE == 1:
+        if 1: 
             if eventMesh.publish("get_dmp_change_mode") > 1:
                 eventMesh.publish("set_network_state",1)
                 if self.china_mobile_init == 1:
                     return
                 self.china_mobile_init = 1
-                # chinamobileCb.china_mobile_init()
 
     def cat1_reply_iccid_to_ble(self,event,msg):
         ICCID_DATA = str("ICCID:")+str(msg)
@@ -823,256 +574,109 @@ class Cat1Service:
        
         self.reply_cmd('14',"REGIST_TIME:{}".format(msg))
         pass
-    # 释放slip网卡
+
     def stop(self):
         slip.destroy()
         return 0
 
-
-    # 封装tlv数据包
     def __pack_tlv_format(self, head, content):
-        # self.head = head
-        # self.content = content
         if len(content) == 0 or len(content) > 9999 or len(head) != 2:
-            clog.error('illegal pack tlv content')
             return -1
         len_str ='%04d' % len(content)
         tlv_pack = CAT1_SERVICE_HEAD+head+len_str+content
         return tlv_pack
-    # 解码tlv数据包
+    
     def __unpack_tlv_format(self, msg):
-        clog.info('__unpack_tlv_format  {}\r\n'.format(msg))
-        self.msg = str(msg)[2:]#这是去除head FE
+        self.msg = str(msg)[2:]
         tag = self.msg[0:2]
         length = self.msg[2:6]
         value = self.msg[6:]
         len_str ='%04d' % len(value)
         if len(value) == 0 or len(value) > 9999 or len(tag) != 2 or len_str != self.msg[2:6]:
-            clog.error('__unpack_tlv_format err')
             return -1
-        clog.info('__unpack_tlv_format: {} {} {}\r\n'.format(tag,length,value))
         unpack = (tag,length,value)
         return unpack
-    # socket通信(UDP)模块
     def __Socket_UDP(self, head, content):
-         # 0 则  __Socket_UDP_write
         self.send_data_q.put([head,content])
     def Socket_SEND_Thread(self):
         while True:
             try:
-                clog.info("send====")
                 data=self.send_data_q.get()
                 self.ack_sem=1
-                # # if data[2]:
-                #     self.__Socket_UDP_noreply_write( data[0], data[1])
-                # else :
                 self.__Socket_UDP_write( data[0], data[1])
-                
-                
-                clog.info("Socket_SEND_Thread data:{} {}".format(data[0],data[1]))
                 count=20
                 
                 while count & self.ack_sem :
                     utime.sleep_ms(1)
                     count=count-1
-                    # if data[2]:
-                    #     self.__Socket_UDP_noreply_write( data[0], data[1])
-                    # else :
                     self.__Socket_UDP_write( data[0], data[1])
-                        
-                    clog.info("Socket_SEND_Thread  while data:{} {}".format(data[0],data[1]))
-                
-                if data:
-                        clog.info("data ok!!")
-                else:
-                        clog.error("data error!!")
             except Exception :
                 clog.error("sned Socket >>>")
    
     def __Socket_UDP_write(self, head, content):
         try:
-            ##self.head = head
-            # self.content = content
             gpioWakeBT.write(1)
             utime.sleep_ms(2)
             gpioWakeBT.write(0)
             utime.sleep_ms(20)
-            # 消息处理
             msg = self.__pack_tlv_format(head, content)
-
-            # 向服务端发送消息
             server_addr = ('172.16.1.5',1000)
-            clog.info("__Socket_UDP send msg {}".format(msg))
             self.__err = 0
             self.__sock.sendto(msg,server_addr)
-            clog.info("__Socket_UDP send 2")
             self.__wait_resp = 1
-            # data = self.__queue.get()
             self.__wait_resp = 0
-            # return data
             return 1
         except Exception as error:
             clog.error(error)
         return 0
    
     def __Socket_UDP_noreply(self, head, content):
-         # 1 则  __Socket_UDP_noreply_write
          self.send_data_q.put([head,content])
-         
-    def __Socket_UDP_noreply_write(self, head, content):    
-        # self.head = head
-        # self.content = content
-        gpioWakeBT.write(1)
-        utime.sleep_ms(2)
-        gpioWakeBT.write(0)
-        utime.sleep_ms(20)
-        # 消息处理
-        msg = self.__pack_tlv_format(head, content)
-
-        # 向服务端发送消息
-        server_addr = ('172.16.1.5',1000)
-        
-        clog.info("__Socket_UDP_noreply send msg {}".format(msg))
-        self.__err = 0
-        data_size = self.__sock.sendto(msg,server_addr)
-        clog.info("self.__sock data_size {}".format(data_size))
-        self.__wait_resp = 0
-        return 0
 
-    # socket通信(UDP)模块
     def __Socket_Thread(self):
         while True:
             try:
-                clog.info("recv====")
                 data=self.__sock.recv(1024)
-                clog.info("data:{}".format(data))
                 if data:
                     value = self.__unpack_tlv_format(data.decode())
                     if value != -1:
-                        clog.info('mode: {0}, recv {1} bytes, Data: {2}'.format (value[0],len(data), value[2]))
                         if value[1] == 'FF':
                             self.btmcu_cmd_handler(value[0],value[2])
                         else:
-                            # self.__value = value
-                            # self.__queue.put('1')
                             self.btmcu_cmd_handler(value[0],value[2])
-                        clog.info("End else Thread")
                     else:
                         clog.error("data error!!")
             except Exception as recverr:
-                clog.error("recverr:{}\r\n".format(recverr))
                 if "110" in str(recverr):
                     self.__err = 1
-                    # if self.__wait_resp == 1:
-                    #     self.__queue.put('0')
                 else:
                     utime.sleep(1)
-                    self.__sock = self.__socket_reinit()
-                
-            
-
-        clog.info("End Socket Thread")
-
-
-
-
-# UDP_CMD_GET_CAT1VER = '0',  // 获取 Cat1 版本号
-# UDP_CMD_DIAL_NUMB = '1',               //  拨打电话
-# UDP_CMD_HUNGUP = '2',                 //  挂断电话
-# UDP_CMD_ANSWER = '3',            //  接听电话
-# UDP_CMD_CAT1_OTA_UPDATE = '4',       // 触发Cat1 OTA升级,mcu提供url
-# UDP_CMD_SEND_SMS = '5',               // 发送SMS短信,mcu提供电话号及短信内容
-# UDP_CMD_GET_TIME = '6',               // 获取Cat1 时间 ,YYYYMMDD HHmmss zone
-# UDP_CMD_GET_NETWORKSTAT = '7',               //获取Cat1 信号信息,VOLTE信息,信号强度,SIM卡状态
-# 下文进行系统配置
-clog.info("Cat1Service start")
-
+                    self.__sock = self.__socket_reinit()         
 cat1service = Cat1Service()
 
-#send_data_q = Queue(100)
-
-#voice call callback function
 def voice_callback(args):
     if args[0] == 10:
-        clog.info('voicecall incoming call, PhoneNO: ', args[6])
         if eventMesh.publish("get_volte_switch") == 0: #关闭VOLTE功能
-            clog.info('voicecall auto end:')
             voiceCall.callEnd()
         else:     
-            # gpioWakeBT.write(1)
             cat1service.notifyIncomingcall(args[6])
     elif args[0] == 11:
         if eventMesh.publish("get_volte_switch") == 1: #开启VOLTE功能
-            clog.info('voicecall connected, PhoneNO: \n'.format(args[6]))
             cat1service.notifyConnecteCall(args[6])
     elif args[0] == 12:
-        clog.info('voicecall disconnect')
         if eventMesh.publish("get_volte_switch") == 1: #开启VOLTE功能
-            clog.info('voicecall disconnected, PhoneNO: \n'.format(args[6]))
             cat1service.notifyDisconnectCall(args[6])
-    elif args[0] == 13:
-        clog.info('voicecall is waiting, PhoneNO: \n'.format(args[6]))
-    elif args[0] == 14:
-        clog.info('voicecall dialing, PhoneNO: \n'.format(args[6]))
-    elif args[0] == 15:
-        clog.info('voicecall alerting, PhoneNO: \n'.format(args[6]))
-    elif args[0] == 16:
-        clog.info('voicecall holding, PhoneNO: \n'.format(args[6]))
-    else:
-        clog.info('voice_callback , args[0]: \n'.format(args[6]))
-
-#电话消息反馈
 voiceCall.setCallback(voice_callback)
-
-
 def checknet_cb(arg):
-    clog.info("start checktime!!")
-    # if 1: #CHINA_TELECOM_DM_FUN_ENABLE == 1:#这是手表每30s检查一次
-        # if eventMesh.publish("get_dmp_change_mode") == 1:
-            # telecomDmpCb.telecom_dmp_power_on_count()
-
     _thread.start_new_thread(cat1service.wait_network_ready, ())
-    # time=utime.localtime()
-    # zone=utime.getTimeZone()
-    #(2024, 3, 2, 18, 31, 32, 5, 62),8
-    # cat1service.timesync("{0},{1}".format(time,zone))
-# _thread.start_new_thread(cat1service.wait_network_ready, ())
 timer = osTimer()
-# checknet_cb(())
 timer.start(30000,1,checknet_cb)  
 
 def bootupmsg_cb(arg):
     cat1service.bootup_msg_to_bt()
     
-
 delaybootupmsg_timer = osTimer()
 delaybootupmsg_timer.start(1000,0,bootupmsg_cb)
 
-# def checkpin_cb(arg):
-#     clog.info("recvDataPin={}".format(recvDataPin.read()))
-
-# timerCheckRevPin = osTimer()
-# timerCheckRevPin.start(1000,1,checkpin_cb)  
-
-
-
-    
-
-
-# while True:
-#     utime.sleep(5)
-
-
-# uping.ping("172.16.1.5")
-   # 获取网卡当前工作状态
-
-# gpioWakeBT.write(1)
-# utime.sleep(1)
-
-# timesync = net.nitzTime()
-# cat1service.timesync(timesync)
-
-
-#url = "http://zzhc.vnet.cn:9998/"
 
 
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1otaudp/is_need_updata.txt b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1otaudp/is_need_updata.txt
deleted file mode 100644 (file)
index e69de29..0000000
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))
@@ -2,46 +2,27 @@ from misc import Power
 import usocket
 import log
 import utime
-import audio
 from machine import UART
 import _thread
 from queue import Queue
 from machine import Pin
 from machine import ExtInt
-import dataCall
-import voiceCall
-import net
-import uping
-import example
 import osTimer
-import sim
-import modem
 import utime
-import checkNet
-import atcmd
-import fota
-import request
 import ql_fs
-import pm
-import sms
 import binascii
 import ujson
 import uos
-import slip
 
 
 log.basicConfig(level=log.INFO)
 clog = log.getLogger("cat1")
 
-
 USR_FILE_PATH = "/usr" #
-BAK_FILE_PATH = "{}/TmpPyFile".format(USR_FILE_PATH) #文件传输的临时文件夹目录路径
+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"
@@ -58,31 +39,25 @@ 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回复升级失败
+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 
 
-CAT1_NEED_UPDATE_OTA = "11" #提示用户强制升级
-
-CAT1_TCP_STOP_OTA = 0 #结束OTA升级
-CAT1_TCP_START_OTA = 1 #ble 开始发送OTA标识 -》   CAT1
-CAT1_TCP_START_SEND_SINGLE_FILE_INFO= 2 #//ble 开始发送单个文件信息 -> CAT1 创建单个文件名
-CAT1_TCP_START_SEND_FILE_DATA= 3 #//BLE开始发送文件数据额 ----》CAT1 接收文件数据写文件
-CAT1_TCP_START_OTA_FAILE = 4 #BLE 发送OTA失败 取消文件传输
-CAT1_TCP_START_OTA_SUCC = 5 #//BLE 发送OTA成功标识
-CAT1_TCP_START_SEND_ALLFILE_FINESH = 6 #/所有PY文件传输完成
-CAT1_TCP_SEND_SINGLE_FINESH = 7 #//单个文件传输完成
-CAT1_TCP_START_ERROR_INFO = 255 #/发送错误信息结束进程
-
-# 创建gpio对象
 gpioWakeBT = Pin(Pin.GPIO21, Pin.OUT, Pin.PULL_DISABLE, 1)
-# 设置输入输出模式
 gpioWakeBT.set_dir(Pin.OUT)
-
-# 设置引脚电平
 gpioWakeBT.write(0)
-FILE_TRANSFER_TIMEOUT=60  #超时时间 60s没有收到BLE的发送数据就结束了
+FILE_TRANSFER_TIMEOUT=60  
 class TcpServiceInit:
-    AP = 0  # SLIP_INNER
-    STA = 1 # SLIP_OUTER
+    AP = 0  
+    STA = 1
 
     def __init__(self, uart=UART.UART4, mode=AP):
         self.__uart = uart
@@ -107,87 +82,39 @@ class TcpServiceInit:
         self.sock = None
         self.bakFlag = "0"
         self.conn= None
-        # slip.destroy()
-        # ret = slip.construct(self.__uart,self.__mode, 0)
-        # if ret != 0:
-        #     clog.info('slip netif construct fail')
-        #     return 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, ())
-        clog.info("ftp_Service :{}\r\n".format(self.__sock_file))
-    # 封装tlv数据包
+
     def __pack_tlv_format(self, head, content):
         head1 = head
         content1 = content
         if len(content1) == 0 or len(content1) > 9999 or len(head1) != 2:
-            clog.info('illegal pack tlv content file')
             return -1
         len_str ='%04d' % len(content1)
         tlv_pack = CAT1_SERVICE_HEAD+head1+len_str+content1
         return tlv_pack
-    # 解码tlv数据包
+
     def __unpack_tlv_format(self, msg):
-        clog.info('__unpack_tlv_format file {}\r\n'.format(msg))
-        msg_tmp = str(msg)[2:]#这是去除head FE
+        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]:
-            clog.info('__unpack_tlv_format err file')
             return -1
-        # clog.info('__unpack_tlv_format: {} {} {}\r\n'.format(tag,length,value))
         unpack = (tag,length,value)
         return unpack
-    def __socket_init(self):
-       
-        # 创建一个socket实例
-        self.sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
-        self.sock.setsockopt(usocket.SOL_SOCKET, usocket.SO_REUSEADDR, 1)
-        return self.sock
 
-    def __socket_file_init(self): #文件传输Socket
-        # self.sock = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM, usocket.TCP_CUSTOMIZE_PORT)
+    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)
-        # 绑定IP
         bind_addr = ('172.16.1.2', 5001) 
         self.sock.bind(bind_addr)
-        # self.sock.settimeout(10)
         self.sock.listen(10)
-        
         return self.sock
     
-    def __socket_file_reinit(self):
-        clog.info("self.__sock_file reinit:{}\r\n".format(self.__sock_file))
-        if self.__sock_file != None:
-            self.sock.close()
-        return self.__socket_file_init()
-    
-    def __Socket_UDP_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
-        # 向服务端发送消息
-        server_addr = ('172.16.1.5',1001) #服务端口也需要更改
-        
-        clog.info("__Socket_TCP_file_noreply send msg {}".format(msg))
-        try:
-            data_size = self.__sock_file.sendto(msg,server_addr)
-            clog.info("self.__sock_file data_size {}".format(data_size))
-        except Exception as e:
-            clog.info("self.__sock_file error {}".format(e))
-        return 0
     def __Socket_TCP_file_noreply(self, head, content):
         head1 = head
         content1 = content
@@ -195,74 +122,38 @@ class TcpServiceInit:
         utime.sleep_ms(2)
         gpioWakeBT.write(0)
         utime.sleep_ms(20)
-        # 消息处理
         msg = self.__pack_tlv_format(head1,content1)
-        if msg == -1: #无效数据
+        if msg == -1: 
             return 0
-        # 向服务端发送消息
-        # server_addr = ('172.16.1.5',1001) #服务端口也需要更改
-        
-        clog.info("__Socket_TCP_file_noreply send msg {}".format(msg))
         try:
-            data_size = self.conn.send(msg)
-            clog.info("self.__sock_file data_size {}".format(data_size))
+            self.conn.send(msg)
         except Exception as e:
             clog.info("self.__sock_file error {}".format(e))
-            
         return 0
-    # py文件传输
-    # //py文件传输
-    # // {"Code":1} 开始OTA
-    # // {"Code":2,"fileName":"cat1Service.py","fileSize":123435} fileCode: 文件ID fileName:文件名称 fileSize:文件大小
-    # // {"Code":3,"head+datalen+data+CRC":"数据"} // Code: 2开始发送文件数据
-    # // {"Code":4} BLE 主动发送OTA失败
-    # // {"Code":5} BLE 主动发送OTA成功
-    # // {"Code":6} BLE 所有PY文件传输完成
-    # // {"Code":7} BLE 单个文件传输完成
-    
+
     def _client_conn_proc(self):
-        clog.error('[_client_conn_proc] _client_conn_proc')
-       
         while True:
             if  self.conn==None:
                 utime.sleep_ms(20)
                 continue
             try:
-                    # Receive data sent by the client
-               
                 data = self.conn.recv(1024)
-                clog.info('[server] [client addr: %s] recv data:', data)
                 if not data:
                     clog.info("__Socket_File_Thread data null:\r\n")
                 else:
                     self.src_data(data.decode('uft-8'))
-
-                # Send data back to the client
-                # conn.send(data)
             except:
-                # Exception occurred and connection closed
-                clog.error('[server] disconnected')
                 self.conn.close()
-                # self.__sock_file = self.__socket_file_reinit()
                 break
-        
-        
+            
     def __Socket_File_Thread(self):
-        
-        #  clog.info('[server] accept a client: %s, %s' % (cli_ip_addr, cli_port))
-       
         while True:
             try :
-                clog.info('[serveice] start accept a client' )
                 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 :
-                clog.error('__Socket_File_Thread' )
                 utime.sleep_ms(20)
-        # Create a new thread for each client connection for concurrent processing
-           
-            # clog.info("End __Socket_File_Thread Thread")
     
     def cat1FileTimerCb(self,*argc):
         clog.info("timer test\r\n")
@@ -274,21 +165,19 @@ class TcpServiceInit:
             self.deleteTmpFile()
             self.deleteUsrTmpFile()
             self.__Socket_TCP_file_noreply(CAT1_OTA_TIMEOUT_BLE_NO_REPLAY,"ota error") #结束文件接收不完整的
-            self.Cat1FileTransTimer.stop() #//关闭定时器
+            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()
-        # clog.info("hex_data:{}\r\n".format(hex_data))
         data = hex_data
         crcValue = 0
         j = 0
         i = 0
         json_state = 0
         crcbuf = 0
-        # clog.info("len(data) :{}\r\n".format(len(data)))
         data_len = len(str(data))
         try:
             if data_len % 2 != 0: 
@@ -296,42 +185,29 @@ class TcpServiceInit:
                 return [json_state,crcbuf]
         except Exception as e:
             json_state = 0
-            clog.info("不合法的的十六进制数据!!\r\n")
-
         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("不合法的的十六进制数据!!\r\n")
+                clog.info("crc_cal")
             j+=2
-        
         crcbuf = crcValue%256
         crcbuf = 256-crcbuf
         crcbuf = crcbuf%256
-        
-        # clog.info("crcbuf:{}\r\n".format(crcbuf))
         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)
-
-    #删除usr临时创建的文件夹
+             
     def deleteUsrTmpFile(self):
-        return
-        # tmp_dir = ql_fs.path_exists("/usr/UsrTmpPyFile")
-        # if tmp_dir == True:
-        #     ql_fs.rmdirs("/usr/UsrTmpPyFile")              
+        return       
 
     def src_data(self,data):
-        mk_dir_state = 0
-        clog.info("data!!!!!{}\r\n".format(len(data)))
         if self.updateTimerFlag == 0:
             self.updateTimerFlag = 1
             self.updateTimer.stop()
@@ -342,38 +218,33 @@ class TcpServiceInit:
             json_state = 1
         except Exception as e:
             json_state = 0
-        if json_state == 0: #不是json 字典的格式 {} 就是命令
-            value = self.__unpack_tlv_format(data) #解析数据 FE
+        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): #(self,cmd,parm):
+    def cmd_data(self,cmd,parm):
         if cmd == "01":
             self.bakFlag = str(parm)
-            
         pass
     def file_data(self,msg):
-        # clog.info("msg type msg {} {}\r\n".format(msg,type(data)))
         if "Code" in msg:
-            
             Code = int(msg["Code"])
-            clog.info("Code {} self.Cat1FileState:{}\r\n".format(Code,self.Cat1FileState))
-            if Code == CAT1_TCP_STOP_OTA: #OTA失败
+            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: #BLE 开始OTA cat1创建临时文件夹记录传输的文件数据 文件名
+            elif Code == CAT1_TCP_START_OTA:
                 self.ota_state =0
                 self.ota_bstate =0
                 self.allPyRecvFlag = 0
                 self.fileNameList = []
                 self.fileSizeList = []
-                clog.info("CAT1_TCP_START_OTA {} \r\n".format(CAT1_TCP_START_OTA))
                 self.allPyRecvFlag = 0
                 self.Cat1FileState = 0
                 self.deleteUsrTmpFile()
@@ -384,41 +255,33 @@ class TcpServiceInit:
                     try:
                         self.deleteTmpFile()
                     except Exception as e:
-                        clog.info("移除失败!!!!\r\n")
+                        clog.info("移除失败\r\n")
                 check_dir = ql_fs.path_exists(BAK_FILE_PATH)      
-                if check_dir == False: #文件夹不存在 创建目录文件夹
+                if check_dir == False:
                     try:
                         ql_fs.mkdirs(BAK_FILE_PATH) 
                         mk_dir_state = 1
-                        clog.info("创建临时文件 创建成功!!!!\r\n")
                     except Exception as e:
                         mk_dir_state = 0
-                        clog.info("创建临时文件失败没有内存!!!!\r\n")
-                else: #已经存在目录了
+                else: 
                    mk_dir_state = 1 
-                clog.info("创建成功!!!!{}\r\n".format(mk_dir_state))
                 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 #超时时间10s
+                    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: #包含文件名 文件大小 
-                clog.info("CAT1_TCP_START_SEND_SINGLE_FILE_INFO {} \r\n".format(CAT1_TCP_START_SEND_SINGLE_FILE_INFO))
-                self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT #超时时间60s
-                # {"Code":1,"fileName":"testpy.py","fileSize":1040}
+            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"]
-                # self.fileSizeList.append({"fileName":self.fileNameTmp,"fileSize":int(self.fileSize)})
                 path = "{}/{}".format(BAK_FILE_PATH,self.fileNameTmp)
-                clog.info("self.fileNameTmp {} self.fileSize:{} self.fileNameList:{} self.fileSizeList:{}\r\n".format(self.fileNameTmp,self.fileSize,self.fileNameList,self.fileSizeList))
                 check_touch = ql_fs.path_exists("{}/{}".format(BAK_FILE_PATH,self.fileNameTmp))
                 if check_touch == True:
                     try:
@@ -428,77 +291,55 @@ class TcpServiceInit:
                     try:
                         with open(path,"w+") as fd:
                             fd.write("")
-                        fd.close()  #关闭文件流
+                        fd.close()
                         self.__Socket_TCP_file_noreply(CAT1_CREAT_FILE_SUCC,"1creat file or dir success!")
                     except Exception as e:
-                        clog.info("创建文件失败\r\n")
                         self.__Socket_TCP_file_noreply(CAT1_CREAT_FILE_ERROR,"1creat file or dir err!")
                 else:
                     try:
-                        clog.info("self.fileNameTmp 111111{}\r\n".format(self.fileNameTmp))
                         with open(path,"w+") as fd:
                             fd.write("")
-                        fd.close()  #关闭文件流
+                        fd.close()
                         self.crc_err = 0
-                        clog.info("self.fileNameTmp {}\r\n".format(self.fileNameTmp))
+              
                         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!")
-                        clog.info("创建文件失败\r\n")
+          
 
-            elif Code == CAT1_TCP_START_SEND_FILE_DATA and self.Cat1FileState == 1: #文件数据
-                self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT #超时时间10s
-                clog.info("CAT1_TCP_START_SEND_FILE_DATA {} self.fileNameTmp:{}\r\n".format(CAT1_TCP_START_SEND_FILE_DATA,self.fileNameTmp))
-                # {"Code":2,"data":"89ggjdggsjgdj"}
-                if len(self.fileNameTmp) == 0: #文件名不能为空
+            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
-                clog.info(" (data):{}\r\n".format(len(data)))
                 tmpdata = str(data)
-                head = tmpdata[0:2] #FE 
-                if head != CAT1_FILE_DATA_HEAD or len(tmpdata) <= 8: #必须大于8 FF+012C+DATA+crc(一个字节89)
+                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]) #012c
-                datalen = int("0x" + datalen, 16) #转换成十进制数
-                data_buf = tmpdata[6:] # 数据
-                data_buf = data_buf[:-2]  #最后两个往前的数据
-                crc = tmpdata[-2:] # 最后两个字符是 crc 一个字节
-                clog.info("crc ===!111111:{} {} len:{} {}\r\n".format(crc,type(crc),datalen,len(str(data_buf))))
-                if len(str(data_buf)) == 0 or len(str(data_buf)) != datalen: #数据为空
+                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
-                # crclist=self.crc_cal(data_buf)
-                # newcrc = crclist[1]
-                # news = crclist[0]
-                # if len(str(crc)) == 0:
-                #     self.__Socket_TCP_file_noreply(CAT1_CRC_ERROR,"crc error!")
-                #     return
-                # decnumCrcCal = int("0x" + str(newcrc), 16) #转换成十进制数
-                # decnumCrc = int("0x" + str(crc), 16) #转换成十进制数
-                # clog.info("crc:{} newcrc:{}\r\n".format(crc,newcrc,decnumCrc,decnumCrcCal))
-                # if decnumCrcCal != decnumCrc and news == 0:
-                #     clog.info("newcrc is not === crc crc校验出错不一致\r\n")
-                #     self.__Socket_TCP_file_noreply(CAT1_CRC_ERROR,"crc error!")
-                #     return
                 data = str(data_buf)
                 path = "{}/{}".format(BAK_FILE_PATH,str(self.fileNameTmp))
-                clog.info("py path:{} self.fileNameTmp:{}\r\n".format(path,self.fileNameTmp))
                 try:
                     with open(path,"a") as fd:
                         fd.write(data)
-                    fd.close() #关闭文件流
+                    fd.close()
                     self.__Socket_TCP_file_noreply(CAT1_WRITE_FILE_SUCC,"write file success!")
-                    clog.info("写文件成功!!!!!\r\n")
+                
                 except Exception as e:
                     self.__Socket_TCP_file_noreply(CAT1_WRITE_FILE_ERROR,"write file error!")
-                    clog.info("写文件失败没有内存!!!!!{}:\r\n".format(e))
-
-            elif Code == CAT1_TCP_START_OTA_FAILE and self.Cat1FileState == 1: #取消文件传输 OTA失败 移除目录文件
-                clog.info("CAT1_TCP_START_OTA_FAILE {} \r\n".format(CAT1_TCP_START_OTA_FAILE))
+                 
+            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
@@ -506,139 +347,111 @@ class TcpServiceInit:
                 self.deleteTmpFile()
                 self.deleteUsrTmpFile()
                 pass
-            elif Code == CAT1_TCP_START_SEND_ALLFILE_FINESH and self.Cat1FileState == 1: #全部文件传输完成
+            elif Code == CAT1_TCP_START_SEND_ALLFILE_FINESH and self.Cat1FileState == 1:
                 if self.bakFlag == "0":
-                    clog.info("self.bakFlag  auto:\r\n")
                     if self.allPyRecvFlag == 1:
-                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") #传输文件完之后最后提示是否成功失败
+                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!")
                     else:
-                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") #传输文件完之后最后提示是否成功失败
+                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!")
                         self.deleteTmpFile()
                         self.Cat1FileState = 0
                         self.Cat1FileTransTimer.stop()
-                        clog.info("重启 auto:\r\n")
                         self.Cat1OtaTimeOut.stop()
                         self.Cat1TimeCount = 0
                         self.ota_state = 1
-                        self.allPyRecvFlag = 1 #所有的py文件接收完成
+                        self.allPyRecvFlag = 1
                         self.Cat1OtaTimeOut.start(5000,0,self.otaTimeOut)
                     return
-                clog.info("BAK_FILE_FUN!!!!!!\r\n")
                 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)
-                    clog.info("filenamesList:{} self.fileNameList:{} {}{}\r\n".format(filenamesList,self.fileNameList,type(filenamesList),type(self.fileNameList)))
-                    if list1 != list2: #传输的文件列表和BLE不一致说明有文件没有传输完成不再重启CAT1
+                    if list1 != list2:
                         self.deleteTmpFile()
                         self.Cat1FileState = 0
-                        clog.info("self.Cat1PyFile444!!!:{}\r\n".format(self.Cat1FileState))
                         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: #将传输的文件 copy到usr目录下
-                            clog.info("filenamesList for :{}\r\n".format(filenamesList))
-                            dst_path = "{}/{}".format(USR_FILE_PATH,tmp) #目标目录文件
-                            # if ql_fs.path_exists(dst_path) == False:
-                            #     try:
-                            #         copy_flag = 1
-                            #         ql_fs.touch(dst_path,"")
-                            #     except Exception as e:
-                            #         clog.info("创建文件失败!!!!!\r\n")
-
-                            # if copy_flag == 0:
-                            #     clog.info("创建文件失败!!!!!copy_flag\r\n")
-                            #     copy_state = 0
-                            #     break
-                            src_path = "{}/{}".format(BAK_FILE_PATH,tmp) #源目录文件
+                        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) 
-                                clog.info("copy ret!!!!!:{}\r\n".format(ret))
+                        
                                 if ret == True:
                                     dstfile_size = ql_fs.path_getsize(dst_path)
                                     srcfile_size = ql_fs.path_getsize(src_path)
-
-                                    clog.info("copy dstfile_size:{} srcfile_size:{}\r\n".format(dstfile_size,srcfile_size))
                                     if dstfile_size != srcfile_size:
                                         compare_flag = 0
                                         break
-                                    else: #拷贝完之后比较大小一致移除文件
+                                    else:
                                         try:
                                             compare_flag = 1
                                             uos.remove(src_path)
                                             filenamesList = uos.listdir(BAK_FILE_PATH)
-                                            clog.info("remove filenamesList :{}\r\n".format(filenamesList))
                                         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 : #比较失败 或者copy失败没有内存了
+                        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") #传输文件完之后最后提示是否成功失败
+                            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.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!")
                         self.deleteTmpFile()
                         self.Cat1FileState = 0
                         self.Cat1FileTransTimer.stop()
-                        clog.info("重启 auto:\r\n")
                         self.Cat1OtaTimeOut.stop()
                         self.Cat1TimeCount = 0
                         self.ota_state = 1
-                        self.allPyRecvFlag = 1 #所有的py文件接收完成
+                        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.__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!") #传输文件完之后最后提示是否成功失败
+                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!")
                         pass
                     else:
                         self.deleteTmpFile()
                         self.Cat1FileState = 0
                         self.Cat1FileTransTimer.stop()
                         self.deleteUsrTmpFile()
-                        clog.info("cat1 ota\r\n")
                         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: #所有的py文件接收完成
-                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!") #传输文件完之后最后提示是否成功失败
+                    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!") #传输文件完之后最后提示是否成功失败
+                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!")
                     return
 
-                
-                if self.allPyRecvFlag == 0: #没有接收完成就发送OTA成功的标识
+                if self.allPyRecvFlag == 0:
                     self.deleteTmpFile()
                     self.deleteUsrTmpFile()
                     self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!")
@@ -648,11 +461,9 @@ class TcpServiceInit:
                     filenamesList = uos.listdir(BAK_FILE_PATH)
                     list1 = sorted(filenamesList)
                     list2 = sorted(self.fileNameList)
-                    clog.info("filenamesList:{} self.fileNameList:{} {}{}\r\n".format(filenamesList,self.fileNameList,type(filenamesList),type(self.fileNameList)))
-                    if list1 != list2: #传输的文件列表和BLE不一致说明有文件没有传输完成不再重启CAT1
+                    if list1 != list2:
                         self.deleteTmpFile()
                         self.Cat1FileState = 0
-                        clog.info("self.Cat1PyFile444!!!:{}\r\n".format(self.Cat1FileState))
                         self.Cat1FileTransTimer.stop()
                         self.deleteUsrTmpFile()
                         self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!")
@@ -661,170 +472,130 @@ class TcpServiceInit:
                     try:
                         copy_state = 1
                         compare_flag = 1
-                        copy_flag = 0
                         filenamesList = uos.listdir(BAK_FILE_PATH)
-                        for tmp in filenamesList: #将传输的文件 copy到usr目录下
-                            clog.info("filenamesList for :{}\r\n".format(filenamesList))
-                            dst_path = "{}/{}".format(USR_FILE_PATH,tmp) #目标目录文件
-                            # if ql_fs.path_exists(dst_path) == False: #usr下面没有就创建文件写空的数据
-                            #     try:
-                            #         ret = ql_fs.touch(dst_path,"")
-                            #         clog.info("创建文件成功!!!!!:ret {}\r\n".format(ret))
-                            #         if ret == 0:
-                            #             copy_flag = 1
-                            #     except Exception as e:
-                            #         clog.info("创建文件失败!!!!!\r\n")
-
-                            # if copy_flag == 0:
-                            #     clog.info("创建文件失败!!!!!copy_flag\r\n")
-                            #     copy_state = 0
-                            #     break
-                            src_path = "{}/{}".format(BAK_FILE_PATH,tmp) #源目录文件
+                        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) 
-                                clog.info("copy ret!!!!!:{}\r\n".format(ret))
                                 if ret == True:
                                     dstfile_size = ql_fs.path_getsize(dst_path)
                                     srcfile_size = ql_fs.path_getsize(src_path)
-
-                                    clog.info("copy dstfile_size:{} srcfile_size:{}\r\n".format(dstfile_size,srcfile_size))
                                     if dstfile_size != srcfile_size:
                                         compare_flag = 0
                                         break
-                                    else: #拷贝完之后比较大小一致移除文件
+                                    else:
                                         try:
                                             compare_flag = 1
                                             uos.remove(src_path)
                                             filenamesList = uos.listdir(BAK_FILE_PATH)
-                                            clog.info("remove filenamesList :{}\r\n".format(filenamesList))
                                         except Exception as e:
-                                            clog.info("copy file \r\n")
+                                            clog.info("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 : #比较失败 或者copy失败没有内存了
+                                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") #传输文件完之后最后提示是否成功失败
+                            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.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!")
                         self.deleteTmpFile()
                         self.Cat1FileState = 0
                         self.Cat1FileTransTimer.stop()
-                        clog.info("重启 auto:\r\n")
                         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.__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!") #传输文件完之后最后提示是否成功失败
+                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"ota success!")
                         pass
                     else:
                         self.deleteTmpFile()
                         self.Cat1FileState = 0
                         self.Cat1FileTransTimer.stop()
                         self.deleteUsrTmpFile()
-                        clog.info("cat1 ota\r\n")
                         self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_FALIE,"ota end faile!")
 
-            elif Code == CAT1_TCP_SEND_SINGLE_FINESH and self.Cat1FileState == 1: #单个文件传输完成
-                clog.info("CAT1_TCP_SEND_SINGLE_FINESH {} self.fileNameTmp:{}\r\n".format(CAT1_TCP_SEND_SINGLE_FINESH,self.fileNameTmp))
-                self.Cat1PyFileTimout = FILE_TRANSFER_TIMEOUT #超时时间10s
+            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: #文件存在
+                    if tmp_file == True: 
                         file_size = ql_fs.path_getsize("{}/{}".format(BAK_FILE_PATH,self.fileNameTmp))
-                        clog.info("file size :file_size:{} self.fileSize:{}\r\n".format(file_size,self.fileSize))
-                        if self.fileSize != file_size: #文件大小不一致 传输出错
-                            self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file size err") #结束文件接收不完整的
-                            
-                        else: #传完一个文件copy到usr下面
+                        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) #源文件目录 /usr/TmpFile/
+                                dst_path = "{}/{}".format(USR_FILE_PATH,self.fileNameTmp)
+                                src_path = "{}/{}".format(BAK_FILE_PATH,self.fileNameTmp)
                                 ret = False
                                 try:
-                                    clog.info("touch single file!!!!!dtpath111:{}\r\n".format(dst_path,src_path))
                                     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: #copy 之后比较文件大小一不一致
-
-                                            src_file = ql_fs.path_exists(src_path)  #删除文件
+                                        if dstfile_size != srcfile_size:
+                                            src_file = ql_fs.path_exists(src_path)
                                             if src_file == True:
                                                 try:
-                                                    uos.remove(src_path) #移除文件
+                                                    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") #结束文件接收完整的
+                                            self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file size err")
                                             return
                                         else:
-                                            src_file = ql_fs.path_exists(src_path)  #删除文件
+                                            src_file = ql_fs.path_exists(src_path)
                                             if src_file == True:
                                                 try:
-                                                    uos.remove(src_path) #移除文件
+                                                    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") #文件大小不一致 
+                                            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") #copy失败
+                                        self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file copy err") 
                                 except Exception as e:
-                                    clog.info("copy 文件异常出错!!!!!!!!!!{}:\r\n".format(e))
-                                    self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file copy err") #copy失败
+                                    self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_ERR,"file copy err")
                             else:
-                                clog.info("self.bakFlag  1:\r\n")
-                                self.__Socket_TCP_file_noreply(CAT1_REPLAY_FILE_SIZE_OK,"file copy ok") #copy失败 
+                                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!") #结束文件接收不完整的
-                    clog.info("错误信息!!!!!\r\n")
+                    self.__Socket_TCP_file_noreply(CAT1_REPLAY_OTA_SUCC,"reset start!") 
                     self.Cat1FileState == 0
-                    self.Cat1FileTransTimer.stop() #//关闭定时器
+                    self.Cat1FileTransTimer.stop() 
                     self.Cat1PyFileTimout = 0
                     self.fileNameList=[]
                     self.deleteTmpFile()
                     self.deleteUsrTmpFile()
                     
-
     def otaTimeOut(self,*argc):
-        
-       
         clog.info("重启成功!!!!!!!!\r\n")
-        # 上层直接重启即可
-        # Power.powerRestart()
 
 TcpService = TcpServiceInit()
 
index 59c3767..838a3e2 100644 (file)
@@ -446,9 +446,8 @@ static void stop_cat1_ota(void){ //停止 CAT1 ota 清标识
         fclose(fp);
         fp = NULL;
     }
-    uint8_t TRANSMIT_DATA=OTA_UPDATA_FAIL;
-            
-    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);
+
+    uapi_cat1_keep_wakeup(0);
 }
 
 static void  cat1_file_Timer_CallBack(int data_tmp)
@@ -595,7 +594,7 @@ void read_UDP_dir(void){
         else if (i==3)
         snprintf(fileNameList[file_count],DEFAULT_MAX_FILE_NAME_SIZE,"%s","main.py");
         else
-        snprintf(fileNameList[file_count],DEFAULT_MAX_FILE_NAME_SIZE,"%s","tcpService.py");
+        snprintf(fileNameList[file_count],DEFAULT_MAX_FILE_NAME_SIZE,"%s","tcpserver.py");
 
         printf("fileNameList[file_count] %s\r\n",fileNameList[file_count]);
         file_count+=1;
@@ -974,6 +973,8 @@ static int udp_packet_parse(char *rx_buffer, int len)
         return 0;
     } 
     uint8_t shutdowflag = 1;//重启
+    uint8_t TRANSMIT_DATA=OTA_UPDATA_FAIL;
+
     switch (cmd)
     {
         case CAT1_REPLAY_CREAT_DIR_FAILE: //cat1:创建临时文件夹失败
@@ -983,6 +984,7 @@ static int udp_packet_parse(char *rx_buffer, int len)
             creat_file_err+=1;
             if(creat_file_err >= FAILE_COUNT){ //创建十次都出错不创建结束当前的升级
                 creat_file_err=0;
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);
                 stop_cat1_ota();
                 break;
             }
@@ -1012,6 +1014,7 @@ static int udp_packet_parse(char *rx_buffer, int len)
             if(write_data_err >= FAILE_COUNT){
                 write_data_err = 0;
                 stop_cat1_ota();
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);
                 break;
             }
             printf("CAT1_REPLAY_WRITE_FILE_ERROR! %d",cmd);
@@ -1024,6 +1027,8 @@ static int udp_packet_parse(char *rx_buffer, int len)
             data_crc_err+=1;
             if(data_crc_err >= FAILE_COUNT){ //连续十次CRC都出错就结束进程
                 data_crc_err = 0;
+                uint8_t TRANSMIT_DATA=OTA_UPDATA_FAIL;
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);
                 stop_cat1_ota();
                 break;
             }
@@ -1045,6 +1050,8 @@ static int udp_packet_parse(char *rx_buffer, int len)
             if(creat_file_err >= FAILE_COUNT){
                 creat_file_err = 0;
                 stop_cat1_ota();
+                uint8_t TRANSMIT_DATA=OTA_UPDATA_FAIL;
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);
                 break;
             }
             send_data_case(CREAT_FILE_FAILE);
@@ -1054,7 +1061,8 @@ static int udp_packet_parse(char *rx_buffer, int len)
             //成功直接重启
             if(is_need_udp_updata)
             {
-                remove(CAT1_PY_IS_NEED_UDP_PATH);
+                FILE *fp= fopen(CAT1_PY_IS_NEED_UDP_PATH,"wb+");
+                fclose(fp);
             }
             CustomEventPublish(TOPIC_EVENT_SHUTDOWN_ANIMATIOR, &shutdowflag, sizeof(shutdowflag));
             //添加GUI
@@ -1072,6 +1080,7 @@ static int udp_packet_parse(char *rx_buffer, int len)
             if(file_size_err >= FAILE_COUNT){
                 file_size_err = 0;
                 stop_cat1_ota();
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);
                 break;
             }
             send_curfile_info_data();
@@ -1291,15 +1300,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)
+    if(fp==NULL)
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"is_need_udp_updata !\r\n");
         is_need_udp_updata=1;
-        fclose(fp);
-        fp=NULL;
     }
-    
-
     errcode_t ret=uapi_create_osThread_custom(&taskcfg);