rwr_trcfg.cxx
- Note:
- Read/write some registers
#ifndef RCUXX_ALTRO_H
# include <rcuxx/Altro.h>
#endif
#ifndef RCUXX_BC_H
# include <rcuxx/Bc.h>
#endif
#include <rcuxx/rcu/RcuIMEM.h>
#include <stdexcept>
#include <iostream>
#include <sstream>
#include <string>
void usage(const char* progname)
{
std::cout << "Usage: " << progname << " [OPTIONS] NODE\n\n"
<< "\t-h\t\tThis help\n"
<< "\t-e\t\tEmulate mode (no hardware)\n"
<< "\t-d\t\tEnable debug output\n"
<< std::endl;
Rcuxx::Rcu::PrintHelp(std::cout);
}
int main(int argc, char** argv)
{
std::string node("u2f:/dev/altro0");
bool emulate = false ,debug = false;
for (int i = 1; i < argc; i++) {
if (argv[i][0] == '-') {
switch (argv[i][1]) {
case 'h': usage(argv[0]); return 0;
case 'e': emulate = true; break;
case 'd': debug = true; break;
}
}
else {
node = argv[i];
}
}
Rcuxx::Rcu* rcu = Rcuxx::Rcu::Open(node.c_str(), emulate, debug);
if (!rcu) return 1;
if (debug) rcu->SetDebug(Rcuxx::Rcu::kRcu, 1);
if (debug) rcu->SetDebug(Rcuxx::Rcu::kBackend, 1);
try {
unsigned int ret;
Rcuxx::RcuIMEM* imem = rcu->IMEM();
if (!imem) throw std::runtime_error("No IMEM!");
std::cout << "BEFORE UPDATE" << std::endl;
imem->Print();
if ((ret = imem->Update())) throw ret;
std::cout << "AFTER UPDATE" << std::endl;
imem->Print();
}
catch (unsigned int ret) {
std::cerr << "Failed to update <" << ret
<< ">: " << rcu->ErrorString(ret) << std::endl;
return 1;
}
catch (std::exception& e) {
std::cerr << e.what() << std::endl;
return 1;
}
return 0;
}