mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
ced8581ada4a71c232cc53c9236d9ffbab82733e
Три дефекта, найденные сверкой с прошивкой (Anvelina_PROIII, board_type=5) и с Thetis. 1. CalcAlex1 жёстко ставил бит 24 (ANT1) с комментарием «ADC1 дефолт». Старшие 16 бит Alex1 — не фильтры ADC1, а TX-СЛОВО Alex: прошивка кладёт байты 1428-1429 в Alex_Tx_data и на PTT подменяет им верхнюю половину Alex-слова целиком (Orion.v:2346, Alex_Tx_data_ok = Alex_Tx_data[10:8] — те же ANT1/2/3). Захардкоженный ANT1 делал условие истинным и затирал антенну, посчитанную в CalcAlex0: оператор с TX на ANT2/ANT3 передавал в ANT1. Thetis делает ровно то, что теперь делаем мы — netInterface.c:489 чистит биты 24-26 и ставит _TXANT_1/2/3 из tx_ant. 2. Байт 1401 (Open Collector) уходил без сдвига. Бит 0 не разведён, пины сидят на битах 1..7 (Orion.v:913, USEROUT0..6 = Open_Collector[1..7]) — та же раскладка, что у C2[7:1] в протоколе 1. Каждый включённый пин срабатывал на соседнем выходе, седьмой не срабатывал никогда. CalcOCBits остаётся в логических координатах (бит i = пин i+1), сдвиг делает SendFullHP на границе с проводом. 3. SO_EXCLUSIVEADDRUSE = not 5 ($FFFFFFFA) вместо ~SO_REUSEADDR = not 4 ($FFFFFFFB) — как и написано в собственном комментарии. Опции с таким номером нет: setsockopt возвращал ошибку (её результат не проверяется), и порт оставался перехватываемым, ровно от чего строка и спасала. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Languages
Pascal
96.3%
Python
3%
Shell
0.6%