mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-19 08:17:13 +02:00
moving subframenumber into a 32 bit number, also in stremer, changing json header to mention 4 bit and version number
This commit is contained in:
@ -307,7 +307,6 @@ void DataProcessor::ProcessAnImage(char* buf) {
|
||||
RecordFirstIndices(fnum);
|
||||
}
|
||||
|
||||
/** bunch id pass as well and then do what with it */
|
||||
if (fileWriteEnable && *callbackAction == DO_EVERYTHING)
|
||||
file->WriteToFile(buf, generalData->fifoBufferSize + FILE_FRAME_HEADER_SIZE, fnum-firstMeasurementIndex);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ pthread_mutex_t DataStreamer::Mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
const char* DataStreamer::jsonHeaderFormat_part1 =
|
||||
"{"
|
||||
"\"htype\":[\"chunk-1.0\"], "
|
||||
"\"version\":%.1f, "
|
||||
"\"type\":\"%s\", "
|
||||
"\"shape\":[%d, %d], ";
|
||||
|
||||
@ -33,7 +33,7 @@ const char* DataStreamer::jsonHeaderFormat =
|
||||
"%s"
|
||||
"\"acqIndex\":%lld, "
|
||||
"\"fIndex\":%lld, "
|
||||
"\"subfnum\":%lld, "
|
||||
"\"subfnum\":%u, "
|
||||
"\"fname\":\"%s\"}";
|
||||
|
||||
|
||||
@ -132,7 +132,7 @@ void DataStreamer::ResetParametersforNewMeasurement(){
|
||||
void DataStreamer::CreateHeaderPart1() {
|
||||
char type[10] = "";
|
||||
switch (*dynamicRange) {
|
||||
case 4: strcpy(type, "uint8"); break;
|
||||
case 4: strcpy(type, "uint4"); break;
|
||||
case 8: strcpy(type, "uint8"); break;
|
||||
case 16: strcpy(type, "uint16"); break;
|
||||
case 32: strcpy(type, "uint32"); break;
|
||||
@ -143,7 +143,7 @@ void DataStreamer::CreateHeaderPart1() {
|
||||
}
|
||||
|
||||
sprintf(currentHeader, jsonHeaderFormat_part1,
|
||||
type, generalData->nPixelsX, generalData->nPixelsY);
|
||||
STREAMER_VERSION, type, generalData->nPixelsX, generalData->nPixelsY);
|
||||
#ifdef VERBOSE
|
||||
cprintf(BLUE, "%d currentheader: %s\n", index, currentHeader);
|
||||
#endif
|
||||
@ -233,7 +233,7 @@ void DataStreamer::StopProcessing(char* buf) {
|
||||
if (!SendHeader(0, true))
|
||||
cprintf(RED,"Error: Could not send zmq dummy header for streamer %d\n", index);
|
||||
|
||||
if (!zmqSocket->SendData(DUMMY_MSG, DUMMY_MSG_SIZE))
|
||||
if (!zmqSocket->SendData((char*)DUMMY_MSG, DUMMY_MSG_SIZE))
|
||||
cprintf(RED,"Error: Could not send zmq dummy message for streamer %d\n", index);
|
||||
|
||||
fifo->FreeAddress(buf);
|
||||
@ -246,6 +246,7 @@ void DataStreamer::StopProcessing(char* buf) {
|
||||
|
||||
void DataStreamer::ProcessAnImage(char* buf) {
|
||||
uint64_t fnum = (*((uint64_t*)buf));
|
||||
uint32_t snum = (*((uint32_t*)(buf + FILE_FRAME_HDR_FNUM_SIZE)));
|
||||
#ifdef VERBOSE
|
||||
if (!index) cprintf(MAGENTA,"DataStreamer %d: fnum:%lld\n", index, (long long int)fnum);
|
||||
#endif
|
||||
@ -270,7 +271,7 @@ void DataStreamer::ProcessAnImage(char* buf) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!SendHeader(fnum))
|
||||
if (!SendHeader(fnum, snum))
|
||||
cprintf(RED,"Error: Could not send zmq header for fnum %lld and streamer %d\n",
|
||||
(long long int) fnum, index);
|
||||
|
||||
@ -307,21 +308,21 @@ bool DataStreamer::CheckCount() {
|
||||
}
|
||||
|
||||
|
||||
int DataStreamer::SendHeader(uint64_t fnum, bool dummy) {
|
||||
int DataStreamer::SendHeader(uint64_t fnum, uint32_t snum, bool dummy) {
|
||||
uint64_t frameIndex = -1;
|
||||
uint64_t acquisitionIndex = -1;
|
||||
uint64_t subframeIndex = -1;
|
||||
uint32_t subframeIndex = -1;
|
||||
char fname[MAX_STR_LENGTH] = "run";
|
||||
char buf[1000] = "";
|
||||
|
||||
if (!dummy) {
|
||||
frameIndex = fnum - firstMeasurementIndex;
|
||||
acquisitionIndex = fnum - firstAcquisitionIndex;
|
||||
subframeIndex = -1; /* subframe to be included in fifo buffer? */
|
||||
subframeIndex = snum;
|
||||
/* fname to be included in fifo buffer? */
|
||||
}
|
||||
|
||||
int len = sprintf(buf, jsonHeaderFormat, currentHeader, acquisitionIndex, frameIndex, subframeIndex,fname);
|
||||
int len = sprintf(buf, jsonHeaderFormat, currentHeader, acquisitionIndex, frameIndex, subframeIndex, fname);
|
||||
#ifdef VERBOSE
|
||||
printf("%d Streamer: buf:%s\n", index, buf);
|
||||
#endif
|
||||
|
@ -265,6 +265,7 @@ void Listener::ThreadExecution() {
|
||||
}
|
||||
|
||||
(*((uint32_t*)buffer)) = rc;
|
||||
//for those returning earlier
|
||||
(*((uint64_t*)(buffer + FIFO_HEADER_NUMBYTES ))) = currentFrameIndex;
|
||||
currentFrameIndex++;
|
||||
|
||||
@ -288,8 +289,10 @@ void Listener::StopListening(char* buf) {
|
||||
|
||||
uint32_t Listener::ListenToAnImage(char* buf) {
|
||||
uint32_t rc = 0;
|
||||
uint64_t fnum = 0; uint32_t pnum = 0;
|
||||
uint64_t fnum = 0, bid = 0;
|
||||
uint32_t pnum = 0, snum = 0;
|
||||
int dsize = generalData->dataSize;
|
||||
bool isHeaderEmpty = true;
|
||||
|
||||
|
||||
//reset to -1
|
||||
@ -299,13 +302,18 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
||||
//look for carry over
|
||||
if (carryOverFlag) {
|
||||
//check if its the current image packet
|
||||
generalData->GetHeaderInfo(index,carryOverPacket,fnum,pnum);
|
||||
generalData->GetHeaderInfo(index, carryOverPacket, fnum, pnum, snum, bid);
|
||||
if (fnum != currentFrameIndex) {
|
||||
return generalData->imageSize;
|
||||
}
|
||||
carryOverFlag = false;
|
||||
memcpy(buf + (pnum * dsize), carryOverPacket + generalData->headerSizeinPacket, dsize);
|
||||
(*((uint64_t*)(buf - FILE_FRAME_HEADER_SIZE))) = fnum;
|
||||
if(isHeaderEmpty) {
|
||||
(*((uint64_t*)(buf - FILE_FRAME_HEADER_SIZE))) = fnum;
|
||||
(*((uint64_t*)(buf - FILE_FRAME_HEADER_SIZE + FILE_FRAME_HDR_FNUM_SIZE))) = snum;
|
||||
(*((uint64_t*)(buf - FILE_FRAME_HEADER_SIZE + FILE_FRAME_HDR_FNUM_SIZE + FILE_FRAME_HDR_SNUM_SIZE))) = bid;
|
||||
isHeaderEmpty = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -319,7 +327,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
||||
//update parameters
|
||||
numPacketsCaught++; //record immediately to get more time before socket shutdown
|
||||
numTotalPacketsCaught++;
|
||||
generalData->GetHeaderInfo(index,listeningPacket,fnum,pnum);
|
||||
generalData->GetHeaderInfo(index, listeningPacket, fnum, pnum, snum, bid);
|
||||
lastCaughtFrameIndex = fnum;
|
||||
#ifdef VERBOSE
|
||||
if (!index && !pnum) cprintf(GREEN,"Listening %d: fnum:%lld, pnum:%d\n", index, (long long int)fnum, pnum);
|
||||
@ -327,7 +335,6 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
||||
if (!measurementStartedFlag)
|
||||
RecordFirstIndices(fnum);
|
||||
|
||||
|
||||
//future packet
|
||||
if (fnum != currentFrameIndex) {
|
||||
carryOverFlag = true;
|
||||
@ -337,6 +344,12 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
||||
|
||||
//copy packet
|
||||
memcpy(buf + (pnum * dsize), listeningPacket + generalData->headerSizeinPacket, dsize);
|
||||
if(isHeaderEmpty) {
|
||||
(*((uint64_t*)(buf - FILE_FRAME_HEADER_SIZE))) = fnum;
|
||||
(*((uint64_t*)(buf - FILE_FRAME_HEADER_SIZE + FILE_FRAME_HDR_FNUM_SIZE))) = snum;
|
||||
(*((uint64_t*)(buf - FILE_FRAME_HEADER_SIZE + FILE_FRAME_HDR_FNUM_SIZE + FILE_FRAME_HDR_SNUM_SIZE))) = bid;
|
||||
isHeaderEmpty = false;
|
||||
}
|
||||
}
|
||||
|
||||
return generalData->imageSize;
|
||||
|
Reference in New Issue
Block a user