RADIO(9) Kernel Developer's Manual RADIO(9)

NAME

radiointerface between low and high level radio drivers

DESCRIPTION

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 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); 
};

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(rhwp, hdlp, dev) 
	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.

int open (void *, int flags, int fmt, struct lwp *p); 
  Optional. 
  Is called when the radio device is opened. 
  Returns 0 on success, otherwise an error code. 
 
int close (void *, int flags, int fmt, struct lwp *p); 
  Optional. 
  Is called when the radio device is closed. 
  Returns 0 on success, otherwise an error code. 
 
int get_info (void *, struct radio_info *); 
  Fill the radio_info struct. 
  Returns 0 on success, otherwise an error code. 
 
int set_info (void *, struct radio_info *); 
  Set values from the radio_info struct. 
  Returns 0 on success, otherwise an error code. 
 
int search (void *, int); 
  Returns 0 on success, otherwise an error code.

SEE ALSO

radio(4)
December 20, 2005 NetBSD 6.1