This commit is contained in:
2021-06-21 12:31:35 +02:00
parent bb91375533
commit 789d0df81c
4 changed files with 76 additions and 76 deletions

View File

@ -10,42 +10,41 @@ int loadPatternFile(char *patFname, char *errMessage);
#if defined(CHIPTESTBOARDD) || defined(MOENCHD) #if defined(CHIPTESTBOARDD) || defined(MOENCHD)
#ifdef VIRTUAL #ifdef VIRTUAL
void initializePatternWord(); void initializePatternWord();
#endif #endif
uint64_t pattern_readIOControl(); uint64_t validate_readPatternIOControl();
int pattern_writeIOControl(char *message, uint64_t arg); int validate_writePatternIOControl(char *message, uint64_t arg);
void writePatternIOControl(uint64_t word); void writePatternIOControl(uint64_t word);
#endif #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); 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); 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 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); 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); 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); 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 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 setPatternLoopCycles(int level, int nLoop);
void pattern_getLoopLimits(int *startAddr, int *stopAddr); void validate_getPatternLoopLimits(int *startAddr, int *stopAddr);
int pattern_setLoopLimits(char *message, int startAddr, int stopAddr); int validate_setPatternLoopLimits(char *message, int startAddr, int stopAddr);
void setPatternLoopLimits(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); int *stopAddr);
void getPatternLoopAddresses(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); int stopAddr);
void setPatternLoopAddresses(int level, int startAddr, int stopAddr); void setPatternLoopAddresses(int level, int startAddr, int stopAddr);
void setPatternMask(uint64_t mask); void setPatternMask(uint64_t mask);

View File

