Update contrib.
1 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
18 #if defined(_UNICODE) && !defined(UNICODE)
25 GLREF_C TInt MapLastErrorEpoc();
26 GLREF_C TMMCErr MapLastErrorMmc();
28 const TInt KMediaChangeTickInterval=20000; // Units 1uS
30 const TInt KTotalWinsCardSlots=2;
31 const TInt KTotalWinsCards=(KTotalWinsCardSlots+1); // Need 2 cards for slot 0
33 const TUint32 KMMCWinsCardOCRValue = 0x00FFFF00;
35 const TInt KSDMediaAreasPerCard = 2;
36 const TInt KSDUserArea = 0;
37 const TInt KSDProtectedArea = 1;
42 void GetCSD(TUint8* aResp) const;
45 TMediaPassword* iPWD; // PWD_LEN calculated from PWD.
46 TBool iIsLocked; // Could use iCurrentCardIsLocked
47 TMMCardStateEnum iState; // Simulation of card's current state
48 HANDLE iAreaHandles[KSDMediaAreasPerCard];
54 class DWinsSDStack : public DSDStack
57 DWinsSDStack(TInt aBus, DMMCSocket* aSocket);
60 virtual void MachineInfo(TMMCMachineInfo& aMachineInfo);
62 virtual void AdjustPartialRead(const TMMCard* aCard, TUint32 aStart, TUint32 aEnd, TUint32* aPhysStart, TUint32* aPhysEnd) const;
63 virtual void GetBufferInfo(TUint8** aMDBuf, TInt* aMDBufLen);
64 virtual void AddressCard(TInt aCardNumber);
68 EWinsMMCLidOpenIntBind=0,
69 EWinsMMCBadMachineInfo=1,
70 EWinsMMCMediaChangeTickFault = 2,
71 EWinsMMCCorruptCommand = 3,
72 EWinsMMCLockAttempt = 4,
73 EWinsMMCAPRNotSupp = 5,
75 EWinsMMCAPRBoundary = 7,
77 EStkFFCNotSelCard = 0x010, EStkFFCNoneSel,
78 EStkFOCNotSelCard = 0x020, EStkFOCMultiSel, EStkFOCNoneSel,
79 EStkIMCBadStateCmd2 = 0x30, EStkIMCBadStateCmd3, EStkIMCCmd6InvalidWidth,
80 EStkICMACMD13NotSD, EStkICMACMD22NotSD,
82 static void Panic(TWinsMMCPanic aPanic);
85 // Stack service provided by ASSP layer
86 void SetBusConfigDefaults(TMMCBusConfig&, TUint aClock);
91 // State Machine functions implemented in ASSP layer
92 TMMCErr DoPowerUpSM();
93 TMMCErr InitClockOnSM();
94 TMMCErr IssueMMCCommandSM();
95 TMMCErr ModifyCardCapabilitySM();
97 TInt SetupSimulatedCard(TInt aCardNum); // init
98 TInt CreateBinFileForCard(TInt aCardNum, TInt aAreaNum, HANDLE* aHandle);
99 TInt GetTargetSlotNumber(const TRCA& anRCA);
100 TInt FindAnyCardInStack(TMMCardStateEnum aState);
101 TInt FindFirstCardInStack(TMMCardStateEnum aState);
102 TInt FindOneCardInStack(TMMCardStateEnum aState);
104 TWinsCardInfo* iCardPool[KTotalWinsCards]; // all cards
105 TWinsCardInfo* iCardInfo[KTotalWinsCardSlots]; // present cards
112 friend class TSDCardControllerInterfaceWins;
113 friend class DWinsMMCMediaChange;
116 class DWinsMMCMediaChange : public DMMCMediaChange
119 DWinsMMCMediaChange(TInt aMediaChangeNum);
120 virtual TInt Create();
121 virtual void ForceMediaChange();
122 virtual void DoDoorOpen();
123 virtual void DoDoorClosed();
124 virtual TMediaState MediaState();
126 void DoorOpenService();
128 static TInt MediaChangeDfc(TAny *aPtr);
129 static void Tick(TAny *aPtr);
133 static void MediaChangeCallBack(TAny *aPtr);
134 inline void SetStackP(DWinsSDStack* aStackP) {iStackP=aStackP;}
137 TInt iDoorClosedCount;
138 TBool iMediaChangeEnable;
139 TInt iMediaDoorCloseReload; // Units: In theory-20ms, Actual-100ms
140 DWinsSDStack* iStackP;
141 friend class DWinsSDStack;
144 class DWinsMMCPsu : public DMMCPsu
147 DWinsMMCPsu(TInt aVccNum, TInt aMcId);
149 virtual void DoSetState(TPBusPsuState aState);
150 virtual TInt VoltageInMilliVolts();
152 virtual void DoCheckVoltage();
153 virtual void PsuInfo(TPBusPsuInfo &anInfo);
157 #endif // #ifndef __PP_SDC_H__