Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
parameters.h
Go to the documentation of this file.
1 /*********************************************************************
2  *
3  * Filename: parameters.h
4  * Version: 1.0
5  * Description: A more general way to handle (pi,pl,pv) parameters
6  * Status: Experimental.
7  * Author: Dag Brattli <[email protected]>
8  * Created at: Mon Jun 7 08:47:28 1999
9  * Modified at: Sun Jan 30 14:05:14 2000
10  * Modified by: Dag Brattli <[email protected]>
11  *
12  * Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved.
13  *
14  * This program is free software; you can redistribute it and/or
15  * modify it under the terms of the GNU General Public License as
16  * published by the Free Software Foundation; either version 2 of
17  * the License, or (at your option) any later version.
18  *
19  * This program is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22  * GNU General Public License for more details.
23  *
24  * You should have received a copy of the GNU General Public License
25  * along with this program; if not, write to the Free Software
26  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
27  * MA 02111-1307 USA
28  *
29  * Michel Dänzer <[email protected]>, 10/2001
30  * - simplify irda_pv_t to avoid endianness issues
31  *
32  ********************************************************************/
33 
34 #ifndef IRDA_PARAMS_H
35 #define IRDA_PARAMS_H
36 
37 /*
38  * The currently supported types. Beware not to change the sequence since
39  * it a good reason why the sized integers has a value equal to their size
40  */
41 typedef enum {
42  PV_INTEGER, /* Integer of any (pl) length */
43  PV_INT_8_BITS, /* Integer of 8 bits in length */
44  PV_INT_16_BITS, /* Integer of 16 bits in length */
45  PV_STRING, /* \0 terminated string */
46  PV_INT_32_BITS, /* Integer of 32 bits in length */
47  PV_OCT_SEQ, /* Octet sequence */
48  PV_NO_VALUE /* Does not contain any value (pl=0) */
49 } PV_TYPE;
50 
51 /* Bit 7 of type field */
52 #define PV_BIG_ENDIAN 0x80
53 #define PV_LITTLE_ENDIAN 0x00
54 #define PV_MASK 0x7f /* To mask away endian bit */
55 
56 #define PV_PUT 0
57 #define PV_GET 1
58 
59 typedef union {
60  char *c;
63 } irda_pv_t;
64 
65 typedef struct {
69 } irda_param_t;
70 
71 typedef int (*PI_HANDLER)(void *self, irda_param_t *param, int get);
72 typedef int (*PV_HANDLER)(void *self, __u8 *buf, int len, __u8 pi,
74 
75 typedef struct {
76  PI_HANDLER func; /* Handler for this parameter identifier */
77  PV_TYPE type; /* Data type for this parameter */
79 
80 typedef struct {
82  int len;
84 
85 typedef struct {
87  int len;
91 
92 int irda_param_pack(__u8 *buf, char *fmt, ...);
93 
94 int irda_param_insert(void *self, __u8 pi, __u8 *buf, int len,
96 int irda_param_extract_all(void *self, __u8 *buf, int len,
98 
99 #define irda_param_insert_byte(buf,pi,pv) irda_param_pack(buf,"bbb",pi,1,pv)
100 
101 #endif /* IRDA_PARAMS_H */
102