December 20, 2005 RADIO 9

### NAME

radio - interface 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)