usdx 1.02版は、連続周波数調整機能に加え、アマチュア無線以外の帯域も含まれています。しかし、使い勝手が良くありません。具体的には、試験基準を満たしていないことと、周波数の調整が容易ではないことが挙げられます。以下のようにコードを修正することで、アマチュア無線以外の帯域をスキップし、例えば、ダイヤルを回すことで7.2MHzから10.1MHzへ簡単に変更できるようになります。
// ================= HAM バンド用ラップ
typedef 構造体 {
uint32\_t 型の変数「lo」
uint32\_t 型の変数「hi」を宣言。
} ハムバンドT
// 趣味用周波数帯表(周波数順、必ず順番を維持)
静的な `ham_band_t` 型の `ham_bands` 配列は以下のとおりです。
{ 3500000UL, 3900000UL } // 80m
{ 5351500UL、5366500UL } // 60m
{ 7000000UL, 7200000UL } // 40m
{10100000UL, 10150000UL} // 30m
{14000000UL, 14350000UL} // 20m
{18068000UL, 18168000UL} // 17m
{21000000UL, 21450000UL} // 15m
{28000000UL, 29700000UL} // 10m
};
定数として、HAM\_BAND\_CNT は次の値を持ちます。
`ham_bands` のサイズを、`ham_bands[0]` のサイズで割る。
// ステップ > 0:周波数の上昇(hiを超えて、次の帯域へ移行)
// ステップ < 0 : 周波数を下げる (lo より低い周波数 → 前のバンドのハイ周波数)
定数的な関数として、`f` を `steps` 回繰り返す処理を実装します。
const uint8_t N = ham\_bands のサイズ / ham\_bands\[0] のサイズ
(uint8_t i が 0 から開始し、i が < N; i++) {
もし、f が >= ハム帯.lo && f <= ハム帯.hi)
f を返す
if (f < ham_bands[i].lo) {
// 向下调 → 跳到前一个业余波段末尾
if (steps < 0) {
if (i == 0) return ham_bands[N-1].hi; // 最前 → 跳到最后波段
return ham_bands[i-1].hi;
}
// 向上调 → 跳到该波段起始
return ham_bands[i].lo;
}
}
// 最後の波の範囲を超えて
もし、ステップ数が < 0)
ham\_bands\[N-1].hi を返す
ham\_bands\[0].lo を返す
}
// ======== ハムバンド通信に関する記述の終了 ========
`process_encoder_tuning_step` 関数が、ステップ数を引数として受け取る。
{
`stepval` は、`stepsizes` 配列の `stepsize` インデックスに対応する値です。
//ステップサイズが < ステップ100) freqを1000で割った余りを計算する。// 周波数を調整し、ステップサイズを設定する > 100Hz で、詳細な調整は後回しにする。
rit が存在する場合、
rit は、steps に stepval を掛けて計算した結果で更新されます。
rit = min(max(-9999, rit), 9999);
} それ以外の場合 {
freq += ステップ数 * ステップ値;
freq = wrap_to_ham(freq, steps); // 元のコードを削除し、代わりに改行しました
}
変更フラグ = 真
}

