#include "event.h" #include "wkUtil.h" #include #include unsigned long *initmsg() { struct MSG *msgptr; msgptr= malloc(sizeof(struct MSG)); msgptr->GTFE_Addr=(unsigned char *)malloc(2048*sizeof(char)); msgptr->STRIP=(unsigned char *)malloc(2048*sizeof(char)); return (unsigned long *)msgptr; } void closemsg(unsigned long* msg) { free(((struct MSG *)msg)->GTFE_Addr); free(((struct MSG *)msg)->STRIP); free((struct MSG *)msg); } unsigned long *initBuff() { return (unsigned long *)malloc(BufSize*sizeof(unsigned long)); } void closeBuff(unsigned long* buff) { free((unsigned long *)buff); } unsigned char getaddrRC(unsigned long *msg) { return ((struct MSG *)msg)->addrRC; } unsigned char getDAV(unsigned long *msg) { return ((struct MSG *)msg)->DAV; } unsigned char getTAG_ERR(unsigned long *msg) { return ((struct MSG *)msg)->TAG_ERR; } unsigned char getGTRC_TAG(unsigned long *msg) { return ((struct MSG *)msg)->GTRC_TAG; } unsigned int getnword(unsigned long *msg) { return ((struct MSG *)msg)->nwords; } unsigned char getEVaddr(unsigned long *msg,int i) { // return ((struct MSG *)msg)->ev[i].GTFE_Addr; return ((struct MSG *)msg)->GTFE_Addr[i]; } unsigned char getEVstrip(unsigned long *msg,int i) { // return ((struct MSG *)msg)->ev[i].STRIP; return ((struct MSG *)msg)->STRIP[i]; } int getmsg0(unsigned long *MSGinput,unsigned long *buff,unsigned char pin_num,int len) { unsigned char tp=0; unsigned short tpb=0; unsigned long mask; unsigned char msgnum; int i,j; struct MSG *msg; msg=(struct MSG *)MSGinput; mask=1<=len) { printf("No data frame!\n"); return -1; } } //printf("start at %d\n",i); //buff++; //Layer Header Format tp=0; for(i=0;i<4;i++) { tp=tp*2; if((*(buff+i) & mask)==0) { tp++; //printf("1"); } //else printf("0"); } //printf(" RC=%d\n",tp); msg->addrRC=tp; tp=0; if((*(buff+4) & mask)==0) tp=1; msg->DAV=tp; tp=0; if((*(buff+5) & mask)==0) tp=1; msg->ERROR=tp; tp=0; if((*(buff+6) & mask)==0) tp=1; msg->TAG_ERR=tp; tp=0; for(i=0;i<2;i++) { tp=tp*2; if((*(buff+7+i) & mask)==0) tp++; } msg->GTRC_TAG=tp; buff=buff+11; tp=0; if((*(buff) & mask)==0) tp=1; msg->Word_1_Parity=tp; buff++; tpb=0; for(i=0;i<11;i++) { tpb=tpb*2; if((*(buff+i) & mask)==0) tpb++; } msg->nwords=tpb; buff=buff+11; tp=0; if((*(buff) & mask)==0) tp=1; msg->Word_2_Parity=tp; buff++; //Strip Data for(j=0;jnwords;j++) { tp=0; for(i=0;i<5;i++) { tp=tp*2; if((*(buff+i) & mask)==0) tp++; } //msg->ev[j].GTFE_Addr=tp; *(msg->GTFE_Addr+j)=tp; tp=0; for(i=0;i<6;i++) { tp=tp*2; if((*(buff+5+i) & mask)==0) tp++; } //msg->ev[j].STRIP=tp; *(msg->STRIP+j)=tp; buff=buff+11; } } int txtcvt(char *filename,unsigned long *tv) { struct pindef *chn; FILE *in; TestVector tp; char row[64]; int i,pt,len,rownum,nameflag=0,ln=0,time; int StartRowFlag=0,StartRowNum=0,VtNum=0,GetRowNumberFlag; chn=OutChn; if((in=fopen(filename,"rt"))==NULL) { printf("Cannot open the file:%s\n",filename); return 0; } while(!feof(in)) { fgets(row,64,in); len=strlen(row); nameflag=0; for(pt=0;pt='a')&&(row[pt]<='z'))||((row[pt]>='A')&&(row[pt]<='Z'))) { nameflag=1; break; } } if(nameflag==1) for(pt=0;pt='a')&&(row[pt]<='z'))||((row[pt]>='A')&&(row[pt]<='Z'))||((row[pt]>='0')&&(row[pt]<='9'))) { if(row[pt]!=(char)*(((chn+pt/2)->name)+ln)) { printf("The TestVector file header unmatched, Maybe define a wrong chip!\n"); exit(0); } } } else break; ln++; } //printf("File header matched!\n"); while(!feof(in)) { + //printf("aaa\n"); GetRowNumberFlag=0; pt=len-1; rownum=0; time=1; while((GetRowNumberFlag!=2)&&(pt>=0)) { if((row[pt]>='0')&&(row[pt]<='9')) { GetRowNumberFlag=1; rownum=rownum+time*(row[pt]-'0'); time=time*10; if(StartRowFlag==0) { StartRowFlag=1; StartRowNum=rownum; } } else if(GetRowNumberFlag==1) { GetRowNumberFlag=2; if(rownum!=StartRowNum+VtNum) { printf("Illegal Test Vector file format!"); return 0; } VtNum++; if(VtNum==BufSize) return VtNum-1; } pt--; } tp=0;i=0; while(((chn+i)->pinN)!=-1) { if(row[2*i]=='1') tp=tp+(1<<((chn+i)->pinN)); i++; } *(tv+VtNum-1)=tp; //printf("%d:%d ",VtNum-1,*(tv+VtNum-1)); //printf("%s",row); fgets(row,64,in); len=strlen(row); } fclose(in); return VtNum; }