p It is divided into a machine independent, high-level part responsible for managing device files, and low-level hardware drivers.
p The high-level radio driver attaches to the low-level driver when the latter calls .Fn radio_attach_mi .
p The .Fa radio_hw_if struct contains pointers to functions provided by the low-level driver. The .Fa 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 .Fa radio_hw_if when the high-level driver calls them. .Fa dev is the device struct for the hardware device.
p The fields of .Fa radio_hw_if are described in some more detail below. d -literal 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); }; .Ed l -tag -width XXXX t Fn (*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, .Dv NULL should be passed in this field. Returns 0 on success, otherwise an error code. t Fn (*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, .Dv NULL should be passed in thie field. Returns 0 on success, otherwise an error code. t Fn (*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 .Dv RIOCGINFO on a device file managed by the high-level driver. Returns 0 on success, otherwise an error code. t Fn (*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 .Dv RIOCSINFO on a device file managed by the high-level driver. Returns 0 on success, otherwise an error code. t Fn (*search) "sc" "ri" Initiates automatic search for the radio station. It is executed as a result of calling .Dv RIOCSSRCH on a device file managed by the high-level driver. Returns 0 on success, otherwise an error code. .El .Sh SEE ALSO .Xr radio 4 .Sh AUTHORS .An -nosplit The .Nm API was written by .An Vladimir Popov and .An Maxim Tsyplakov for .Ox and ported to .Nx by .An Lennart Augustsson .