NAME
radio
—
interface between low- and high-level
FM radio drivers
SYNOPSIS
#include
<dev/radio_if.h>
device_t
radio_attach_mi
(const struct
radio_hw_if *rhwp, void *hdlp,
device_t dev);
DESCRIPTION
Theradio
layer provides support for digitally
programmable FM radio tuners.
It is divided into a machine independent, high-level part responsible for managing device files, and low-level hardware drivers.
The high-level radio driver attaches to the
low-level driver when the latter calls
radio_attach_mi
().
The radio_hw_if struct contains pointers to functions provided by the low-level driver. The hdlp argument is a handle to a low-level driver's softc structure. It is sent as the first argument to all the functions in radio_hw_if when the high-level driver calls them. dev is the device struct for the hardware device.
The fields of radio_hw_if are described in some more detail below.
struct radio_hw_if { int (*open)(void *, int, int, struct lwp *); int (*close)(void *, int, int, struct lwp *); int (*get_info)(void *, struct radio_info *); int (*set_info)(void *, struct radio_info *); int (*search)(void *, int); };
(*open)
(sc, flags, fmt, lwp)- Called when the radio device is opened. Optionally, if there is no need to
call a driver's function when the device file is opened,
NULL
should be passed in this field. Returns 0 on success, otherwise an error code. (*close)
(sc, flags, fmt, lwp)- Called when the radio device is closed. Optionally, if there is no need to
call a driver's function when the device file is closed,
NULL
should be passed in thie field. Returns 0 on success, otherwise an error code. (*get_info)
(sc, ri)- Fills the radio_info struct. This function is used to obtain the current
state of a hardware device. It is executed as a result of calling
RIOCGINFO
on a device file managed by the high-level driver. Returns 0 on success, otherwise an error code. (*set_info)
(sc, ri)- Set values from the radio_info struct. This function is used to modify the
current state of a hardware device (enable/disable various modes and
parameters). It is executed as a result of calling
RIOCSINFO
on a device file managed by the high-level driver. Returns 0 on success, otherwise an error code. (*search)
(sc, ri)- Initiates automatic search for the radio station. It is executed as a
result of calling
RIOCSSRCH
on a device file managed by the high-level driver. Returns 0 on success, otherwise an error code.
SEE ALSO
AUTHORS
The radio
API was written by
Vladimir Popov and Maxim
Tsyplakov for OpenBSD and ported to
NetBSD by Lennart
Augustsson.