3 /// USB Blackberry bulk protocol API
7 Copyright (C) 2005-2008, Net Direct Inc. (http://www.netdirect.ca/)
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU General Public License in the COPYING file at the
19 root directory of this project for more details.
23 #include "protostructs.h"
31 namespace Barry
{ namespace Protocol
{
33 void CheckSize(const Data
&packet
, size_t requiredsize
)
35 const Packet
*p
= (const Packet
*) packet
.GetData();
37 // when packets are larger than 0xFFFF bytes, packet->size is no
38 // longer reliable, so we go with the Data class size
39 if( (btohs(p
->size
) != packet
.GetSize() && packet
.GetSize() <= 0xFFFF) ||
40 packet
.GetSize() < requiredsize
)
43 BadSize
bs(btohs(p
->size
), packet
.GetSize(), requiredsize
);
50 unsigned int GetSize(const Data
&packet
)
54 // when packets are larger than 0xFFFF bytes, packet->size is no
55 // longer reliable, so we go with the Data class size
56 if( packet
.GetSize() > 0xFFFF ) {
57 return packet
.GetSize();
60 const Packet
*p
= (const Packet
*) packet
.GetData();
61 return btohs(p
->size
);
65 }} // namespace Barry::Protocol