1 #ifndef LLMANAGERTHREAD_H
2 #define LLMANAGERTHREAD_H
5 #include <carma/linelength/LLWorkerBoard0Thread.h>
6 #include <carma/linelength/LLWorkerBoard1Thread.h>
8 #include <carma/util/AutoPthreadQuitAndJoinGroup.h>
9 #include <carma/util/ScopedPthreadMutexLock.h>
14 class LineLengthSubsystem;
19 namespace linelength {
21 struct LLManagerData {
26 std::vector<bool> initialized;
27 std::vector<double> length;
28 std::vector<double> offsetPhase;
29 std::vector<unsigned short> synthNumber;
32 std::vector<double> synthFreq;
38 LLManagerThread(
const std::string &ni0,
const std::string &ni1,
const double awdelay);
42 void setOffsetPhase(
const unsigned short ant,
const double cycles);
43 void setAntennaLORef(
const unsigned short ant,
const unsigned short synth);
44 void setLORefFreq(
const unsigned short synth,
const double freq_hz);
45 void setNominalLineLength(
const unsigned short ant,
const double length_ns);
47 void takeBoard0Snapshot(
const std::string &filename);
48 void takeBoard1Snapshot(
const std::string &filename);
51 void startWorkerBoard0();
52 void startWorkerBoard1();
55 static void thread(LLManagerThread &This) { This.run(); };
59 carma::util::AutoPthreadQuitAndJoinGroup _group;
60 LLWorkerBoard0Thread _ni0Worker;
61 LLWorkerBoard1Thread _ni1Worker;
64 const double _awdelay;
66 void writeBoard0MP(carma::monitor::LineLengthSubsystem &LLmon);
67 void writeBoard1MP(carma::monitor::LineLengthSubsystem &LLmon);
71 struct LLManagerData _managerData;
77 #endif // LLMANAGERTHREAD_H
A simple wrapper class that makes use of ::pthread_mutex_t easier in a C++ world. ...