符号なしの数値が 0 未満になることはなく、それをテストする必要がないことはわかっています。しかし、チューナーの偽の周波数は避けたいです。
/* freqKHz is in KHz (duh) */
void videoinput_set_tuner_freq( videoinput_t *vidin, int freqKHz )
{
unsigned long frequency = freqKHz;
if( videoinput_has_tuner( vidin ) ) {
if( frequency < 0 ) {
/* Ignore bogus frequencies. */
return;
}
frequency *= 16;
vidin->tunerlow = (tuner.capability & V4L2_TUNER_CAP_LOW) ? 1 : 0;
if( !vidin->tunerlow ) {
frequency /= 1000; /* switch to MHz */
}
...
}
このチェックを別の方法で (おそらく制限付きで) 行うことはできますか?
あり得ない値である「偽の」周波数のより良い定義を考え出してください。
周波数が調整されてから変更されていない場合、デジタル ドライバは周波数を設定しません。アナログ チューナー ドライバーは、デジタル ドライバーによって保存された周波数について何も知りません。video4linux コードを使用して周波数を設定すると、ハードウェアは変更されますが、デジタル ドライバーの状態は更新されません。