1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
unsigned char P_Lire_drSV(unsigned char *code, unsigned char *contexte_cps, DATE *DateSyst, NO_SEGMENT mynoappli)
{
unsigned char stat;
unsigned char etat;
unsigned short cr;
/*DATE DateSyst;*/
/*unsigned char texte[2*16+1];*/
etat = 0x00;
/*read_date (&DateSyst);*/
/* Preparation du message de lecture de la carte SV */
memcpy(&ucEmissMessage[6],contexte_cps,LG_CONTEXTE);
memcpy(&ucEmissMessage[49],code,4); /* code porteur */
if (memcmp(&(DateSyst->annee),"50",2)<0)
memcpy(&ucEmissMessage[61],"20",2);
else
memcpy(&ucEmissMessage[61],"19",2);
memcpy(&ucEmissMessage[63],&(DateSyst->annee),2);
memcpy(&ucEmissMessage[65],&(DateSyst->mois),2);
memcpy(&ucEmissMessage[67],&(DateSyst->jour),2);
usLgEmissMessage=69;
/* Ouverture du lecteur carte, si necessaire */
if (stdcam0()==NULL)
fopen("CAM0","rw");
else
{
fclose(stdcam0());
fopen("CAM0","rw");
}
/* par defaut la carte */
cr=CAM0;
/* Etat du lecteur CAM0 */
status(stdcam0(),&stat);
/* pas de carte presente */
if (!(stat & CAM_PRESENT))
{
cr=0;
printf("%c CARTE VITALE\n ARRACHEE",0x1B);
ttestall(0,200);
}
/* Carte en butee */
if ((cr & CAM0))
{
/* Demande au gestionnaire d'executer l'ordre "Lecture droits Vitale"*/
APPLI_Dialogue(mynoappli,ucEmissMessage,usLgEmissMessage,ucRecepMessage,&usLgRecepMessage);
/* A la sortie de l'EI96, la carte Vitale est hors tension */
/* La fonction APPLI_Dialogue ferme le peripherique CAM0 */
if (ucRecepMessage[0] == 0x00)
{
/*print_debug("1");*/
#ifdef LABO
envoi_xmodem(ucRecepMessage+44,usLgRecepMessage-44,'V');
#endif
/*print_debug("2");*/
MAJ_Donnees_PS(ucRecepMessage, 44);
/* analyse espace mémoire disponible */
if (MAJ_Donnees_DroitsVitale(ucRecepMessage, usLgRecepMessage))
{
etat = 0x01;
}
}
else
{
int warning;
warning=0;
switch (ucRecepMessage[1])
{
.....
}
ttestall (0, 300);
if (usLgRecepMessage==44)
MAJ_Donnees_PS(ucRecepMessage, 44);
#ifdef RAPIDO
if(warning) {
if (ucRecepMessage[0] == 0x03) {
printf("%cREMONTEE\nDONNEES ADM.",0x1B);
ttestall (0, 200);
#ifdef LABO
envoi_xmodem(ucRecepMessage+1+44,usLgRecepMessage-1-44,'V');
#endif
MAJ_Donnees_PS(ucRecepMessage+1, 44);
if (MAJ_Donnees_DroitsVitale(ucRecepMessage+1, usLgRecepMessage))
{
etat = 0x02;
}
} else {
printf("%cREMONTEE\nDONNEES ADM.",0x1B);
ttestall (0, 200);
MAJ_Donnees_PS(ucRecepMessage+1, 44);
/* analyse espace mémoire disponible */
if (MAJ_Donnees_DroitsVitale(ucRecepMessage , usLgRecepMessage)) {
etat = 0x02;
}
}
}
#endif
}
}
return etat;
} |
Partager