Startingfnum (#40)

* starting fnum

* by default starting fnum disabled in gui

* insignificant change

* adding binary

* virtual eiger server working now

* test:: namespace
This commit is contained in:
Dhanya Thattil 2019-07-23 14:15:08 +02:00 committed by Erik Fröjdh
parent e3f151851c
commit 6e4e2c4524
14 changed files with 248 additions and 89 deletions

View File

@ -10,9 +10,9 @@ class MultiDetectorFixture {
public:
MultiDetectorFixture() : d(0, true, true) {
d.setHostname(hostname.c_str());
if (my_ip != "undefined")
d.setReceiverHostname(my_ip);
d.setHostname(test::hostname.c_str());
if (test::my_ip != "undefined")
d.setReceiverHostname(test::my_ip);
}
~MultiDetectorFixture() { d.freeSharedMemory(); }
};
@ -99,7 +99,6 @@ int to_time(uint32_t reg) {
TEST_CASE_METHOD(MultiDetectorFixture, "Read/write register",
"[.eigerintegration][cli]") {
d.setTimer(ti::MEASUREMENTS_NUMBER, 1);
d.setNumberOfFrames(1);
d.setExposureTime(10000);
d.acquire();
@ -132,7 +131,7 @@ TEST_CASE_METHOD(MultiDetectorFixture, "Get time left",
}
TEST_CASE_METHOD(MultiDetectorFixture, "Get ID", "[.eigerintegration][cli]") {
std::string hn = hostname;
std::string hn = test::hostname;
hn.erase(std::remove(begin(hn), end(hn), 'b'), end(hn));
hn.erase(std::remove(begin(hn), end(hn), 'e'), end(hn));
auto hostnames = sls::split(hn, '+');

View File

@ -16,27 +16,27 @@
// Header holding all configurations for different detectors
#include "tests/config.h"
#include "tests/globals.h"
// using namespace test;
// using dt = slsDetectorDefs::detectorType;
// extern std::string hostname;
// extern std::string detector_type;
// extern dt type;
TEST_CASE("Single detector no receiver", "[.integration][.single]") {
auto t = slsDetector::getTypeFromDetector(hostname);
CHECK(t == type);
auto t = slsDetector::getTypeFromDetector(test::hostname);
CHECK(t == test::type);
slsDetector d(t);
CHECK(d.getDetectorTypeAsEnum() == t);
CHECK(d.getDetectorTypeAsString() == detector_type);
CHECK(d.getDetectorTypeAsString() == test::detector_type);
d.setHostname(hostname);
CHECK(d.getHostname() == hostname);
d.setHostname(test::hostname);
CHECK(d.getHostname() == test::hostname);
d.setOnline(true);
CHECK(d.getOnlineFlag() == true);
CHECK(d.setDetectorType() == type);
CHECK(d.setDetectorType() == test::type);
d.freeSharedMemory();
}
@ -54,8 +54,8 @@ TEST_CASE("Set control port then create a new object with this control port",
int new_cport = 1993;
int new_sport = 2000;
{
slsDetector d(type);
d.setHostname(hostname);
slsDetector d(test::type);
d.setHostname(test::hostname);
d.setOnline(true);
CHECK(d.getControlPort() == old_cport);
d.setControlPort(new_cport);
@ -64,8 +64,8 @@ TEST_CASE("Set control port then create a new object with this control port",
d.freeSharedMemory();
}
{
slsDetector d(type);
d.setHostname(hostname);
slsDetector d(test::type);
d.setHostname(test::hostname);
d.setControlPort(new_cport);
d.setStopPort(new_sport);
CHECK(d.getControlPort() == new_cport);
@ -79,8 +79,8 @@ TEST_CASE("Set control port then create a new object with this control port",
d.freeSharedMemory();
}
slsDetector d(type);
d.setHostname(hostname);
slsDetector d(test::type);
d.setHostname(test::hostname);
d.setOnline(true);
CHECK(d.getStopPort() == DEFAULT_PORTNO + 1);
d.freeSharedMemory();
@ -143,8 +143,8 @@ TEST_CASE("single EIGER detector no receiver basic set and get",
TEST_CASE("Locking mechanism and last ip", "[.integration][.single]") {
slsDetector d(type);
d.setHostname(hostname);
slsDetector d(test::type);
d.setHostname(test::hostname);
d.setOnline(true);
// Check that detector server is unlocked then lock
@ -161,13 +161,13 @@ TEST_CASE("Locking mechanism and last ip", "[.integration][.single]") {
d.lockServer(0);
CHECK(d.lockServer() == 0);
CHECK(d.getLastClientIP() == my_ip);
CHECK(d.getLastClientIP() == test::my_ip);
d.freeSharedMemory();
}
TEST_CASE("Set settings", "[.integration][.single]"){
slsDetector d(type);
d.setHostname(hostname);
slsDetector d(test::type);
d.setHostname(test::hostname);
d.setOnline(true);
CHECK(d.setSettings(defs::STANDARD) == defs::STANDARD);
}
@ -197,8 +197,8 @@ TEST_CASE("Timer functions", "[.integration][cli]") {
// MEASURED_SUBPERIOD, /**< measured subperiod */
// MAX_TIMERS
slsDetector d(type);
d.setHostname(hostname);
slsDetector d(test::type);
d.setHostname(test::hostname);
d.setOnline(true);
// Number of frames
@ -214,14 +214,14 @@ TEST_CASE("Timer functions", "[.integration][cli]") {
d.setTimer(slsDetectorDefs::timerIndex::FRAME_PERIOD, period);
CHECK(d.setTimer(slsDetectorDefs::timerIndex::FRAME_PERIOD) == period);
if (type != dt::EIGER) {
if (test::type != dt::EIGER) {
auto delay = 10000;
d.setTimer(slsDetectorDefs::timerIndex::DELAY_AFTER_TRIGGER, delay);
CHECK(d.setTimer(slsDetectorDefs::timerIndex::DELAY_AFTER_TRIGGER) ==
delay);
}
if (type != dt::EIGER) {
if (test::type != dt::EIGER) {
auto gates = 1;
d.setTimer(slsDetectorDefs::timerIndex::GATES_NUMBER, gates);
CHECK(d.setTimer(slsDetectorDefs::timerIndex::GATES_NUMBER) == gates);
@ -231,7 +231,7 @@ TEST_CASE("Timer functions", "[.integration][cli]") {
d.setTimer(slsDetectorDefs::timerIndex::CYCLES_NUMBER, cycles);
CHECK(d.setTimer(slsDetectorDefs::timerIndex::CYCLES_NUMBER) == cycles);
if (type == dt::EIGER) {
if (test::type == dt::EIGER) {
auto subtime = 200;
d.setTimer(slsDetectorDefs::timerIndex::SUBFRAME_ACQUISITION_TIME,
subtime);

View File

@ -7,19 +7,19 @@
using namespace Catch::literals;
TEST_CASE("Initialize a multi detector", "[.integration][.multi]") {
auto hostnames = sls::split(hostname, '+');
auto hostnames = sls::split(test::hostname, '+');
multiSlsDetector d(0, true, true);
d.setHostname(hostname.c_str());
d.setHostname(test::hostname.c_str());
REQUIRE(d.setOnline() == true); // get!
CHECK(d.getHostname() == hostname);
CHECK(d.getHostname() == test::hostname);
for (size_t i = 0; i != hostnames.size(); ++i) {
CHECK(d.getHostname(i) == hostnames[i]);
}
CHECK(d.getDetectorTypeAsEnum() == type);
CHECK(d.getDetectorTypeAsString() == detector_type);
CHECK(d.getDetectorTypeAsEnum() == test::type);
CHECK(d.getDetectorTypeAsString() == test::detector_type);
CHECK(d.getNumberOfDetectors() == hostnames.size());
d.freeSharedMemory();
@ -30,7 +30,7 @@ TEST_CASE("Initialize a multi detector", "[.integration][.multi]") {
TEST_CASE("Set and read timers", "[.integration][.multi]") {
multiSlsDetector d(0, true, true);
d.setHostname(hostname.c_str());
d.setHostname(test::hostname.c_str());
// FRAME_NUMBER
int n_frames = 3;
@ -58,9 +58,6 @@ TEST_CASE("Set and read timers", "[.integration][.multi]") {
// PROGRESS, /**< fraction of measurement elapsed - only get! */
// MEASUREMENTS_NUMBER,
int measurements = 2;
d.setTimer(ti::MEASUREMENTS_NUMBER, measurements);
CHECK(d.setTimer(ti::MEASUREMENTS_NUMBER, -1) == measurements);
// FRAMES_FROM_START,
// FRAMES_FROM_START_PG,
@ -68,7 +65,7 @@ TEST_CASE("Set and read timers", "[.integration][.multi]") {
// SUBFRAME_ACQUISITION_TIME, /**< subframe exposure time */
double subframe_exposure = 2000000; // ns
if (type == dt::EIGER) {
if (test::type == dt::EIGER) {
d.setSubFrameExposureTime(subframe_exposure);
CHECK(d.setSubFrameExposureTime(-1) == Approx(subframe_exposure));
}
@ -77,13 +74,13 @@ TEST_CASE("Set and read timers", "[.integration][.multi]") {
// SUBFRAME_DEADTIME, /**< subframe deadtime */
double subframe_deadtime = 4000; // ns
if (type == dt::EIGER) {
if (test::type == dt::EIGER) {
d.setSubFrameExposureDeadTime(subframe_deadtime);
CHECK(d.setSubFrameExposureDeadTime(-1) == Approx(subframe_deadtime));
}
if (type == dt::EIGER) {
if (test::type == dt::EIGER) {
// 32bit is needed for subframe exposure
d.setDynamicRange(32);
CHECK(d.setDynamicRange(-1) == 32);

View File

@ -255,6 +255,27 @@
<enum>QFrame::Plain</enum>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="0">
<widget class="QLabel" name="lblIndex">
<property name="text">
<string>Run Index:</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="chkFile">
<property name="toolTip">
<string>&lt;nobr&gt;Sets output file name prefix&lt;/nobr&gt;&lt;br&gt;
&lt;nobr&gt;Check the box to enable write to file. &lt;/nobr&gt;</string>
</property>
<property name="text">
<string>File Name:</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinIndex">
<property name="sizePolicy">
@ -322,24 +343,62 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lblIndex">
<property name="text">
<string>Run Index:</string>
<item row="2" column="1">
<widget class="QSpinBox" name="spinStartingFrameNumber">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The starting frame number of next acquisition.&lt;/p&gt;&lt;p&gt;#startingfnum&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="keyboardTracking">
<bool>false</bool>
</property>
<property name="suffix">
<string/>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>2000000000</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="chkFile">
<item row="2" column="0">
<widget class="QLabel" name="lblStartingFrameNumber">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;Sets output file name prefix&lt;/nobr&gt;&lt;br&gt;
&lt;nobr&gt;Check the box to enable write to file. &lt;/nobr&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The starting frame number of next acquisition.&lt;/p&gt;&lt;p&gt;#startingfnum&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>File Name:</string>
</property>
<property name="checked">
<bool>true</bool>
<string>Next Frame Number: </string>
</property>
</widget>
</item>

View File

@ -33,6 +33,7 @@ private slots:
void SetFileWrite(bool val);
void SetFileName();
void SetRunIndex(int val);
void SetStartingFrameNumber(int val);
void UpdateProgress();
void StartAcquisition();
void StopAcquisition();
@ -54,6 +55,7 @@ private:
void GetFileWrite();
void GetFileName();
void GetRunIndex();
void GetStartingFrameNumber();
void ResetProgress();
@ -81,6 +83,7 @@ private:
QPalette red;
bool delayImplemented;
bool sampleImplemented;
bool startingFnumImplemented;
bool isAcquisitionStopped{false};
int numMeasurements{1};
int currentMeasurement{0};

View File

@ -37,7 +37,8 @@ void qTabMeasurement::SetupWidgetWindow() {
sampleImplemented = false;
delayImplemented = true;
// by default, delay is disabled in form
startingFnumImplemented = false;
// by default, delay and starting fnum is disabled in form
lblDelay->setEnabled(true);
spinDelay->setEnabled(true);
comboDelayUnit->setEnabled(true);
@ -50,6 +51,14 @@ void qTabMeasurement::SetupWidgetWindow() {
break;
case slsDetectorDefs::EIGER:
delayImplemented = false;
lblStartingFrameNumber->setEnabled(true);
spinStartingFrameNumber->setEnabled(true);
startingFnumImplemented = true;
break;
case slsDetectorDefs::JUNGFRAU:
lblStartingFrameNumber->setEnabled(true);
spinStartingFrameNumber->setEnabled(true);
startingFnumImplemented = true;
break;
default:
break;
@ -83,6 +92,9 @@ void qTabMeasurement::Initialization() {
connect(chkFile, SIGNAL(toggled(bool)), this, SLOT(SetFileWrite(bool)));
connect(dispFileName, SIGNAL(editingFinished()), this, SLOT(SetFileName()));
connect(spinIndex, SIGNAL(valueChanged(int)), this, SLOT(SetRunIndex(int)));
if (startingFnumImplemented) {
connect(spinStartingFrameNumber, SIGNAL(valueChanged(int)), this, SLOT(SetStartingFrameNumber(int)));
}
connect(progressTimer, SIGNAL(timeout()), this, SLOT(UpdateProgress()));
connect(btnStart, SIGNAL(clicked()), this, SLOT(StartAcquisition()));
connect(btnStop, SIGNAL(clicked()), this, SLOT(StopAcquisition()));
@ -512,6 +524,26 @@ void qTabMeasurement::SetRunIndex(int val) {
} CATCH_HANDLE("Could not set acquisition file index.", "qTabMeasurement::SetRunIndex", this, &qTabMeasurement::GetRunIndex)
}
void qTabMeasurement::GetStartingFrameNumber() {
FILE_LOG(logDEBUG) << "Getting Starting Frame Number";
disconnect(spinStartingFrameNumber, SIGNAL(valueChanged(int)), this, SLOT(SetStartingFrameNumber(int)));
try {
auto retval = myDet->getStartingFrameNumber();
spinStartingFrameNumber->setValue(retval);
} CATCH_DISPLAY ("Could not get starting frame number.", "qTabMeasurement::GetStartingFrameNumber")
connect(spinStartingFrameNumber, SIGNAL(valueChanged(int)), this, SLOT(SetStartingFrameNumber(int)));
}
void qTabMeasurement::SetStartingFrameNumber(int val) {
FILE_LOG(logINFO) << "Setting Starting frame number to " << val;
try {
myDet->setStartingFrameNumber(val);
} CATCH_HANDLE("Could not set starting frame number.", "qTabMeasurement::SetStartingFrameNumber", this, &qTabMeasurement::GetStartingFrameNumber)
}
void qTabMeasurement::ResetProgress() {
FILE_LOG(logDEBUG) << "Resetting progress";
lblCurrentFrame->setText("0");
@ -590,6 +622,9 @@ void qTabMeasurement::AcquireFinished() {
FILE_LOG(logDEBUG) << "Acquire Finished";
UpdateProgress();
GetRunIndex();
if (startingFnumImplemented) {
GetStartingFrameNumber();
}
FILE_LOG(logDEBUG) << "Measurement " << currentMeasurement << " finished";
// next measurement if acq is not stopped
if (!isAcquisitionStopped && ((currentMeasurement + 1) < numMeasurements)) {
@ -639,6 +674,9 @@ void qTabMeasurement::Refresh() {
GetFileWrite();
GetFileName();
GetRunIndex();
if (startingFnumImplemented) {
GetStartingFrameNumber();
}
ResetProgress();
}

View File

@ -1302,47 +1302,77 @@ int Beb_SetStartingFrameNumber(uint64_t value) {
if (fd < 0) {
FILE_LOG(logERROR, ("Set Start Frame Number FAIL\n"));
return FAIL;
} else {
// since the read is not implemented in firmware yet
Beb_deactivatedStartFrameNumber = value;
// decrement for firmware
uint64_t valueInFirmware = value - 1;
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_LSB_OFST, valueInFirmware & (0xffffffff));
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST, (valueInFirmware >> 32) & (0xffffffff));
Beb_close(fd,csp0base);
}
// since the read is not implemented in firmware yet
Beb_deactivatedStartFrameNumber = value;
uint64_t retval = -1;
if ((Beb_GetStartingFrameNumber(&retval) == OK) && (retval == value)) {
FILE_LOG(logINFO, ("Going to reset Frame Number\n"));
Beb_ResetFrameNumber();
}
// decrement for firmware
uint64_t valueInFirmware = value - 1;
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_LSB_OFST, valueInFirmware & (0xffffffff));
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST, (valueInFirmware >> 32) & (0xffffffff));
Beb_close(fd,csp0base);
FILE_LOG(logINFO, ("Going to reset Frame Number\n"));
Beb_ResetFrameNumber();
return OK;
}
int Beb_GetStartingFrameNumber(uint64_t* retval) {
int Beb_GetStartingFrameNumber(uint64_t* retval, int tengigaEnable) {
if (!Beb_activated) {
*retval = Beb_deactivatedStartFrameNumber;
return OK;
}
FILE_LOG(logDEBUG1, ("Getting start frame number\n"));
// since it is not implemented in firmware yet
*retval = Beb_deactivatedStartFrameNumber;
/*
FILE_LOG(logDEBUG1, ("Getting start frame number\n"));
u_int32_t* csp0base = 0;
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_TEST_BASEADDR);
int fd = Beb_open(&csp0base, XPAR_COUNTER_BASEADDR);
if (fd < 0) {
FILE_LOG(logERROR, ("Set Start Frame Number FAIL\n"));
FILE_LOG(logERROR, ("Get Start Frame Number FAIL\n"));
return FAIL;
} else {
*retval = Beb_Read32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST);
uint32_t lretval = Beb_Read32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST);
*retval = (*retval << 32) | lretval;
Beb_close(fd,csp0base);
}
*/
uint32_t temp = 0;
if (!tengigaEnable) {
uint64_t left1g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
left1g = ((left1g << 32) | temp) >> 16;
++left1g; // increment for firmware
uint64_t right1g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
right1g = ((right1g << 32) | temp) >> 16;
++right1g; // increment for firmware
Beb_close(fd,csp0base);
if (left1g != right1g) {
FILE_LOG(logERROR, ("Retrieved inconsistent frame numbers from 1g left %llu and right %llu\n",
(long long int)left1g, (long long int)right1g));
*retval = (left1g > right1g) ? left1g : right1g; // give max to set it to when stopping acq & different value
return -2; // to differentiate between failed address mapping
}
*retval = left1g;
}
else {
uint64_t left10g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
left10g = ((left10g << 32) | temp) >> 16;
++left10g; // increment for firmware
uint64_t right10g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
right10g = ((right10g << 32) | temp) >> 16;
Beb_close(fd,csp0base);
++right10g; // increment for firmware
if (left10g != right10g) {
FILE_LOG(logERROR, ("Retrieved inconsistent frame numbers from `0g left %llu and right %llu\n",
(long long int)left10g, (long long int)right10g));
*retval = (left10g > right10g) ? left10g : right10g; // give max to set it to when stopping acq & different value
return -2; // to differentiate between failed address mapping
}
*retval = left10g;
}
return OK;
}

View File

@ -78,7 +78,7 @@ void Beb_SetQuad(int value);
int Beb_GetQuad();
int Beb_SetDetectorPosition(int pos[]);
int Beb_SetStartingFrameNumber(uint64_t value);
int Beb_GetStartingFrameNumber(uint64_t* retval);
int Beb_GetStartingFrameNumber(uint64_t* retval, int tengigaEnable);
uint16_t Beb_swap_uint16( uint16_t val);
int Beb_open(u_int32_t** csp0base, u_int32_t offset);

View File

@ -202,9 +202,6 @@
#define UDP_HEADER_Y_OFST (16)
#define UDP_HEADER_Y_MSK (0xFFFF << UDP_HEADER_Y_OFST)
// udp header (frame number)
#define UDP_HEADER_FRAME_NUMBER_LSB_OFST (0x0140)
#define UDP_HEADER_FRAME_NUMBER_MSB_OFST (0x0160)

View File

@ -666,7 +666,7 @@ int getStartingFrameNumber(uint64_t* retval) {
*retval = eiger_virtual_startingframenumber;
return OK;
#else
return Beb_GetStartingFrameNumber(retval);
return Beb_GetStartingFrameNumber(retval, send_to_ten_gig);
#endif
}
@ -1311,11 +1311,17 @@ int setDetectorPosition(int pos[]) {
}
void setQuad(int value) {
#ifndef VIRTUAL
Beb_SetQuad(value);
#endif
}
int getQuad() {
#ifdef VIRTUAL
return 0;
#else
return Beb_GetQuad();
#endif
}
int enableTenGigabitEthernet(int val) {
@ -1793,11 +1799,17 @@ int stopStateMachine() {
eiger_virtual_stop = 0;
return OK;
#else
if ((Feb_Control_StopAcquisition() != STATUS_IDLE) || (!Beb_StopAcquisition()) ) {
FILE_LOG(logERROR, ("failed to stop acquisition\n"));
return FAIL;
}
if ((Feb_Control_StopAcquisition() == STATUS_IDLE) & Beb_StopAcquisition())
return OK;
FILE_LOG(logERROR, ("failed to stop acquisition\n"));
return FAIL;
// ensure all have same starting frame numbers
uint64_t retval = 0;
if(Beb_GetStartingFrameNumber(&retval, send_to_ten_gig) == -2) {
Beb_SetStartingFrameNumber(retval + 1);
}
return OK;
#endif
}

View File

@ -56,16 +56,34 @@ XPAR_PLB_LL_FIFO_AURORA_DUAL_CTRL_FEB_LEFT_BASEADDR
/** Version Numbers */
#define XPAR_VERSION 0xc6000000
/* Definitions for peripheral PLB_GPIO_TEST */
#define XPAR_PLB_GPIO_TEST_BASEADDR 0xD1010000
#define XPAR_PLB_GPIO_TEST_HIGHADDR 0xD101FFFF
// udp header (set frame number)
#define UDP_HEADER_FRAME_NUMBER_LSB_OFST (0x0140)
#define UDP_HEADER_FRAME_NUMBER_MSB_OFST (0x0160)
/* Definitions for packet, frame and delay down counters */
#define XPAR_COUNTER_BASEADDR 0xD1020000
#define XPAR_COUNTER_HIGHADDR 0xD102FFFF
// udp header (get frame number)
#define UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST (0x0004)
#define UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST (0x0024)
#define UDP_HEADER_GET_FNUM_1G_RIGHT_LSB_OFST (0x0044)
#define UDP_HEADER_GET_FNUM_1G_RIGHT_MSB_OFST (0x0064)
#define UDP_HEADER_GET_FNUM_10G_LEFT_LSB_OFST (0x0084)
#define UDP_HEADER_GET_FNUM_10G_LEFT_MSB_OFST (0x00A4)
#define UDP_HEADER_GET_FNUM_10G_RIGHT_LSB_OFST (0x00C4)
#define UDP_HEADER_GET_FNUM_10G_RIGHT_MSB_OFST (0x00E4)
/* Definitions for peripheral PLB_LL_FIFO_AURORA_DUAL_CTRL_FEB_LEFT */
#define XPAR_PLB_LL_FIFO_AURORA_DUAL_CTRL_FEB_LEFT_BASEADDR 0xC4100000

View File

@ -4044,6 +4044,9 @@ int set_starting_frame_number(int file_des) {
if (ret == FAIL) {
sprintf(mess, "Could not get starting frame number. Failed to map address.\n");
FILE_LOG(logERROR,(mess));
} else if (ret == -2) {
sprintf(mess, "Inconsistent starting frame number from left and right FPGA. Please set it.\n");
FILE_LOG(logERROR,(mess));
} else {
if (arg != retval) {
ret = FAIL;
@ -4073,6 +4076,9 @@ int get_starting_frame_number(int file_des) {
if (ret == FAIL) {
sprintf(mess, "Could not get starting frame number. Failed to map address.\n");
FILE_LOG(logERROR,(mess));
} else if (ret == -2) {
sprintf(mess, "Inconsistent starting frame number from left and right FPGA. Please set it.\n");
FILE_LOG(logERROR,(mess));
} else {
FILE_LOG(logDEBUG1, ("Start frame number retval: %u\n", retval));
}

View File

@ -4,7 +4,7 @@
#define APICTB 0x190604
#define APIGOTTHARD 0x190715
#define APIJUNGFRAU 0x190718
#define APIEIGER 0x190722
#define APIEIGER 0x190723
#define APILIB 0x190723
#define APIRECEIVER 0x190722
#define APIGUI 0x190723