pflib v3.9.0-rc3-11-g2537d8f
Pretty Fine HGCROC Interaction Library
Loading...
Searching...
No Matches
bittware_optolink.h
1#ifndef BITTWARE_OPTOLINK_INCLUDED
2#define BITTWARE_OPTOLINK_INCLUDED 1
3
4#include <memory>
5
6#include "pflib/OptoLink.h"
7#include "pflib/bittware/bittware_axilite.h"
8#include "pflib/lpGBT.h"
9
10namespace pflib {
11namespace bittware {
12
14 public:
15 BWlpGBT_Transport(AxiLite& coder, int ilink, int chipaddr, bool isic = true);
16 virtual uint8_t read_reg(uint16_t reg);
17 virtual std::vector<uint8_t> read_regs(uint16_t reg, int n);
18 virtual void write_reg(uint16_t reg, uint8_t value);
19 virtual void write_regs(uint16_t reg, const std::vector<uint8_t>& value);
20
21 private:
22 AxiLite& transport_;
23 int ilink_;
24 int chipaddr_;
25 bool isic_;
26 int ctloffset_, stsreg_;
27 uint32_t stsmask_;
28 int pulsereg_, pulseshift_;
29};
30
32 public:
34 BWOptoLink(int ilink, const char* dev);
36 BWOptoLink(int ilink, BWOptoLink& daqlink);
37
38 const char* dev() const { return gtys_.dev(); }
39 virtual int ilink() { return ilink_; }
40 virtual bool is_bidirectional() { return isdaq_; }
41 virtual void reset_link();
42 virtual void run_linktrick();
43
44 virtual bool get_rx_polarity();
45 virtual bool get_tx_polarity();
46 virtual void set_rx_polarity(bool polarity);
47 virtual void set_tx_polarity(bool polarity);
48
49 virtual std::map<std::string, uint32_t> opto_status();
50 virtual std::map<std::string, uint32_t> opto_rates();
51
52 virtual lpGBT_ConfigTransport& lpgbt_transport() { return *transport_; }
53
54 // setup various aspects
56 virtual int get_elink_tx_mode(int elink);
57 virtual void set_elink_tx_mode(int elink, int mode);
58
59 virtual void capture_ec(int mode, std::vector<uint8_t>& tx,
61 virtual void capture_ic(int mode, std::vector<uint8_t>& tx,
63
64 private:
65 AxiLite gtys_;
67 std::shared_ptr<AxiLite> iceccoder_;
68 int ilink_;
69 bool isdaq_;
71};
72
73} // namespace bittware
74} // namespace pflib
75
76#endif // BITTWARE_OPTOLINK_INCLUDED
This class provides access to read and write via the ioctl path to the AXILite targets within the Bit...
Definition bittware_axilite.h:14
const char * dev() const
get the device path this AxiLite is connected to
Definition bittware_axilite.cxx:45
Definition bittware_optolink.h:13
virtual std::vector< uint8_t > read_regs(uint16_t reg, int n)
Read the contents of several registers beginning with the listed one.
Definition bittware_optolink.cxx:293
virtual uint8_t read_reg(uint16_t reg)
Read the contents of the identified single register.
Definition bittware_optolink.cxx:284
virtual void write_regs(uint16_t reg, const std::vector< uint8_t > &value)
Write the given values to a sequence of registers beginning with the listed one.
Definition bittware_optolink.cxx:367
virtual void write_reg(uint16_t reg, uint8_t value)
Write the given value to the identified single register.
Definition bittware_optolink.cxx:362
Definition lpGBT.h:16
This version of the fast control code interfaces with the CMS Fast control library which can be contr...
Definition Backend.cxx:3