gpt4 book ai didi

c - 如何验证 Linux radio 设备驱动程序中的 radio 频率?

转载 作者:行者123 更新时间:2023-11-30 17:48:42 24 4
gpt4 key购买 nike

我知道无符号数永远不会小于 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 */
}

...
}

是否可以通过其他方式进行此检查(可能有限制)?

Come up with a better definition of a "bogus" frequency that a value that can't possibly exist.

如果频率自调谐后未发生变化,则数字驱动器不会设置频率。模拟调谐器驱动器对数字驱动器保存的频率一无所知。当使用 video4linux 代码设置频率时,硬件会发生变化,但是数字驱动程序的状态不会更新。

最佳答案

1 当您进行转换时

unsigned long frequency = freqKHz;

执行符号检查有意义

if( freqKHz < 0 ) {  // note: freqKHz
/* Ignore bogus frequencies. */
return;

2 随后根据您的应用程序检查合理的界限也是一种很好的做法。当然,min 检查可以与上面的结合起来。

if((frequency < MinFreq ) || (( frequency > MaxFreq ) {
/* Ignore bogus frequencies. */
return;

3 推荐四舍五入转换:

frequency = (frequency + 1000/2) / 1000; /* switch to MHz */

关于c - 如何验证 Linux radio 设备驱动程序中的 radio 频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18435044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com