File: TokenLowLevel.h

package info (click to toggle)
libsmbios 2.0.3.dfsg-1.1
  • links: PTS
  • area: main
  • in suites: squeeze, wheezy
  • size: 3,768 kB
  • ctags: 2,016
  • sloc: cpp: 14,292; sh: 9,408; xml: 3,820; makefile: 454; ansic: 402; python: 157
file content (162 lines) | stat: -rw-r--r-- 4,164 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
// vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=c:
/*
 * Copyright (C) 2005 Dell Inc.
 *  by Michael Brown <Michael_E_Brown@dell.com>
 * Licensed under the Open Software License version 2.1
 *
 * Alternatively, you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published
 * by the Free Software Foundation; either version 2 of the License,
 * or (at your option) any later version.

 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 */


#ifndef CMOSTOKENLOWLEVEL_H
#define CMOSTOKENLOWLEVEL_H

// compat header should always be first header
#include "smbios/compat.h"

#include "smbios/types.h"

// abi_prefix should be last header included before declarations
#include "smbios/config/abi_prefix.hpp"

namespace smbios
{
#if defined(_MSC_VER)
#pragma pack(push,1)
#endif
    enum  // Smbios Structure types
    {
        DellIndexedIoTokenType = 0xD4,
        DellProtectedAreaType1 = 0xD5,
        DellProtectedAreaType2 = 0xD6,
        DellCallingInterface   = 0xDA,
    };

    enum // Token types
    {
        TokenTypeEOT = 0xffff,
    };

    struct indexed_io_token
    {
        u16 tokenId;
        u8  location;
        u8  andMask;
        union {
            u8 orValue;
            u8 stringLength;
        };
    }
    LIBSMBIOS_PACKED_ATTR;

    struct indexed_io_access_structure
    { /* 0xD4 structure */
        u8	     type;
        u8	     length;
        u16	     handle;
        u16      indexPort;
        u16      dataPort;
        u8       checkType;
        u8       checkedRangeStartIndex;
        u8       checkedRangeEndIndex;
        u8       checkValueIndex;
        //variable number of tokens present, but at least one.
        struct   indexed_io_token  first_token;
    }
    LIBSMBIOS_PACKED_ATTR;


    struct dell_protected_value_1_structure
    {  /* 0xD5 structure */
        u8	     type;
        u8	     length;
        u16	     handle;
        u16      tokenId;
        u8       valueLen;
        u8       valueFormat;
        u16      validationKey;
        u16      indexPort;
        u16      dataPort;
        u8       checkType;
        u8       valueStartIndex;
        u8       checkIndex;
    }
    LIBSMBIOS_PACKED_ATTR;

    struct dell_protected_value_2_structure
    {  /* 0xD6 structure */
        u8	     type;
        u8	     length;
        u16	     handle;
        u16      tokenId;
        u8       valueLen;
        u8       valueFormat;
        u16      validationKey;
        u16      indexPort;
        u16      dataPort;
        u8       checkType;
        u8       valueStartIndex;
        u8       checkIndex;
        u8       rangeCheckType;
        u8       rangeCheckStart;
        u8       rangeCheckEnd;
        u8       rangeCheckIndex;
    }
    LIBSMBIOS_PACKED_ATTR;

    struct calling_interface_token
    {
        u16 tokenId;
        u16 location;  // 0 for string tokens
        union {
            u16 value;
            u16 stringLength;
        };
    }
    LIBSMBIOS_PACKED_ATTR;

    struct calling_interface_structure
    { /* 0xDA structure */
        u8	     type;
        u8	     length;
        u16	     handle;

        u16      cmdIOAddress;
        u8       cmdIOCode;
        u32      supportedCmds;

        //variable number of tokens present, zero or more possible
        //would _really_ like to do:
        //   struct   calling_interface_token  token_array[];
        // 
        //but cannot because it is a gcc extension. :-(
        struct   calling_interface_token  first_token;
    }
    LIBSMBIOS_PACKED_ATTR;

    enum  // protected value format types
    {
        pvFmtAlphaNumericScanCode = 0,
        pvFmtAlphaNumericAscii    = 1,
        pvFmtAlphaNumericScanCodeNS = 2,
        pvFmtAlphaNumericAsciiNS   = 3,
    };


#if defined(_MSC_VER)
#pragma pack(pop)
#endif
}

// always should be last thing in header file
#include "smbios/config/abi_suffix.hpp"

#endif /* CMOSTOKENLOWLEVEL_H */