@ -36,7 +36,7 @@ int loadPattern(char *message, enum TLogLevel printLevel,
LOG(logDEBUG5, ("Setting Pattern Word (addr:0x%x, word:0x%llx)\n", LOG(logDEBUG5, ("Setting Pattern Word (addr:0x%x, word:0x%llx)\n",
i, (long long int)pat->word[i])); 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) { if (ret == FAIL) {
break; break;
} }
@ -44,37 +44,38 @@ int loadPattern(char *message, enum TLogLevel printLevel,
// iocontrol // iocontrol
#ifndef MYTHEN3D #ifndef MYTHEN3D
if (ret == OK) { if (ret == OK) {
ret = pattern_writeIOControl(message, pat->ioctrl); ret = validate_writePatternIOControl(message, pat->ioctrl);
} }
#endif #endif
// limits // limits
if (ret == OK) { 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) { if (ret == OK) {
for (int i = 0; i <= 2; ++i) { for (int i = 0; i <= 2; ++i) {
// loop addr // loop addr
ret = pattern_setLoopAddresses(message, i, pat->loop[i * 2 + 0], ret = validate_setPatternLoopAddresses(
pat->loop[i * 2 + 1]); message, i, pat->loop[i * 2 + 0], pat->loop[i * 2 + 1]);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
// num loops // num loops
ret = pattern_setLoopCycles(message, i, pat->nloop[i]); ret = validate_setPatternLoopCycles(message, i, pat->nloop[i]);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
// wait addr // wait addr
ret = pattern_setWaitAddresses(message, i, pat->wait[i]); ret = validate_setPatternWaitAddresses(message, i, pat->wait[i]);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
// wait time // wait time
ret = pattern_setWaitTime(message, i, pat->waittime[i]); ret = validate_setPatternWaitTime(message, i, pat->waittime[i]);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
@ -94,7 +95,7 @@ int getPattern(char *message, patternParameters *pat) {
int retval1 = -1, retval2 = -1; int retval1 = -1, retval2 = -1;
// words // words
for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) { for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) {
ret = pattern_readWord(message, i, &retval64); ret = validate_readPatternWord(message, i, &retval64);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
@ -103,19 +104,20 @@ int getPattern(char *message, patternParameters *pat) {
// iocontrol // iocontrol
#ifndef MYTHEN3D #ifndef MYTHEN3D
if (ret == OK) { if (ret == OK) {
pattern_readIOControl(); validate_readPatternIOControl();
} }
#endif #endif
// limits // limits
if (ret == OK) { if (ret == OK) {
pattern_getLoopLimits(&retval1, &retval2); validate_getPatternLoopLimits(&retval1, &retval2);
pat->limits[0] = retval1; pat->limits[0] = retval1;
pat->limits[1] = retval2; pat->limits[1] = retval2;
} }
if (ret == OK) { if (ret == OK) {
for (int i = 0; i <= 2; ++i) { for (int i = 0; i <= 2; ++i) {
// loop addr // loop addr
ret = pattern_getLoopAddresses(message, i, &retval1, &retval2); ret = validate_getPatternLoopAddresses(message, i, &retval1,
&retval2);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
@ -123,21 +125,21 @@ int getPattern(char *message, patternParameters *pat) {
pat->loop[i * 2 + 1] = retval2; pat->loop[i * 2 + 1] = retval2;
// num loops // num loops
ret = pattern_getLoopCycles(message, i, &retval1); ret = validate_getPatternLoopCycles(message, i, &retval1);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
pat->nloop[i] = retval1; pat->nloop[i] = retval1;
// wait addr // wait addr
ret = pattern_getWaitAddresses(message, i, &retval1); ret = validate_getPatternWaitAddresses(message, i, &retval1);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
pat->wait[i] = retval1; pat->wait[i] = retval1;
// wait time // wait time
ret = pattern_getWaitTime(message, i, &retval64); ret = validate_getPatternWaitTime(message, i, &retval64);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
@ -228,7 +230,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
break; break;
} }
if (pattern_writeWord(temp, addr, word) == FAIL) { if (validate_writePatternWord(temp, addr, word) == FAIL) {
break; break;
} }
} }
@ -248,7 +250,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
break; break;
} }
if (pattern_writeIOControl(temp, arg) == FAIL) { if (validate_writePatternIOControl(temp, arg) == FAIL) {
break; break;
} }
} }
@ -266,7 +268,8 @@ int loadPatternFile(char *patFname, char *errMessage) {
break; break;
} }
if (pattern_setLoopLimits(temp, startAddr, stopAddr) == FAIL) { if (validate_setPatternLoopLimits(temp, startAddr, stopAddr) ==
FAIL) {
break; break;
} }
} }
@ -295,8 +298,8 @@ int loadPatternFile(char *patFname, char *errMessage) {
break; break;
} }
if (pattern_setLoopAddresses(temp, level, startAddr, stopAddr) == if (validate_setPatternLoopAddresses(temp, level, startAddr,
FAIL) { stopAddr) == FAIL) {
break; break;
} }
} }
@ -323,7 +326,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
break; break;
} }
if (pattern_setLoopCycles(temp, level, numLoops) == FAIL) { if (validate_setPatternLoopCycles(temp, level, numLoops) == FAIL) {
break; break;
} }
} }
@ -350,7 +353,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
break; break;
} }
if (pattern_setWaitAddresses(temp, level, addr) == FAIL) { if (validate_setPatternWaitAddresses(temp, level, addr) == FAIL) {
break; break;
} }
} }
@ -383,7 +386,7 @@ int loadPatternFile(char *patFname, char *errMessage) {
break; break;
} }
if (pattern_setWaitTime(temp, level, waittime) == FAIL) { if (validate_setPatternWaitTime(temp, level, waittime) == FAIL) {
break; break;
} }
} }
@ -409,15 +412,15 @@ void initializePatternWord() {
} }
#endif #endif
uint64_t pattern_readIOControl() { uint64_t validate_readPatternIOControl() {
return get64BitReg(PATTERN_IO_CNTRL_LSB_REG, PATTERN_IO_CNTRL_MSB_REG); 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); writePatternIOControl(arg);
// validate result // validate result
uint64_t retval = pattern_readIOControl(); uint64_t retval = validate_readPatternIOControl();
LOG(logDEBUG1, LOG(logDEBUG1,
("Pattern IO Control retval: 0x%llx\n", (long long int)retval)); ("Pattern IO Control retval: 0x%llx\n", (long long int)retval));
int ret = OK; int ret = OK;
@ -432,7 +435,7 @@ void writePatternIOControl(uint64_t word) {
} }
#endif #endif
int pattern_readWord(char *message, int addr, uint64_t *word) { int validate_readPatternWord(char *message, int addr, uint64_t *word) {
// validate input // validate input
if (addr < 0 || addr >= MAX_PATTERN_LENGTH) { if (addr < 0 || addr >= MAX_PATTERN_LENGTH) {
sprintf(message, sprintf(message,
@ -476,7 +479,7 @@ uint64_t readPatternWord(int addr) {
#endif #endif
} }
int pattern_writeWord(char *message, int addr, uint64_t word) { int validate_writePatternWord(char *message, int addr, uint64_t word) {
// validate input // validate input
if (addr < 0 || addr >= MAX_PATTERN_LENGTH) { if (addr < 0 || addr >= MAX_PATTERN_LENGTH) {
sprintf(message, sprintf(message,
@ -533,7 +536,7 @@ void writePatternWord(int addr, uint64_t word) {
#endif #endif
} }
int pattern_getWaitAddresses(char *message, int level, int *addr) { int validate_getPatternWaitAddresses(char *message, int level, int *addr) {
// validate input // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf(message, 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 // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf(message, 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 // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf(message, 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 // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf(message, 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 // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf(message, 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 // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf(message, 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) >> *startAddr = ((bus_r(PATTERN_LIMIT_REG) & PATTERN_LIMIT_STRT_MSK) >>
PATTERN_LIMIT_STRT_OFST); PATTERN_LIMIT_STRT_OFST);
*stopAddr = ((bus_r(PATTERN_LIMIT_REG) & PATTERN_LIMIT_STP_MSK) >> *stopAddr = ((bus_r(PATTERN_LIMIT_REG) & PATTERN_LIMIT_STP_MSK) >>
PATTERN_LIMIT_STP_OFST); PATTERN_LIMIT_STP_OFST);
} }
int pattern_setLoopLimits(char *message, int startAddr, int stopAddr) { int validate_setPatternLoopLimits(char *message, int startAddr, int stopAddr) {
// validate input // validate input
if (startAddr < 0 || startAddr >= MAX_PATTERN_LENGTH || stopAddr < 0 || if (startAddr < 0 || startAddr >= MAX_PATTERN_LENGTH || stopAddr < 0 ||
stopAddr >= MAX_PATTERN_LENGTH) { stopAddr >= MAX_PATTERN_LENGTH) {
@ -791,7 +794,7 @@ int pattern_setLoopLimits(char *message, int startAddr, int stopAddr) {
// validate result // validate result
int r_startAddr = -1, r_stopAddr = -1; int r_startAddr = -1, r_stopAddr = -1;
pattern_getLoopLimits(&r_startAddr, &r_stopAddr); validate_getPatternLoopLimits(&r_startAddr, &r_stopAddr);
int ret = OK; int ret = OK;
// start addr // start addr
validate(&ret, message, startAddr, r_startAddr, validate(&ret, message, startAddr, r_startAddr,
@ -818,8 +821,8 @@ void setPatternLoopLimits(int startAddr, int stopAddr) {
((stopAddr << PATTERN_LIMIT_STP_OFST) & PATTERN_LIMIT_STP_MSK)); ((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) { int *stopAddr) {
// validate input // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf( sprintf(
@ -864,8 +867,8 @@ 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) { int stopAddr) {
// validate input // validate input
if (level < 0 || level > 2) { if (level < 0 || level > 2) {
sprintf( sprintf(

View File

@ -2970,9 +2970,9 @@ int set_pattern_io_control(int file_des) {
("Setting Pattern IO Control to 0x%llx\n", (long long int)arg)); ("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) || (Server_VerifyLock() == OK)) {
if ((int64_t)arg != GET_FLAG) { if ((int64_t)arg != GET_FLAG) {
ret = pattern_writeIOControl(mess, arg); ret = validate_writePatternIOControl(mess, arg);
} }
retval = pattern_readIOControl(); retval = validate_readPatternIOControl();
} }
#endif #endif
return Server_SendResult(file_des, INT64, &retval, sizeof(retval)); 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 (Server_VerifyLock() == OK) {
if (word != (uint64_t)-1) { if (word != (uint64_t)-1) {
ret = pattern_writeWord(mess, addr, word); ret = validate_writePatternWord(mess, addr, word);
} else { } else {
ret = pattern_readWord(mess, addr, &retval); ret = validate_readPatternWord(mess, addr, &retval);
} }
} }
#endif #endif
@ -3029,21 +3029,21 @@ int set_pattern_loop_addresses(int file_des) {
if (loopLevel == -1) { if (loopLevel == -1) {
// set // set
if (startAddr >= 0 && stopAddr >= 0) { if (startAddr >= 0 && stopAddr >= 0) {
ret = pattern_setLoopLimits(mess, startAddr, stopAddr); ret = validate_setPatternLoopLimits(mess, startAddr, stopAddr);
} }
// get // get
pattern_getLoopLimits(&retvals[0], &retvals[1]); validate_getPatternLoopLimits(&retvals[0], &retvals[1]);
} }
// loop addresses // loop addresses
else { else {
// set // set
if (startAddr >= 0 && stopAddr >= 0) { if (startAddr >= 0 && stopAddr >= 0) {
ret = pattern_setLoopAddresses(mess, loopLevel, startAddr, ret = validate_setPatternLoopAddresses(mess, loopLevel, startAddr,
stopAddr); stopAddr);
} }
// get // get
if (ret == OK) { if (ret == OK) {
ret = pattern_getLoopAddresses(mess, loopLevel, &retvals[0], ret = validate_getPatternLoopAddresses(mess, loopLevel, &retvals[0],
&retvals[1]); &retvals[1]);
} }
} }
@ -3070,11 +3070,11 @@ int set_pattern_loop_cycles(int file_des) {
if ((numLoops == GET_FLAG) || (Server_VerifyLock() == OK)) { if ((numLoops == GET_FLAG) || (Server_VerifyLock() == OK)) {
// set // set
if (numLoops != GET_FLAG) { if (numLoops != GET_FLAG) {
ret = pattern_setLoopCycles(mess, loopLevel, numLoops); ret = validate_setPatternLoopCycles(mess, loopLevel, numLoops);
} }
// get // get
if (ret == OK) { if (ret == OK) {
ret = pattern_getLoopCycles(mess, loopLevel, &retval); ret = validate_getPatternLoopCycles(mess, loopLevel, &retval);
} }
} }
#endif #endif
@ -3099,11 +3099,11 @@ int set_pattern_wait_addr(int file_des) {
if ((addr == GET_FLAG) || (Server_VerifyLock() == OK)) { if ((addr == GET_FLAG) || (Server_VerifyLock() == OK)) {
// set // set
if (addr != GET_FLAG) { if (addr != GET_FLAG) {
ret = pattern_setWaitAddresses(mess, loopLevel, addr); ret = validate_setPatternWaitAddresses(mess, loopLevel, addr);
} }
// get // get
if (ret == OK) { if (ret == OK) {
ret = pattern_getWaitAddresses(mess, loopLevel, &retval); ret = validate_getPatternWaitAddresses(mess, loopLevel, &retval);
} }
} }
#endif #endif
@ -3128,11 +3128,11 @@ int set_pattern_wait_time(int file_des) {
if (((int64_t)timeval == GET_FLAG) || (Server_VerifyLock() == OK)) { if (((int64_t)timeval == GET_FLAG) || (Server_VerifyLock() == OK)) {
// set // set
if ((int64_t)timeval != GET_FLAG) { if ((int64_t)timeval != GET_FLAG) {
ret = pattern_setWaitTime(mess, loopLevel, timeval); ret = validate_setPatternWaitTime(mess, loopLevel, timeval);
} }
// get // get
if (ret == OK) { if (ret == OK) {
ret = pattern_getWaitTime(mess, loopLevel, &retval); ret = validate_getPatternWaitTime(mess, loopLevel, &retval);
} }
} }
#endif #endif

View File

@ -1,13 +1,12 @@
#include "catch.hpp" #include "catch.hpp"
#include "sls/file_utils.h" #include "sls/file_utils.h"
#include <iostream>
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include <iostream>
#include <vector> #include <vector>
TEST_CASE("Get size of empty file") { TEST_CASE("Get size of empty file") {
char fname[] = "temfile_XXXXXX"; char fname[] = "temfile_XXXXXX";
int fh = mkstemp(fname);
std::ifstream ifs(fname); std::ifstream ifs(fname);
auto size = sls::getFileSize(ifs); auto size = sls::getFileSize(ifs);
REQUIRE(size == 0); REQUIRE(size == 0);
@ -23,6 +22,5 @@ TEST_CASE("Get size of file with data") {
std::ifstream ifs(fname); std::ifstream ifs(fname);
auto size = sls::getFileSize(ifs); auto size = sls::getFileSize(ifs);
REQUIRE(size == n_bytes); REQUIRE(size == n_bytes);
REQUIRE(ifs.tellg() == 0); //getting size resets pos! REQUIRE(ifs.tellg() == 0); // getting size resets pos!
} }