diff -r e71858845f73 -r e1758cbb96ac systemswstubs/examplecommonisc/IscDataTransmissionBase/inc/IscDataTransmissionBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/systemswstubs/examplecommonisc/IscDataTransmissionBase/inc/IscDataTransmissionBase.h Mon Oct 04 00:04:35 2010 +0300 @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2007 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: A reference implementation for ISC data transmission base. +* +*/ + + + +#ifndef ISCDATATRANSMISSIONBASE_H +#define ISCDATATRANSMISSIONBASE_H + +// INCLUDES +#include +#include + +// CONSTANTS +_LIT(KIscDataTransmissionDriverName,"IscDataTransmissionDriver"); + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class DIscDevice; +class DIscBufferAllocator; + +// CLASS DECLARATION + +/** +* DIscDataTransmissionBase defines the ISC Data Transmission Plug-In API +* +* @lib IscDataTransmissionBase.LIB +* @since 2.8 +*/ +class DIscDataTransmissionBase : public DLogicalDevice + { + + public: + /** + * C++ default constructor. + */ + IMPORT_C DIscDataTransmissionBase(); + + /** + * Destructor. + */ + IMPORT_C virtual ~DIscDataTransmissionBase(); + + public: // Functions from base class + + /** + * Implementation of pure-virtual Install from DLogicalDevice. This + * function calls Install2ndPhase. + * @since 2.8 + * @return TInt KErrNone + */ + IMPORT_C TInt Install(); + + /** + * This method makes the buffer allocations according to the + * configuration specified by the ISC Multiplexer + * @since 2.8 + * @param TIscBufferEntry* aBufferConfig pointer to buffer configuration table + * @return void + */ + IMPORT_C virtual void AllocBuffers( TIscBufferEntry* aBufferConfig ); + + public: // New functions + + /** + * Second phase initialization, called during ISC Multiplexer loading. + * ISC Data Transmission Driver must do all initialization here that + * are normally done in Install() + * @since ?Series60_version + * @return TInt KErrNone if successful + */ + virtual TInt Install2ndPhase() = 0; + + /** + * ISC Data Transmission driver initialization + * @since 2.8 + * @param aParameters Initialization parameters passed from + * ISC initialization file + * @param aDfc Dfc that must be runned after the initialization + * has been done + * @return void + */ + virtual void InitializeDataTransmission( TDesC8& aParameters, + TDfc* aDfc, + TInt& aErrorCode /* KErrNone */) = 0; + + /** + * In asynchronous data transmission checkin if transmission is not yet finished + * Access to this method is necessary since transmission can be asynchronous. + * @since 2.8 + * @return TBool EFalse / ETrue + */ + virtual TBool IsWritePending() { return EFalse; }; + + /** + * Send frame to Domestic OS + * @since 2.8 + * @param aFrame Frame to be sent + * @param aDfc Dfc function that must be runned after the frame is sent. + * Or the dfc can be runned immediately if the driver internally buffers + * the outgoing frames + * @param aMultiplexerDfc Dfc function in multiplexer to handle send complition + * @param aMultiplexerErrorCode error code for frame sending to modem + * @return void + */ + virtual void SendFrame( TDes8& aFrame, TDfc* aDfc, TAny* aFrameInfo ) = 0; + + /** + * Get the connection status + * @since 2.8 + * @return TInt EIscConnectionOk / EIscConnectionNotOk + */ + virtual TInt ConnectionStatus() = 0; + + /** + * Connects ISC Driver to ISC Data Transmission Driver + * @since 2.8 + * @param aDevice Pointer to DIscDevice class in ISC Driver + * @return void + */ + IMPORT_C virtual void Connect(DIscDevice* aDevice); + + /** + * Reserve memory block + * @since 2.8 + * @param aPtr Pointer to reserved memory block, NULL if not successful + * @param aSize Required minimun size of the block + * @return void + */ + IMPORT_C virtual void ReserveMemoryBlock( TDes8*& aPtr, TUint16 aSize); + + /** + * Release the reserved memory block + * @since 2.8 + * @param aPtr Pointer to memory block to be released + * @return void + */ + IMPORT_C virtual void ReleaseMemoryBlock( TDes8* aPtr ); + + protected: // New functions + + /** + * Transfer incoming frame to ISC Driver + * @since 2.8 + * @param aFrame Frame that was received + * @return void + */ + IMPORT_C void ReceiveFrame(TDesC8& aFrame); + + /** + * Notifies any connection status changes to ISC Driver + * @since 2.8 + * @param aStatus EIscConnectionOk / EIscConnectionNotOk + * @return void + */ + IMPORT_C void NotifyConnectionStatus( TInt aStatus ); + + private: // Data + + // pointer to DIscDevice class from ISC Driver + DIscDevice* iDevice; // No ownership + + // pointer to pre-allocated buffers + DIscBufferAllocator* iIscBufferAllocator; // Ownership + + }; + +#endif // ISCDATATRANSMISSIONBASE_H + +// End of File