1
// *************************************************************************
6
// * Purpose: Cell Broadcast Message Implementation
8
// * Author: Peter Hofmann (software@pxh.de)
10
// * Created: 4.8.2001
11
// *************************************************************************
16
#include <gsmlib/gsm_sms_codec.h>
17
#include <gsmlib/gsm_util.h>
24
// representation of DataCodingScheme
25
// The data coding scheme is described in detail in ETSI GSM 03.38, section 5
26
// This class reuses the DCS_* constants from DataCodingScheme in
29
class CBDataCodingScheme
32
enum Language {German = 0, English = 1, Italian = 2, French = 3,
33
Spanish = 4, Dutch = 5, Swedish = 6, Danish = 7,
34
Portuguese = 8, Finnish = 9, Norwegian = 10, Greek = 11,
35
Turkish = 12, Unknown = 1000};
42
// initialize with data coding scheme octet
43
CBDataCodingScheme(unsigned char dcs);
45
// default constructor
46
CBDataCodingScheme() : _dcs(DCS_DEFAULT_ALPHABET), _language(English) {}
48
// return language of CBM
49
Language getLanguage() const {return _language;}
51
// return compression level (if language == Unknown)
52
bool compressed() const {return (_dcs & DCS_COMPRESSED) == DCS_COMPRESSED;}
54
// return type of alphabet used
55
// (DCS_DEFAULT_ALPHABET, DCS_EIGHT_BIT_ALPHABET, DCS_SIXTEEN_BIT_ALPHABET,
56
// DCS_RESERVED_ALPHABET)
57
unsigned char getAlphabet() const
58
{return _language == Unknown ? _dcs & (3 << 2) : DCS_DEFAULT_ALPHABET;}
60
// create textual representation of CB data coding scheme
61
string toString() const;
64
// representation of Cell Broadcast message (CBM)
65
// The CBM format is described in detail in ETSI GSM 03.41, section 9.3
67
class CBMessage : public RefBase
70
enum GeographicalScope {CellWide, PLMNWide, LocationAreaWide,
74
// fields parsed from the CB TPDU
75
GeographicalScope _geographicalScope;
78
int _messageIdentifier;
79
CBDataCodingScheme _dataCodingScheme;
81
int _currentPageNumber;
85
// constructor with given pdu
86
CBMessage(string pdu) throw(GsmException);
89
GeographicalScope getGeographicalScope() const {return _geographicalScope;}
90
int getMessageCode() const {return _messageCode;}
91
int getUpdateNumber() const {return _updateNumber;}
92
int getMessageIdentifier() const {return _messageIdentifier;}
93
CBDataCodingScheme getDataCodingScheme() const {return _dataCodingScheme;}
94
int getTotalPageNumber() const {return _totalPageNumber;}
95
int getCurrentPageNumber() const {return _currentPageNumber;}
96
string getData() const {return _data;}
98
// create textual representation of CBM
99
string toString() const;
102
// some useful typdefs
103
typedef Ref<CBMessage> CBMessageRef;