accessoryservices/remotecontrolfw/reference/serialbearer/inc/remconserialbearer.h
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/remotecontrolfw/reference/serialbearer/inc/remconserialbearer.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,146 @@
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef REMCONSERIALBEARER_H
+#define REMCONSERIALBEARER_H
+
+#include <e32base.h>
+#include <c32comm.h>
+#include <remcon/remconbearerplugin.h>
+#include <remcon/remconbearerinterface.h>
+#include <remcon/messagetype.h>
+/*#ifndef __WINS__
+#include <usbman.h>
+#endif
+*/
+#include "sendobserver.h"
+#include "receiveobserver.h"
+
+class CSender;
+class CReceiver;
+
+/**
+Concrete serial bearer.
+*/
+NONSHARABLE_CLASS(CRemConSerialBearer) : public CRemConBearerPlugin, 
+							public MRemConBearerInterface,
+							public MSendObserver, 
+							public MReceiveObserver
+	{
+public:
+	static CRemConSerialBearer* NewL(TBearerParams& aParams);
+	~CRemConSerialBearer();
+
+private: // from CRemConBearerPlugin
+	TAny* GetInterface(TUid aUid);
+
+private: // from MRemConBearerInterface
+	TInt GetResponse(TUid& aInterfaceUid, 
+		TUint& aTransactionId, 
+		TUint& aOperationId, 
+		RBuf8& aData, 
+		TRemConAddress& aAddr);
+	TInt SendCommand(TUid aInterfaceUid, 
+		TUint aCommand, 
+		TUint aTransactionId,  
+		RBuf8& aData, 
+		const TRemConAddress& aAddr);
+	TInt GetCommand(TUid& aInterfaceUid, 
+		TUint& aTransactionId, 
+		TUint& aCommand, 
+		RBuf8& aData, 
+		TRemConAddress& aAddr);
+	TInt SendResponse(TUid aInterfaceUid, 
+		TUint aOperationId, 
+		TUint aTransactionId, 
+		RBuf8& aData, 
+		const TRemConAddress& aAddr);
+	void ConnectRequest(const TRemConAddress& aAddr);
+	void DisconnectRequest(const TRemConAddress& aAddr);
+	void ClientStatus(TBool aControllerPresent, TBool aTargetPresent);
+	TSecurityPolicy SecurityPolicy() const;
+
+private: // from MSendObserver
+	void MsoSendComplete(TInt aError);
+
+private: // from MReceiveObserver
+	void MroReceiveComplete(TInt aError);
+
+private:
+	CRemConSerialBearer(TBearerParams& aParams);
+	void ConstructL();
+
+private: // utility
+	TInt DoSend(TUid aInterfaceUid, 
+		TUint aOperationId, 
+		RBuf8& aData, 
+		TRemConMessageType aMsgType);
+	void ConnectL();
+	void Receive();
+	void ClosePort();
+	void DoGetResponseL(TUid& aInterfaceUid, 
+		TUint& aOperationId, 
+		RBuf8& aData, 
+		TRemConAddress& aAddr);
+	void DoGetCommandL(TUid& aInterfaceUid,
+		TUint& aOperationId, 
+		RBuf8& aData, 
+		TRemConAddress& aAddr);
+
+private: // owned
+/*#ifndef __WINS__
+	RUsb iUsb;
+#endif
+*/	RCommServ iCommServ;
+	RComm iComm;
+
+	CSender* iSender;
+	CReceiver* iReceiver;
+
+	// The format of a serial bearer message is:
+	// 012345678901234567890123456789
+	// 0xaaaaaaaa 0xbb XXX YYYYYYYYYY
+	// Where 
+	//	aaaaaaaa is the interface UID
+	//	bb is the operation ID
+	//	XXX is Cmd or Rsp
+	//	YYYYYYYYYY is any associated data
+	// The message is always KRemConSerialBearerMessageLength bytes long.
+	static const TUint KRemConSerialBearerMessageLength = 30;
+
+	// The message we may be currently sending.
+	TBuf8<KRemConSerialBearerMessageLength> iOutMsg;
+
+	// The message we may be currently receiving.
+	TBuf8<KRemConSerialBearerMessageLength> iInMsg;
+
+	// Last received and corrected-decoded message.
+	TUid iInterfaceUid;
+	TUint iOperationId;
+	TRemConMessageType iMsgType;
+	TBuf8<10> iData; // This is the length of the associated data in our naive 
+	// protocol.
+
+	// The ID of the current transaction- RemCon gives us this, and expects us 
+	// to remember it.
+	TUint iTransactionId;
+	};
+
+#endif // REMCONSERIALBEARER_H