mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 05:17:13 +02:00
wip
This commit is contained in:
@ -10,41 +10,40 @@ int loadPatternFile(char *patFname, char *errMessage);
|
||||
#if defined(CHIPTESTBOARDD) || defined(MOENCHD)
|
||||
#ifdef VIRTUAL
|
||||
void initializePatternWord();
|
||||
|
||||
#endif
|
||||
uint64_t pattern_readIOControl();
|
||||
int pattern_writeIOControl(char *message, uint64_t arg);
|
||||
uint64_t validate_readPatternIOControl();
|
||||
int validate_writePatternIOControl(char *message, uint64_t arg);
|
||||
void writePatternIOControl(uint64_t word);
|
||||
#endif
|
||||
|
||||
int pattern_readWord(char *message, int addr, uint64_t *word);
|
||||
int validate_readPatternWord(char *message, int addr, uint64_t *word);
|
||||
uint64_t readPatternWord(int addr);
|
||||
int pattern_writeWord(char *message, int addr, uint64_t word);
|
||||
int validate_writePatternWord(char *message, int addr, uint64_t word);
|
||||
void writePatternWord(int addr, uint64_t word);
|
||||
|
||||
int pattern_getWaitAddresses(char *message, int level, int *addr);
|
||||
int validate_getPatternWaitAddresses(char *message, int level, int *addr);
|
||||
int getPatternWaitAddress(int level);
|
||||
int pattern_setWaitAddresses(char *message, int level, int addr);
|
||||
int validate_setPatternWaitAddresses(char *message, int level, int addr);
|
||||
void setPatternWaitAddress(int level, int addr);
|
||||
|
||||
int pattern_getWaitTime(char *message, int level, uint64_t *waittime);
|
||||
int validate_getPatternWaitTime(char *message, int level, uint64_t *waittime);
|
||||
uint64_t getPatternWaitTime(int level);
|
||||
int pattern_setWaitTime(char *message, int level, uint64_t waittime);
|
||||
int validate_setPatternWaitTime(char *message, int level, uint64_t waittime);
|
||||
void setPatternWaitTime(int level, uint64_t t);
|
||||
|
||||
int pattern_getLoopCycles(char *message, int level, int *numLoops);
|
||||
int validate_getPatternLoopCycles(char *message, int level, int *numLoops);
|
||||
int getPatternLoopCycles(int level);
|
||||
int pattern_setLoopCycles(char *message, int level, int numLoops);
|
||||
int validate_setPatternLoopCycles(char *message, int level, int numLoops);
|
||||
void setPatternLoopCycles(int level, int nLoop);
|
||||
|
||||
void pattern_getLoopLimits(int *startAddr, int *stopAddr);
|
||||
int pattern_setLoopLimits(char *message, int startAddr, int stopAddr);
|
||||
void validate_getPatternLoopLimits(int *startAddr, int *stopAddr);
|
||||
int validate_setPatternLoopLimits(char *message, int startAddr, int stopAddr);
|
||||
void setPatternLoopLimits(int startAddr, int stopAddr);
|
||||
|
||||
int pattern_getLoopAddresses(char *message, int level, int *startAddr,
|
||||
int validate_getPatternLoopAddresses(char *message, int level, int *startAddr,
|
||||
int *stopAddr);
|
||||
void getPatternLoopAddresses(int level, int *startAddr, int *stopAddr);
|
||||
int pattern_setLoopAddresses(char *message, int level, int startAddr,
|
||||
int validate_setPatternLoopAddresses(char *message, int level, int startAddr,
|
||||
int stopAddr);
|
||||
void setPatternLoopAddresses(int level, int startAddr, int stopAddr);
|
||||
|
||||
|
@ -36,7 +36,7 @@ int loadPattern(char *message, enum TLogLevel printLevel,
|
||||
LOG(logDEBUG5, ("Setting Pattern Word (addr:0x%x, word:0x%llx)\n",
|
||||
i, (long long int)pat->word[i]));
|
||||
}
|
||||
ret = pattern_writeWord(message, i, pat->word[i]);
|
||||
ret = validate_writePatternWord(message, i, pat->word[i]);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
@ -44,37 +44,38 @@ int loadPattern(char *message, enum TLogLevel printLevel,
|
||||
// iocontrol
|
||||
#ifndef MYTHEN3D
|
||||
if (ret == OK) {
|
||||
ret = pattern_writeIOControl(message, pat->ioctrl);
|
||||
ret = validate_writePatternIOControl(message, pat->ioctrl);
|
||||
}
|
||||
#endif
|
||||
// limits
|
||||
if (ret == OK) {
|
||||
ret = pattern_setLoopLimits(message, pat->limits[0], pat->limits[1]);
|
||||
ret = validate_setPatternLoopLimits(message, pat->limits[0],
|
||||
pat->limits[1]);
|
||||
}
|
||||
|
||||
if (ret == OK) {
|
||||
for (int i = 0; i <= 2; ++i) {
|
||||
// loop addr
|
||||
ret = pattern_setLoopAddresses(message, i, pat->loop[i * 2 + 0],
|
||||
pat->loop[i * 2 + 1]);
|
||||
ret = validate_setPatternLoopAddresses(
|
||||
message, i, pat->loop[i * 2 + 0], pat->loop[i * 2 + 1]);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
|
||||
// num loops
|
||||
ret = pattern_setLoopCycles(message, i, pat->nloop[i]);
|
||||
ret = validate_setPatternLoopCycles(message, i, pat->nloop[i]);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
|
||||
// wait addr
|
||||
ret = pattern_setWaitAddresses(message, i, pat->wait[i]);
|
||||
ret = validate_setPatternWaitAddresses(message, i, pat->wait[i]);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
|
||||
// wait time
|
||||
ret = pattern_setWaitTime(message, i, pat->waittime[i]);
|
||||
ret = validate_setPatternWaitTime(message, i, pat->waittime[i]);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
@ -94,7 +95,7 @@ int getPattern(char *message, patternParameters *pat) {
|
||||
int retval1 = -1, retval2 = -1;
|
||||
// words
|
||||
for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) {
|
||||
ret = pattern_readWord(message, i, &retval64);
|
||||
ret = validate_readPatternWord(message, i, &retval64);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
@ -103,19 +104,20 @@ int getPattern(char *message, patternParameters *pat) {
|
||||
// iocontrol
|
||||
#ifndef MYTHEN3D
|
||||
if (ret == OK) {
|
||||
pattern_readIOControl();
|
||||
validate_readPatternIOControl();
|
||||
}
|
||||
#endif
|
||||
// limits
|
||||
if (ret == OK) {
|
||||
pattern_getLoopLimits(&retval1, &retval2);
|
||||
validate_getPatternLoopLimits(&retval1, &retval2);
|
||||
pat->limits[0] = retval1;
|
||||
pat->limits[1] = retval2;
|
||||
}
|
||||
if (ret == OK) {
|
||||
for (int i = 0; i <= 2; ++i) {
|
||||
// loop addr
|
||||
ret = pattern_getLoopAddresses(message, i, &retval1, &retval2);
|
||||
ret = validate_getPatternLoopAddresses(message, i, &retval1,
|
||||
&retval2);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
@ -123,21 +125,21 @@ int getPattern(char *message, patternParameters *pat) {
|
||||
pat->loop[i * 2 + 1] = retval2;
|
||||
|
||||
// num loops
|
||||
ret = pattern_getLoopCycles(message, i, &retval1);
|
||||
ret = validate_getPatternLoopCycles(message, i, &retval1);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
pat->nloop[i] = retval1;
|
||||
|
||||
// wait addr
|
||||
ret = pattern_getWaitAddresses(message, i, &retval1);
|
||||
ret = validate_getPatternWaitAddresses(message, i, &retval1);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
pat->wait[i] = retval1;
|
||||
|
||||
// wait time
|
||||
ret = pattern_getWaitTime(message, i, &retval64);
|
||||
ret = validate_getPatternWaitTime(message, i, &retval64);
|
||||
if (ret == FAIL) {
|
||||
break;
|
||||
}
|
||||
@ -228,7 +230,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pattern_writeWord(temp, addr, word) == FAIL) {
|
||||
if (validate_writePatternWord(temp, addr, word) == FAIL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -248,7 +250,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pattern_writeIOControl(temp, arg) == FAIL) {
|
||||
if (validate_writePatternIOControl(temp, arg) == FAIL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -266,7 +268,8 @@ int loadPatternFile(char *patFname, char *errMessage) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pattern_setLoopLimits(temp, startAddr, stopAddr) == FAIL) {
|
||||
if (validate_setPatternLoopLimits(temp, startAddr, stopAddr) ==
|
||||
FAIL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -295,8 +298,8 @@ int loadPatternFile(char *patFname, char *errMessage) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pattern_setLoopAddresses(temp, level, startAddr, stopAddr) ==
|
||||
FAIL) {
|
||||
if (validate_setPatternLoopAddresses(temp, level, startAddr,
|
||||
stopAddr) == FAIL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -323,7 +326,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pattern_setLoopCycles(temp, level, numLoops) == FAIL) {
|
||||
if (validate_setPatternLoopCycles(temp, level, numLoops) == FAIL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -350,7 +353,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pattern_setWaitAddresses(temp, level, addr) == FAIL) {
|
||||
if (validate_setPatternWaitAddresses(temp, level, addr) == FAIL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -383,7 +386,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (pattern_setWaitTime(temp, level, waittime) == FAIL) {
|
||||
if (validate_setPatternWaitTime(temp, level, waittime) == FAIL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -409,15 +412,15 @@ void initializePatternWord() {
|
||||
}
|
||||
#endif
|
||||
|
||||
uint64_t pattern_readIOControl() {
|
||||
uint64_t validate_readPatternIOControl() {
|
||||
return get64BitReg(PATTERN_IO_CNTRL_LSB_REG, PATTERN_IO_CNTRL_MSB_REG);
|
||||
}
|
||||
|
||||
int pattern_writeIOControl(char *message, uint64_t arg) {
|
||||
int validate_writePatternIOControl(char *message, uint64_t arg) {
|
||||
writePatternIOControl(arg);
|
||||
|
||||
// validate result
|
||||
uint64_t retval = pattern_readIOControl();
|
||||
uint64_t retval = validate_readPatternIOControl();
|
||||
LOG(logDEBUG1,
|
||||
("Pattern IO Control retval: 0x%llx\n", (long long int)retval));
|
||||
int ret = OK;
|
||||
@ -432,7 +435,7 @@ void writePatternIOControl(uint64_t word) {
|
||||
}
|
||||
#endif
|
||||
|
||||
int pattern_readWord(char *message, int addr, uint64_t *word) {
|
||||
int validate_readPatternWord(char *message, int addr, uint64_t *word) {
|
||||
// validate input
|
||||
if (addr < 0 || addr >= MAX_PATTERN_LENGTH) {
|
||||
sprintf(message,
|
||||
@ -476,7 +479,7 @@ uint64_t readPatternWord(int addr) {
|
||||
#endif
|
||||
}
|
||||
|
||||
int pattern_writeWord(char *message, int addr, uint64_t word) {
|
||||
int validate_writePatternWord(char *message, int addr, uint64_t word) {
|
||||
// validate input
|
||||
if (addr < 0 || addr >= MAX_PATTERN_LENGTH) {
|
||||
sprintf(message,
|
||||
@ -533,7 +536,7 @@ void writePatternWord(int addr, uint64_t word) {
|
||||
#endif
|
||||
}
|
||||
|
||||
int pattern_getWaitAddresses(char *message, int level, int *addr) {
|
||||
int validate_getPatternWaitAddresses(char *message, int level, int *addr) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
sprintf(message,
|
||||
@ -561,7 +564,7 @@ int getPatternWaitAddress(int level) {
|
||||
}
|
||||
}
|
||||
|
||||
int pattern_setWaitAddresses(char *message, int level, int addr) {
|
||||
int validate_setPatternWaitAddresses(char *message, int level, int addr) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
sprintf(message,
|
||||
@ -617,7 +620,7 @@ void setPatternWaitAddress(int level, int addr) {
|
||||
}
|
||||
}
|
||||
|
||||
int pattern_getWaitTime(char *message, int level, uint64_t *waittime) {
|
||||
int validate_getPatternWaitTime(char *message, int level, uint64_t *waittime) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
sprintf(message,
|
||||
@ -645,7 +648,7 @@ uint64_t getPatternWaitTime(int level) {
|
||||
}
|
||||
}
|
||||
|
||||
int pattern_setWaitTime(char *message, int level, uint64_t waittime) {
|
||||
int validate_setPatternWaitTime(char *message, int level, uint64_t waittime) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
sprintf(message,
|
||||
@ -694,7 +697,7 @@ void setPatternWaitTime(int level, uint64_t t) {
|
||||
}
|
||||
}
|
||||
|
||||
int pattern_getLoopCycles(char *message, int level, int *numLoops) {
|
||||
int validate_getPatternLoopCycles(char *message, int level, int *numLoops) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
sprintf(message,
|
||||
@ -719,7 +722,7 @@ int getPatternLoopCycles(int level) {
|
||||
}
|
||||
}
|
||||
|
||||
int pattern_setLoopCycles(char *message, int level, int numLoops) {
|
||||
int validate_setPatternLoopCycles(char *message, int level, int numLoops) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
sprintf(message,
|
||||
@ -768,14 +771,14 @@ void setPatternLoopCycles(int level, int nLoop) {
|
||||
}
|
||||
}
|
||||
|
||||
void pattern_getLoopLimits(int *startAddr, int *stopAddr) {
|
||||
void validate_getPatternLoopLimits(int *startAddr, int *stopAddr) {
|
||||
*startAddr = ((bus_r(PATTERN_LIMIT_REG) & PATTERN_LIMIT_STRT_MSK) >>
|
||||
PATTERN_LIMIT_STRT_OFST);
|
||||
*stopAddr = ((bus_r(PATTERN_LIMIT_REG) & PATTERN_LIMIT_STP_MSK) >>
|
||||
PATTERN_LIMIT_STP_OFST);
|
||||
}
|
||||
|
||||
int pattern_setLoopLimits(char *message, int startAddr, int stopAddr) {
|
||||
int validate_setPatternLoopLimits(char *message, int startAddr, int stopAddr) {
|
||||
// validate input
|
||||
if (startAddr < 0 || startAddr >= MAX_PATTERN_LENGTH || stopAddr < 0 ||
|
||||
stopAddr >= MAX_PATTERN_LENGTH) {
|
||||
@ -791,7 +794,7 @@ int pattern_setLoopLimits(char *message, int startAddr, int stopAddr) {
|
||||
|
||||
// validate result
|
||||
int r_startAddr = -1, r_stopAddr = -1;
|
||||
pattern_getLoopLimits(&r_startAddr, &r_stopAddr);
|
||||
validate_getPatternLoopLimits(&r_startAddr, &r_stopAddr);
|
||||
int ret = OK;
|
||||
// start addr
|
||||
validate(&ret, message, startAddr, r_startAddr,
|
||||
@ -818,7 +821,7 @@ void setPatternLoopLimits(int startAddr, int stopAddr) {
|
||||
((stopAddr << PATTERN_LIMIT_STP_OFST) & PATTERN_LIMIT_STP_MSK));
|
||||
}
|
||||
|
||||
int pattern_getLoopAddresses(char *message, int level, int *startAddr,
|
||||
int validate_getPatternLoopAddresses(char *message, int level, int *startAddr,
|
||||
int *stopAddr) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
@ -864,7 +867,7 @@ void getPatternLoopAddresses(int level, int *startAddr, int *stopAddr) {
|
||||
}
|
||||
}
|
||||
|
||||
int pattern_setLoopAddresses(char *message, int level, int startAddr,
|
||||
int validate_setPatternLoopAddresses(char *message, int level, int startAddr,
|
||||
int stopAddr) {
|
||||
// validate input
|
||||
if (level < 0 || level > 2) {
|
||||
|
@ -2970,9 +2970,9 @@ int set_pattern_io_control(int file_des) {
|
||||
("Setting Pattern IO Control to 0x%llx\n", (long long int)arg));
|
||||
if (((int64_t)arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
if ((int64_t)arg != GET_FLAG) {
|
||||
ret = pattern_writeIOControl(mess, arg);
|
||||
ret = validate_writePatternIOControl(mess, arg);
|
||||
}
|
||||
retval = pattern_readIOControl();
|
||||
retval = validate_readPatternIOControl();
|
||||
}
|
||||
#endif
|
||||
return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
|
||||
@ -2997,9 +2997,9 @@ int set_pattern_word(int file_des) {
|
||||
}
|
||||
if (Server_VerifyLock() == OK) {
|
||||
if (word != (uint64_t)-1) {
|
||||
ret = pattern_writeWord(mess, addr, word);
|
||||
ret = validate_writePatternWord(mess, addr, word);
|
||||
} else {
|
||||
ret = pattern_readWord(mess, addr, &retval);
|
||||
ret = validate_readPatternWord(mess, addr, &retval);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3029,21 +3029,21 @@ int set_pattern_loop_addresses(int file_des) {
|
||||
if (loopLevel == -1) {
|
||||
// set
|
||||
if (startAddr >= 0 && stopAddr >= 0) {
|
||||
ret = pattern_setLoopLimits(mess, startAddr, stopAddr);
|
||||
ret = validate_setPatternLoopLimits(mess, startAddr, stopAddr);
|
||||
}
|
||||
// get
|
||||
pattern_getLoopLimits(&retvals[0], &retvals[1]);
|
||||
validate_getPatternLoopLimits(&retvals[0], &retvals[1]);
|
||||
}
|
||||
// loop addresses
|
||||
else {
|
||||
// set
|
||||
if (startAddr >= 0 && stopAddr >= 0) {
|
||||
ret = pattern_setLoopAddresses(mess, loopLevel, startAddr,
|
||||
ret = validate_setPatternLoopAddresses(mess, loopLevel, startAddr,
|
||||
stopAddr);
|
||||
}
|
||||
// get
|
||||
if (ret == OK) {
|
||||
ret = pattern_getLoopAddresses(mess, loopLevel, &retvals[0],
|
||||
ret = validate_getPatternLoopAddresses(mess, loopLevel, &retvals[0],
|
||||
&retvals[1]);
|
||||
}
|
||||
}
|
||||
@ -3070,11 +3070,11 @@ int set_pattern_loop_cycles(int file_des) {
|
||||
if ((numLoops == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
// set
|
||||
if (numLoops != GET_FLAG) {
|
||||
ret = pattern_setLoopCycles(mess, loopLevel, numLoops);
|
||||
ret = validate_setPatternLoopCycles(mess, loopLevel, numLoops);
|
||||
}
|
||||
// get
|
||||
if (ret == OK) {
|
||||
ret = pattern_getLoopCycles(mess, loopLevel, &retval);
|
||||
ret = validate_getPatternLoopCycles(mess, loopLevel, &retval);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3099,11 +3099,11 @@ int set_pattern_wait_addr(int file_des) {
|
||||
if ((addr == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
// set
|
||||
if (addr != GET_FLAG) {
|
||||
ret = pattern_setWaitAddresses(mess, loopLevel, addr);
|
||||
ret = validate_setPatternWaitAddresses(mess, loopLevel, addr);
|
||||
}
|
||||
// get
|
||||
if (ret == OK) {
|
||||
ret = pattern_getWaitAddresses(mess, loopLevel, &retval);
|
||||
ret = validate_getPatternWaitAddresses(mess, loopLevel, &retval);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3128,11 +3128,11 @@ int set_pattern_wait_time(int file_des) {
|
||||
if (((int64_t)timeval == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
// set
|
||||
if ((int64_t)timeval != GET_FLAG) {
|
||||
ret = pattern_setWaitTime(mess, loopLevel, timeval);
|
||||
ret = validate_setPatternWaitTime(mess, loopLevel, timeval);
|
||||
}
|
||||
// get
|
||||
if (ret == OK) {
|
||||
ret = pattern_getWaitTime(mess, loopLevel, &retval);
|
||||
ret = validate_getPatternWaitTime(mess, loopLevel, &retval);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -1,13 +1,12 @@
|
||||
#include "catch.hpp"
|
||||
#include "sls/file_utils.h"
|
||||
#include <iostream>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
TEST_CASE("Get size of empty file") {
|
||||
char fname[] = "temfile_XXXXXX";
|
||||
int fh = mkstemp(fname);
|
||||
std::ifstream ifs(fname);
|
||||
auto size = sls::getFileSize(ifs);
|
||||
REQUIRE(size == 0);
|
||||
@ -25,4 +24,3 @@ TEST_CASE("Get size of file with data") {
|
||||
REQUIRE(size == n_bytes);
|
||||
REQUIRE(ifs.tellg() == 0); // getting size resets pos!
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user