File: dpt_log.hpp

package info (click to toggle)
raidutils 0.0.6-23
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 10,840 kB
  • sloc: cpp: 39,794; ansic: 22,774; sh: 8,306; makefile: 19
file content (192 lines) | stat: -rw-r--r-- 5,974 bytes parent folder | download | duplicates (9)
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
/* Copyright (c) 1996-2004, Adaptec Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice, this
 *   list of conditions and the following disclaimer.
 * - 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.
 * - Neither the name of the Adaptec Corporation nor the names of its
 *   contributors may be used to endorse or promote products derived from this
 *   software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR CONTRIBUTORS 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.
 */

#ifndef		__DPT_LOG_HPP
#define		__DPT_LOG_HPP

//File - DPT_LOG.HPP
//***************************************************************************
//
//Description:
//
//    This file contains class definitions to facilitate accessing
//log sense/select buffers.
//
//Author:	Doug Anderson
//Date:		5/6/93
//
//Editors:
//
//Remarks:
//
//
//***************************************************************************


//Include Files -------------------------------------------------------------


#include	"osd_util.h"
#include	"eng_std.hpp"
#include	"dpt_scsi.h"

#ifndef NO_PACK
#if defined (_DPT_AIX)
#pragma options align=packed
#else
#pragma pack(1)
#endif  // aix
#endif

//class - dptSCSIlog_C - start
//===========================================================================
//
//Description:
//
//    This class facilitates accessing a log sense/select buffer.
//
//Remarks: (Side effects, Assumptions, Warnings...)
//
//---------------------------------------------------------------------------

class	dptSCSIlog_C
{

public:

// Data...............................................

     // Pointer to the current log parameter
   logParam_S		*param_P;
     // Current # of valid parameter bytes
   uSHORT		paramBytes;
     // Total # of valid bytes in the buffer
   uSHORT		validBytes;
     // Log header pointer (start of buffer)
   logHeader_S		*header_P;

// Virtual Functions..................................

     // Called from reverseAllParams() for each parameter encountered.
     //   - Allows the data portion of each parameter to be reversed
   virtual void		reverseParam();
     // Initialize log page specific variables
   virtual void		calcInit();
     // Calculate log page specific variables
   virtual void		calcInfo();
     // Initialize the current byte offset
   virtual void		curOffsetInit();
     // Calculate the byte offset of the current parameter
   virtual void		calcCurOffset();

// Other Functions....................................

     // Finds the specified paramter
   uCHAR *		findParam(uSHORT,uSHORT);
     // Calculate log sense variables (optionally reverse bytes)
   void			calcSenseInfo(uSHORT);

public:


// Constructor/Desctructor............................

			dptSCSIlog_C();

// Boolean Functions..................................

     // Determines if the current parameter is valid
   uSHORT		isValidParam();

// Return Private Data................................

     // Return the page code associated with this buffer
   uCHAR		page();
     // Return the current parameter code
   uSHORT		code();
     // Return the current flag byte
   uCHAR		flags();
     // Returns the current parameter length
   uCHAR		length();
     // Return the # of data bytes associated with the current parameter
   uCHAR		size();
     // Return a pointer to the current parameter data
   uCHAR *		data_P();
     // The # valid parameter bytes + the log header
   uSHORT		validSize();
     // The # parameter bytes returned + the log header
   uSHORT		totalSize();

// Other Functions....................................

     // NULLs this log class
   void			clear();
     // Initializes the specified buffer as a log sense buffer
     //   - Option 0 = Initialize but do not reverse bytes
     //   - Option 1 = Initialize & Reverse the byte ordering
   uCHAR *		initSense(void *,uSHORT=0);
     // Resets to the first parameter
   uCHAR *		reset();
     // Increments to the next parameter
   uCHAR *		next();
     // Find the specified parameter code
     //   - Begin the search with the first parameter
   uCHAR *		find(uSHORT inCode) {
			   return (findParam(inCode,1));
			}
     // Find the specified parameter code
     //   - Begin the search with the next parameter
   uCHAR *		findNext(uSHORT inCode) {
			   return (findParam(inCode,0));
			}

// Log Select Functions...............................

     // Initializes the specified buffer as a new log select buffer
//   uCHAR *		initSelect(void *,uCHAR);
     // Set the current parameter
//   void			setParam(uSHORT,uCHAR,uCHAR=0);
     // Increment to the next new log parameter
//   uCHAR *		nextNew();
     // Reverse the log select data for output
//   void			selReverse();

};
//dptSCSIlog_C - end

#ifndef NO_UNPACK
#if defined (_DPT_AIX)
#pragma options align=reset
#elif defined (UNPACK_FOUR)
#pragma pack(4)
#else
#pragma pack()
#endif  // aix
#endif

#endif