mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 03:10:02 +02:00
Dev/jf firmware rollback (#1011)
* jf: rolling back firmware required to v1.5 and 2.5, updated release notes, fixed a bug when updating server (when server name same as link name:throws with no message, pedestal mode check changed for the time being for loops to be 0xFF size * compensating for jf fw bug for pedestalmode where loops should be 16 bit, but is 8 bit in fw. to be fixed in next version * formatting * formatting, merge fix * fixed python test simulator to kill previous servers * rmeoved merge binary
This commit is contained in:
parent
60868ae74e
commit
5f805f8789
@ -66,8 +66,8 @@ This document describes the differences between vx.x.x and vx.0.2
|
||||
|
||||
Eiger 02.10.2023 (v32) (updated in 7.0.3)
|
||||
|
||||
Jungfrau 01.10.2024 (v1.6, HW v1.0) (updated in 9.0.0)
|
||||
01.10.2024 (v2.6, HW v2.0) (updated in 9.0.0)
|
||||
Jungfrau 20.09.2023 (v1.5, HW v1.0) (updated in 8.0.0)
|
||||
21.09.2023 (v2.5, HW v2.0) (updated in 8.0.0)
|
||||
|
||||
Mythen3 11.10.2024 (v1.5) (updated in 9.0.0)
|
||||
|
||||
|
Binary file not shown.
@ -2555,6 +2555,7 @@ void getPedestalParameters(uint8_t *frames, uint16_t *loops) {
|
||||
}
|
||||
|
||||
void setPedestalMode(int enable, uint8_t frames, uint16_t loops) {
|
||||
// Note: loops is 8 bit in firmware as a bug.To be fixed in next version
|
||||
int prevPedestalEnable = getPedestalMode();
|
||||
uint32_t addr = PEDESTAL_MODE_REG;
|
||||
|
||||
|
@ -5,8 +5,8 @@
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
#define MIN_REQRD_VRSN_T_RD_API 0x171220
|
||||
#define REQRD_FRMWRE_VRSN_BOARD2 0x241001 // 1.0 pcb (version = 010)
|
||||
#define REQRD_FRMWRE_VRSN 0x241001 // 2.0 pcb (version = 011)
|
||||
#define REQRD_FRMWRE_VRSN_BOARD2 0x230920 // 1.0 pcb (version = 010)
|
||||
#define REQRD_FRMWRE_VRSN 0x230921 // 2.0 pcb (version = 011)
|
||||
|
||||
#define NUM_HARDWARE_VERSIONS (2)
|
||||
#define HARDWARE_VERSION_NUMBERS \
|
||||
@ -62,6 +62,7 @@
|
||||
#define DEFAULT_TIMING_INFO_DECODER (SWISSFEL)
|
||||
#define DEFAULT_ELECTRON_COLLECTION_MODE (0)
|
||||
|
||||
#define MAX_PEDESTAL_LOOPS (0xFF) // until fixed in firmware
|
||||
#define HIGHVOLTAGE_MIN (60)
|
||||
#define HIGHVOLTAGE_MAX (200)
|
||||
#define DAC_MIN_MV (0)
|
||||
|
@ -9863,11 +9863,12 @@ int receive_program(int file_des, enum PROGRAM_INDEX index) {
|
||||
strcpy(mess, "Server name is the same as the symbolic link. Please "
|
||||
"use a different server name\n");
|
||||
LOG(logERROR, (mess));
|
||||
Server_SendResult(file_des, INT32, NULL, 0);
|
||||
}
|
||||
|
||||
// in same folder as current process (will also work for virtual then
|
||||
// with write permissions)
|
||||
{
|
||||
if (ret == OK) {
|
||||
const int fileNameSize = 128;
|
||||
char fname[fileNameSize];
|
||||
if (getAbsPath(fname, fileNameSize, serverName) == FAIL) {
|
||||
@ -11038,6 +11039,13 @@ int set_pedestal_mode(int file_des) {
|
||||
"be 0. [%hhu, %hu].\n",
|
||||
frames, loops);
|
||||
LOG(logERROR, (mess));
|
||||
} else if (loops > MAX_PEDESTAL_LOOPS) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,
|
||||
"Could not set pedestal mode. Loops [%hu] cannot be "
|
||||
"greater than %d.\n",
|
||||
loops, MAX_PEDESTAL_LOOPS);
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
setPedestalMode(enable, frames, loops);
|
||||
int retvalEnable = getPedestalMode();
|
||||
|
@ -530,13 +530,14 @@ TEST_CASE("pedestalmode", "[.cmdcall]") {
|
||||
|
||||
REQUIRE_THROWS(caller.call("pedestalmode", {"256", "10"}, -1, PUT));
|
||||
REQUIRE_THROWS(caller.call("pedestalmode", {"-1", "10"}, 0, PUT));
|
||||
REQUIRE_THROWS(caller.call("pedestalmode", {"20", "65536"}, 0, PUT));
|
||||
REQUIRE_THROWS(caller.call("pedestalmode", {"20", "1000"}, 0, PUT));
|
||||
REQUIRE_THROWS(caller.call("pedestalmode", {"2000", "100"}, 0, PUT));
|
||||
REQUIRE_THROWS(caller.call("pedestalmode", {"20", "-1"}, 0, PUT));
|
||||
|
||||
{
|
||||
std::ostringstream oss;
|
||||
caller.call("pedestalmode", {"30", "1000"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "pedestalmode [30, 1000]\n");
|
||||
caller.call("pedestalmode", {"30", "100"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "pedestalmode [30, 100]\n");
|
||||
}
|
||||
// cannot change any of these in pedestal mode
|
||||
REQUIRE_THROWS_WITH(caller.call("frames", {"200"}, -1, PUT),
|
||||
@ -563,20 +564,20 @@ TEST_CASE("pedestalmode", "[.cmdcall]") {
|
||||
|
||||
{
|
||||
std::ostringstream oss;
|
||||
caller.call("pedestalmode", {"50", "500"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "pedestalmode [50, 500]\n");
|
||||
caller.call("pedestalmode", {"50", "100"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "pedestalmode [50, 100]\n");
|
||||
}
|
||||
{
|
||||
std::ostringstream oss;
|
||||
caller.call("pedestalmode", {}, -1, GET, oss);
|
||||
REQUIRE(oss.str() == "pedestalmode [enabled, 50, 500]\n");
|
||||
REQUIRE(oss.str() == "pedestalmode [enabled, 50, 100]\n");
|
||||
}
|
||||
{
|
||||
auto pedemode = det.getPedestalMode().tsquash(
|
||||
"Inconsistent pedestal mode to test");
|
||||
REQUIRE(pedemode.enable == true);
|
||||
REQUIRE(pedemode.frames == 50);
|
||||
REQUIRE(pedemode.loops == 500);
|
||||
REQUIRE(pedemode.loops == 100);
|
||||
}
|
||||
{
|
||||
std::ostringstream oss;
|
||||
@ -590,7 +591,7 @@ TEST_CASE("pedestalmode", "[.cmdcall]") {
|
||||
}
|
||||
|
||||
uint8_t pedestalFrames = 50;
|
||||
uint16_t pedestalLoops = 1000;
|
||||
uint16_t pedestalLoops = 100;
|
||||
int64_t expNumFrames = pedestalFrames * pedestalLoops * 2;
|
||||
auto origFrames = det.getNumberOfFrames().squash(-1);
|
||||
auto origTriggers = det.getNumberOfTriggers().squash(-1);
|
||||
@ -671,11 +672,11 @@ TEST_CASE("timing_info_decoder", "[.cmdcall]") {
|
||||
Caller caller(&det);
|
||||
if (det.getDetectorType().squash() == defs::JUNGFRAU) {
|
||||
auto prev_val = det.getTimingInfoDecoder();
|
||||
{
|
||||
/*{
|
||||
std::ostringstream oss;
|
||||
caller.call("timing_info_decoder", {"shine"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "timing_info_decoder shine\n");
|
||||
}
|
||||
}*/
|
||||
{
|
||||
std::ostringstream oss;
|
||||
caller.call("timing_info_decoder", {"swissfel"}, -1, PUT, oss);
|
||||
|
@ -11,9 +11,9 @@
|
||||
*@short constructs the fifo structure
|
||||
*/
|
||||
|
||||
#include "sls/CircularFifo.h"
|
||||
#include "sls/logger.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
#include "sls/CircularFifo.h"
|
||||
|
||||
#include <atomic>
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
#define APIXILINXCTB "developer 0x240918"
|
||||
#define APIEIGER "developer 0x240918"
|
||||
#define APIMYTHEN3 "developer 0x241001"
|
||||
#define APIJUNGFRAU "developer 0x241001"
|
||||
#define APIRECEIVER "developer 0x241014"
|
||||
#define APILIB "developer 0x241021"
|
||||
#define APIGOTTHARD2 "developer 0x241022"
|
||||
#define APIJUNGFRAU "developer 0x241024"
|
||||
|
@ -51,6 +51,20 @@ def killProcess(name):
|
||||
else:
|
||||
print('process not running : ' + name)
|
||||
|
||||
|
||||
def killAllStaleProcesses():
|
||||
killProcess('eigerDetectorServer_virtual')
|
||||
killProcess('jungfrauDetectorServer_virtual')
|
||||
killProcess('mythen3DetectorServer_virtual')
|
||||
killProcess('gotthard2DetectorServer_virtual')
|
||||
killProcess('gotthardDetectorServer_virtual')
|
||||
killProcess('ctbDetectorServer_virtual')
|
||||
killProcess('moenchDetectorServer_virtual')
|
||||
killProcess('xilinx_ctbDetectorServer_virtual')
|
||||
killProcess('slsReceiver')
|
||||
killProcess('slsMultiReceiver')
|
||||
cleanSharedmemory()
|
||||
|
||||
def cleanup(name):
|
||||
'''
|
||||
kill both servers, receivers and clean shared memory
|
||||
@ -202,6 +216,8 @@ with open(fname, 'w') as fp:
|
||||
Log(Fore.BLUE, 'General tests (results: ' + file_results + ')')
|
||||
startGeneralTests(fp, file_results)
|
||||
|
||||
killAllStaleProcesses()
|
||||
|
||||
for server in servers:
|
||||
try:
|
||||
# print to terminal for progress
|
||||
|
Loading…
x
Reference in New Issue
Block a user