?? gsm_sms.h
字號:
// *************************************************************************
// * GSM TA/ME library
// *
// * File: gsm_sms.h
// *
// * Purpose: SMS functions
// * (ETSI GSM 07.05)
// *
// * Author: Peter Hofmann (software@pxh.de)
// *
// * Created: 16.5.1999
// *************************************************************************
#ifndef GSM_SMS_H
#define GSM_SMS_H
#include <gsmlib/gsm_sms_codec.h>
#include <gsmlib/gsm_error.h>
#include <gsmlib/gsm_util.h>
#include <gsmlib/gsm_at.h>
#include <string>
#include <vector>
using namespace std;
namespace gsmlib
{
// forward declarations
class SMSStore;
class SMSMessage;
// this class represents a single SMS message
class SMSMessage : public RefBase
{
private:
Ref<GsmAt> _at; // connection to the device
public:
// possible values for message type indicator
enum MessageType {SMS_DELIVER = 0, SMS_DELIVER_REPORT = 0,
SMS_STATUS_REPORT = 2, SMS_COMMAND = 2,
SMS_SUBMIT = 1, SMS_SUBMIT_REPORT = 1};
protected:
// fields of the different TPDUs
// all PDUs
string _userData;
UserDataHeader _userDataHeader;
Address _serviceCentreAddress;
MessageType _messageTypeIndicator;// 2 bits
DataCodingScheme _dataCodingScheme;
public:
// decode hexadecimal pdu string
// return SMSMessage of the appropriate type
// differentiate between SMS transfer directions SC to ME, ME to SC
// also give GsmAt object for send()
static Ref<SMSMessage> decode(string pdu,
bool SCtoMEdirection = true,
GsmAt *at = NULL)
throw(GsmException);
static Ref<SMSMessage> decode(istream& s) throw(GsmException);
// encode pdu, return hexadecimal pdu string
virtual string encode() = 0;
// send this PDU
// returns message reference and ACK-PDU (if requested)
// only applicate to SMS-SUBMIT and SMS-COMMAND
unsigned char send(Ref<SMSMessage> &ackPdu) throw(GsmException);
// same as above, but ACK-PDU is discarded
unsigned char send() throw(GsmException);
// create textual representation of SMS
virtual string toString() const = 0;
// return deep copy of this message
virtual Ref<SMSMessage> clone() = 0;
// return length of SC address when encoded
unsigned int getSCAddressLen();
// accessor functions
MessageType messageType() const {return _messageTypeIndicator;}
Address serviceCentreAddress() const {return _serviceCentreAddress;}
// provided for sorting messages by timestamp
virtual Timestamp serviceCentreTimestamp() const {return Timestamp();}
// return recipient, destination etc. address (for sorting by address)
virtual Address address() const = 0;
virtual void setUserData(string x) {_userData = x;}
virtual string userData() const {return _userData;}
// return the size of user data (including user data header)
unsigned char userDataLength() const;
// accessor functions
virtual void setUserDataHeader(UserDataHeader x) {_userDataHeader = x;}
virtual UserDataHeader userDataHeader() const {return _userDataHeader;}
virtual DataCodingScheme dataCodingScheme() const
{return _dataCodingScheme;}
virtual void setDataCodingScheme(DataCodingScheme x)
{_dataCodingScheme = x;}
void setServiceCentreAddress(Address &x) {_serviceCentreAddress = x;}
void setAt(Ref<GsmAt> at) {_at = at;}
virtual ~SMSMessage();
// print ASCII hex representation of message
ostream& operator<<(ostream& s);
// copy constructor and assignment
// SMSMessage(SMSMessage &m);
// SMSMessage &operator=(SMSMessage &m);
friend class SMSStore;
};
// SMS-DELIVER TPDU
class SMSDeliverMessage : public SMSMessage
{
private:
// SMS-DELIVER PDU members (see GSM 03.40 section 9.2.2.1)
bool _moreMessagesToSend;
bool _replyPath;
bool _statusReportIndication;
Address _originatingAddress;
unsigned char _protocolIdentifier; // octet
Timestamp _serviceCentreTimestamp;
// initialize members to sensible values
void init();
public:
// constructor, sets sensible default values
SMSDeliverMessage();
// constructor with given pdu
SMSDeliverMessage(string pdu) throw(GsmException);
// encode pdu, return hexadecimal pdu string
virtual string encode();
// create textual representation of SMS
virtual string toString() const;
// inherited from SMSMessage
Address address() const;
Ref<SMSMessage> clone();
// accessor functions
bool moreMessagesToSend() const {return _moreMessagesToSend;}
bool replyPath() const {return _replyPath;}
bool statusReportIndication() const {return _statusReportIndication;}
Address originatingAddress() const {return _originatingAddress;}
unsigned char protocolIdentifier() const {return _protocolIdentifier;}
Timestamp serviceCentreTimestamp() const {return _serviceCentreTimestamp;}
void setMoreMessagesToSend(bool x) {_moreMessagesToSend = x;}
void setReplyPath(bool x) {_replyPath = x;}
void setStatusReportIndication(bool x) {_statusReportIndication = x;}
void setOriginatingAddress(Address &x) {_originatingAddress = x;}
void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;}
void setServiceCentreTimestamp(Timestamp &x) {_serviceCentreTimestamp = x;}
virtual ~SMSDeliverMessage() {}
};
// SMS-SUBMIT TPDU
class SMSSubmitMessage : public SMSMessage
{
private:
// SMS-SUBMIT PDU (see GSM 03.40 section 9.2.2.2)
bool _rejectDuplicates;
TimePeriod::Format _validityPeriodFormat; // 2 bits
bool _replyPath;
bool _statusReportRequest;
unsigned char _messageReference; // integer
Address _destinationAddress;
unsigned char _protocolIdentifier;
TimePeriod _validityPeriod;
// initialize members to sensible values
void init();
public:
// constructor, sets sensible default values
SMSSubmitMessage();
// constructor with given pdu
SMSSubmitMessage(string pdu) throw(GsmException);
// convenience constructor
// given the text and recipient telephone number
SMSSubmitMessage(string text, string number);
// encode pdu, return hexadecimal pdu string
virtual string encode();
// create textual representation of SMS
virtual string toString() const;
// inherited from SMSMessage
Address address() const;
Ref<SMSMessage> clone();
// accessor functions
bool rejectDuplicates() const {return _rejectDuplicates;}
TimePeriod::Format validityPeriodFormat() const
{return _validityPeriodFormat;}
bool replyPath() const {return _replyPath;}
bool statusReportRequest() const {return _statusReportRequest;}
unsigned char messageReference() const {return _messageReference;}
Address destinationAddress() const {return _destinationAddress;}
unsigned char protocolIdentifier() const {return _protocolIdentifier;}
TimePeriod validityPeriod() const {return _validityPeriod;}
void setRejectDuplicates(bool x) {_rejectDuplicates = x;}
void setValidityPeriodFormat(TimePeriod::Format &x)
{_validityPeriodFormat = x;}
void setReplyPath(bool x) {_replyPath = x;}
void setStatusReportRequest(bool x) {_statusReportRequest = x;}
void setMessageReference(unsigned char x) {_messageReference = x;}
void setDestinationAddress(Address &x) {_destinationAddress = x;}
void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;}
void setValidityPeriod(TimePeriod &x) {_validityPeriod = x;}
virtual ~SMSSubmitMessage() {}
};
// SMS-STATUS-REPORT TPDU
class SMSStatusReportMessage : public SMSMessage
{
private:
// SMS-STATUS-REPORT PDU (see GSM 03.40 section 9.2.2.3)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -