Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
net
irda
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
;
61
__u32
i
;
62
__u32
*
ip
;
63
}
irda_pv_t
;
64
65
typedef
struct
{
66
__u8
pi
;
67
__u8
pl
;
68
irda_pv_t
pv
;
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,
73
PV_TYPE
type
,
PI_HANDLER
func
);
74
75
typedef
struct
{
76
PI_HANDLER
func
;
/* Handler for this parameter identifier */
77
PV_TYPE
type
;
/* Data type for this parameter */
78
}
pi_minor_info_t
;
79
80
typedef
struct
{
81
pi_minor_info_t
*
pi_minor_call_table
;
82
int
len
;
83
}
pi_major_info_t
;
84
85
typedef
struct
{
86
pi_major_info_t
*
tables
;
87
int
len
;
88
__u8
pi_mask
;
89
int
pi_major_offset
;
90
}
pi_param_info_t
;
91
92
int
irda_param_pack
(
__u8
*
buf
,
char
*
fmt
, ...);
93
94
int
irda_param_insert
(
void
*
self
,
__u8
pi,
__u8
*
buf
,
int
len,
95
pi_param_info_t
*
info
);
96
int
irda_param_extract_all
(
void
*
self
,
__u8
*
buf
,
int
len,
97
pi_param_info_t
*
info
);
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
Generated on Thu Jan 10 2013 14:53:08 for Linux Kernel by
1.8.2