v1.2.8
This commit is contained in:
49
network.py
49
network.py
@@ -42,6 +42,7 @@ class NetworkManager:
|
||||
self._high_send_queue = []
|
||||
self._normal_send_queue = []
|
||||
self._queue_lock = threading.Lock()
|
||||
self._send_event = threading.Event()
|
||||
self._uart4g_lock = threading.Lock()
|
||||
self._device_id = None
|
||||
self._password = None
|
||||
@@ -150,6 +151,7 @@ class NetworkManager:
|
||||
self._high_send_queue.append(item)
|
||||
else:
|
||||
self._normal_send_queue.append(item)
|
||||
self._send_event.set()
|
||||
|
||||
def _dequeue(self):
|
||||
"""线程安全地从队列取出(内部方法)"""
|
||||
@@ -493,6 +495,8 @@ class NetworkManager:
|
||||
|
||||
# 设置非阻塞模式(用于接收数据)
|
||||
self._wifi_socket.setblocking(False)
|
||||
# 加快消息发送
|
||||
self._wifi_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
||||
|
||||
self._tcp_connected = True
|
||||
self.logger.info("[WIFI-TCP] TCP连接已建立")
|
||||
@@ -1317,29 +1321,29 @@ class NetworkManager:
|
||||
except:
|
||||
ip = "error_getting_ip"
|
||||
self.safe_enqueue({"result": "current_ip", "ip": ip}, 2)
|
||||
elif inner_cmd == 7:
|
||||
from ota_manager import ota_manager
|
||||
if ota_manager.update_thread_started:
|
||||
self.safe_enqueue({"result": "update_already_started"}, 2)
|
||||
continue
|
||||
# elif inner_cmd == 7:
|
||||
# from ota_manager import ota_manager
|
||||
# if ota_manager.update_thread_started:
|
||||
# self.safe_enqueue({"result": "update_already_started"}, 2)
|
||||
# continue
|
||||
|
||||
try:
|
||||
ip = os.popen("ifconfig wlan0 2>/dev/null | grep 'inet ' | awk '{print $2}'").read().strip()
|
||||
except:
|
||||
ip = None
|
||||
# try:
|
||||
# ip = os.popen("ifconfig wlan0 2>/dev/null | grep 'inet ' | awk '{print $2}'").read().strip()
|
||||
# except:
|
||||
# ip = None
|
||||
|
||||
if not ip:
|
||||
self.safe_enqueue({"result": "ota_rejected", "reason": "no_wifi_ip"}, 2)
|
||||
else:
|
||||
# 注意:direct_ota_download 需要 ota_url 参数
|
||||
# 如果 ota_manager.ota_url 为 None,需要从其他地方获取
|
||||
ota_url_to_use = ota_manager.ota_url
|
||||
if not ota_url_to_use:
|
||||
self.logger.error("[OTA] cmd=7 但 OTA_URL 未设置")
|
||||
self.safe_enqueue({"result": "ota_failed", "reason": "ota_url_not_set"}, 2)
|
||||
else:
|
||||
ota_manager._start_update_thread()
|
||||
_thread.start_new_thread(ota_manager.direct_ota_download, (ota_url_to_use,))
|
||||
# if not ip:
|
||||
# self.safe_enqueue({"result": "ota_rejected", "reason": "no_wifi_ip"}, 2)
|
||||
# else:
|
||||
# # 注意:direct_ota_download 需要 ota_url 参数
|
||||
# # 如果 ota_manager.ota_url 为 None,需要从其他地方获取
|
||||
# ota_url_to_use = ota_manager.ota_url
|
||||
# if not ota_url_to_use:
|
||||
# self.logger.error("[OTA] cmd=7 但 OTA_URL 未设置")
|
||||
# self.safe_enqueue({"result": "ota_failed", "reason": "ota_url_not_set"}, 2)
|
||||
# else:
|
||||
# ota_manager._start_update_thread()
|
||||
# _thread.start_new_thread(ota_manager.direct_ota_download, (ota_url_to_use,))
|
||||
elif inner_cmd == 41:
|
||||
self.logger.info("[TEST] 收到TCP射箭触发命令")
|
||||
self._manual_trigger_flag = True
|
||||
@@ -1467,7 +1471,8 @@ class NetworkManager:
|
||||
self.logger.error("十分钟无心跳ACK,重连")
|
||||
break
|
||||
|
||||
time.sleep_ms(50)
|
||||
self._send_event.wait(timeout=0.05) # 0.05秒 = 50ms
|
||||
self._send_event.clear()
|
||||
|
||||
self._tcp_connected = False
|
||||
self.logger.error("连接异常,2秒后重连...")
|
||||
|
||||
Reference in New Issue
Block a user