Hello,

I don't think the ECO 5000 driver is quite ready for memory cards.  All the
stubs are there and the functions are defined in the driver but they don't
do anything.  You might see when the developer is going to add i2c support.

Dave

>hi ho :-)
>
>i want to use the eco5000 reader, to use memory cards, but i have a
>difficult problem. if im using the following function i get back the
>errorcode 273. what does it mean ? and the pcsc server wrote :
>
>winscard_rpc_server.c 514: SCardCollectZombies: Collecting Zombies
>winscard_rpc_server.c  61: scardestablishcontext_1_svc: Current Channel:
>0
>winscard.c  80: SCardConnect: Attempting Connect to ORGA RGA ECO 5000
>winscard.c 129: SCardConnect: hCard Identity: f0000000
>
>ECO 5000 initialized, Firmware Version V2.01
>
>winscard.c 228: SCardConnect: Active Protocol: 0
>dyn_unix.c  70: DYN_GetAddress: dlerror() reports
>/usr/local/lib/libeco_5000.so: undefined symbol: IFD_Read_Memory
>winscard.c 266: SCardDisconnect: Active Contexts: 1
>winscard_rpc_server.c  84: scardreleasecontext_1_svc: Release Channel:
>-653983742
>
>and now the code :
>
>  ret = SCardReadMemory (hCard, SCARD_TYPE_2WIRE, 1, 0, pbBuffer, 1);
>
>its the code from the documentation. the ic is a SLE4432 with 256byte
>eeprom. maybe i don't have the right CardSize, but which number does i
>have to insert in the function ?
>
>i'm sorry about my terrible english and about my terrible c, but im
>learning both at the moment.
>
>
>bye bye
>Patrick Plattes
>
>
>
>
>and here is the complete code :
>
>#include <stdio.h>
>#include <string.h>
>#include <winscard.h>
>#include <pcsclite.h>
>#include <time.h>
>
>int waits(int time_s)                    /*waiting time (seconds) is
>there anyone white a better idea?*/
>{
>  int hold;
>  clock_t begin;
>  hold = time_s*CLOCKS_PER_SEC;
>
>  begin = clock();
>  while(clock() < begin+hold);
>
>  return 0;
>}
>
>int return_text(int ret, char *errormsg)     /*make the returncode
>readable*/
>{
>  switch (ret)
>    {
>    case 1:
>      strcpy(errormsg,"SUCCESS");
>      break;
>    case 2:
>      strcpy(errormsg,"CANCELLED");
>      break;
>    case 4:
>      strcpy(errormsg,"CANT_DISPOSE");
>      break;
>    case 8:
>      strcpy(errormsg,"INSUFFICIENT_BUFFER");
>      break;
>    case 10:
>      strcpy(errormsg,"INVALID_ATR");
>      break;
>    case 11:
>      strcpy(errormsg,"INVALID_HANDLE");
>      break;
>    case 12:
>      strcpy(errormsg,"INVALID_PARAMETER");
>      break;
>    case 14:
>      strcpy(errormsg,"INVALID_TARGET");
>      break;
>    case 18:
>      strcpy(errormsg,"INVALID_VALUE");
>      break;
>    case 20:
>      strcpy(errormsg,"NO_MEMORY");
>      break;
>    case 21:
>      strcpy(errormsg,"COMM_ERROR");
>      break;
>    case 22:
>      strcpy(errormsg,"INTERNAL_ERROR");
>      break;
>    case 24:
>      strcpy(errormsg,"UNKNOWN_ERROR");
>      break;
>    case 28:
>      strcpy(errormsg,"WAITED_TOO_LONG");
>      break;
>    case 100:
>      strcpy(errormsg,"UNKNOWN_READER");
>      break;
>    case 101:
>      strcpy(errormsg,"TIMEOUT");
>      break;
>    case 102:
>      strcpy(errormsg,"SHARING_VIOLATION");
>      break;
>    case 104:
>      strcpy(errormsg,"NO_SMARTCARD");
>      break;
>    case 108:
>      strcpy(errormsg,"UNKNOWN_CARD");
>      break;
>    case 110:
>      strcpy(errormsg,"PROTO_MISMATCH");
>      break;
>    case 111:
>      strcpy(errormsg,"NOT_READY");
>      break;
>    case 112:
>      strcpy(errormsg,"SYSTEM_CANCELLED");
>      break;
>    case 114:
>      strcpy(errormsg,"NOT_TRTANSACTED");
>      break;
>    case 118:
>      strcpy(errormsg,"READER_UNAVAILABLE");
>      break;
>
>    default:
>      strcpy(errormsg,"UNKNOW_RETURNCODE");
>      break;
>    }
>  return 0;
>}
>
>
>int main()
>{
>  char errormsg[100];   /*returncode as text*/
>  int wait=0;           /*waitingtime (seconds)*/
>  int ret;              /*returncode as number*/
>
>  SCARDCONTEXT hContext; /*have a look to the pcsc-muscle-doc*/
>  SCARDHANDLE hCard;
>  DWORD dwActiveProtocol;
>  BYTE pbBuffer[100];
>
>  ret = SCardEstablishContext (SCARD_SCOPE_SYSTEM, NULL, NULL,
>&hContext);
>  return_text(ret, errormsg);
>  printf("\nSCardEstablishContext = %s\n",errormsg);
>  waits(wait);
>
>  ret = SCardConnect (hContext, "ORGA RGA ECO 5000", SCARD_SHARE_SHARED,
>SCARD_PROTOCOL_RAW, &hCard, &dwActiveProtocol);
>  return_text(ret, errormsg);
>  printf("\nSCardConnect = %s\n",errormsg);
>  waits(wait);
>
>  ret = SCardReadMemory (hCard, SCARD_TYPE_2WIRE, 1, 0, pbBuffer, 1);
>  return_text (ret, errormsg);
>  printf("\nSCardReadMemory = %s %d\n",errormsg, ret);
>  waits(wait);
>
>  ret = SCardDisconnect (hCard, SCARD_UNPOWER_CARD);
>  return_text(ret, errormsg);
>  printf("\nSCardDisconnect = %s\n",errormsg);
>  waits(wait);
>
>  ret = SCardReleaseContext (hContext);
>  return_text(ret, errormsg);
>  printf("\nSCardReleaseContext = %s\n",errormsg);
>  waits(wait);
>
>  return 0;
>}
>***************************************************************
>Linux Smart Card Developers - M.U.S.C.L.E.
>(Movement for the Use of Smart Cards in a Linux Environment)
>http://www.linuxnet.com/smartcard/index.html
>***************************************************************



***************************************************************
Linux Smart Card Developers - M.U.S.C.L.E.
(Movement for the Use of Smart Cards in a Linux Environment)
http://www.linuxnet.com/smartcard/index.html
***************************************************************

Reply via email to