My Project  v0.0.16
MiniPODNode.hpp
Go to the documentation of this file.
1 #ifndef _mp7_MiniPODNode_hpp_
2 #define _mp7_MiniPODNode_hpp_
3 
4 #include "mp7/OpenCoresI2C.hpp"
5 #include "mp7/Measurement.hpp"
6 
7 #include <vector>
8 #include <map>
9 #include <string>
10 #include <time.h>
11 #include <ostream>
12 
13 
14 namespace mp7
15 {
16  struct MiniPODinfo
17  {
18  uint8_t type_identifier;
22  Measurement minimum_bit_rate;
23  Measurement maximum_bit_rate;
24  Measurement wavelength;
25  uint8_t supported_flags;
28  std::string vendor_name;
29  std::vector<uint8_t> vendor_ieee_id;
30  std::string vendor_part_number;
32  std::string vendor_serial_number;
35  };
36 
37  class MiniPODNode : public OpenCoresI2C
38  {
39  UHAL_DERIVEDNODE ( MiniPODNode );
40 
41  public:
42  MiniPODNode ( const uhal::Node& aNode );
43  virtual ~MiniPODNode();
44 
45  Measurement get3v3();
46  Measurement get2v5();
47  Measurement getTemp();
48  Measurement getOnTime();
49  std::vector < Measurement > getOpticalPowers();
50 
51  void setChannelPolarity ( const uint32_t& aMask );
52  void disableChannel ( const uint32_t& aMask );
53  void disableSquelch ( const bool& aDisabled );
54 
55  std::pair< bool , bool > getAlarmTemp();
56  std::pair< bool , bool > getAlarm3v3();
57  std::pair< bool , bool > getAlarm2v5();
58  std::vector< bool > getAlarmLOS();
59  std::vector< std::pair< bool , bool > > getAlarmOpticalPower();
60 
61  MiniPODinfo getInfo();
62 
63  protected:
64  uint16_t getUint16 ( const uint32_t& aMSB , const uint32_t& aLSB );
65  std::vector<uint8_t> block_read ( const uint32_t& aI2CbusAddress , const uint32_t aSize );
66  };
67 
68 
69 
70  class MiniPODTxNode : public MiniPODNode
71  {
72  UHAL_DERIVEDNODE ( MiniPODTxNode );
73  public:
74  MiniPODTxNode ( const uhal::Node& aNode );
75  virtual ~MiniPODTxNode();
76 
77  std::vector < Measurement > getBiasCurrents();
78 
79  void setInputEqualization ( const double& aPercentage );
80 
81  void marginMode ( const bool& aEnabled );
82 
83  std::vector< bool > getAlarmFault();
84  std::vector< std::pair< bool , bool > > getAlarmBiasCurrent();
85 
86 
87  };
88 
89 
90 
91  class MiniPODRxNode : public MiniPODNode
92  {
93  UHAL_DERIVEDNODE ( MiniPODRxNode );
94 
95  public:
96  MiniPODRxNode ( const uhal::Node& aNode );
97  virtual ~MiniPODRxNode();
98 
99  void setDeemphasis ( const double& aPercentage );
100  void setOutputAmplitude ( const double& aPercentage );
101 
102  };
103 }
104 
105 std::ostream& operator<< ( std::ostream& aStream , const mp7::MiniPODinfo& aInfo );
106 
107 #endif
108 
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
std::string vendor_revision_number
Definition: MiniPODNode.hpp:31
std::string vendor_part_number
Definition: MiniPODNode.hpp:30
uint16_t vendor_firmware_revision
Definition: MiniPODNode.hpp:34
uint16_t supported_monitors
Definition: MiniPODNode.hpp:26
uint16_t supported_controls
Definition: MiniPODNode.hpp:27
std::vector<uint8_t> vendor_ieee_id
Definition: MiniPODNode.hpp:29
uint8_t type_identifier
Definition: MiniPODNode.hpp:18
uint8_t supported_flags
Definition: MiniPODNode.hpp:25
Measurement wavelength
Definition: MiniPODNode.hpp:24
Definition: MiniPODNode.hpp:16
uint8_t module_description
Definition: MiniPODNode.hpp:19
tm vendor_date_code
Definition: MiniPODNode.hpp:33
Measurement minimum_bit_rate
Definition: MiniPODNode.hpp:22
std::string vendor_name
Definition: MiniPODNode.hpp:28
uint8_t required_power_supplies
Definition: MiniPODNode.hpp:20
Measurement maximum_bit_rate
Definition: MiniPODNode.hpp:23
std::string vendor_serial_number
Definition: MiniPODNode.hpp:32
Measurement maximum_operating_temperature
Definition: MiniPODNode.hpp:21