File indexing completed on 2025-08-03 08:20:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include <stdlib.h>
0024 #include <stdio.h>
0025 #include <malloc.h>
0026 #include "phenixOnline.h"
0027 #include "fakeFrame.h"
0028 #include "Cframe.h"
0029 #include "CframeV1.h"
0030 #include "packetRoutines.h"
0031 #include "frameRoutines.h"
0032 #include "framePublic.h"
0033 #include "formatIO.h"
0034
0035 #define BUFFER_SIZE 65536
0036
0037 int fakeFrame(
0038 PHDWORD* frame_ptr,
0039 int bufferSize,
0040 UINT sourceId,
0041 ALIGNBLK alignBlk,
0042 int number_of_packets,
0043 int packet_ids[],
0044 int packet_lengths[],
0045 int historySize,
0046 int errorSize
0047 )
0048 {
0049 int remainingSpace;
0050
0051 int total_frame_size;
0052 int maxFrameLen;
0053 PHDWORD* write_ptr;
0054
0055
0056 PHDWORD data_arr[BUFFER_SIZE];
0057 UINT addr_arr[BUFFER_SIZE];
0058 int packetLength;
0059 int numBytes;
0060
0061 int err;
0062 int i,j;
0063 int historyBlockSize;
0064
0065
0066
0067 maxFrameLen = BUFFER_SIZE;
0068 dwordClear(&data_arr,BUFFER_SIZE);
0069
0070 if ( (err = makeFrameHdr(frame_ptr,maxFrameLen,0x1,0x1, sourceId)) != 0 ){
0071 printf("FakeFrame: makeFrameHdr failed\n");
0072 return(-1);
0073 }
0074
0075 setAlignBlock(frame_ptr,(PHDWORD*) &alignBlk,2);
0076
0077 write_ptr = findFrameEnd(frame_ptr)+1;
0078
0079 for (i = 0; i<number_of_packets;i++)
0080 {
0081
0082 remainingSpace = bufferSize - (int) (write_ptr - frame_ptr);
0083
0084 makeUnstructPacket(write_ptr,
0085 remainingSpace,
0086 packet_ids[i],
0087 sizeof(PHDWORD),
0088 0
0089 );
0090
0091
0092
0093 numBytes = packet_lengths[i] ;
0094
0095 for (j=0; j<packet_lengths[i];j++){
0096
0097 data_arr[j]=j;
0098 }
0099
0100 packetLength = storePacketHits(
0101 write_ptr,
0102 remainingSpace,
0103 addr_arr,
0104 (BYTE*) &data_arr,
0105 numBytes,
0106 0
0107 );
0108 extendFrameDataNopad(frame_ptr,bufferSize,packetLength);
0109 #ifdef DEBUG
0110 Debug_Output("Packet %2d : Length = %d Total=%d\n",
0111 i,packetLength,getFrameDataLength(frame_ptr));
0112 #endif
0113 write_ptr += packetLength;
0114 }
0115
0116
0117 remainingSpace = bufferSize - (int) (write_ptr - frame_ptr);
0118 historyBlockSize = storeFrameHistory(frame_ptr,
0119 remainingSpace,
0120 (PHDWORD*) &data_arr,
0121 historySize);
0122
0123 write_ptr += historyBlockSize;
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133 total_frame_size = getFrameLength(frame_ptr);
0134
0135 return total_frame_size;
0136
0137 }
0138
0139 int splitFakeFrame(
0140 PHDWORD* frame_ptr,
0141 int total_frame_size,
0142 int length_of_buffer,
0143 PHDWORD* start_of_buffer[]
0144 )
0145 {
0146 int i,j;
0147 int number_of_buffers;
0148 PHDWORD* write_ptr;
0149 PHDWORD* write_ptr_buf;
0150 write_ptr = frame_ptr;
0151
0152 number_of_buffers = total_frame_size / length_of_buffer + 1;
0153
0154 for (i=0;i<number_of_buffers;i++){
0155 start_of_buffer[i] = (PHDWORD*) malloc(4*length_of_buffer);
0156 write_ptr_buf = start_of_buffer[i];
0157
0158 for (j=0 ; j<length_of_buffer ; j++){
0159 *write_ptr_buf = *write_ptr;
0160 write_ptr++;
0161 write_ptr_buf++;
0162 }
0163 }
0164
0165
0166
0167
0168
0169
0170
0171 return number_of_buffers;
0172
0173 }
0174
0175
0176