16
16
#include <gsmlib/gsm_sysdep.h>
17
17
#include <gsmlib/gsm_cb.h>
18
18
#include <gsmlib/gsm_nls.h>
22
21
using namespace gsmlib;
26
static const string dashes =
25
static const std::string dashes =
27
26
"---------------------------------------------------------------------------";
29
28
// CBDataCodingScheme members
31
30
CBDataCodingScheme::CBDataCodingScheme(unsigned char dcs) : _dcs(dcs)
33
32
if ((_dcs & 0xf0) <= 0x30) // bits 7..4 in the range 0000..0011
34
if ((_dcs & 0x30) == 0)
35
_language = (Language)_dcs;
34
if ((_dcs & 0x30) == 0)
35
_language = (Language)_dcs;
38
_language = (Language)Unknown;
40
string CBDataCodingScheme::toString() const
41
std::string CBDataCodingScheme::toString() const
43
if (compressed()) result += _("compressed ");
45
result += _("compressed ");
44
46
switch (getLanguage())
136
string CBMessage::toString() const
141
std::string CBMessage::toString() const
140
<< _("Message type: CB") << endl
143
std::ostringstream os;
144
os << dashes << std::endl
145
<< _("Message type: CB") << std::endl
141
146
<< _("Geographical scope: ");
142
147
switch (_geographicalScope)
145
os << "Cell wide" << endl;
150
os << "Cell wide" << std::endl;
148
os << "PLMN wide" << endl;
153
os << "PLMN wide" << std::endl;
150
155
case LocationAreaWide:
151
os << "Location area wide" << endl;
156
os << "Location area wide" << std::endl;
154
os << "Cell wide (2)" << endl;
159
os << "Cell wide (2)" << std::endl;
157
162
// remove trailing \r characters for output
163
std::string data = _data;
164
std::string::iterator i;
160
165
for (i = data.end(); i > data.begin() && *(i - 1) == '\r';
162
167
data.erase(i, data.end());
164
os << _("Message Code: ") << _messageCode << endl
165
<< _("Update Number: ") << _updateNumber << endl
166
<< _("Message Identifer: ") << _messageIdentifier << endl
167
<< _("Data coding scheme: ") << _dataCodingScheme.toString() << endl
168
<< _("Total page number: ") << _totalPageNumber << endl
169
<< _("Current page number: ") << _currentPageNumber << endl
170
<< _("Data: '") << data << "'" << endl
171
<< dashes << endl << endl << ends;
169
os << _("Message Code: ") << _messageCode << std::endl
170
<< _("Update Number: ") << _updateNumber << std::endl
171
<< _("Message Identifer: ") << _messageIdentifier << std::endl
172
<< _("Data coding scheme: ") << _dataCodingScheme.toString() << std::endl
173
<< _("Total page number: ") << _totalPageNumber << std::endl
174
<< _("Current page number: ") << _currentPageNumber << std::endl
175
<< _("Data: '") << data << "'" << std::endl
176
<< dashes << std::endl << std::endl << std::ends;