00001 #include <stdio.h>
00002 #include <string.h>
00003 #include <assert.h>
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "L2BinEvent.h"
00014
00015
00016
00017 L2BinEvent::L2BinEvent() {
00018
00019 }
00020
00021
00022
00023 int
00024 L2BinEvent::read(struct BinEveContainer* eve,FILE *fd, int dbg){
00025 assert(eve);
00026 assert(fd);
00027
00028
00029 memset(eve->lenA,0,sizeof(eve->lenA));
00030 memset(eve->mHEAD,':',sizeof(eve->mHEAD));
00031 memset(eve->mBTOW_BANK,0,sizeof(eve->mBTOW_BANK));
00032 memset(eve->mETOW_BANK,0,sizeof(eve->mETOW_BANK));
00033 memset(eve->mTrigData ,0,sizeof(eve->mTrigData));
00034 eve->mBTOW_in=eve->mETOW_in=0;
00035
00036
00037 unsigned int i;
00038 char *c;
00039 c=(char *)eve->lenA;
00040 for(i=0;i<sizeof(eve->lenA);i++) c[i]=fgetc(fd);
00041 if(dbg) for(i=0;i<4;i++) printf("lenA[%d]=%d\n",i,eve->lenA[i]);
00042
00043
00044 if(eve->lenA[0]> sizeof(eve->mHEAD)) return -10;
00045 if(eve->lenA[1]> sizeof(eve-> mTrigData))return -11;
00046 if(eve->lenA[2]> sizeof(eve->mBTOW_BANK))return -12;
00047 if(eve->lenA[3]> sizeof(eve->mETOW_BANK))return -13;
00048
00049
00050 c=(char *)eve->mHEAD;
00051 for(i=0;i<eve->lenA[0];i++) c[i]=fgetc(fd);
00052
00053 c=(char *)eve->mTrigData;
00054 for(i=0;i<eve->lenA[1];i++) c[i]=fgetc(fd);
00055
00056 c=(char *)eve->mBTOW_BANK;
00057 for(i=0;i<eve->lenA[2];i++) c[i]=fgetc(fd);
00058
00059 c=(char *)eve->mETOW_BANK;
00060 for(i=0;i<eve->lenA[3];i++) c[i]=fgetc(fd);
00061
00062
00063 char EOE[5];
00064 for(i=0;i<4;i++) EOE[i]=fgetc(fd);
00065 EOE[4]=0;
00066 if(!strstr(EOE,"EofE")) return -1;
00067 assert(strstr(EOE,"EofE"));
00068
00069 eve->mBTOW_in=eve->lenA[2]>0;
00070 eve->mETOW_in=eve->lenA[3]>0;
00071
00072 if(dbg) printf("head='%s'\nBTOW_in=%d, ETOW_in=%d \n",eve->mHEAD,eve->mBTOW_in,eve->mETOW_in);
00073 return 0;
00074 }
00075
00076
00077
00078
00079 void
00080 L2BinEvent::write(char* headText, int trgLen, void * trgData,
00081 int bemcLen, unsigned short *bemcData,
00082 int eemcLen, unsigned short *eemcData,
00083 FILE *binFd){
00084 assert(binFd);
00085
00086 BinEveContainer eve;
00087
00088
00089
00090 eve.lenA[0]=sizeof(eve.mHEAD);
00091 eve.lenA[1]=trgLen;
00092 eve.lenA[2]=bemcLen;
00093 eve.lenA[3]=eemcLen;
00094
00095
00096 unsigned int i;
00097
00098 const char *c=(char*)eve.lenA;
00099 for(i=0;i< sizeof(eve.lenA);i++) fputc(c[i],binFd);
00100
00101 c=(char*)headText;
00102 for(i=0;i<eve.lenA[0];i++) fputc(c[i],binFd);
00103
00104 c=(char*) trgData;
00105 for(i=0;i<eve.lenA[1];i++) fputc(c[i],binFd);
00106
00107 c=(char*)bemcData;
00108 for(i=0;i< eve.lenA[2];i++) fputc(c[i],binFd);
00109
00110 c=(char*)eemcData;
00111 for(i=0;i<eve.lenA[3];i++) fputc(c[i],binFd);
00112
00113 c="EofE";
00114 for(i=0;i<4;i++) fputc(c[i],binFd);
00115
00116 }
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131