/*FGROUP SSM_VME_Access ReadSSM Analyze SSM memory - like AS python + check of serial versus TTC */ int analyze(){ int i,j,bit,word,ier; int first=1; /* L0 L1s L2s AE */ char *SIGname[]={"ORB","PP ","L0 ","L1s","L1d","L2s","L2d","sBU","lBU","1FF","2FF","ChA","ChB","TBU","PPT","SST","STA","AER"}; int NPR=6; char *PRINT[]={"PP ","L0 ","L1s","L2s","AER","LBH"}; int COUNT[18]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* COUNT SSM signals */ int COUNTe[18]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* COUNT errors */ int COUNTl[18]={0,0,-DISTL0,-DISTL1,0,-DISTL2,0,0,0,0,0,0,0,0,0,0,0,0}; /* How close they can be ? */ int COUNTa[18]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* Is signal active ? */ int DIST[18]={0,0,DISTL0,DISTL1,0,DISTL2,0,0,0,0,0,0,0,0,0,0,1,0}; /* How close the signals can be ? */ int L1DATA[NL1dat],L2DATA[NL2dat],TT[64]; int iL1d=0,iL2d=0,ivmes=0,ichb=0,iorbi=0,ipp=0,ialls=0; int isdb=0,iltb=0,il1fi=0,il2fi=0,icha=0,ittcbusy=0,ippt=0; if(readFile()!=0) exit(9); dump=NULL; for(i=0;i<Mega;i++){ word=SSMem[i]; // start only after first L0 //bit= ( (word & 4) == 4); //if(bit) first=0; //if(first) continue; for(j=0;j<18;j++){ bit= ( (word & (1<<j)) == (1<<j)); switch(j){ case 0: /* ORBIT */ lsig(0,bit,i,COUNT,COUNTa,&iorbi,"ORBIT"); break; case 1: /* PREPULSE */ lsig(1,bit,i,COUNT,COUNTa,&ipp," PP"); break; case 2: /* L0 */ ssig(2,bit,i,COUNT,COUNTa,COUNTl,COUNTe,DIST,"L0"); break; case 3: /* L1s */ asig(3,bit,i,COUNT,COUNTa,COUNTl,COUNTe,DIST,"L1S"); break; case 4: /* L1data */ ier=data(4,bit,i,COUNTa,L1DATA,NL1dat,&iL1d,"L1DATA"); break; case 5: /* L2 strobe */ asig(5,bit,i,COUNT,COUNTa,COUNTl,COUNTe,DIST,"L2S"); break; case 6: /* L2 data */ ier=data(6,bit,i,COUNTa,L2DATA,NL2dat,&iL2d,"L2DATA"); break; case 7: /* Sub Detector Busy */ lsig(7,bit,i,COUNT,COUNTa,&isdb,"SBUSY"); break; case 8: /* LTU BUSY */ lsig(8,bit,i,COUNT,COUNTa,&iltb,"ALLBUSY"); break; case 9: /* L1 FIFO Nearly Full */ lsig(9,bit,i,COUNT,COUNTa,&il1fi,"L1NF"); break; case 10: /* L2 FIFO Nearly Full */ lsig(10,bit,i,COUNT,COUNTa,&il2fi,"L2NF"); break; case 11: /* Channel A (L0) */ lsig(11,bit,i,COUNT,COUNTa,&icha,"ChanA"); break; case 12: /* Channel B */ channelB(12,bit,i,COUNT,COUNTa,&ichb,TT,"ChanB"); break; case 13: /* TTC BUSY */ lsig(13,bit,i,COUNT,COUNTa,&ittcbusy,"TTCBUSY"); break; case 14: /* PP transmit */ lsig(14,bit,i,COUNT,COUNTa,&ippt,"PPT"); break; case 15: /* vme SLAVE strobe */ lsig(15,bit,i,COUNT,COUNTa,&ivmes,"VMES"); break; case 16: /* START ALL - emulator */ lsig(16,bit,i,COUNT,COUNTa,&ialls,"ALLSTART"); break; case 17: /* ANY ERROR */ ssig(17,bit,i,COUNT,COUNTa,COUNTl,COUNTe,DIST,"ANYERR"); break; } } } // to take into acount signals up in all memory lsig(1,0,Mega,COUNT,COUNTa,&ipp," PP"); lsig(7,0,Mega,COUNT,COUNTa,&isdb,"SBUSY"); lsig(8,0,Mega,COUNT,COUNTa,&iltb,"ALLBUSY"); lsig(9,0,Mega,COUNT,COUNTa,&il1fi,"L1NF"); lsig(10,0,Mega,COUNT,COUNTa,&il2fi,"L2NF"); lsig(11,0,Mega,COUNT,COUNTa,&icha,"LBHALT"); //lsig(12,0,Mega,COUNT,COUNTa,&ivmem,"VMEM"); lsig(13,0,Mega,COUNT,COUNTa,&ittcbusy,"TTCBUSY"); lsig(15,0,Mega,COUNT,COUNTa,&ivmes,"VMES"); lsig(16,0,Mega,COUNT,COUNTa,&ialls,"ALLSTART"); for(i=0;i<NPR;i++){ for(j=0;j<18;j++)if(SIGname[j] == PRINT[i]) printf("<%s=%i> ",SIGname[j],COUNT[j]); } printf("\n"); writeLog(); return 0; }
void main() { tlista l; TdatoE num; int existe; int opc = 0; // Opción a seleccionar para testear int busca; // Valor a buscar en la lista lcrear(&l); num.clave=-1; clrscr(); while(opc != 99){ printf("\n\t\t¿Que desea Hacer?\n\n"); printf("\t\t1.Insertar valores en la lista\n"); printf("\t\t2.Verificar si la lista está vacía o no\n"); printf("\t\t3.Verificar si la lista está llena o no\n"); printf("\t\t4.Mostrar los valores ingresados en forma ascendente\n"); printf("\t\t5.Mostrar los valores ingresados en forma descendente\n"); printf("\t\t6.Mostrar el primer elemento de la lista\n"); printf("\t\t7.Mostrar el último elemento de la lista\n"); printf("\t\t8.Ver el item siguiente en la lista\n"); printf("\t\t9.Modificar el último item que se mostró\n"); printf("\t\t10.Buscar un valor en la lista\n"); printf("\n\t\t99.Salir\n"); printf("\n\t\OPCIÓN: "); scanf("%d", &opc); printf("\n\n"); switch(opc){ case 1: while(!lllena(&l) && (num.clave!=0)){ scanf("%d",&num.clave); /* inserta un elemento en el final de la Lista */ if(num.clave==100){ if(!lvacia(&l)){ lppio(&l); linfo(&l,&num); printf("%d ",num.clave); lsig(&l); while(!lfin(&l)){ linfo(&l,&num); printf("%d ",num.clave); lsig(&l); } } }else{ if(num.clave != (-1)){ linsertarorden(&l,num,'a'); }else{ //lbuscar(&l,4,&existe); //if(existe){ if(!lvacia(&l)){ lborrarfin(&l); } // }else{ // printf("NO\n"); //} } } } break; case 2: if(lvacia(&l)){ printf("La lista se encuentra vacía.\n\n"); }else{ printf("La lista ya tiene elementos ingresados.\n\n"); }break; case 3: if(lllena(&l)) printf("La lista se encuentra llena.\n\n"); else printf("Tiene espacio para colocar más elementos en la lista.\n\n"); break; case 4: // mostrar los valores en forma ascendente if(!lvacia(&l)) { lppio(&l); linfo(&l,&num); printf("%d ",num.clave); lsig(&l); while(!lfin(&l)) { linfo(&l,&num); printf("%d ",num.clave); lsig(&l); } } break; case 5: // mostrar los valores en forma descendente if(!lvacia(&l)) { lppio(&l); lant(&l); linfo(&l,&num); printf("%d ",num.clave); while(!lfin(&l)) { lant(&l); linfo(&l,&num); printf("%d ",num.clave); } } break; case 6: // mostrar el primer elemento de la lista if(!lvacia(&l)) { lppio(&l); linfo(&l,&num); printf("%d ",num.clave); } else printf("La lista se encuentra vacía.\n\n"); break; case 7: // mostrar el último elemento de la lista if(!lvacia(&l)) { lppio(&l); lant(&l); linfo(&l,&num); printf("%d ",num.clave); } else printf("La lista se encuentra vacía.\n\n"); break; case 8: // mostrar el siguiente elemento en la lista if(!lvacia(&l)) { lsig(&l); linfo(&l,&num); printf("%d ",num.clave); } else printf("La lista se encuentra vacía.\n\n"); break; case 9: // modificar el elemento en la lista if(!lvacia(&l)) { linfo(&l,&num); printf("\n\t\tModificar %d por el valor: ", num.clave); scanf("%d",&num.clave); lmodificar(&l,num); linfo(&l,&num); printf("%d ",num.clave); } else printf("La lista se encuentra vacía.\n\n"); break; case 10: clrscr(); printf("Ingrese el valor que desea buscar en la lista: "); scanf("%d", &num.clave); // printf("El valor %d se encuentra %d veces en la lista\n\n", busca,buscar(busca,cabeza, cabeza)); lbuscar(&l,num.clave,&existe); if(existe == 1) printf("\nEl valor %d buscado se encuentra en la lista\n", num.clave); else printf("\nEl valor %d buscado no se encuentra en la lista\n", num.clave); break; case 99: exit(1); default: printf("Error, el comando no es válido\n"); break; } getch(); clrscr(); } }