ATEsystem.PIRIS-driver: ATEsystem.PIRIS-driver/ATEsystem.PIRIS-driver-Shared/include/ATEsystem.PIRIS.h Source File

ATEsystem.PIRIS

ATEsystem.PIRIS-driver  1.0.1
ATEsystem.PIRIS-driver
ATEsystem.PIRIS.h
Go to the documentation of this file.
1 /******************************************
2 *
3 * Author: Jakub Parez
4 * File: ATEsystem.PIRIS.h
5 * Project: ATEsystem.PIRIS-driver
6 * Version: 1.0.1
7 * Company: ATEsystem s.r.o
8 * Date: 2018/11/23 09:29
9 * License: WTFPL
10 * Require: C++17, Pylon 5, GenICam, Serial
11 *
12 *******************************************/
13 
14 #pragma once
15 
16 #ifdef _WIN32
17  #include <windows.h>
18 
19  #define Interface class //__interface
20  #define _sscanf sscanf_s
21  #define _Sleep(ms) Sleep(ms)
22 
23 #elif __linux__
24  #include <unistd.h>
25  #include <stdlib.h>
26  #include <cstdint>
27 
28  #define Interface struct
29  #define _sscanf sscanf
30  #define _Sleep(ms) usleep(ms * 1000)
31 
32 #else
33  #error Unknown / unsupported platform
34 #endif
35 
36 #include <string>
37 #include <map>
38 #include <vector>
39 #include <list>
40 
41 #include "pylon/PylonIncludes.h"
42 #include "serial.h"
43 
44 
45 // ERROR TEXT
46 #define OK "OK"
47 #define ERR0 "Command was not recognized."
48 #define ERR1 "Wrong input parameter."
49 #define ERR2 "Device is not initialized."
50 #define ERR3 "Internal driver circuit is in error state (overheat, undervoltage)."
51 #define ERR4 "Wrong lens type."
52 #define ERR5 "Damaged or missing rear sensor."
53 #define ERR6 "Step generator timer overflow."
54 #define ERR7 "Device is busy."
55 #define ERR_UN "Unknown error."
56 #define ERR_PA "Parse answer failed."
57 
58 // STATUS TEXT
59 #define TXT_SUCCESS "Success"
60 #define TXT_GENERAL_ERROR "General Error"
61 #define TXT_OPEN_FAILED "Open failed"
62 #define TXT_CLOSE_FAILED "CLose failed"
63 #define TXT_ALREADY_OPEN "Already open"
64 #define TXT_DEVICE_IS_BUSY "Device is busy"
65 #define TXT_DEVICE_IS_CLOSED "Device is closed"
66 #define TXT_INVALID_DEVICE "Invalid device"
67 #define TXT_WRITE_ERROR "Write error"
68 #define TXT_READ_ERROR "Read error"
69 #define TXT_SCAN_FAILED "Scan failed"
70 #define TXT_INTERNAL_ERROR "Internal error"
71 #define TXT_RX_TIMEOUT "Receive timeout"
72 #define TXT_DEV_SET_FAILED "Device set failed"
73 #define TXT_WRONG_MODE "Wrong mode"
74 #define TXT_DEVICE_NOT_EXIST "Device does not exist"
75 #define TXT_PARSE_ANSWER_FAIL "Parse answer failed"
76 
77 // DEVICE MODE TEXT
78 #define TXT_ETHERNET_DEVICE "Ethernet device"
79 #define TXT_ETHERNET_PYLON "Ethernet pylon (camera overiden)"
80 #define TXT_ETHERNET_CAMERA "Ethernet camera (camera overiden)"
81 #define TXT_SERIAL "Serial"
82 
83 // VERBOSE OUTPUT TEXT
84 #define TXT_SUCCESS2 "success"
85 #define TXT_FAILED "failed"
86 #define TXT_NAME "name"
87 #define TXT_VERSION "version"
88 #define TXT_FOCUS "focus"
89 #define TXT_ZOOM "zoom"
90 #define TXT_IRIS "iris"
91 #define TXT_LENS "lens"
92 #define TXT_IR_FILTER "ir_filter"
93 #define TXT_IR_PRESENT "ir_present"
94 #define TXT_SENS_PRESENT "sens_present"
95 #define TXT_BUSY "busy"
96 #define TXT_TYPE "type"
97 
98 // ATE PIRIS PROTOCOL
99 #define CMD_READ_ID "IDN"
100 #define CMD_READ_POS "GP"
101 #define CMD_READ_TYPE "GT"
102 #define CMD_READ_STATE "GS"
103 #define CMD_RESET "RST"
104 #define CMD_HOMING "INI"
105 #define CMD_SET_ABS "SETA:"
106 #define CMD_SET_REL "SETR:"
107 #define CMD_SUFFIX "\r\n"
108 #define RESP_FOCUS "F%hu"
109 #define RESP_ZOOM "Z%hu"
110 #define RESP_IRIS "P%hu"
111 #define TRUE_VAL '1'
112 #define DELIM ";"
113 
114 // RESPONSE CHAR LEN
115 #define LEN_CMD_READ_ID 3
116 #define LEN_CMD_READ_POS 5
117 #define LEN_CMD_READ_TYPE 7
118 #define LEN_CMD_READ_STATE1 2
119 #define LEN_CMD_READ_STATE2 3
120 #define LEN_CMD_RESET 0
121 #define LEN_CMD_HOMING 1
122 #define LEN_CMD_SET_ABS 1
123 #define LEN_CMD_SET_REL 1
124 
125 #define FW_MIN_STAT_POLL 1, 7, 2 // minimum fw version which support cyclic status poll reading
126 
127 #define RX_TIMEOUT_OLD_FW 20000
128 #define RX_TIMEOUT_NEW_FW 1000
129 
130 #define MSG(x) x CMD_SUFFIX
131 
132 #define STR_MAX_SIZE 200
133 #define GET_VAR_NAME(Variable) (#Variable)
134 
135 
137 {
141  typedef int16_t Status_t;
142 
146  typedef int16_t DevID_t;
147 
151  enum Mode : uint8_t
152  {
153  SERIAL = 0,
155  };
156 
160  enum Status : int16_t
161  {
162  SUCCESS = 0,
164  OPEN_FAILED = -2,
172  SCAN_FAILED = -10,
174  RX_TIMEOUT = -12,
176  WRONG_MODE = -14,
180  };
181  std::ostream& operator<<(std::ostream& os, const Status stat);
182 
186  enum State : int8_t
187  {
188  UNKNOWN = 0,
189  CLOSED = 1,
190  BUSY = 2,
191  READY = 3,
192  };
193 
198  enum PirisDeviceType : uint8_t
199  {
204  };
205  std::ostream& operator<<(std::ostream& os, const PirisDeviceType type);
206 
210  enum VerboseLevel : uint8_t
211  {
212  NONE = 0,
213  BASIC = 1,
214  FULL = 2
215  };
216 
220  enum YesNoNA : uint8_t
221  {
223  YES = 1,
224  NO = 2
225  };
226 
227 /* ******************************************************************************** */
228 
232  class Utils
233  {
234  public:
235 
236  static void CpyCStr2CStr(char* dest, const char* source, size_t max_len);
237  static void CopySTLStr2CStr(char* dest, std::string source);
238  static std::string CopyCStr2STLStr(const char* src);
239  static std::string PadStr(const int total, const int minus = 0, const char ch = ' ');
240  };
241 
242 /* ******************************************************************************** */
243 
249  {
250  private:
251 
252  const Mode mode = Mode::ETHERNET;
254  Pylon::CDeviceInfo dummy_dev;
255  serial::PortInfo dummy_port;
256 
257  Pylon::CDeviceInfo& device_eth;
258  Pylon::IPylonDevice* pylon_dev = nullptr;
259  Pylon::CInstantCamera* camera = nullptr;
260  serial::PortInfo& serial;
261 
262  public:
263 
264  PirisDevice(Pylon::CDeviceInfo& device);
265  PirisDevice(Pylon::IPylonDevice* pylon_dev);
266  PirisDevice(Pylon::CInstantCamera* camera);
267  PirisDevice(serial::PortInfo& serial);
268 
269  Pylon::CDeviceInfo& get_device_eth() const;
270  Pylon::IPylonDevice* get_pylon_dev() const;
271  Pylon::CInstantCamera* get_camera() const;
272  serial::PortInfo& get_serial() const;
273  const Mode get_mode() const;
274  const PirisDeviceType get_type() const;
275 
276  std::string ToString() const;
277  friend std::ostream& operator<<(std::ostream& strm, const PirisDevice& dev)
278  {
279  strm << dev.ToString();
280  return strm;
281  }
282  };
283 
284 /* ******************************************************************************** */
285 
290  {
291  private:
292 
293  bool ok;
294  int8_t err_num;
295  std::string msg;
296 
297  static std::map<std::string, std::string> errors;
298 
299  public:
300 
301  ErrorCluster(std::string err_raw = "", bool overide = false);
302  const bool getOk() const;
303  const int8_t getErrNum() const;
304  const std::string getMsg() const;
305  const std::tuple<bool, int8_t, std::string> getErrorCluster() const;
306 
307  std::string ToString() const;
308  friend std::ostream& operator<<(std::ostream& strm, const ErrorCluster& err)
309  {
310  strm << err.ToString();
311  return strm;
312  }
313  };
314 
315 /* ******************************************************************************** */
316 
320  class Version
321  {
322  private:
323 
324  const uint16_t _major;
325  const uint16_t _minor;
326  const uint16_t _revision;
327 
328  public:
329 
330  Version(uint16_t major = 0, uint16_t minor = 0, uint16_t revision = 0);
331  const uint16_t getMajor() const;
332  const uint16_t getMinor() const;
333  const uint16_t getRevision() const;
334  const std::tuple<uint16_t, uint16_t, uint16_t> getVersion() const;
335 
336  std::string ToString() const;
337  friend std::ostream& operator<<(std::ostream& strm, const Version& ver)
338  {
339  strm << ver.ToString();
340  return strm;
341  }
342  friend bool operator==(const Version& ver1, const Version& ver2)
343  {
344  return (ver1._major == ver2._major && ver1._minor == ver2._minor && ver1._revision == ver2._revision);
345  }
346  friend bool operator>(const Version& ver1, const Version& ver2)
347  {
348  return (ver1._major > ver2._major ||
349  (ver1._major == ver2._major && ver1._minor > ver2._minor) ||
350  (ver1._major == ver2._major && ver1._minor == ver2._minor && ver1._revision > ver2._revision));
351  }
352  friend bool operator>=(const Version& ver1, const Version& ver2)
353  {
354  return (ver1._major >= ver2._major ||
355  (ver1._major == ver2._major && ver1._minor >= ver2._minor) ||
356  (ver1._major == ver2._major && ver1._minor == ver2._minor && ver1._revision >= ver2._revision));
357  }
358  friend bool operator<(const Version& ver1, const Version& ver2)
359  {
360  return (ver1._major < ver2._major ||
361  (ver1._major == ver2._major && ver1._minor < ver2._minor) ||
362  (ver1._major == ver2._major && ver1._minor == ver2._minor && ver1._revision < ver2._revision));
363  }
364  friend bool operator<=(const Version& ver1, const Version& ver2)
365  {
366  return (ver1._major <= ver2._major ||
367  (ver1._major == ver2._major && ver1._minor <= ver2._minor) ||
368  (ver1._major == ver2._major && ver1._minor == ver2._minor && ver1._revision <= ver2._revision));
369  }
370  };
371 
372 /* ******************************************************************************** */
373 
377  template <class T = uint16_t>
379  {
380  private:
381 
382  int pad_len;
383 
384  const T _focus;
385  const T _zoom;
386  const T _iris;
387 
388  public:
389 
390  FocusZoomIris(T focus = NULL, T zoom = NULL, T iris = NULL, int str_pad_len = 25) :
391  _focus(focus), _zoom(zoom), _iris(iris), pad_len(str_pad_len)
392  {
393  }
394  const T getFocus() const
395  {
396  return this->_focus;
397  }
398  const T getZoom() const
399  {
400  return this->_zoom;
401  }
402  const T getIris() const
403  {
404  return this->_iris;
405  }
406  const std::tuple<T, T, T> getFocusZoomIris() const
407  {
408  return std::make_tuple(this->_focus, this->_zoom, this->_iris);
409  }
410 
411  std::string ToString() const
412  {
413  std::stringstream ret;
414  ret << TXT_FOCUS << "=" << Utils::PadStr(14, 5) << this->_focus << std::endl
415  << Utils::PadStr(pad_len) << TXT_ZOOM << "=" << Utils::PadStr(14, 4) << this->_zoom << std::endl
416  << Utils::PadStr(pad_len) << TXT_IRIS << "=" << Utils::PadStr(14, 4) << this->_iris;
417  return ret.str();
418  }
419 
420  friend std::ostream& operator<<(std::ostream& strm, const FocusZoomIris& vals)
421  {
422  strm << vals.ToString();
423  return strm;
424  }
425  };
426 
427 /* ******************************************************************************** */
428 
432  class StatusEx : public ErrorCluster
433  {
434  public:
435 
436  const Status status;
438  };
439 
443  class DataID
444  {
445  public:
446 
447  const std::string name;
449 
450  DataID(std::string name = "", Version version = Version());
451  };
452 
457  {
458  public:
459 
461  const bool ir_filter;
462 
464  };
465 
470  {
471  public:
472 
474  const std::string lens;
475  const bool ir_present;
476  const bool sens_present;
477 
479  bool ir = false, bool sens = false);
480  };
481 
485  class DataState
486  {
487  public:
488 
490  const bool motors_busy;
491 
492  DataState(FocusZoomIris<bool> state = FocusZoomIris<bool>(), bool busy = false);
493  };
494 
495 /* ******************************************************************************** */
496 
500  Interface IDevice
501  {
502  public:
503 
504  //********************************************** open/close ***************************************************//
512  virtual Status Open(void* dev, PirisDeviceType type, VerboseLevel verbose = VerboseLevel::NONE) = 0;
513 
520  virtual Status Open(const PirisDevice& dev, VerboseLevel verbose = VerboseLevel::NONE) = 0;
521 
526  virtual Status Close() = 0;
527 
528  //************************************************ read ******************************************************//
534  virtual std::tuple<StatusEx, DataID> ReadID() = 0;
535 
540  virtual std::tuple<StatusEx, DataPosition> ReadPosition() = 0;
541 
546  virtual std::tuple<StatusEx, DataParams> ReadParams() = 0;
547 
552  virtual std::tuple<StatusEx, DataState> ReadState() = 0;
553 
554  //******************************************** reset/homing **************************************************//
559  virtual StatusEx DevReset() = 0;
560 
565  virtual StatusEx DevHoming() = 0;
566 
567  //************************************************* set ******************************************************//
576  virtual StatusEx SetAbsolute(uint16_t focus = 0,
577  uint16_t zoom = 0,
578  uint16_t iris = 0,
579  bool ir_filter = false) = 0;
580 
589  virtual StatusEx SetAbsolute(const FocusZoomIris<uint16_t>& values,
590  bool ir_filter = false) = 0;
591 
600  virtual StatusEx SetRelative(int16_t focus = 0,
601  int16_t zoom = 0,
602  int16_t iris = 0) = 0;
603 
612  virtual StatusEx SetRelative(const FocusZoomIris<int16_t>& values) = 0;
613 
614  //************************************************ utils *****************************************************//
615 
620  virtual YesNoNA GetFwPollSupport() = 0;
621 
626  virtual VerboseLevel GetVerboseLevel() = 0;
627 
632  virtual void SetVerboseLevel(VerboseLevel level) = 0;
633 
634  virtual ~IDevice() = 0;
635  };
636 
640  Interface IComm
641  {
642  public:
643 
650  virtual Status open(const PirisDevice& dev, VerboseLevel verbose = VerboseLevel::NONE) = 0;
651 
657  virtual Status close(bool ignore_err = false) = 0;
658 
664  virtual Status write(const std::string data) = 0;
665 
671  virtual Status read(std::string& data) = 0;
672 
678  virtual Status flush(bool ignore_err = false) = 0;
679 
683  virtual void remove() = 0;
684 
685  virtual ~IComm() = 0;
686  };
687 
688 /* ******************************************************************************** */
689 
693  class CPirisMain : public IComm, public IDevice
694  {
695  public:
696 
697  static int16_t ScanEthernet(std::vector<Pylon::CDeviceInfo>& devices, bool verbose = false);
698  static int16_t ScanSerial(std::vector<serial::PortInfo>& devices, bool verbose = false);
699 
700  Status Open(void* dev, PirisDeviceType type, VerboseLevel verbose = VerboseLevel::NONE);
701  Status Open(const PirisDevice& dev, VerboseLevel verbose = VerboseLevel::NONE);
702  Status Close();
703 
704  std::tuple<StatusEx, DataID> ReadID(); // IDN - !! need to call this on every start to set timeouts
705  std::tuple<StatusEx, DataPosition> ReadPosition(); // GP
706  std::tuple<StatusEx, DataParams> ReadParams(); // GT
707  std::tuple<StatusEx, DataState> ReadState(); // GS
708 
709  StatusEx DevReset(); // RST
710  StatusEx DevHoming(); // INI
711 
712  StatusEx SetAbsolute(uint16_t focus = 0,
713  uint16_t zoom = 0,
714  uint16_t iris = 0,
715  bool ir_filter = false);
716  StatusEx SetAbsolute(const FocusZoomIris<uint16_t>& values, // SETA:FX;ZX;PX;IX
717  bool ir_filter = false);
718  StatusEx SetRelative(int16_t focus = 0,
719  int16_t zoom = 0,
720  int16_t iris = 0);
721  StatusEx SetRelative(const FocusZoomIris<int16_t>& values); // SETR:FX;ZX;PX
722 
725  void SetVerboseLevel(VerboseLevel level);
726 
727  CPirisMain();
728  virtual ~CPirisMain() {};
729 
730  protected:
731 
733 
734  void state_set(State _state);
735  State state_get();
736  bool state_is(State _state);
737  void state_reset();
738  bool verbose_is(VerboseLevel _verbose);
739  void verbose_set(VerboseLevel _verbose);
740 
741  private:
742 
743  VerboseLevel _verbose;
744  State state = State::CLOSED;
745  State _state = State::CLOSED;
746  YesNoNA fw_poll_support = YesNoNA::NOT_AVAILABLE; // device firmware is 1.7.2 and higher (stat read poll supp)
747 
748  ErrorCluster parse_answer(std::string answer_in, std::vector<std::string>& tokens_out, uint8_t n);
749  StatusEx send_msg(std::vector<std::string>& tokens_out, std::string name, std::string cmd, uint8_t len);
750  };
751 
752 /* ******************************************************************************** */
753 
757  template <class T>
759  {
760  private:
761 
762  T* m_pT;
763 
764  public:
765  SmartPointer(void) noexcept: m_pT(NULL)
766  {
767  }
768 
770  {
771  delete m_pT;
772  }
773 
774  void operator=(T *pB)
775  {
776  m_pT = dynamic_cast<T*>(pB);
777  }
778 
779  operator T*(void) const
780  {
781  return m_pT;
782  }
783 
784  T& operator*(void) const
785  {
786  return *m_pT;
787  }
788 
789  T& operator()(void) const
790  {
791  return *m_pT;
792  }
793 
794  T* operator->(void) const
795  {
796  return m_pT;
797  }
798 
799  bool IsValid() const throw()
800  {
801  return m_pT != NULL;
802  }
803 
804  operator bool(void) const throw()
805  {
806  return m_pT != NULL;
807  }
808 
809  bool operator==(T* pT) const
810  {
811  return m_pT == pT;
812  }
813  };
814 
819 
820 /* ******************************************************************************** */
821 
825  typedef IDevice* (*CreateDeviceFn)(void);
826 
831  class Factory
832  {
833  private:
834 
835  typedef std::map<Mode, CreateDeviceFn> FactoryMap;
836  typedef std::map<DevID_t, std::pair<std::string, IDevice*>> DeviceMap; // CPirisMain ?
837  FactoryMap _factoryMap;
838  DeviceMap _deviceMap;
839 
840  Factory();
841  void Register(Mode mode, CreateDeviceFn pfnCreate);
842 
843  public:
844 
845  Factory(Factory const&) = delete;
846  Factory &operator=(Factory const&) = delete;
847  ~Factory() { _factoryMap.clear(); }
848 
854  {
855  static Factory instance;
856  return &instance;
857  }
858 
865 
872  DevID_t CreateDevice(const std::string& name, Mode mode);
873 
880 
886  std::string GetDeviceName(DevID_t id);
887 
894  };
895 }
Definition: ATEsystem.PIRIS.h:213
void operator=(T *pB)
Definition: ATEsystem.PIRIS.h:774
State state_get()
Definition: ATEsystem.PIRIS.cpp:405
Definition: ATEsystem.PIRIS.h:154
Pylon::CDeviceInfo & get_device_eth() const
Definition: ATEsystem.PIRIS.cpp:800
const uint16_t getMinor() const
Definition: ATEsystem.PIRIS.cpp:556
Definition: ATEsystem.PIRIS.h:166
Definition: ATEsystem.PIRIS.h:165
Version(uint16_t major=0, uint16_t minor=0, uint16_t revision=0)
Definition: ATEsystem.PIRIS.cpp:546
#define TXT_FOCUS
Definition: ATEsystem.PIRIS.h:88
const std::string name
Definition: ATEsystem.PIRIS.h:447
const T getZoom() const
Definition: ATEsystem.PIRIS.h:398
Definition: ATEsystem.PIRIS.h:469
Definition: ATEsystem.PIRIS.h:232
Definition: ATEsystem.PIRIS.h:153
std::tuple< StatusEx, DataState > ReadState()
Definition: ATEsystem.PIRIS.cpp:255
const Mode get_mode() const
Definition: ATEsystem.PIRIS.cpp:820
Definition: ATEsystem.PIRIS.h:214
StatusEx SetRelative(int16_t focus=0, int16_t zoom=0, int16_t iris=0)
Definition: ATEsystem.PIRIS.cpp:329
const bool ir_filter
Definition: ATEsystem.PIRIS.h:461
Definition: ATEsystem.PIRIS.h:162
Definition: ATEsystem.PIRIS.h:693
bool verbose_is(VerboseLevel _verbose)
Definition: ATEsystem.PIRIS.cpp:420
DataParams(FocusZoomIris< uint16_t > max=FocusZoomIris< uint16_t >(), std::string lens="", bool ir=false, bool sens=false)
Definition: ATEsystem.PIRIS.cpp:682
~SmartPointer(void)
Definition: ATEsystem.PIRIS.h:769
friend bool operator<=(const Version &ver1, const Version &ver2)
Definition: ATEsystem.PIRIS.h:364
const bool sens_present
Definition: ATEsystem.PIRIS.h:476
#define RX_TIMEOUT_NEW_FW
Definition: ATEsystem.PIRIS.h:128
DevID_t CreateDevice(Mode mode=Mode::ETHERNET)
Definition: ATEsystem.PIRIS.cpp:708
Definition: ATEsystem.PIRIS.h:188
const PirisDeviceType get_type() const
Definition: ATEsystem.PIRIS.cpp:825
virtual void SetVerboseLevel(VerboseLevel level)=0
uint16_t rx_timeout
Definition: ATEsystem.PIRIS.h:732
~Factory()
Definition: ATEsystem.PIRIS.h:847
Definition: ATEsystem.PIRIS.h:136
Definition: ATEsystem.PIRIS.h:171
const FocusZoomIris< bool > state
Definition: ATEsystem.PIRIS.h:489
Definition: ATEsystem.PIRIS.h:168
Pylon::CInstantCamera * get_camera() const
Definition: ATEsystem.PIRIS.cpp:810
const T getFocus() const
Definition: ATEsystem.PIRIS.h:394
StatusEx DevReset()
Definition: ATEsystem.PIRIS.cpp:299
static Factory * getInstance()
Definition: ATEsystem.PIRIS.h:853
static std::string PadStr(const int total, const int minus=0, const char ch=' ')
Definition: ATEsystem.PIRIS.cpp:861
std::string ToString() const
Definition: ATEsystem.PIRIS.h:411
Definition: ATEsystem.PIRIS.h:170
virtual ~CPirisMain()
Definition: ATEsystem.PIRIS.h:728
virtual std::tuple< StatusEx, DataID > ReadID()=0
Definition: ATEsystem.PIRIS.h:167
DataPosition(FocusZoomIris< uint16_t > pos=FocusZoomIris< uint16_t >(), bool ir=false)
Definition: ATEsystem.PIRIS.cpp:677
Definition: ATEsystem.PIRIS.h:222
virtual std::tuple< StatusEx, DataPosition > ReadPosition()=0
Status Close()
Definition: ATEsystem.PIRIS.cpp:94
std::string ToString() const
Definition: ATEsystem.PIRIS.cpp:651
static int16_t ScanSerial(std::vector< serial::PortInfo > &devices, bool verbose=false)
Definition: ATEsystem.PIRIS.cpp:68
StatusEx(Status status=Status::GENERAL_ERROR, ErrorCluster err=ErrorCluster())
Definition: ATEsystem.PIRIS.cpp:667
virtual std::tuple< StatusEx, DataParams > ReadParams()=0
virtual StatusEx DevHoming()=0
friend bool operator>=(const Version &ver1, const Version &ver2)
Definition: ATEsystem.PIRIS.h:352
Definition: ATEsystem.PIRIS.h:223
const Status status
Definition: ATEsystem.PIRIS.h:436
Status Open(void *dev, PirisDeviceType type, VerboseLevel verbose=VerboseLevel::NONE)
Definition: ATEsystem.PIRIS.cpp:73
virtual ~IComm()=0
Definition: ATEsystem.PIRIS.cpp:692
virtual std::tuple< StatusEx, DataState > ReadState()=0
Definition: ATEsystem.PIRIS.h:758
virtual Status flush(bool ignore_err=false)=0
virtual StatusEx SetAbsolute(uint16_t focus=0, uint16_t zoom=0, uint16_t iris=0, bool ir_filter=false)=0
State
Definition: ATEsystem.PIRIS.h:186
std::tuple< StatusEx, DataID > ReadID()
Definition: ATEsystem.PIRIS.cpp:99
Status
Definition: ATEsystem.PIRIS.h:160
static void CopySTLStr2CStr(char *dest, std::string source)
Definition: ATEsystem.PIRIS.cpp:847
const uint16_t getRevision() const
Definition: ATEsystem.PIRIS.cpp:561
IDevice * GetDeviceInstance(DevID_t id)
Definition: ATEsystem.PIRIS.cpp:746
std::tuple< StatusEx, DataPosition > ReadPosition()
Definition: ATEsystem.PIRIS.cpp:153
bool state_is(State _state)
Definition: ATEsystem.PIRIS.cpp:410
friend std::ostream & operator<<(std::ostream &strm, const Version &ver)
Definition: ATEsystem.PIRIS.h:337
Pylon::IPylonDevice * get_pylon_dev() const
Definition: ATEsystem.PIRIS.cpp:805
Definition: ATEsystem.PIRIS.h:443
Definition: ATEsystem.PIRIS.h:432
DataState(FocusZoomIris< bool > state=FocusZoomIris< bool >(), bool busy=false)
Definition: ATEsystem.PIRIS.cpp:687
Interface IComm
Definition: ATEsystem.PIRIS.h:641
Definition: ATEsystem.PIRIS.h:163
friend bool operator==(const Version &ver1, const Version &ver2)
Definition: ATEsystem.PIRIS.h:342
friend bool operator<(const Version &ver1, const Version &ver2)
Definition: ATEsystem.PIRIS.h:358
virtual Status close(bool ignore_err=false)=0
const std::tuple< T, T, T > getFocusZoomIris() const
Definition: ATEsystem.PIRIS.h:406
static void CpyCStr2CStr(char *dest, const char *source, size_t max_len)
Definition: ATEsystem.PIRIS.cpp:839
void verbose_set(VerboseLevel _verbose)
Definition: ATEsystem.PIRIS.cpp:425
Definition: ATEsystem.PIRIS.h:378
#define TXT_ZOOM
Definition: ATEsystem.PIRIS.h:89
friend std::ostream & operator<<(std::ostream &strm, const PirisDevice &dev)
Definition: ATEsystem.PIRIS.h:277
Definition: ATEsystem.PIRIS.h:289
serial::PortInfo & get_serial() const
Definition: ATEsystem.PIRIS.cpp:815
bool IsValid() const
Definition: ATEsystem.PIRIS.h:799
bool operator==(T *pT) const
Definition: ATEsystem.PIRIS.h:809
const bool motors_busy
Definition: ATEsystem.PIRIS.h:490
Definition: ATEsystem.PIRIS.h:179
Definition: ATEsystem.PIRIS.h:173
VerboseLevel
Definition: ATEsystem.PIRIS.h:210
CPirisMain()
Definition: ATEsystem.PIRIS.cpp:59
PirisDevice(Pylon::CDeviceInfo &device)
Definition: ATEsystem.PIRIS.cpp:777
friend bool operator>(const Version &ver1, const Version &ver2)
Definition: ATEsystem.PIRIS.h:346
Definition: ATEsystem.PIRIS.h:831
Definition: ATEsystem.PIRIS.h:172
Definition: ATEsystem.PIRIS.h:202
Status RemoveDevice(DevID_t id)
Definition: ATEsystem.PIRIS.cpp:762
virtual VerboseLevel GetVerboseLevel()=0
Interface IDevice
Definition: ATEsystem.PIRIS.h:501
virtual StatusEx SetRelative(int16_t focus=0, int16_t zoom=0, int16_t iris=0)=0
T * operator->(void) const
Definition: ATEsystem.PIRIS.h:794
const FocusZoomIris< uint16_t > max_value
Definition: ATEsystem.PIRIS.h:473
friend std::ostream & operator<<(std::ostream &strm, const FocusZoomIris &vals)
Definition: ATEsystem.PIRIS.h:420
const std::tuple< bool, int8_t, std::string > getErrorCluster() const
Definition: ATEsystem.PIRIS.cpp:646
virtual Status Close()=0
StatusEx DevHoming()
Definition: ATEsystem.PIRIS.cpp:314
ErrorCluster(std::string err_raw="", bool overide=false)
Definition: ATEsystem.PIRIS.cpp:592
Definition: ATEsystem.PIRIS.h:169
int16_t DevID_t
Definition: ATEsystem.PIRIS.h:146
virtual void remove()=0
static int16_t ScanEthernet(std::vector< Pylon::CDeviceInfo > &devices, bool verbose=false)
Definition: ATEsystem.PIRIS.cpp:63
const std::string lens
Definition: ATEsystem.PIRIS.h:474
const uint16_t getMajor() const
Definition: ATEsystem.PIRIS.cpp:551
Mode
Definition: ATEsystem.PIRIS.h:151
SmartPointer(void) noexcept
Definition: ATEsystem.PIRIS.h:765
Definition: ATEsystem.PIRIS.h:224
PirisDeviceType
Definition: ATEsystem.PIRIS.h:198
const int8_t getErrNum() const
Definition: ATEsystem.PIRIS.cpp:636
virtual ~IDevice()=0
Definition: ATEsystem.PIRIS.cpp:693
StatusEx SetAbsolute(uint16_t focus=0, uint16_t zoom=0, uint16_t iris=0, bool ir_filter=false)
Definition: ATEsystem.PIRIS.cpp:354
VerboseLevel GetVerboseLevel()
Definition: ATEsystem.PIRIS.cpp:387
Definition: ATEsystem.PIRIS.h:175
YesNoNA GetFwPollSupport()
Definition: ATEsystem.PIRIS.cpp:382
T & operator()(void) const
Definition: ATEsystem.PIRIS.h:789
IDevice *(* CreateDeviceFn)(void)
Definition: ATEsystem.PIRIS.h:825
void SetVerboseLevel(VerboseLevel level)
Definition: ATEsystem.PIRIS.cpp:392
const std::tuple< uint16_t, uint16_t, uint16_t > getVersion() const
Definition: ATEsystem.PIRIS.cpp:566
std::string ToString() const
Definition: ATEsystem.PIRIS.cpp:571
static std::string CopyCStr2STLStr(const char *src)
Definition: ATEsystem.PIRIS.cpp:852
const FocusZoomIris< uint16_t > position
Definition: ATEsystem.PIRIS.h:460
virtual YesNoNA GetFwPollSupport()=0
Definition: ATEsystem.PIRIS.h:203
Definition: ATEsystem.PIRIS.h:201
Definition: ATEsystem.PIRIS.h:190
Definition: ATEsystem.PIRIS.h:176
void state_set(State _state)
Definition: ATEsystem.PIRIS.cpp:399
std::string ToString() const
Definition: ATEsystem.PIRIS.cpp:830
const Version version
Definition: ATEsystem.PIRIS.h:448
Definition: ATEsystem.PIRIS.h:191
Definition: ATEsystem.PIRIS.h:178
std::ostream & operator<<(std::ostream &os, const Status stat)
Definition: ATEsystem.PIRIS.cpp:22
friend std::ostream & operator<<(std::ostream &strm, const ErrorCluster &err)
Definition: ATEsystem.PIRIS.h:308
virtual Status read(std::string &data)=0
const bool getOk() const
Definition: ATEsystem.PIRIS.cpp:631
std::tuple< StatusEx, DataParams > ReadParams()
Definition: ATEsystem.PIRIS.cpp:202
Definition: ATEsystem.PIRIS.h:320
const std::string getMsg() const
Definition: ATEsystem.PIRIS.cpp:641
SmartPointer< IDevice > IPiris
Definition: ATEsystem.PIRIS.h:818
DataID(std::string name="", Version version=Version())
Definition: ATEsystem.PIRIS.cpp:672
const bool ir_present
Definition: ATEsystem.PIRIS.h:475
Definition: ATEsystem.PIRIS.h:164
virtual Status write(const std::string data)=0
std::string GetDeviceName(DevID_t id)
Definition: ATEsystem.PIRIS.cpp:754
Factory & operator=(Factory const &)=delete
Definition: ATEsystem.PIRIS.h:485
Definition: ATEsystem.PIRIS.h:189
Definition: ATEsystem.PIRIS.h:174
T & operator *(void) const
Definition: ATEsystem.PIRIS.h:784
const T getIris() const
Definition: ATEsystem.PIRIS.h:402
Definition: ATEsystem.PIRIS.h:248
Definition: ATEsystem.PIRIS.h:212
YesNoNA
Definition: ATEsystem.PIRIS.h:220
Definition: ATEsystem.PIRIS.h:177
virtual StatusEx DevReset()=0
#define TXT_IRIS
Definition: ATEsystem.PIRIS.h:90
void state_reset()
Definition: ATEsystem.PIRIS.cpp:415
Definition: ATEsystem.PIRIS.h:456
Definition: ATEsystem.PIRIS.h:200
FocusZoomIris(T focus=NULL, T zoom=NULL, T iris=NULL, int str_pad_len=25)
Definition: ATEsystem.PIRIS.h:390
int16_t Status_t
Definition: ATEsystem.PIRIS.h:141
virtual Status Open(const PirisDevice &dev, VerboseLevel verbose=VerboseLevel::NONE)=0
Generated by   doxygen 1.8.15