📄 gdpsms.h
字号:
// gdpsms.h
//
// Copyright (c) 2000 Symbian Ltd. All rights reserved.
//
#ifndef __RGDPSMS_H__
#define __RGDPSMS_H__
#include "gdp.h"
#include "gdpmain.h"
#include "gdpstatemc.h"
#include <e32svr.h>
#include <etel.h>
#include <es_sock.h>
#include <gsmumsg.h>
#include <gsmubuf.h>
#include <gsmuset.h>
#include <smsuaddr.h>
#include <smsustrm.h>
#include <f32file.h>
#include <commdb.h>
#include <cdbcols.h>
_LIT(KGdpSmsHeaderTag, "//BATTLESHIPS");
_LIT8(KGdpSmsHeaderTag8, "//BATTLESHIPS");
_LIT(KServiceCenterNumber, "+447785016005"); // Vodafone SCA
static const TInt KGdpSmsSendRetries = 3;
static const TInt KGdpSmsReceiveRetries = 2;
static const TInt KGdpSmsSduMaxSize = 160;
static const TInt KGdpSmsPatternLen = 13;
static const TInt KGdpMaxAddressLen = 20;
class CGdpSmsSender;
class CGdpSmsReceiver;
class CGdpSmsResourceManager;
class CGdpSmsComms : public CGdpSession
{
public:
static CGdpSession* NewL();
~CGdpSmsComms();
void OpenL(MGdpPacketHandler* aHandler);
void SendL(const TDesC8& aAddress, const TDesC8& aData);
TInt ReceiveAll();
TInt GetMaxPacketLength() const;
TBool IsNetworked() const;
private:
CGdpSmsComms();
CGdpSmsSender* iSender;
CGdpSmsReceiver* iReceiver;
CGdpSmsResourceManager* iResMan;
};
class CGdpSmsStateMachine : public CGdpStateMachine
//-----------------------
{
public:
CGdpSmsStateMachine(CGdpSmsResourceManager& aResMan);
protected:
CGdpSmsResourceManager& iResMan;
};
class CGdpSmsSender : public CGdpSmsStateMachine
//-----------------
{
public:
class TSenderState : public CGdpSmsStateMachine::TState
{
public:
TSenderState(CGdpSmsSender& aSmsSender);
protected:
CGdpSmsSender& iSender;
};
class TSendMsgState : public TSenderState
{
public:
TSendMsgState(CGdpSmsSender& aSmsSender);
void EnterL();
TState* CompleteL();
TState* ErrorL(TInt aCode);
void Cancel();
private:
};
friend class TSendMsgState;
public:
CGdpSmsSender(CGdpSmsResourceManager& aResMan);
~CGdpSmsSender();
void OpenL(MGdpPacketHandler& iHandler);
void Close();
void SendL(const TDesC8& aAddress, const TDesC8& aData);
protected:
void Reset();
TState* ErrorOnStateEntry(TInt aError);
TState* ErrorOnStateExit(TInt aError);
private:
RSocket iSocket;
CSmsMessage* iSmsMsg;
TPckgBuf<TUint> iOctlResult;
TBool iGotScAddress;
TInt iRetries; // Remaining...
MGdpPacketHandler* iHandler;
// States
TSendMsgState iSendMsgState;
};
class CGdpSmsReceiver : public CGdpSmsStateMachine
//-------------------
{
public:
class TReceiverState : public CGdpSmsStateMachine::TState
{
public:
TReceiverState(CGdpSmsReceiver& aSmsReceiver);
protected:
CGdpSmsReceiver& iReceiver;
};
class TWaitState : public TReceiverState
{
public:
TWaitState(CGdpSmsReceiver& aSmsReceiver);
void EnterL();
TState* CompleteL();
TState* ErrorL(TInt aCode);
void Cancel();
private:
};
class TReadMsgState : public TReceiverState
{
public:
TReadMsgState(CGdpSmsReceiver& aSmsReceiver);
void EnterL();
TState* CompleteL();
TState* ErrorL(TInt aCode);
void Cancel();
};
friend class TWaitState;
friend class TReadMsgState;
public:
CGdpSmsReceiver(CGdpSmsResourceManager& aResMan);
~CGdpSmsReceiver();
void OpenL(MGdpPacketHandler& aHandler);
void Close();
void ReceiveAllL();
protected:
void Reset();
TState* ErrorOnStateEntry(TInt aError);
TState* ErrorOnStateExit(TInt aError);
private:
RSocket iSocket;
CSmsMessage* iSmsMsg;
TPckgBuf<TUint> iOctlResult;
MGdpPacketHandler* iHandler;
TInt iRetries; // Remaining...
// States
TWaitState iWaitState;
TReadMsgState iReadMsgState;
};
class CGdpSmsResourceManager : public CBase
//--------------------------
{
public:
~CGdpSmsResourceManager();
void OpenL();
void Close();
// Make the following public, because we're more of a record than a class...
public:
RSocketServ iSocketServer;
RFs iFs;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -