root/branches/libfreebob-2.0/src/bebob/bebob_dl_codes.cpp

Revision 336, 9.1 kB (checked in by pieterpalmers, 16 years ago)

- Merged the developments on trunk since branch-off:

branch occurred at rev 194
svn merge -r 194:HEAD https://svn.sourceforge.net/svnroot/freebob/trunk/libfreebob

- Modified libfreebobavc to use the messagebuffer for debug info.
- This should compile and run

Line 
1 /* bebob_dl_codes.cpp
2  * Copyright (C) 2006 by Daniel Wagner
3  *
4  * This file is part of FreeBoB.
5  *
6  * FreeBoB is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  * FreeBoB is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with FreeBoB; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
18  * MA 02111-1307 USA.
19  */
20
21 #include "bebob/bebob_dl_codes.h"
22 #include "bebob/bebob_dl_bcd.h"
23
24 unsigned short BeBoB::CommandCodes::m_gCommandId = 0;
25
26 BeBoB::CommandCodes::CommandCodes( fb_quadlet_t protocolVersion,
27                                    fb_byte_t commandCode,
28                                    size_t     msgSize,
29                                    fb_byte_t operandSizeRequest,
30                                    fb_byte_t operandSizeRespone )
31     : m_commandId( m_gCommandId++ )
32     , m_protocolVersion( protocolVersion )
33     , m_commandCode( commandCode )
34     , m_msgSize( msgSize )
35     , m_operandSizeRequest( operandSizeRequest )
36     , m_operandSizeResponse( operandSizeRespone )
37     , m_resp_protocolVersion( 0 )
38     , m_resp_commandId( 0 )
39     , m_resp_commandCode( 0 )
40     , m_resp_operandSize( 0 )
41 {
42 }
43
44 BeBoB::CommandCodes::~CommandCodes()
45 {
46 }
47
48 bool
49 BeBoB::CommandCodes::serialize( IOSSerialize& se )
50 {
51     byte_t tmp;
52
53     bool result = se.write( m_protocolVersion, "CommandCodes: protocol version" );
54     tmp = m_commandId & 0xff;
55     result &= se.write( tmp, "CommandCodes: command id low" );
56     tmp = m_commandId >> 8;
57     result &= se.write( tmp, "CommandCodes: command id high" );
58     result &= se.write( m_commandCode, "CommandCodes: command code" );
59     result &= se.write( m_operandSizeRequest, "CommandCodes: request operand size" );
60
61     return result;
62 }
63
64 bool
65 BeBoB::CommandCodes::deserialize( IISDeserialize& de )
66 {
67     bool result = de.read( &m_resp_protocolVersion );
68     fb_byte_t tmp;
69     result &= de.read( &tmp );
70     m_resp_commandId = tmp;
71     result &= de.read( &tmp );
72     m_resp_commandId |= tmp << 8;
73     result &= de.read( &m_resp_commandCode );
74     result &= de.read( &m_resp_operandSize );
75
76     return result;
77 }
78
79 size_t
80 BeBoB::CommandCodes::getMaxSize()
81 {
82     return 2 * sizeof( fb_quadlet_t ) + m_msgSize;
83 }
84
85
86 ////////////////////////////////
87
88 BeBoB::CommandCodesReset::CommandCodesReset( fb_quadlet_t protocolVersion,
89                                              EStartMode startMode )
90     : CommandCodes( protocolVersion, eCmdC_Reset, sizeof( m_startMode ), 1, 0 )
91     , m_startMode( startMode )
92 {
93 }
94
95 BeBoB::CommandCodesReset::~CommandCodesReset()
96 {
97 }
98
99 bool
100 BeBoB::CommandCodesReset::serialize( IOSSerialize& se )
101 {
102     bool result = CommandCodes::serialize( se );
103     result &= se.write( m_startMode, "CommandCodesReset: boot mode" );
104
105     return result;
106 }
107
108 bool
109 BeBoB::CommandCodesReset::deserialize( IISDeserialize& de )
110 {
111     return CommandCodes::deserialize( de );
112 }
113
114 ////////////////////////////////
115
116 BeBoB::CommandCodesProgramGUID::CommandCodesProgramGUID(
117     fb_quadlet_t protocolVersion,
118     fb_octlet_t guid )
119     : CommandCodes( protocolVersion, eCmdC_ProgramGUID, sizeof( m_guid ), 2, 0 )
120     , m_guid( guid )
121 {
122 }
123
124 BeBoB::CommandCodesProgramGUID::~CommandCodesProgramGUID()
125 {
126 }
127
128 bool
129 BeBoB::CommandCodesProgramGUID::serialize( IOSSerialize& se )
130 {
131     bool result = CommandCodes::serialize( se );
132     fb_quadlet_t tmp = m_guid >> 32;
133     result &= se.write( tmp, "CommandCodesProgramGUID: GUID (high)" );
134     tmp = m_guid & 0xffffffff;
135     result &= se.write( tmp, "CommandCodesProgramGUID: GUID (low)" );
136
137     return result;
138 }
139
140 bool
141 BeBoB::CommandCodesProgramGUID::deserialize( IISDeserialize& de )
142 {
143     return CommandCodes::deserialize( de );
144 }
145
146 ////////////////////////////////
147
148 BeBoB::CommandCodesDownloadStart::CommandCodesDownloadStart(
149     fb_quadlet_t protocolVersion,
150     EObject object )
151     : CommandCodes( protocolVersion, eCmdC_DownloadStart, 10*4, 10, 1 )
152     , m_object( object )
153     , m_date( 0 )
154     , m_time( 0 )
155     , m_id( 0 )
156     , m_version( 0 )
157     , m_address( 0 )
158     , m_length( 0 )
159     , m_crc( 0 )
160 {
161 }
162
163 BeBoB::CommandCodesDownloadStart::~CommandCodesDownloadStart()
164 {
165 }
166
167 bool
168 BeBoB::CommandCodesDownloadStart::serialize( IOSSerialize& se )
169 {
170     bool result = CommandCodes::serialize( se );
171
172     result &= se.write( m_object,  "CommandCodesDownloadStart: object" );
173     for (  unsigned int i = 0; i < sizeof( m_date ); ++i ) {
174         fb_byte_t* tmp = ( fb_byte_t* )( &m_date );
175         result &= se.write( tmp[i], "CommandCodesDownloadStart: date" );
176     }
177     for (  unsigned int i = 0; i < sizeof( m_date ); ++i ) {
178         fb_byte_t* tmp = ( fb_byte_t* )( &m_time );
179         result &= se.write( tmp[i], "CommandCodesDownloadStart: time" );
180     }
181     result &= se.write( m_id,      "CommandCodesDownloadStart: id" );
182     result &= se.write( m_version, "CommandCodesDownloadStart: version" );
183     result &= se.write( m_address, "CommandCodesDownloadStart: address" );
184     result &= se.write( m_length,  "CommandCodesDownloadStart: length" );
185     result &= se.write( m_crc,     "CommandCodesDownloadStart: crc" );
186
187     return result;
188 }
189
190 bool
191 BeBoB::CommandCodesDownloadStart::deserialize( IISDeserialize& de )
192 {
193     bool result = CommandCodes::deserialize( de );
194     result &= de.read( reinterpret_cast<fb_quadlet_t*>( &m_resp_max_block_size ) );
195
196     return result;
197 }
198
199 ////////////////////////////////
200
201 BeBoB::CommandCodesDownloadBlock::CommandCodesDownloadBlock(
202     fb_quadlet_t protocolVersion )
203     : CommandCodes( protocolVersion,
204                     eCmdC_DownloadBlock,
205                     12,
206                     3,
207                     2 )
208     , m_seqNumber( 0 )
209     , m_address ( 0 )
210     , m_resp_seqNumber( 0 )
211     , m_resp_errorCode( 0 )
212 {
213 }
214
215 BeBoB::CommandCodesDownloadBlock::~CommandCodesDownloadBlock()
216 {
217 }
218
219 bool
220 BeBoB::CommandCodesDownloadBlock::serialize( IOSSerialize& se )
221 {
222     bool result = CommandCodes::serialize( se );
223     result &= se.write( m_seqNumber, "CommandCodesDownloadBlock: sequence number" );
224     result &= se.write( m_address, "CommandCodesDownloadBlock: address" );
225     result &= se.write( m_numBytes, "CommandCodesDownloadBlock: number of bytes" );
226     return result;
227 }
228
229 bool
230 BeBoB::CommandCodesDownloadBlock::deserialize( IISDeserialize& de )
231 {
232     bool result = CommandCodes::deserialize( de );
233     result &= de.read( &m_resp_seqNumber );
234     result &= de.read( &m_resp_errorCode );
235
236     return result;
237 }
238
239 ////////////////////////////////
240
241 BeBoB::CommandCodesDownloadEnd::CommandCodesDownloadEnd(
242     fb_quadlet_t protocolVersion )
243     : CommandCodes( protocolVersion, eCmdC_DownloadEnd, 2, 0, 2 )
244 {
245 }
246
247 BeBoB::CommandCodesDownloadEnd::~CommandCodesDownloadEnd()
248 {
249 }
250
251 bool
252 BeBoB::CommandCodesDownloadEnd::serialize( IOSSerialize& se )
253 {
254     return CommandCodes::serialize( se );
255 }
256
257 bool
258 BeBoB::CommandCodesDownloadEnd::deserialize( IISDeserialize& de )
259 {
260     bool result = CommandCodes::deserialize( de );
261     result &= de.read( &m_resp_crc32 );
262     result &= de.read( &m_resp_valid );
263
264     return result;
265 }
266
267
268 ////////////////////////////////
269
270 BeBoB::CommandCodesInitializePersParam::CommandCodesInitializePersParam(
271     fb_quadlet_t protocolVersion )
272     : CommandCodes( protocolVersion, eCmdC_InitPersParams, 0, 0, 0 )
273 {
274 }
275
276 BeBoB::CommandCodesInitializePersParam::~CommandCodesInitializePersParam()
277 {
278 }
279
280 bool
281 BeBoB::CommandCodesInitializePersParam::serialize( IOSSerialize& se )
282 {
283     return CommandCodes::serialize( se );
284 }
285
286 bool
287 BeBoB::CommandCodesInitializePersParam::deserialize( IISDeserialize& de )
288 {
289     return CommandCodes::deserialize( de );
290 }
291
292 ////////////////////////////////
293
294 BeBoB::CommandCodesInitializeConfigToFactorySetting::CommandCodesInitializeConfigToFactorySetting(
295     fb_quadlet_t protocolVersion )
296     : CommandCodes( protocolVersion, eCmdC_InitConfigToFactorySetting, 0, 0, 0 )
297 {
298 }
299
300 BeBoB::CommandCodesInitializeConfigToFactorySetting::~CommandCodesInitializeConfigToFactorySetting()
301 {
302 }
303
304 bool
305 BeBoB::CommandCodesInitializeConfigToFactorySetting::serialize( IOSSerialize& se )
306 {
307     return CommandCodes::serialize( se );
308 }
309
310 bool
311 BeBoB::CommandCodesInitializeConfigToFactorySetting::deserialize( IISDeserialize& de )
312 {
313     return CommandCodes::deserialize( de );
314 }
315
316 ////////////////////////////////
317
318 BeBoB::CommandCodesGo::CommandCodesGo( fb_quadlet_t protocolVersion,
319                                              EStartMode startMode )
320     : CommandCodes( protocolVersion, eCmdC_Go, sizeof( m_startMode ), 1, 1 )
321     , m_startMode( startMode )
322 {
323 }
324
325 BeBoB::CommandCodesGo::~CommandCodesGo()
326 {
327 }
328
329 bool
330 BeBoB::CommandCodesGo::serialize( IOSSerialize& se )
331 {
332     bool result = CommandCodes::serialize( se );
333     result &= se.write( m_startMode, "CommandCodesGo: start mode" );
334
335     return result;
336 }
337
338 bool
339 BeBoB::CommandCodesGo::deserialize( IISDeserialize& de )
340 {
341     bool result = CommandCodes::deserialize( de );
342     result &= de.read( &m_resp_validCRC );
343
344     return result;
345 }
Note: See TracBrowser for help on using the browser.