diff -r 000000000000 -r 4e1aa6a622a0 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 +#include +#include +#include +#include +/*#ifndef __WINS__ +#include +#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 iOutMsg; + + // The message we may be currently receiving. + TBuf8 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