tracesrv/reference/sf/adapt/osrndtools.nokia/xtiv2/drivers/src/xtirx.cpp
author Andrew Haigh <andrew.haigh@nokia.com>
Mon, 25 Oct 2010 18:15:05 +0100
branchBUG 3869 Reference XTI device driver for Open System Trace
changeset 61 0e5a77c79f1e
permissions -rw-r--r--
BUG 3869 Reference XTI device driver for Open System Trace
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
61
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     1
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     8
*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    11
*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    12
* Contributors:
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    13
*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    14
* Description:
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    15
*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    16
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    17
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    18
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    19
/** @file
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    20
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    21
XtiRx driver receives the data from Musti and sends it to Trace Core.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    22
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    23
*///=========================================================================
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    24
                                      
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    25
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    26
//- Include Files  ----------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    27
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    28
#include <rap.h>
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    29
#include <kernel/kernel.h>
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    30
#include <rap_priv.h>
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    31
#include <PowerResourceManager.h>
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    32
#include "xtirx.h"
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    33
#include "xtitx.h"
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    34
#include "XtiDebug.h"
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    35
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    36
//- Namespace ---------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    37
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    38
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    39
//- Using -------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    40
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    41
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    42
//- External Data -----------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    43
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    44
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    45
//- External Function Prototypes --------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    46
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    47
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    48
//- Constants ---------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    49
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    50
const TInt   KBitsInByte                    = 8;  // the amount of bits in byte
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    51
const TInt   KBitsInDataLengthMsg           = 32; // the amount of bits in data length message
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    52
const TInt   KMaxWakeupResponceCounterValue = 20; // the maximum number of attempts to writing to TraceCore buffer
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    53
const TInt   KWakeupResponceTimerInterval   = 100000; // time interval of attempts to writing to TraceCore buffer (microseconds)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    54
const TUint  KBitRate                       = 115200; // bit rate
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    55
const TUint8 KDefaultDfcPriority            = 3;      // Default DFC queue priority
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    56
const TInt   KInterruptId                   = TRap::EIntIdASR001_MUSTI_BUFFERFULL; // Uart interrupt line
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    57
const TInt   KPollPeriodMs                  = 2;      // time interval of checking if the Uart RX buffer has data (milliseconds)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    58
const TInt   KIdleTimerInterval             = 500000; // time interval for idle timer (microseconds)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    59
const TInt   KResetTimerInterval            = 800000; // time interval for idle timer (microseconds)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    60
const TInt   KMaxPoll                       = 25;    // the maximum number of checking if the Uart RX buffer has data 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    61
const TUint  KMaxXtiMessageLength           = 8204;    // Maximum size of XTI message send by Musti
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    62
const TUint  KClearPoll                     = 3; // Used when clearing UART buffer
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    63
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    64
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    65
/** The name of the created XTI RX thread */
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    66
_LIT( KThreadName, "XtiRxThread" );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    67
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    68
/** DFC thread priority */
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    69
const TInt KDfcThreadPriority = 26;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    70
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    71
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    72
//- Macros ------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    73
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    74
//- Global and Local Variables ----------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    75
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    76
XtiRx* XtiRx::iXtiRxPtr = NULL;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    77
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    78
TBool HasUartRxFifoData( TAny* aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    79
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    80
_LIT(KXTIRXDriver, "XTI RX Driver");
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    81
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    82
//- Local Function Prototypes -----------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    83
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    84
//===========================================================================
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    85
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    86
//- Local Functions ---------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    87
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    88
//===========================================================================
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    89
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    90
//- Member Functions --------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    91
void XtiRx::GPIOwakeIsr(TAny* aPtr)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    92
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    93
    XTI_TRACE( Kern::Printf("XtiRx::GPIOwakeIsr") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    94
    XTI_TRACE( Kern::Printf("XtiRx::GPIOwakeIsr <<") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    95
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    96
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    97
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    98
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
    99
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   100
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   101
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   102
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   103
                  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   104
    Constructor
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   105
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   106
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   107
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   108
XtiRx::XtiRx()
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   109
    : iDfcQueue( NULL )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   110
    , iReceiveDataDfc( ReceiveDataDfc, this,  KDefaultDfcPriority )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   111
    , iGPIOWakeupDfc( GPIOWakeupDfc, this, KDefaultDfcPriority )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   112
    , iSetPowerDfc( SetPowerDfc, this, KDefaultDfcPriority )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   113
    , iClearPowerDfc( ClearPowerDfc, this, KDefaultDfcPriority )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   114
    , iClocksOn( EFalse )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   115
    , iTraceCoreDfcPtr( NULL )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   116
    , iRxBufferPtr( NULL )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   117
    , iRxState( KRxStateIdle )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   118
    , iReceiveBufferFree( EFalse )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   119
    , iMessagelength( 0 )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   120
    , iWakeupResponseCounter( 0 )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   121
    , iClientId( 0 )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   122
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   123
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   124
    // Register the PRM client
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   125
    TInt r = TPowerResourceManager::RegisterClient( iClientId, KXTIRXDriver );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   126
    __ASSERT_DEBUG(r==KErrNone,Kern::Fault("Registration with the power manager failed",r));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   127
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   128
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   129
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   130
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   131
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   132
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   133
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   134
    ~XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   135
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   136
    Destructor
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   137
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   138
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   139
XtiRx::~XtiRx()
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   140
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   141
    iRxBufferPtr = NULL;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   142
    iTraceCoreDfcPtr = NULL;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   143
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   144
    // Deregister the PRM client
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   145
    TPowerResourceManager::DeRegisterClient( iClientId );    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   146
    iDfcQueue = NULL;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   147
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   148
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   149
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   150
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   151
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   152
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   153
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   154
    Instance
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   155
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   156
    Return an instance to XtiRx interface. This method returns the
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   157
    only XtiRx instance system can have, it is not possible to create
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   158
    new instances of this class.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   159
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   160
    Return Values:          iXtiRxPtr* An instance to XtiRx class
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   161
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   162
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   163
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   164
XtiRx* XtiRx::Instance( )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   165
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   166
    XTI_TRACE( Kern::Printf("XtiRx::Instance") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   167
    // Allow only 1 instance of XtiRx to exists at any time
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   168
    if ( iXtiRxPtr == NULL )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   169
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   170
        iXtiRxPtr = new XtiRx();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   171
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   172
    return iXtiRxPtr;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   173
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   174
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   175
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   176
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   177
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   178
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   179
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   180
    Init
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   181
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   182
    Bind Uart interrupt, configure Uart HW and start receiving the data 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   183
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   184
    Return Values: KErrNone or error code
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   185
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   186
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   187
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   188
TInt XtiRx::Init()      
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   189
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   190
    XTI_TRACE( Kern::Printf("XtiRx::Init >>") ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   191
    TInt ret( KErrNone );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   192
    SetPowerRequirements();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   193
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   194
    XTI_TRACE( Kern::Printf("XtiRx::Init - Bind method Isr to uart interrupt 0x%x", KInterruptId) ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   195
    ret = Interrupt::Bind( KInterruptId, Isr, this );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   196
       
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   197
    if( ret == KErrNone ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   198
        {                        
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   199
        ret = Configure();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   200
        if( ret == KErrNone )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   201
            {                           
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   202
            ret = Start();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   203
            }         
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   204
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   205
    XTI_TRACE( Kern::Printf("XtiRx::Init <<, ret= %d", ret))
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   206
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   207
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   208
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   209
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   210
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   211
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   212
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   213
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   214
    ConfigureUart
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   215
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   216
    Configure Uart HW.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   217
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   218
    Return Value: KErrNone or error code
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   219
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   220
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   221
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   222
TInt XtiRx::ConfigureUart() const
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   223
{
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   224
    XTI_TRACE( Kern::Printf("XtiRx::ConfigureUart >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   225
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   226
    TInt ret( KErrNone );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   227
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   228
    XTI_TRACE( Kern::Printf("XtiRx::ConfigureUart - Disable uart interrupt 0x%x", KInterruptId) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   229
    ret = Interrupt::Disable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   230
    __ASSERT_DEBUG(ret == KErrNone, Kern::Fault( ("XtiRx::ConfigureUart"), __LINE__ ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   231
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   232
    TUint32 clock_in_hz = TRap::McuppClockInHz();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   233
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   234
    TUint32 baud_rate = 2304000;  // Use Musti default bit rate
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   235
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   236
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   237
    // Integer part of bitduration value for Rx (the bit window)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   238
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   239
    TUint32 mcuClock;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   240
    mcuClock = clock_in_hz / baud_rate;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   241
    TUint32 rx_bitduration = (TUint32)((mcuClock - 3) / 2);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   242
    TUint32 rx_modulo = rx_bitduration / 5;  // Use the recommended 20%
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   243
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   244
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   245
    // Fractional part: The formula is rewritten like this in order to
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   246
    // be able to use integer math:
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   247
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   248
    // rx_bitduration = clock_in_hz / (2 * baud_rate) - 3/2
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   249
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   250
    // Thus the fractional part of rx_bitduration can be calculated as
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   251
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   252
    //      f = f1 - f2
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   253
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   254
    // where
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   255
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   256
    //      f1 = fractional_part_of( clock_in_hz / (2 * baud_rate) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   257
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   258
    //      f2 = fractional_part_of( 3/2 )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   259
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   260
    // The two fractional parts are calculated as follows:
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   261
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   262
    // f1 = ( clock_in_hz % (2 * baud_rate) ) * ( 2^32 / 2 * baud_rate )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   263
    //    = ( clock_in_hz % (2 * baud_rate) ) * ( 2^31 / baud_rate )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   264
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   265
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   266
    // f2 = ( 3 % 2 ) * ( 2^32 / 2 )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   267
    //    =     1     *   2^31
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   268
    //
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   269
    TUint32 rx_fraction = (clock_in_hz % (baud_rate << 1)) * ( (TUint32)(1<<31)/baud_rate ) - (TUint32)(1<<31);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   270
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   271
    XTI_TRACE( Kern::Printf( "XtiRx Rx parameters:" ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   272
    XTI_TRACE( Kern::Printf( "Baud             %u", baud_rate ) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   273
    XTI_TRACE( Kern::Printf( "Mcupp clock freq %u", clock_in_hz ) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   274
    XTI_TRACE( Kern::Printf( "Write registers:" ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   275
    XTI_TRACE( Kern::Printf( "RX-bitduration   %u", rx_bitduration) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   276
    XTI_TRACE( Kern::Printf( "RX-pulseduration %u", rx_bitduration) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   277
    XTI_TRACE( Kern::Printf( "RX-fraction      %u", rx_fraction) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   278
    XTI_TRACE( Kern::Printf( "RX-modulo        %u", rx_modulo) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   279
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   280
    // Configure static Rx parameters
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   281
    // Setting up ASR001
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   282
    TRap::SetRegister32(ASR001_T_V_MODE_RUN, KRapRegXTIASR001_MODE);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   283
    TRap::SetRegister32(rx_modulo, KRapRegXTIASR001_MODULO);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   284
    TRap::SetRegister32(ASR001_T_V_POLARITY_POSITIVE, KRapRegXTIASR001_POLARITY);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   285
    TRap::SetRegister32(ASR001_T_V_FLOW_OFF, KRapRegXTIASR001_FLOW);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   286
    TRap::SetRegister32(ASR001_T_V_RXSTATE_IDLE, KRapRegXTIASR001_RXSTATE);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   287
    TRap::SetRegister32(rx_bitduration, KRapRegXTIASR001_BITDURATION); /* Bitrate = 2304000 b/s */
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   288
    TRap::SetRegister32(rx_bitduration, KRapRegXTIASR001_PULSEDURATION);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   289
    TRap::SetRegister32(rx_fraction, KRapRegXTIASR001_FRACTION);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   290
    // Note that only the upper bits of the written fraction will have effect
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   291
    // e.g. 0x40000000
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   292
    //TRap::SetRegister32(0x42AAAAAA, KRapRegXTIASR001_FRACTION);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   293
    TRap::SetRegister32(0x02, KRapRegXTIASR001_THRESHOLD);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   294
    TRap::SetRegister32(0x07, KRapRegXTIASR001_DATABITS); /* 8 Data bits */
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   295
    TRap::SetRegister32(0x00, KRapRegXTIASR001_STOPBITS); /* 1 Stop bits */
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   296
    TRap::SetRegister32(ASR001_T_V_PARITY_NONE, KRapRegXTIASR001_PARITY); /* No parity */
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   297
    TRap::SetRegister32(0x00, KRapRegXTIASR001_WATERMARK);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   298
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   299
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   300
    XTI_TRACE( Kern::Printf("XtiRx::ConfigureUart <<") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   301
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   302
}
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   303
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   304
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   305
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   306
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   307
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   308
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   309
    Configure
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   310
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   311
    Configure HW.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   312
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   313
    Return Value: KErrNone or error code
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   314
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   315
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   316
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   317
TInt XtiRx::Configure() const
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   318
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   319
    TInt ret( KErrNone );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   320
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   321
    XTI_TRACE( Kern::Printf("XtiRx::Configure >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   322
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   323
    // Configure UART
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   324
    ret = ConfigureUart();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   325
    __ASSERT_DEBUG(ret == KErrNone, Kern::Fault( ("XtiRx::Configure"), __LINE__ ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   326
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   327
    XTI_TRACE( Kern::Printf("XtiRx::Configure <<") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   328
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   329
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   330
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   331
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   332
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   333
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   334
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   335
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   336
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   337
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   338
    Isr
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   339
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   340
    Uart interrupt service routine
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   341
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   342
    @param   aPtr  Pointer to XtiRx object
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   343
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   344
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   345
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   346
void XtiRx::Isr(TAny* aPtr)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   347
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   348
    XTI_TRACE( Kern::Printf("XtiRx::Isr >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   349
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::Isr - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   350
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   351
    XTI_TRACE( Kern::Printf("XtiRx::Isr - Disable uart interrupt 0x%x", KInterruptId) )  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   352
    TInt ret = Interrupt::Disable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   353
    __ASSERT_DEBUG(ret == KErrNone, Kern::Fault( ("XtiRx::Isr"), __LINE__ ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   354
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   355
    XtiRx& self = *static_cast<XtiRx*>( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   356
    XTI_TRACE( Kern::Printf("XtiRx::Isr - Add ReceiveDataDfc") )     
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   357
    self.iReceiveDataDfc.Add();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   358
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   359
    XTI_TRACE( Kern::Printf("XtiRx::Isr <<") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   360
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   361
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   362
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   363
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   364
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   365
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   366
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   367
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   368
    ReceiveDataDfc
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   369
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   370
    Function called in DFC context after Uart interrupt. Reads the data
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   371
    from Uart RX FIFO and saves the data to the buffer which is defined
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   372
    XtiRx::Register function. 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   373
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   374
    @param   aPtr  Pointer to XtiRx object    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   375
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   376
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   377
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   378
void XtiRx::ReceiveDataDfc( TAny* aPtr )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   379
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   380
    XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   381
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::ReceiveDataDfc - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   382
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   383
    XtiRx& self = *static_cast< XtiRx* >( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   384
    TInt ret( KErrNone );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   385
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   386
    XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Cancel timer") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   387
    self.iIdleTimer.Cancel();    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   388
    // Start timer safety timer to clear state machine if problems
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   389
    XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Start timer safety timer to clear state machine if problems") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   390
    self.iIdleTimer.OneShot( KResetTimerInterval, XtiRx::ResetReceiveState, aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   391
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   392
    self.SetPowerRequirements(); 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   393
    if( self.iRxState == KRxStateIdle )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   394
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   395
        XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - XTI state = KRxStateIdle") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   396
        TInt count(0);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   397
        // Clear Uart RX buffer
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   398
        XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Clear Uart RX buffer") ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   399
 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   400
        while( TRap::Register32(KRapRegXTIASR001_GAUGE) != 0 || count < KClearPoll )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   401
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   402
            TInt r = Kern::PollingWait(HasUartRxFifoData, (TAny*)&self , KPollPeriodMs, KMaxPoll);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   403
            if( r == KErrNone  )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   404
                {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   405
                TRap::Register32(KRapRegXTIASR001_DATA);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   406
                }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   407
            count++;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   408
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   409
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   410
        // check if Trace Core has read the previous data package
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   411
        if( self.iReceiveBufferFree )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   412
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   413
            if( ret == KErrNone ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   414
                {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   415
                // Send bit rate to Musti
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   416
                XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Send bit rate to Musti") ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   417
                XtiTx::SetBitRate( KBitRate );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   418
                // Waiting for the data length message
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   419
                XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Waiting for the data length message") ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   420
                self.iRxState = KRxStateWaitDataLenMsg;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   421
                }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   422
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   423
        else
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   424
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   425
            XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Buffer not free -> start timer") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   426
            self.iWakeupResponseTimer.OneShot( KWakeupResponceTimerInterval, XtiRx::ReceiveDataDfc, aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   427
            self.iWakeupResponseCounter++;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   428
            if( self.iWakeupResponseCounter == KMaxWakeupResponceCounterValue )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   429
                {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   430
                self.iWakeupResponseTimer.Cancel();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   431
                ret = KErrGeneral;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   432
                } 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   433
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   434
        XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Enable uart interrupt 0x%x", KInterruptId) )    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   435
        Interrupt::Enable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   436
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   437
    else if( self.iRxState == KRxStateWaitDataLenMsg ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   438
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   439
        XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - XTI state = KRxStateWaitDataLenMsg") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   440
        self.iMessagelength = 0;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   441
        // Read XTI message length. The number of bytes is sent as a 32-bit binary little-endian integer.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   442
        TInt r( KErrNone );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   443
        for( TInt i = 0 ; (i < KBitsInDataLengthMsg) ; i += KBitsInByte )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   444
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   445
            //TUint32 len = 0;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   446
            r = Kern::PollingWait(HasUartRxFifoData, (TAny*)&self , KPollPeriodMs, KMaxPoll);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   447
            if( r == KErrNone  )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   448
                {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   449
                //len = TRap::Register32(KRapRegXTIASR001_DATA) << i;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   450
                self.iMessagelength += TRap::Register32(KRapRegXTIASR001_DATA) << i;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   451
                }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   452
            //__DEBUG_ONLY (Kern::Printf("XtiRx::ReceiveDataDfc - len = %d", len) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   453
            //self.iMessagelength += len;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   454
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   455
        __DEBUG_ONLY (Kern::Printf("XtiRx::ReceiveDataDfc - iMessagelength = %d", self.iMessagelength) );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   456
        // acknowledgement to Musti
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   457
        
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   458
        if( r == KErrNone )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   459
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   460
            XtiTx::SendDataLenAckMsg();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   461
            self.iRxState = KRxStateWaitDataMsg; 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   462
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   463
        else
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   464
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   465
            self.iXtiRxPtr->iReceiveBufferFree = ETrue;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   466
            self.iXtiRxPtr->iRxBufferPtr->Zero();  // set data length to zero
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   467
            self.iRxState = KRxStateIdle;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   468
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   469
        XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Enable uart interrupt 0x%x", KInterruptId) )  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   470
        Interrupt::Enable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   471
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   472
    else
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   473
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   474
        XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - XTI state = KRxStateWaitDataMsg") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   475
        ret = self.ReadData();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   476
        if( ret == KErrNone )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   477
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   478
            // acknowledgement to Musti
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   479
            XtiTx::SendDataRxAckMsg();   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   480
            self.iReceiveBufferFree = EFalse;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   481
            // Cancel reset timer
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   482
            XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Cancel reset timer") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   483
            self.iIdleTimer.Cancel();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   484
            // inform Trace core that the data is in the receive buffer
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   485
            self.iTraceCoreDfcPtr->Enque();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   486
            // Start standby timer
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   487
            XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Start standby timer") ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   488
            self.iRxState = KRxStateIdle;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   489
            self.iIdleTimer.OneShot( KIdleTimerInterval, XtiRx::StandbyMode, aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   490
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   491
        XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc - Enable uart interrupt 0x%x", KInterruptId) )  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   492
        Interrupt::Enable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   493
        }  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   494
    XTI_TRACE( Kern::Printf("XtiRx::ReceiveDataDfc <<") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   495
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   496
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   497
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   498
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   499
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   500
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   501
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   502
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   503
    GPIOWakeupDfc
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   504
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   505
    Function called in DFC context after GPIO interrupt. Mux the UART PIN and
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   506
    start UART clocks
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   507
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   508
    @param   aPtr  Pointer to XtiRx object    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   509
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   510
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   511
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   512
void XtiRx::GPIOWakeupDfc( TAny* aPtr )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   513
{
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   514
    XTI_TRACE( Kern::Printf("XtiRx::GPIOWakeupDfc >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   515
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::GPIOWakeupDfc - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   516
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   517
    XtiRx& self = *static_cast< XtiRx* >( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   518
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   519
    self.SetPowerRequirements();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   520
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   521
    XTI_TRACE( Kern::Printf("XtiRx::GPIOWakeupDfc - Enable uart interrupt 0x%x", KInterruptId) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   522
    TInt ret = Interrupt::Enable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   523
    __ASSERT_DEBUG(ret == KErrNone, Kern::Fault( ("XtiRx::GPIOWakeupDfc"), __LINE__ ));   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   524
          
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   525
    XTI_TRACE( Kern::Printf("XtiRx::GPIOWakeupDfc <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   526
}
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   527
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   528
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   529
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   530
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   531
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   532
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   533
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   534
    GPIODeepSleepWakeupDfc
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   535
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   536
    Function called in DFC context after GPIO interrupt in deep sleep. Mux the UART PIN and
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   537
    start UART clocks
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   538
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   539
    @param   aPtr  Pointer to XtiRx object    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   540
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   541
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   542
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   543
void XtiRx::GPIODeepSleepWakeupDfc( TAny* aPtr )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   544
{
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   545
    XTI_TRACE( Kern::Printf("XtiRx::GPIODeepSleepWakeupDfc >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   546
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::GPIODeepSleepWakeupDfc - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   547
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   548
    XtiRx& self = *static_cast< XtiRx* >( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   549
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   550
    XTI_TRACE( Kern::Printf("XtiRx::GPIODeepSleepWakeupDfc - Bind method Isr to uart interrupt 0x%x", KInterruptId) ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   551
    TInt ret = Interrupt::Bind( KInterruptId, Isr, aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   552
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   553
    self.SetPowerRequirements();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   554
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   555
    self.ConfigureUart();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   556
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   557
    XTI_TRACE( Kern::Printf("XtiRx::GPIODeepSleepWakeupDfc - Enable uart interrupt 0x%x", KInterruptId) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   558
    ret = Interrupt::Enable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   559
    __ASSERT_DEBUG(ret == KErrNone, Kern::Fault( ("XtiRx::GPIODeepSleepWakeupDfc"), __LINE__ ));   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   560
          
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   561
    XTI_TRACE( Kern::Printf("XtiRx::GPIODeepSleepWakeupDfc <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   562
}
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   563
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   564
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   565
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   566
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   567
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   568
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   569
    SetPowerDfc
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   570
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   571
    Call SetPowerRequirements
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   572
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   573
    @param   aPtr  Pointer to XtiRx object    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   574
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   575
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   576
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   577
void XtiRx::SetPowerDfc( TAny* aPtr )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   578
{
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   579
    XTI_TRACE( Kern::Printf("XtiRx::SetPowerDfc >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   580
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::SetPowerDfc - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   581
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   582
    XtiRx& self = *static_cast< XtiRx* >( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   583
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   584
    self.SetPowerRequirements();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   585
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   586
    XTI_TRACE( Kern::Printf( "XtiRx::SetPowerDfc <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   587
}
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   588
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   589
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   590
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   591
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   592
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   593
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   594
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   595
    ClearPowerDfc
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   596
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   597
    Call ClearPowerRequirements
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   598
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   599
    @param   aPtr  Pointer to XtiRx object    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   600
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   601
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   602
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   603
void XtiRx::ClearPowerDfc( TAny* aPtr )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   604
{
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   605
    XTI_TRACE( Kern::Printf("XtiRx::ClearPowerDfc >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   606
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::ClearPowerDfc - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   607
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   608
    XtiRx& self = *static_cast< XtiRx* >( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   609
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   610
    self.ClearPowerRequirements();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   611
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   612
    XTI_TRACE( Kern::Printf( "XtiRx::ClearPowerDfc <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   613
}
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   614
         
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   615
         
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   616
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   617
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   618
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   619
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   620
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   621
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   622
    ReadRxData
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   623
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   624
    Read data from Uart RX FIFO
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   625
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   626
    Return Value: KErrNone or error code
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   627
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   628
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   629
TInt XtiRx::ReadData()
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   630
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   631
    XTI_TRACE( Kern::Printf("XtiRx::ReadData >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   632
    TInt ret( KErrNone );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   633
    TInt error( KErrNone );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   634
    TUint32 character( 0 );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   635
    __ASSERT_DEBUG(iRxBufferPtr != NULL, Kern::Fault( ("XtiRx::ReadData - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   636
    iRxBufferPtr->Zero();  // set data length to zero
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   637
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   638
    if( iMessagelength > KMaxXtiMessageLength )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   639
        {     
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   640
        XTI_TRACE( Kern::Printf("XtiRx::ReadData - Message is greater than the maximum size of XTI message") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   641
        ret = KErrGeneral;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   642
        }                    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   643
    else
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   644
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   645
        while( iMessagelength != 0 && ret == KErrNone )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   646
            {           
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   647
            ret = Kern::PollingWait(HasUartRxFifoData, this , KPollPeriodMs, KMaxPoll);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   648
            if( ret == KErrNone  )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   649
                {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   650
                character = TRap::Register32(KRapRegXTIASR001_DATA);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   651
                XTI_TRACE( Kern::Printf("XtiRx::ReadData - data = 0x%x",character) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   652
                error = character >> KBitsInByte;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   653
                character = character & KMaxTUint8;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   654
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   655
                /*Check for receive errors
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   656
                Error flags are OR'ed into the high bits of char
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   657
                */
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   658
 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   659
                if( error & ASR001_T_V_ERROR_OVERRUN) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   660
                    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   661
                     XTI_TRACE( Kern::Printf("XtiRx::ReadData - Overrun ERROR") ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   662
                    ret = KErrCommsOverrun;  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   663
                    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   664
                if( error & ASR001_T_V_ERROR_PARITY)
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   665
                    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   666
                    XTI_TRACE( Kern::Printf("XtiRx::ReadData - Parity ERROR") ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   667
                    ret = KErrCommsParity;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   668
                    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   669
                if( error & ASR001_T_V_ERROR_FRAMING )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   670
                    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   671
                    XTI_TRACE( Kern::Printf("XtiRx::ReadData - Framing ERROR") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   672
                    ret = KErrCommsFrame;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   673
                    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   674
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   675
                iRxBufferPtr->Append( character );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   676
                iMessagelength--;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   677
                }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   678
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   679
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   680
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   681
    XTI_TRACE( Kern::Printf("XtiRx::ReadData <<, ret= %d", ret) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   682
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   683
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   684
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   685
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   686
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   687
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   688
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   689
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   690
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   691
    Register
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   692
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   693
    This method is used to register an user to the driver.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   694
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   695
    @param   aDfc         Pointer to the DFC function which is called by the XTI driver when the data is
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   696
                          available in the receive buffer.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   697
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   698
    @param   aBuf         Receive buffer 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   699
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   700
    Return Value:         KErrNone or error code  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   701
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   702
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   703
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   704
EXPORT_C TInt XtiRx::Register( TDfc* aDfc, TDes8& aBuf  )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   705
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   706
    __ASSERT_DEBUG(aDfc != NULL, Kern::Fault( ("XtiRx::Register - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   707
    XTI_TRACE( Kern::Printf("XtiRx::Register >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   708
    TInt ret(KErrNone);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   709
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   710
    // Create DFC thread inside of which the operations are performed
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   711
    if( iXtiRxPtr != NULL )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   712
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   713
        ret = Kern::DfcQCreate( iXtiRxPtr->iDfcQueue, KDfcThreadPriority, &KThreadName );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   714
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   715
     else
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   716
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   717
        ret = KErrGeneral;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   718
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   719
        
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   720
    if(ret == KErrNone )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   721
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   722
        iXtiRxPtr->iReceiveDataDfc.SetDfcQ( iXtiRxPtr->iDfcQueue );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   723
        iXtiRxPtr->iGPIOWakeupDfc.SetDfcQ( iXtiRxPtr->iDfcQueue );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   724
        iXtiRxPtr->iSetPowerDfc.SetDfcQ( iXtiRxPtr->iDfcQueue );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   725
        iXtiRxPtr->iClearPowerDfc.SetDfcQ( iXtiRxPtr->iDfcQueue );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   726
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   727
        ret = iXtiRxPtr->Init();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   728
        if( ret == KErrNone )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   729
            {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   730
            iXtiRxPtr->iTraceCoreDfcPtr = aDfc;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   731
            iXtiRxPtr->iRxBufferPtr = &aBuf;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   732
            iXtiRxPtr->iReceiveBufferFree = ETrue;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   733
            }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   734
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   735
               
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   736
    XTI_TRACE( Kern::Printf("XtiRx::Register <<, ret= %d",ret) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   737
    iXtiRxPtr->ClearPowerRequirements();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   738
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   739
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   740
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   741
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   742
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   743
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   744
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   745
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   746
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   747
    SetReceiveBufferRead
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   748
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   749
    User of the driver calls this function when the receive buffer has been read
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   750
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   751
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   752
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   753
EXPORT_C void XtiRx::SetReceiveBufferRead()
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   754
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   755
    XTI_TRACE( Kern::Printf("XtiRx::SetReceiveBufferRead >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   756
    iXtiRxPtr->iReceiveBufferFree = ETrue;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   757
    iXtiRxPtr->iRxBufferPtr->Zero();  // set data length to zero
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   758
    XTI_TRACE( Kern::Printf("XtiRx::SetReceiveBufferRead <<") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   759
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   760
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   761
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   762
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   763
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   764
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   765
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   766
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   767
    Start
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   768
                
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   769
    Start receiving characters
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   770
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   771
    Return Value:         KErrNone or error code
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   772
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   773
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   774
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   775
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   776
TInt XtiRx::Start() const 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   777
    {   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   778
    XTI_TRACE( Kern::Printf( "XtiRx::Start >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   779
    TInt ret(KErrNone);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   780
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   781
    // Clear Uart RX buffer
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   782
     XTI_TRACE( Kern::Printf( "XtiRx::Start - Clear Uart RX buffer") )   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   783
    while(  TRap::Register32(KRapRegXTIASR001_GAUGE) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   784
        { 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   785
         TRap::Register32(KRapRegXTIASR001_DATA);
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   786
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   787
        
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   788
    if( ret == KErrNone )    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   789
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   790
        // Enable Uart interrupt 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   791
        XTI_TRACE( Kern::Printf( "XtiRx::Start - Enable uart interrupt  0x%x", KInterruptId) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   792
        ret = Interrupt::Enable( KInterruptId );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   793
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   794
    XTI_TRACE( Kern::Printf( "XtiRx::Start <<, ret= %d",ret) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   795
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   796
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   797
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   798
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   799
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   800
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   801
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   802
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   803
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   804
    SetPowerRequirements
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   805
                
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   806
    Set power requirements
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   807
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   808
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   809
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   810
void XtiRx::SetPowerRequirements() 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   811
    {   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   812
    XTI_TRACE( Kern::Printf( "XtiRx::SetPowerRequirements >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   813
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   814
    if( iClocksOn == EFalse )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   815
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   816
        // Request to enable a clock resource
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   817
        XTI_TRACE( Kern::Printf( "XtiRx::SetPowerRequirements - Request to enable a clock resource") )        
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   818
      
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   819
        iClocksOn = ETrue;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   820
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   821
    XTI_TRACE( Kern::Printf( "XtiRx::SetPowerRequirements <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   822
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   823
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   824
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   825
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   826
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   827
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   828
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   829
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   830
    ClearPowerRequirements
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   831
                
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   832
    Clear power requirements
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   833
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   834
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   835
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   836
void XtiRx::ClearPowerRequirements() 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   837
    {   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   838
    XTI_TRACE( Kern::Printf( "XtiRx::ClearPowerRequirements >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   839
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   840
    if( iClocksOn )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   841
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   842
        iClocksOn = EFalse;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   843
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   844
    XTI_TRACE( Kern::Printf( "XtiRx::ClearPowerRequirements <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   845
    }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   846
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   847
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   848
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   849
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   850
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   851
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   852
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   853
    StandbyMode
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   854
                
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   855
    Set the driver to standby mode
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   856
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   857
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   858
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   859
void XtiRx::StandbyMode( TAny* aPtr ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   860
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   861
    XTI_TRACE( Kern::Printf( "XtiRx::StandbyMode >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   862
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::StandbyMode - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   863
    XtiRx& self = *static_cast< XtiRx* >( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   864
    XTI_TRACE( Kern::Printf( "XtiRx::StandbyMode - Enque ClearPowerDfc") )    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   865
    self.iClearPowerDfc.Enque();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   866
    self.iRxState = KRxStateIdle;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   867
    XTI_TRACE( Kern::Printf( "XtiRx::StandbyMode <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   868
    }    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   869
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   870
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   871
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   872
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   873
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   874
    XtiRx
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   875
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   876
    ResetReceiveState
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   877
                
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   878
    Reset receiver state machine.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   879
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   880
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   881
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   882
void XtiRx::ResetReceiveState( TAny* aPtr ) 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   883
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   884
    XTI_TRACE( Kern::Printf( "XtiRx::ResetReceiveState >>") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   885
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::ResetReceiveState - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   886
    XtiRx& self = *static_cast< XtiRx* >( aPtr );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   887
    self.iXtiRxPtr->iReceiveBufferFree = ETrue;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   888
    self.iXtiRxPtr->iRxBufferPtr->Zero();  // set data length to zero
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   889
    XTI_TRACE( Kern::Printf( "XtiRx::ResetReceiveState - Enque ClearPowerDfc") )    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   890
    self.iClearPowerDfc.Enque();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   891
    self.iRxState = KRxStateIdle;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   892
    XTI_TRACE( Kern::Printf( "XtiRx::ResetReceiveState <<" ) )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   893
    }   
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   894
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   895
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   896
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   897
    
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   898
//===========================================================================
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   899
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   900
//- Global Functions --------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   901
                  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   902
/*
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   903
----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   904
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   905
    HasUartRxFifoData
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   906
                
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   907
    Check if there is data in the Uart RX FiFo. 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   908
        
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   909
    @param   aPtr  Pointer to XtiRx object 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   910
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   911
    Return Values: ETrue ot EFalse
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   912
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   913
-----------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   914
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   915
TBool HasUartRxFifoData( TAny* aPtr  )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   916
  {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   917
    __ASSERT_DEBUG(aPtr != NULL, Kern::Fault( ("XtiRx::HasUartRxFifoData - Null pointer!"), 0 ));
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   918
    TBool ret( ETrue );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   919
  
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   920
    if( TRap::Register32(KRapRegXTIASR001_GAUGE) == 0 )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   921
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   922
        XTI_TRACE( Kern::Printf("XtiRx::HasUartRxFifoData - No data in RX FIFO") )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   923
        ret = EFalse;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   924
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   925
        
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   926
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   927
  }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   928
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   929
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   930
//---------------------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   931
/**
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   932
    The entry point for a standard extension. Creates Xti extension.
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   933
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   934
    @return KErrNone, if successful
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   935
*/
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   936
DECLARE_STANDARD_EXTENSION()
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   937
    {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   938
    TInt ret( KErrNoMemory );
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   939
    XtiRx* xtirx = XtiRx::Instance();
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   940
    if ( xtirx != NULL )
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   941
        {
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   942
        ret = KErrNone;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   943
        }
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   944
    return ret;
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   945
    }                 
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   946
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   947
//- Namespace ---------------------------------------------------------------
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   948
0e5a77c79f1e BUG 3869 Reference XTI device driver for Open System Trace
Andrew Haigh <andrew.haigh@nokia.com>
parents:
diff changeset
   949
// End of File