Repository navigation
feat(scan): ケーブルのスキャンで、ケーブル局の NIT から回す搬送波を決める - #2804
Conversation
自主放送の TS に流れている NIT[actual] のケーブルの分配の記述子 (0x44) から搬送波の一覧を作り、 総当たりの残りをその一覧に置き換える。一覧の搬送波がロックしなければ間をあけて試し直し、 それでもロックしなければ前の控えのチャンネルを残す。NIT の中身とバイト列をスキャンの記録に出す。 - @danything/arib: 0x44 とネットワーク名を読む (2.5.0) - エージェント: QF<kHz> で周波数を直に指す。DVB の機材は QAM_AUTO か 64QAM・256QAM を試す Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T8TqVbtN2Hp8wNmqBX8pzT
# Conflicts: # src/lib/server/scan.ts
|
main の取り込みでレビューが飛ばされたため、開き直してレビューを回します |
|
Claude finished @5ym's task in 53s —— View job レビュー結果NIT から搬送波を決める設計は、既存の衛星の一覧 ( 指摘 (インラインコメントも付けました)
要確認 (インラインにはしていません)
問題なし
実機で確かめていない点 (J:COM の 0x44 の並び・試し直しでのロック・256QAM) は PR 本文のとおりで、記録に NIT のバイト列を出す作りなので、次のスキャンで確かめられます。 |
| /// <summary><paramref name="digits"/> 桁までの数字だけの文字列を読む</summary> | ||
| /// <summary> | ||
| /// <c>QF<kHz></c> で選局できる周波数の範囲 (kHz)。VHF 1ch の下端 (90 MHz) から UHF 62ch の上端 (770 MHz) まで。 | ||
| /// ケーブルの選局表の並び (<c>QV1</c>〜<c>QU62</c>) が収まる範囲と同じ | ||
| /// </summary> | ||
| private const int DirectMinKhz = 90_000; | ||
| private const int DirectMaxKhz = 770_000; | ||
|
|
There was a problem hiding this comment.
Number の <summary> (236 行) が、追加した定数 DirectMinKhz・DirectMaxKhz の <summary> の上に残っています。Number のドキュメントコメントが定数側に付き、Number 自身は説明が無くなります。コンパイラの XML ドキュメント警告 (同じ要素に <summary> が 2 つ) も出ます。定数 2 つを Number の上ではなく、Tuning の解析の近くか Number の前の空行より上に移し、236 行目は Number の直前に戻してください。
| /// <summary><paramref name="digits"/> 桁までの数字だけの文字列を読む</summary> | |
| /// <summary> | |
| /// <c>QF<kHz></c> で選局できる周波数の範囲 (kHz)。VHF 1ch の下端 (90 MHz) から UHF 62ch の上端 (770 MHz) まで。 | |
| /// ケーブルの選局表の並び (<c>QV1</c>〜<c>QU62</c>) が収まる範囲と同じ | |
| /// </summary> | |
| private const int DirectMinKhz = 90_000; | |
| private const int DirectMaxKhz = 770_000; | |
| /// <summary> | |
| /// <c>QF<kHz></c> で選局できる周波数の範囲 (kHz)。VHF 1ch の下端 (90 MHz) から UHF 62ch の上端 (770 MHz) まで。 | |
| /// ケーブルの選局表の並び (<c>QV1</c>〜<c>QU62</c>) が収まる範囲と同じ | |
| /// </summary> | |
| private const int DirectMinKhz = 90_000; | |
| private const int DirectMaxKhz = 770_000; | |
| /// <summary><paramref name="digits"/> 桁までの数字だけの文字列を読む</summary> |
There was a problem hiding this comment.
3ca77b0 で直しました。定数 2 つを Number の
| const complete = reader.feed(chunk); | ||
| return ( | ||
| complete && | ||
| (nit === undefined || !nit.wait || nit.reader.actual !== null) && |
There was a problem hiding this comment.
要確認: nit.wait が true の間 (ケーブル局の NIT をまだ読めていない間) は、局が揃っても NIT[actual] が来るまで TUNE_TIMEOUT (30 秒) いっぱい読み続けます。NIT が流れていない TS (再送信で NIT を載せない局、QC の自主放送でない搬送波) では、受信できたチャンネルごとに最大 30 秒かかります。PR 本文の「NIT を読めなければ今の総当たりのまま」に対して、所要時間は総当たりのままではなくなります。J:COM で 113 本中 18〜25 本がロックする前提だと、最悪で数分の増加です。OBSERVE_WAIT のような待ちの上限 (例: 局が揃ってから 10〜15 秒) を NIT にも設けるか、NIT が 1 度も取れなかった搬送波の数で待つのをやめるかを検討してください。
There was a problem hiding this comment.
3ca77b0 で、NIT を待つのを読み始めから 15 秒までにしました (NIT_WAIT。NIT は 10 秒に 1 回は流れるので、選局が落ち着くまでの数秒を足した値)。NIT が流れていない TS で 30 秒待つことは無くなります。
NIT の流れていない TS で、受信できたチャンネルごとに 30 秒待っていた。 NIT は 10 秒に 1 回は流れるので、選局が落ち着くまでの数秒を足した 15 秒で打ち切る。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T8TqVbtN2Hp8wNmqBX8pzT
|
Claude finished @5ym's task in 14s —— View job レビュー結果 (最新コミット 3ca77b0 を確認)前回の指摘 2 件は直っています。
残っている要確認 (インラインにはしていません)
問題なし
実機で確かめていない点 (J:COM の 0x44 の並び・試し直しでのロック・256QAM) は PR 本文のとおりです。 |
ケーブル (CATV) のスキャンで、113 チャンネルを総当たりするのをやめ、ケーブル局の NIT から回す搬送波を決めます。
cableLineup:<エージェント>に書き、次のスキャンの入口と搬送波の増減に使う@danything/arib2.5.0: 0x44 とネットワーク名を読むQF<kHz>で周波数を直に指す。DVB の機材は QAM_AUTO か 64QAM・256QAM を試す (J:COM の QC26 が 256QAM だった)実機で確かめていないこと: J:COM の NIT の中身 (0x44 の並び・再送信の TS が載るか)、試し直しでロックが取れるか、DVB-C の機材の 256QAM。ロックが不安定なこと自体は別の件で扱います。
🤖 Generated with Claude Code
https://claude.ai/code/session_01T8TqVbtN2Hp8wNmqBX8pzT