int rt_get_info(void *v, struct radio_info *ri) { struct rt_softc *sc = v; switch (sc->sc_ct) { case CARD_RADIOTRACK: ri->caps = RTRACK_CAPABILITIES; ri->info = 3 & rt_state(sc->lm.iot, sc->lm.ioh); ri->volume = rt_unconv_vol(sc->sc_vol); break; case CARD_SF16FMI: ri->caps = SF16FMI_CAPABILITIES; ri->volume = sc->sc_vol ? 255 : 0; ri->info = 0; /* UNSUPPORTED */ break; default: /* No such card */ return (1); } ri->mute = sc->sc_mute; ri->stereo = sc->sc_stereo == LM700X_STEREO ? 0 : 1; ri->rfreq = lm700x_decode_ref(sc->sc_rf); ri->freq = sc->sc_freq; /* UNSUPPORTED */ ri->lock = 0; return (0); }
u_int32_t lm700x_encode_freq(u_int16_t f, u_int32_t rf) { u_int32_t reg; reg = f + 1070; /* Add IF 10.7 MHz */ reg *= 10; /* Keep this, or the rf = 25 kHz will fail */ reg /= lm700x_decode_ref(rf); /* Static divider for bandwidth */ return reg; }
int az_get_info(void *v, struct radio_info *ri) { struct az_softc *sc = v; ri->mute = sc->mute; ri->volume = az_unconv_vol(sc->vol); ri->stereo = sc->stereo == LM700X_STEREO ? 1 : 0; ri->caps = AZTECH_CAPABILITIES; ri->rfreq = lm700x_decode_ref(sc->rf); ri->info = az_state(sc->lm.iot, sc->lm.ioh); ri->freq = sc->freq; /* UNSUPPORTED */ ri->lock = 0; return (0); }