diff -r 000000000000 -r 164170e6151a wim/inc/ScardBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wim/inc/ScardBase.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,214 @@ +/* +* Copyright (c) 2003 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: Definitions for smart card base +* +*/ + + +#ifndef CSCARDBASE_H +#define CSCARDBASE_H + +// INCLUDES +#include + +// CONSTANTS + +//////////////////////////////////////////////////////////////////////////////// +// Scard Panic codes +//////////////////////////////////////////////////////////////////////////////// +const TInt KScPanicNoMemory = -1; // Not enough free memory +const TInt KScPanicNullPointer = -2; // A NULL pointer was encountered +const TInt KScPanicNullLength = -3; // A buffer or data member has null lenght +const TInt KScPanicNotSupported = -4; // A given operation or resource is not supported +const TInt KScPanicInvalidValue = -5; // A value was invalid in the given context +const TInt KScPanicNoResourceConnection = -6; // Some external resource (eg. file server) + // could not be contacted +// 7-9 rfu +const TInt KScUtilPanicOverFlow = -10; // A buffer overflow +const TInt KScUtilPanicUnderFlow = -11; // A buffer underflow +// 12-14 rfu +const TInt KScServerPanicInternalError = -15; // Some internal error has occurred +const TInt KScServerPanicBadRequest = -16; // A service request had an unknown value +const TInt KScServerPanicBadDescriptor = -17; // A descriptor was too short or corrupted +const TInt KScServerPanicDescrNonNumeric = -18; +const TInt KScServerPanicMainSchedulerError = -19; // The active scheduler could not be activated +const TInt KScServerPanicSvrCreateServer = -20; // Server creatíon failed +const TInt KScServerPanicCreateTrapCleanup = -21; // CleanupStack creation failed +const TInt KScServerPanicBadCounterRemove = -22; +const TInt KScServerPanicBadSubsessionHandle= -23; // A subsession had an invalid handle +// 24-29 rfu +const TInt KScServicePanicAlreadyActive = -30; // The service is still running the previous request +const TInt KScServicePanicBadFormat = -31; // A parameter did not conform to a spesified format +const TInt KScServicePanicDataCorruption = -32; // Some data (internal/external) has + // been terminally corrupted +// 33-n proprietary panics + +//////////////////////////////////////////////////////////////////////////////// +// Scard error codes +//////////////////////////////////////////////////////////////////////////////// +const TInt KScErrUnknown = 1; // An undefined internal error has occurred +const TInt KScErrGeneral = 2; // An internal error +const TInt KScErrNotFound = 3; // A search did not find the wanted resource +const TInt KScErrCancelled = 4; // Operation was cancelled +const TInt KScErrTimeOut = 5; // A command has timed out +const TInt KScErrNotSupported = 6; // The operation or resource (reader etc.) + // is not supported +const TInt KScErrUnknownGroup = 7; // The reader group could not be identified +const TInt KScErrUnknownCard = 8; // The card could not be identified +const TInt KScErrUnknownReader = 9; // The reader could not be identified +const TInt KScErrBadArgument = 10; // An argument has unacceptable value / does not + // conform to a spesified format +const TInt KScErrEmpty = 11; // A buffer or descriptor data area was empty, when it + // was expected to contain data +const TInt KScErrFull = 12; // A buffer or descriptor is full +const TInt KScErrNullPointer = 13; // A null pointer was encountered +const TInt KScErrNoMemory = 14; // There was not enough free memory to complete a task +const TInt KScErrInsufficientBuffer = 15; // A buffer had insufficient length +const TInt KScErrFileFailure = 16; // An operation could not complete due to file + // handling errors +const TInt KScErrAlreadyExists = 17; // A resource could not be installed because a resource + // of same type by that name already exists +const TInt KScErrInUse = 18; // A resource was in use + + +// 18 - 29 rfu + +const TInt KScReaderErrNoCard = 30; // The SC was removed from the reader +const TInt KScReaderErrNoReader = 31; // The reader could not be reached +const TInt KScReaderErrUnpoweredCard = 32; // The SC had no power on +const TInt KScReaderErrUnsupportedCard = 33; // The SC could not be supported +const TInt KScReaderErrUnresponsiveCard = 34; // The SC did not response +const TInt KScReaderErrCardFailure = 35; // A SC failure +const TInt KScReaderErrReaderFailure = 36; // A reader failure +const TInt KScReaderErrCommunicationFailure = 37; // A communication failure other than the two previous ones +const TInt KScReaderErrResponseTimeout = 38; // A response time-out limit reached without a valid + // response from the SC or the reader +const TInt KScReaderErrPowerFailure = 39; // The reader has encountered a power failure +const TInt KScReaderErrNotReady = 40; // The reader or the SC was not ready +const TInt KScReaderErrCannotConnect = 41; // Reader handler is unable to connect to the reader + // or the SC +const TInt KScReaderErrUnsupportedTag = 42; // In function GetCapabilities a unsupported + // capability tag was requested +const TInt KScReaderErrUnsupportedProtocol = 43; // In function NegotiateProtocol an unsupported + // protocol was requested +// 44 - 59 proprietary reader errors + +const TInt KScServerErrIllegalChannel = 61; // The logical channel the client attempted to + // use was not available for this client (no previous + // ManageChannel command) +const TInt KScServerErrIllegalOperation = 62; // A client attempted to send a ManageChannel apdu via + // TransmitToCard() instead of ManageChannel() +// 62 - 79 rfu + +// File services +const TInt KScServiceErrDirNotFound = 80; // The requested directory could not be found +const TInt KScServiceErrFileNotFound = 81; // The requested file could not be found +const TInt KScServiceErrNoDir = 82; // The request did not contain a valid directoryname +const TInt KScServiceErrNoFile = 83; // The request did not contain a valid filename +const TInt KScServiceErrNoAccess = 84; // The resource could not be accessed because of a + // sharing violation +const TInt KScServiceErrCorruptedFile = 85; // The requested file was corrupted +const TInt KScServiceErrRecordNotFound = 86; // A requested record was not found +const TInt KScServiceErrRunning = 87; // The service is already running a previous request +const TInt KScServiceErrEOF = 88; // An end of file was encountered before a successful + // completion of a task +const TInt KScServiceErrInvalidOffset = 89; // The offset could not be mapped inside the file/resource +const TInt KScServiceErrWriteTooMany = 90; // A write counter limit has been reached (?) +const TInt KScServiceErrFPEmpty = 91; // A file pointer was empty (?) + +// Application Management services +const TInt KScServiceErrInvalidAID = 92; // The given application identifier did not match any + // applications on the SC +const TInt KScServiceErrApplicationBlocked = 93; // The requested application was blocked +const TInt KScServiceErrNoSupportedApps = 94; // The card contains no supportable applicatíons +const TInt KScServiceErrSecurityViolation = 95; // The task could not be completed because of a security + // violation + +//These tags from PC/SC, shoud be moved to scard.h +//////////////////////////////////////////////////////////////////////////////// +// Tags for reader capabilities Length Encoding +//////////////////////////////////////////////////////////////////////////////// +const TInt32 KVendorName = 0x0100; // 32 ASCII string +const TInt32 KReaderType = 0x0101; // 32 ASCII string +const TInt32 KReaderVersion = 0x0102; // 4 Dword 0xMMmmbbb + // MM = major version + // mm = minor version + // bbbb = build number +const TInt32 KReaderSerial = 0x0103; // 32 ASCII string + +// Channel ID skipped + +const TInt32 KAsyncProtocols = 0x0120; // 4 Dword 0x0000PPPP + // 1 in a given position indicates + // support for associated protocol + // e.g 0x00000002 for T=1 support +//other protocol parameters skipped + +const TInt32 KPowerMgt = 0x0131; // 1 (4) 0 = not supported +const TInt32 KAuthFeatures = 0x0140; // 4 See PC/SC part 3 page 7 + +//Mechanical charasteristics skipped + +//Vendor defined tags from 0x0180 - 0x01F0 + +//////////////////////////////////////////////////////////////////////////////// +// Tags for Card state Length Encoding +//////////////////////////////////////////////////////////////////////////////// +const TInt32 KCardPrecence = 0x0300; // 1 0 = not present, 1 = present +const TInt32 KCardInterface = 0x0301; // 1 0 = contact inactive, + // 1 = contact active +const TInt32 KCardType = 0x0304; // 1 0 = unknown, 1 = 7816 async, +const TInt32 KCardStatus = 0x0310; // 1 bit 1: card powered + // bit 2: card present + // bit 3: card reader id1 size + // bit 4: card reader present + // bit 5: card reader removable + +//////////////////////////////////////////////////////////////////////////////// +// Tags for Reader Protocol options Length Encoding +//////////////////////////////////////////////////////////////////////////////// +const TInt32 KCurrentProtocol= 0x0201; // 4 As with AsyncProtocols +const TInt32 KCurrentF = 0x0203; // 4 +const TInt32 KCurrentD = 0x0204; // 4 +const TInt32 KCurrentN = 0x0205; // 4 + +//////////////////////////////////////////////////////////////////////////////// +// Connection parameters +//////////////////////////////////////////////////////////////////////////////// +const TInt KAnyReader = 0x01; +const TInt KExplicitReader = 0x02; +const TInt KExcludedReader = 0x04; + +const TInt KAnyCard = 0x10; +const TInt KATRSpesified = 0x20; +const TInt KApplicationSpesified = 0x40; +const TInt KServiceSpesified = 0x80; + +const TInt KNewCardsOnly = 0x100; +const TInt KNewReadersOnly = 0x200; + +//////////////////////////////////////////////////////////////////////////////// +// Reader handler definitions +//////////////////////////////////////////////////////////////////////////////// +_LIT( KReaderName, "SWIM Reader" ); +const TInt KReaderID = 1; + +_LIT( KGroupName, "SWIM Readers" ); +const TInt KGroupID = 1; + +_LIT( KSwimReaderDLL, "SwimReader.dll" ); + +#endif // CSCARDBASE_H + +// End of File