Доработка АФСП провекри

This commit is contained in:
TotMaxim
2026-04-09 11:25:18 +03:00
parent 08597ff7ce
commit 0c30572f1e
4 changed files with 47 additions and 31 deletions

View File

@@ -141,6 +141,8 @@ func _on_start_contol_device() -> void:
# Загружаем URL адреса из ProjectSettings
addresses['Адрес АФСП левого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес АФСП левого борта')
addresses['Адрес АФСП правого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес АФСП правого борта')
addresses['Адрес БПО левого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес БПО левого борта')
addresses['Адрес БПО правого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес БПО правого борта')
timeout = float(ProjectSettings.get_setting('application/config/%s' % 'Период опроса состояния АФСП, секунды'))
# Начинаем с запроса к левому борту
_request_next(State.REQUESTING_LEFT)
@@ -162,6 +164,21 @@ func _on_request_completed(result: int, response_code: int, _headers: PackedStri
var response_text = body.get_string_from_utf8()
_save_response(response_text)
# Быстрый подсчёт для лога
var json = JSON.new()
if json.parse(response_text) == OK:
var data = json.data
var self_tests = data.get("SelfTest", [])
var total = 0
var passed = 0
for test in self_tests:
for system in test.get("SystemList", []):
for dev in system.get("DevList", []):
total += 1
if dev.get("TestPassed", false):
passed += 1
print("[rtr] Ответ от %s: %d/%d тестов пройдено" % ["левого" if is_left else "правого", passed, total])
# Обновляем статус online
if is_left:
last_success_time_left = current_time
@@ -190,15 +207,13 @@ func _on_request_completed(result: int, response_code: int, _headers: PackedStri
# Сигнал от таймера - истекло время ожидания ответа
func _on_timeout() -> void:
var was_left = (current_state == State.REQUESTING_LEFT)
current_state = State.WAITING_TIMEOUT
http_request.cancel_request()
var timeout_msg = 'Таймаут %.1f секунд - %s' % [timeout, get_result_string(HTTPRequest.Result.RESULT_TIMEOUT)]
_save_error(timeout_msg)
var is_left = (current_state == State.REQUESTING_LEFT)
# Обновляем статус online (таймаут = offline)
if is_left:
if was_left:
_update_online_status("left", false)
emit_signal('response_received_left', timeout_msg, false)
else: