ew8bakandClaude Opus 5 ced8581ada fix(hpsdr): TX-антенна тонула в Alex1, OC-пины били через один, SO_EXCLUSIVEADDRUSE
Три дефекта, найденные сверкой с прошивкой (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>
2026-08-20 16:25:47 +03:00
2026-03-09 18:48:24 +03:00
2026-07-15 10:21:23 +03:00
2026-06-25 12:58:07 +03:00
2026-03-09 18:48:24 +03:00
2026-03-05 16:19:26 +03:00
2026-08-05 16:11:57 +03:00
2026-05-24 16:29:13 +03:00
2026-03-05 16:19:26 +03:00
S
Description
No description provided
Readme
12 MiB
Languages
Pascal 96.3%
Python 3%
Shell 0.6%