14 #include "gcp/control/code/unix/libunix_src/common/regmap.h"
16 #include "gcp/antenna/control/specific/AxisPositions.h"
17 #include "gcp/antenna/control/specific/Board.h"
18 #include "gcp/antenna/control/specific/Model.h"
19 #include "gcp/antenna/control/specific/ServoCommandSa.h"
20 #include "gcp/antenna/control/specific/PmacTarget.h"
22 #include "gcp/util/common/Angle.h"
23 #include "gcp/util/common/FdSet.h"
34 #define SERVO_TIMEOUT_USEC 150000
42 class ServoCommsSa :
public Board {
49 ServoCommsSa(SpecificShare* share, std::string name,
bool sim);
75 void commandNewPosition(PmacTarget* pmac);
76 void commandNewPosition(PmacTarget* pmac, PmacTarget* pmac1, PmacTarget* pmac2,
gcp::util::TimeVal& mjd);
91 bool isPartOneComplete();
138 unsigned readPositionFault();
163 struct termios termioSave_;
169 RegMapBlock* azPositions_;
170 RegMapBlock* azErrors_;
171 RegMapBlock* elPositions_;
172 RegMapBlock* elErrors_;
173 RegMapBlock* slowAzPos_;
174 RegMapBlock* slowElPos_;
175 RegMapBlock* servoStatus_;
176 RegMapBlock* servoThermalCutouts_;
177 RegMapBlock* servoContactors_;
178 RegMapBlock* servoCircuitBreakers_;
179 RegMapBlock* servoBrakes_;
180 RegMapBlock* driveLids_;
181 RegMapBlock* azWrap_;
182 RegMapBlock* azWrapSwitch_;
183 RegMapBlock* servoSeconds_;
184 RegMapBlock* servouSeconds_;
185 RegMapBlock* az_tacho1_;
186 RegMapBlock* az_tacho2_;
187 RegMapBlock* el_tacho1_;
188 RegMapBlock* el_tacho2_;
189 RegMapBlock* az_pid1_;
190 RegMapBlock* az_pid2_;
191 RegMapBlock* el_pid1_;
192 RegMapBlock* el_pid2_;
222 bool responsePending_;
227 bool initializationPartOne_;
232 bool initializationComplete_;
258 void registerReadFd(
int fd);
264 int waitForNextMessage();
269 int readTCPPort(ServoCommandSa& command);
274 int waitForResponse();
279 void recordStatusResponse(ServoCommandSa& command);
284 void wait(
long nsec=100000000);
ServoCommandSa command_
Definition: servoCommsSa.h:198
void fillUtc(gcp::util::TimeVal &currTime)
Definition: servoCommsSa.cc:785
ServoCommandSa issueCommand(ServoCommandSa::Request req, std::vector< float > &values)
Definition: servoCommsSa.cc:171
bool connect()
Definition: servoCommsSa.cc:260
void queryAntPositions()
Definition: servoCommsSa.cc:700
Request
Definition: ServoCommandSa.h:37
void initializeAntenna()
Definition: servoCommsSa.cc:551
~ServoCommsSa()
Definition: servoCommsSa.cc:106
void queryStatus()
Definition: servoCommsSa.cc:629
void setAzEl(gcp::util::Angle &az, gcp::util::Angle &el)
void disconnect()
Definition: servoCommsSa.cc:236
void sendCommand(ServoCommandSa &command)
Definition: servoCommsSa.cc:116
bool isSim()
Definition: ServoCommsSa.cc:418
ServoCommsSa()
Definition: servoCommsSa.cc:96
int readResponse(ServoCommandSa &command)
Definition: servoCommsSa.cc:143
void finishInitialization()
Definition: servoCommsSa.cc:998
void haltAntenna()
Definition: servoCommsSa.cc:519
bool isBrakeOn()
Definition: servoCommsSa.cc:1131
bool servoIsConnected()
Definition: servoCommsSa.cc:372
bool readPosition(AxisPositions *axes, Model *model)
Definition: servoCommsSa.cc:825
bool isCircuitBreakerTripped()
Definition: servoCommsSa.cc:1079
bool isLidOpen()
Definition: servoCommsSa.cc:1119
int writeString(std::string message)
Definition: servoCommsSa.cc:380
bool isThermalTripped()
Definition: servoCommsSa.cc:1098
bool isInitialized()
Definition: servoCommsSa.cc:1143
void hardStopAntenna()
Definition: servoCommsSa.cc:536