javaextensions/satsa/apdu/src.s60/cstsslotmanager.cpp
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/satsa/apdu/src.s60/cstsslotmanager.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+ *
+*/
+
+
+//  INCLUDE FILES
+
+#include "cstscardoperationsfacade.h"
+#include "cstsslotmanager.h"
+#include "stsapduconstants.h"
+#include "cstsslotinfo.h"
+#include "logger.h"
+#include "javasymbianoslayer.h"
+
+namespace java
+{
+namespace satsa
+{
+
+//  CONSTANTS
+const TInt KSTSDefaulGranularity = 1;
+const TUint8 KSTSSlotZeroColdSwappable = 0xD0;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+CSTSSlotManager::CSTSSlotManager(CSTSCardOperationsFacade* aCOFacade)
+{
+    iCOFacade = aCOFacade;
+    iGetPerformed = EFalse;
+}
+
+void CSTSSlotManager::ConstructL()
+{
+    iSlotArray
+    = new(ELeave) CArrayPtrFlat<CSTSSlotInfo> (KSTSDefaulGranularity);
+}
+
+CSTSSlotManager* CSTSSlotManager::NewL(CSTSCardOperationsFacade* aCOFacade)
+{
+    LOG(ESATSA, EInfo, "+ CSTSSlotManager::NewL");
+    CSTSSlotManager* self = new(ELeave) CSTSSlotManager(aCOFacade);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    LOG(ESATSA, EInfo, "--- CSTSSlotManager::NewL");
+    return self;
+}
+
+CSTSSlotManager::~CSTSSlotManager()
+{
+    delete iSlotString;
+    if (iSlotArray)
+    {
+        iSlotArray->ResetAndDestroy();
+    }
+    delete iSlotArray;
+}
+
+// -----------------------------------------------------------------------------
+// CSTSSlotManager::GetSlotsL
+// Get the slots available in the card
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+std::wstring CSTSSlotManager::GetSlotsL()
+{
+
+    LOG(ESATSA, EInfo, "+ CSTSClotManager::GetSlotsL() called");
+
+    //TPtr8 respPtr( NULL, 0 );
+    HBufC* tmp = HBufC::NewL(KMaxReaderAmount);
+    delete iSlotString;
+    iSlotString = tmp;
+
+    TInt readerCount = 1; // one reader at this point
+    for (TInt reader = 0; reader < readerCount; reader++)
+    {
+        LOG(ESATSA, EInfo, "CSTSSlotManager::GetSlotsL:Going to get slot information");
+        CSTSSlotInfo* slotInfo = CSTSSlotInfo::NewL(KSTSSlotZeroColdSwappable);
+        LOG(ESATSA, EInfo, "After initializing slotInfo object");
+        CleanupStack::PushL(slotInfo);
+        //ownership moved to array
+        iSlotArray->AppendL(slotInfo);
+        CleanupStack::Pop(slotInfo);
+
+        if (reader > 0)
+        {
+            LOG(ESATSA, EInfo, "CSTSSlotManager::GetSlotsL:reader > 0");
+            // comma-separator between slots info
+            iSlotString->Des().Append(',');
+        }
+        LOG(ESATSA, EInfo, "CSTSSlotManager::GetSlotsL: Append the slotInfo");
+        iSlotString->Des().AppendNum(slotInfo->Slot());
+        iSlotString->Des().Append(slotInfo->Type());
+
+    }
+
+    iGetPerformed = ETrue;
+    LOG(ESATSA, EInfo, "CSTSSlotManager::GetSlotsL:Start Convertion!");
+    TPtr toConvert(iSlotString->Des());
+    std::wstring slotString = desToWstring(toConvert);
+    LOG(ESATSA, EInfo, "-- CSTSClotManager::GetSlotsL()");
+    return slotString;
+
+}
+
+// -----------------------------------------------------------------------------
+// CSTSSlotManager::DoesExistL
+// Verifies whether the slot exists in the card
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TBool CSTSSlotManager::DoesExistL(TInt aSlot)
+{
+    // get slots if needed and check does the gived slot exist on the phone
+    LOG(ESATSA, EInfo, "+ CSTSSlotManager::DoesExistL called");
+
+    if (!iGetPerformed)
+    {
+        std::wstring slots = GetSlotsL();
+    }
+    for (TInt i = 0; i < iSlotArray->Count(); i++)
+    {
+        if (iSlotArray->At(i)->Slot() == aSlot)
+        {
+            LOG(ESATSA, EInfo, "CSTSSlotManager::DoesExistL: Slot exists");
+            return ETrue;
+        }
+    }
+
+    ELOG(ESATSA, "CSTSSlotManager::DoesExistL: Slot does NOT exist");
+    return EFalse;
+
+}
+
+} // namespace satsa
+} // namespace java
+//  End of File
+