This commit is contained in:
maliakal_d 2020-06-23 08:48:54 +02:00
parent 9d3bbc0a68
commit 1d53dc65cd
5 changed files with 46 additions and 23 deletions

View File

@ -7395,6 +7395,11 @@ int set_pattern(int file_des) {
LOG(logINFO, ("Setting Pattern\n")); LOG(logINFO, ("Setting Pattern\n"));
LOG(logINFO, ("Setting Pattern Word\n")); LOG(logINFO, ("Setting Pattern Word\n"));
for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) { for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) {
if (patwords[i] != 0) {
LOG(logDEBUG1,
("Setting Pattern Word (addr:0x%x, word:0x%llx)\n", i,
(long long int)patwords[i]));
}
writePatternWord(i, patwords[i]); writePatternWord(i, patwords[i]);
} }
int numLoops = -1, retval0 = -1, retval1 = -1; int numLoops = -1, retval0 = -1, retval1 = -1;

View File

@ -1970,7 +1970,7 @@ std::string CmdProxy::PatternWord(int action) {
WrongNumberOfParameters(1); WrongNumberOfParameters(1);
} }
auto t = det->getPatternWord(StringTo<uint64_t>(args[0]), {det_id}); auto t = det->getPatternWord(StringTo<uint64_t>(args[0]), {det_id});
os << OutStringHex(t) << '\n'; os << OutStringHex(t, 16) << '\n';
} else if (action == defs::PUT_ACTION) { } else if (action == defs::PUT_ACTION) {
if (args.size() != 2) { if (args.size() != 2) {
WrongNumberOfParameters(2); WrongNumberOfParameters(2);

View File

@ -434,6 +434,12 @@ class CmdProxy {
return ToStringHex(value); return ToStringHex(value);
} }
template <typename V> std::string OutStringHex(const V &value, int width) {
if (value.equal())
return ToStringHex(value.front(), width);
return ToStringHex(value, width);
}
template <typename V> std::string OutString(const V &value) { template <typename V> std::string OutString(const V &value) {
if (value.equal()) if (value.equal())
return ToString(value.front()); return ToString(value.front());

View File

@ -111,6 +111,16 @@ ToStringHex(const T &value) {
return os.str(); return os.str();
} }
/** Conversion of integer types, do not remove trailing zeros */
template <typename T>
typename std::enable_if<std::is_integral<T>::value, std::string>::type
ToStringHex(const T &value, int width) {
std::ostringstream os;
os << "0x" << std::hex << std::setfill('0') << std::setw(width) << value
<< std::dec;
return os.str();
}
/** /**
* hex * hex
* For a container loop over all elements and call ToString on the element * For a container loop over all elements and call ToString on the element

View File

@ -66,32 +66,34 @@ std::ostream &operator<<(std::ostream &os,
std::string ToString(const slsDetectorDefs::patternParameters &r) { std::string ToString(const slsDetectorDefs::patternParameters &r) {
std::ostringstream oss; std::ostringstream oss;
oss << '[' << std::endl; oss << '[' << std::setfill('0') << std::endl;
int addr_width = 4;
int word_width = 16;
for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) { for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) {
if (r.word[i] != 0) { if (r.word[i] != 0) {
oss << "patword 0x" << std::hex << i << " 0x" << std::hex oss << "patword " << ToStringHex(i, addr_width) << " "
<< r.word[i] << std::endl; << ToStringHex(r.word[i], word_width) << std::endl;
} }
} }
oss << "patioctrl 0x" << std::hex << r.patioctrl << std::endl oss << "patioctrl " << ToStringHex(r.patioctrl, word_width) << std::endl
<< "patclkctrl 0x" << r.patclkctrl << std::endl << "patclkctrl " << ToStringHex(r.patclkctrl, word_width) << std::endl
<< "patlimits 0x" << r.patlimits[0] << " 0x" << r.patlimits[1] << "patlimits " << ToStringHex(r.patlimits[0], addr_width) << " "
<< std::endl << ToStringHex(r.patlimits[1], addr_width) << std::endl
<< "patloop0 0x" << r.patloop[0] << " 0x" << r.patloop[1] << std::endl << "patloop0 " << ToStringHex(r.patloop[0], addr_width) << " "
<< "patnloop0 " << std::dec << r.patnloop[0] << std::hex << std::endl << ToStringHex(r.patloop[1], addr_width) << std::endl
<< "patloop1 0x" << r.patloop[2] << " 0x" << r.patloop[3] << std::endl << "patnloop0 " << r.patnloop[0] << std::endl
<< "patnloop1 " << std::dec << r.patnloop[1] << std::hex << std::endl << "patloop1 " << ToStringHex(r.patloop[2], addr_width) << " "
<< "patloop2 0x" << r.patloop[4] << " 0x" << r.patloop[5] << std::endl << ToStringHex(r.patloop[3], addr_width) << std::endl
<< "patnloop2 " << std::dec << r.patnloop[2] << std::hex << std::endl << "patnloop1 " << r.patnloop[1] << std::endl
<< "patwait0 0x" << r.patwait[0] << std::endl << "patloop2 " << ToStringHex(r.patloop[4], addr_width) << " "
<< "patwaittime0 " << std::dec << r.patwaittime[0] << std::hex << ToStringHex(r.patloop[5], addr_width) << std::endl
<< std::endl << "patnloop2 " << r.patnloop[2] << std::endl
<< "patwait1 0x" << r.patwait[1] << std::endl << "patwait0 " << ToStringHex(r.patwait[0], addr_width) << std::endl
<< "patwaittime1 " << std::dec << r.patwaittime[1] << std::hex << "patwaittime0 " << r.patwaittime[0] << std::endl
<< std::endl << "patwait1 " << ToStringHex(r.patwait[1], addr_width) << std::endl
<< "patwait2 0x" << r.patwait[1] << std::endl << "patwaittime1 " << r.patwaittime[1] << std::endl
<< "patwaittime2 " << std::dec << r.patwaittime[2] << std::hex << "patwait2 " << ToStringHex(r.patwait[2], addr_width) << std::endl
<< std::endl << "patwaittime2 " << r.patwaittime[2] << std::endl
<< ']'; << ']';
return oss.str(); return oss.str();
} }