accessoryservices/remotecontrolfw/reference/serialbearer/inc/remconserialbearer.h
--- /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