scomms.h

来自「在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己」· C头文件 代码 · 共 135 行

H
135
字号
// SCOMMS.H
//
// Copyright (c) 1997-2000 Symbian Ltd. All rights reserved.

#ifndef __SComms_H__
#define __SComms_H__

#include <e32base.h>
#include <oplapi.h>
#include <opxapi.h>
#include <e32base.h>
#include <c32comm.h>
#include <oplerr.h>
#include <ES_SOCK.H>
#include <IR_SOCK.H>

// This version number also needs changing in scomms.pkg and scomms.txh
#define KOpxVersion 0x600

const TInt KUidOpxSerialComms=0x100038F2;

const TInt KOplMaxStringLength=255;
const TInt32 KDefaultHandle=1;

_LIT(KIrCOMM0,"IRCOMM::0");
	
class CTlsDataOPXSComms;
class CSCommsOpx;

enum
	{
	ESCommsOpxPortOpen = 0x01,
	ESCommsOpxReadPending = 0x02,
	ESCommsOpxWritePending = 0x04
	};

class CPortOpx : public CBase
	{
public:
	~CPortOpx();
	void ClosePort();
	TBuf<KOplMaxStringLength> iReadBuf;
	TBuf<KOplMaxStringLength> iWriteBuf;
	TBuf<KOplMaxStringLength> iPortName;
	TUint8* iReadString;
	TUint8* iWriteString;
	RCommServ iCommsServer;
	RComm iIrcomm;
	TInt32 iStatusBits;
	TInt iRequestedLength;
	};

class CIrDAOpx : public CBase
	{
public:
	~CIrDAOpx();
	RSocketServ iSocketServ;
	RHostResolver iHostResolver;
	RSocket iSocket;
	RSocket iAcceptor;
	TBuf8<KOplMaxStringLength> iBuf; //Have to use 8bit for comms.
	TBool iSendMode;
	TProtocolDesc iPInfo;
	TUint8* iAddr;
	};

class CSCommsOpx :public CBase
	{
public:
	CSCommsOpx();
	~CSCommsOpx();
   
	void SCConnect(OplAPI& aOplAPI);
	void SCWriteA(OplAPI& aOplAPI);
	void SCReadA(OplAPI& aOplAPI);
	void SCReadOneOrMoreA(OplAPI& aOplAPI);
	void SCQueryReceiveBuffer(OplAPI& aOplAPI);
	void SCDisconnect(OplAPI& aOplAPI);
	void SCReadCancel(OplAPI& aOplAPI);
	void SCWriteCancel(OplAPI& aOplAPI);
	void SCSetConfig(OplAPI& aOplAPI);
// Ir comms
	void IrDAConnect(OplAPI& aOplAPI);
	void IrDAWaitForConnect(OplAPI& aOplAPI);
	void IrDAWrite(OplAPI& aOplAPI) const;
	void IrDARead(OplAPI& aOplAPI) const;
	void IrDAReadA(OplAPI& aOplAPI) const;
	static TInt IrDAReadCallBack(TAny* aIrDA);
	void IrDAWaitForDisconnect(OplAPI& aOplAPI);
	void IrDADisconnect(OplAPI& aOplAPI);

private:
	static TInt SCReadCallBack(TAny* aPort);
	static TInt SCWriteCallBack(TAny* aPort);
	CPortOpx* iPort;
	CIrDAOpx* iIrDA;
	};

class CTlsDataOPXSComms : public COpxBase 
	{
public:
	static CTlsDataOPXSComms* NewL(OplAPI& aOplAPI);
	void ConstructL();
	CTlsDataOPXSComms(OplAPI& aOplAPI);
	~CTlsDataOPXSComms() ;
	virtual void RunL(TInt aProcNum);
	virtual TBool CheckVersion(TInt aVersion);
	CSCommsOpx* iSCommsHandle;
private:
	// the language extension procedures
	enum TExtensions
		{
		ESCConnect=1,
		ESCSetConfig,
		ESCWriteA,
		ESCReadA,
		ESCReadOneOrMoreA,
		ESCQueryReceiveBuffer,
		ESCDisconnect,
		ESCReadCancel,
		ESCWriteCancel,
		EIrDAConnect,
		EIrDAWaitForConnect,
		EIrDAWrite,
		EIrDARead,
		EIrDAReadA,
		EIrDAWaitForDisconnect,
		EIrDADisconnect,
		};
	};

inline CTlsDataOPXSComms* TheTls() { return((CTlsDataOPXSComms *)Dll::Tls()); }
inline void SetTheTls(CTlsDataOPXSComms *theTls) { Dll::SetTls(theTls); }

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?