| RADIO(9) | Kernel Developer's Manual | RADIO(9) |
radio — interface
between low and high level radio drivers
The radio device driver is divided into a high level, hardware independent layer, and a low level hardware dependent layer. The interface between these is the radio_hw_if structure.
struct radio_hw_if {
int (*open)(void *, int, int, struct proc *);
int (*close)(void *, int, int, struct proc *);
int (*get_info)(void *, struct radio_info *);
int (*set_info)(void *, struct radio_info *);
int (*search)(void *, int);
};
The high level radio driver attaches to the low level driver when the latter calls radio_attach_mi. This call should be
void
radio_attach_mi(const struct radio_hw_if *rhwp, void *hdlp, struct device * dev)
The radio_hw_if struct is as shown above. The hdlp argument is a handle to some low level data 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.
intopen(void *, int flags, int fmt, struct proc *p) Optional. Is called when the radio device is opened. Returns 0 on success, otherwise an error code. intclose(void *, int flags, int fmt, struct proc *p) Optional. Is called when the radio device is closed. Returns 0 on success, otherwise an error code. intget_info(void *, struct radio_info *) Fill the radio_info struct. Returns 0 on success, otherwise an error code. intset_info(void *, struct radio_info *) Set values from the radio_info struct. Returns 0 on success, otherwise an error code. intsearch(void *, int) Returns 0 on success, otherwise an error code.
The radio device driver appeared in
OpenBSD 3.0.
The radio driver was written by
Vladimir Popov
<jumbo@narod.ru> and
Maxim Tsyplakov
<tm@oganer.net>. The man
page was written by Maxim Tsyplakov
<tm@oganer.net>.
| March 30, 2022 | openbsd |