My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
PmacCommand.h
Go to the documentation of this file.
1 #ifndef PMACCOMMAND_H
2 #define PMACCOMMAND_H
3 
11 #include <string>
12 
13 // Required C header files from the array control code
14 
15 #include "gcp/control/code/unix/libunix_src/common/regmap.h" // RegMapBlock
16 
17 // The hard limit -- pmac can't process more than this in a single
18 // message
19 
20 #define PMAC_DATA_MAX_LEN 1400
21 
22 namespace gcp {
23  namespace antenna {
24  namespace control {
25 
26 
27  class PmacComms;
28 
29  class PmacCommand {
30  public:
31 
35  enum RequestType {
36  UPLOAD = 0xC0, // An input wrt the pmac
37  DOWNLOAD = 0x40 // An output command wrt to the pmac
38  };
39 
43  enum Request {
44  INVALID = 0x0, // Default which will be used to
45  // indicate that a command has not
46  // been initialized
47  CTRL_RESPONSE = 0xC4,
48  FWDOWNLOAD = 0xCB,
49  IPADDRESS = 0xE0,
50  PMAC_FLUSH = 0xB3,
51  PMAC_GETBUFFER = 0xC5,
52  PMAC_GETLINE = 0xB1,
53  PMAC_GETMEM = 0xB4,
54  PMAC_GETRESPONSE = 0xBF,
55  PMAC_PORT = 0xBE,
56  PMAC_READREADY = 0xC2,
57  PMAC_SENDLINE = 0xB0,
58  PMAC_SETMEM = 0xB5,
59  PMAC_SETBIT = 0xBA,
60  PMAC_SETBITS = 0xBB,
61  PMAC_WRITEBUFFER = 0xC6,
62  PMAC_WRITEERROR = 0xC7
63  };
64 
65  struct EthCmdInfo {
66  unsigned char requestType_;
67  unsigned char request_;
68  unsigned short wValue_;
69  unsigned short wIndex_;
70  unsigned short wLength_;
71  };
72 
73  struct EthCmd {
74  EthCmdInfo info_;
75  unsigned char sendData_[PMAC_DATA_MAX_LEN];
76  };
77 
81  PmacCommand();
82 
86  ~PmacCommand();
87 
91  void packCtrlResponseCmd();
92 
96  void packFwDownLoadCmd();
97 
101  void packIpAddress();
102 
106  void packIpAddress(unsigned int address);
107 
111  void packPmacFlushCmd();
112 
117  void packPmacGetBufferCmd();
118 
122  void packPmacGetLineCmd();
123 
127  void packPmacGetMemCmd(unsigned short offset,
128  unsigned short length);
129 
134  void packPmacGetResponseCmd(std::string outString);
135 
139  void packPmacPortCmd(unsigned char port);
140 
144  void packPmacPortCmd();
145 
149  void packPmacReadReadyCmd();
150 
154  void packPmacSendCtrlCharCmd(char outch);
155 
159  void packPmacSendLineCmd(std::string line);
160 
164  void packPmacSetBitCmd(unsigned short bitNo, bool on);
165 
169  void packPmacSetBitsCmd(unsigned int mask);
170 
174  void packPmacSetMemCmd(unsigned short offset,
175  unsigned short length,
176  unsigned char* data);
177 
181  void packPmacWriteBufferCmd(unsigned int* data, unsigned int len);
182 
183  //------------------------------------------------------------
184  // Derived command types. These are built on top of the
185  // primitive command types supported by the pmac interface.
186  //------------------------------------------------------------
187 
191  void packWriteRegCmd(RegMapBlock* blk,
192  unsigned int first, unsigned int nreg,
193  unsigned int* value);
194 
198  void packReadRegCmd(RegMapBlock* blk,
199  unsigned int first, unsigned int nreg);
200 
201  //------------------------------------------------------------
202  // Methods to do with reading responses back from the pmac.
203  //------------------------------------------------------------
204 
209  void* readData();
210 
214  size_t responseLength();
215 
220  void readRegResponse(RegMapBlock *blk,
221  unsigned int first, unsigned int nreg,
222  unsigned int* response);
223 
228  unsigned int* readRegResponse(RegMapBlock *blk,
229  unsigned int first, unsigned int nreg);
230 
231  private:
232 
233  friend class PmacComms;
234 
235  EthCmd cmd_;
236 
241  unsigned short cmdSize_;
242 
246  bool expectsResponse_;
247 
252  unsigned short responseLength_;
253 
257  unsigned char readData_[PMAC_DATA_MAX_LEN];
258 
263  unsigned char tmpBuffer_[PMAC_DATA_MAX_LEN];
264 
265  //------------------------------------------------------------
266  // Methods for accessing private members.
267  //------------------------------------------------------------
268 
272  Request request();
273 
277  const void* cmd();
278 
282  size_t size();
283 
288  const void* sendData();
289 
290  }; // End class PmacCommand
291 
292  }; // End namespace control
293  }; // End namespace antenna
294 }; // End namespace gcp
295 
296 #endif // End #ifndef
void packPmacGetResponseCmd(std::string outString)
Definition: PmacCommand.cc:171
void packPmacReadReadyCmd()
Definition: PmacCommand.cc:186
void packCtrlResponseCmd()
Definition: PmacCommand.cc:29
void packReadRegCmd(RegMapBlock *blk, unsigned int first, unsigned int nreg)
Definition: PmacCommand.cc:94
void packWriteRegCmd(RegMapBlock *blk, unsigned int first, unsigned int nreg, unsigned int *value)
Definition: PmacCommand.cc:250
void packFwDownLoadCmd()
Definition: PmacCommand.cc:34
void packPmacSetMemCmd(unsigned short offset, unsigned short length, unsigned char *data)
Definition: PmacCommand.cc:218
Definition: PmacCommand.h:73
void readRegResponse(RegMapBlock *blk, unsigned int first, unsigned int nreg, unsigned int *response)
Definition: PmacCommand.cc:153
void packPmacPortCmd()
Definition: PmacCommand.cc:181
size_t responseLength()
Definition: PmacCommand.cc:347
void packIpAddress()
Definition: PmacCommand.cc:39
void * readData()
Definition: PmacCommand.cc:312
PmacCommand()
Definition: PmacCommand.cc:16
Definition: PmacCommand.h:29
Definition: PmacComms.h:33
void packPmacFlushCmd()
Definition: PmacCommand.cc:49
RequestType
Definition: PmacCommand.h:35
void packPmacSetBitsCmd(unsigned int mask)
Definition: PmacCommand.cc:206
~PmacCommand()
Definition: PmacCommand.cc:24
void packPmacGetMemCmd(unsigned short offset, unsigned short length)
Definition: PmacCommand.cc:65
void packPmacWriteBufferCmd(unsigned int *data, unsigned int len)
Definition: PmacCommand.cc:297
void packPmacSendLineCmd(std::string line)
Definition: PmacCommand.cc:196
void packPmacGetBufferCmd()
Definition: PmacCommand.cc:55
void packPmacSetBitCmd(unsigned short bitNo, bool on)
Definition: PmacCommand.cc:201
void packPmacSendCtrlCharCmd(char outch)
Definition: PmacCommand.cc:191
void packPmacGetLineCmd()
Definition: PmacCommand.cc:60
Request
Definition: PmacCommand.h:43