2002-01-02 05:08:02 +03:00
|
|
|
.\" $NetBSD: radio.9,v 1.2 2002/01/02 02:08:03 augustss Exp $
|
2002-01-02 01:09:42 +03:00
|
|
|
.\" $OpenBSD: radio.9,v 1.2 2001/10/08 08:52:50 mpech Exp $
|
|
|
|
.\"
|
|
|
|
.\" Copyright (c) Maxim Tsyplakov <tm@oganer.net>
|
|
|
|
.\" All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
|
|
.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
|
.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
|
.\" ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.Dd September 29, 2001
|
|
|
|
.Dt RADIO 9
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm radio
|
|
|
|
.Nd interface between low and high level radio drivers
|
|
|
|
.Sh 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
|
|
|
|
.Va radio_hw_if
|
|
|
|
structure.
|
|
|
|
.Bd -literal
|
|
|
|
struct radio_hw_if {
|
2002-01-02 05:08:02 +03:00
|
|
|
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);
|
2002-01-02 01:09:42 +03:00
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
The high level radio driver attaches to the low level driver
|
|
|
|
when the latter calls
|
|
|
|
.Va radio_attach_mi .
|
|
|
|
This call should be
|
|
|
|
.Bd -literal
|
|
|
|
void
|
|
|
|
radio_attach_mi(rhwp, hdlp, dev)
|
|
|
|
struct radio_hw_if *rhwp;
|
|
|
|
void *hdlp;
|
|
|
|
struct device *dev;
|
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Va radio_hw_if
|
|
|
|
struct is as shown above.
|
|
|
|
The
|
|
|
|
.Va hdlp
|
|
|
|
argument is a handle to some low level data structure.
|
2002-01-02 05:08:02 +03:00
|
|
|
It is sent as the first argument to all the functions in
|
2002-01-02 01:09:42 +03:00
|
|
|
.Va radio_hw_if
|
|
|
|
when the high level driver calls them.
|
|
|
|
.Va dev
|
|
|
|
is the device struct for the hardware device.
|
|
|
|
.Pp
|
|
|
|
The fields of
|
|
|
|
.Va radio_hw_if
|
|
|
|
are described in some more detail below.
|
|
|
|
.Bd -literal
|
2002-01-02 05:08:02 +03:00
|
|
|
int open (void *, int flags, int fmt, struct proc *p);
|
|
|
|
Optional.
|
2002-01-02 01:09:42 +03:00
|
|
|
Is called when the radio device is opened.
|
|
|
|
Returns 0 on success, otherwise an error code.
|
|
|
|
|
2002-01-02 05:08:02 +03:00
|
|
|
int close (void *, int flags, int fmt, struct proc *p);
|
|
|
|
Optional.
|
2002-01-02 01:09:42 +03:00
|
|
|
Is called when the radio device is closed.
|
|
|
|
Returns 0 on success, otherwise an error code.
|
|
|
|
|
2002-01-02 05:08:02 +03:00
|
|
|
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);
|
2002-01-02 01:09:42 +03:00
|
|
|
Returns 0 on success, otherwise an error code.
|
|
|
|
.Ed
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr radio 4
|