Example #1
0
/*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;
}
Example #2
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();
	}

}