pflib v3.9.4-7-gb2e7f4f
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 soft_reset_link() override;
42 virtual void reset_link();
43 virtual void run_linktrick();
44
45 virtual bool get_rx_polarity();
46 virtual bool get_tx_polarity();
47 virtual void set_rx_polarity(bool polarity);
48 virtual void set_tx_polarity(bool polarity);
49
50 virtual std::map<std::string, uint32_t> opto_status();
51 virtual std::map<std::string, uint32_t> opto_rates();
52
53 virtual lpGBT_ConfigTransport& lpgbt_transport() { return *transport_; }
54
55 // setup various aspects
57 virtual int get_elink_tx_mode(int elink);
58 virtual void set_elink_tx_mode(int elink, int mode);
59
60 virtual void capture_ec(int mode, std::vector<uint8_t>& tx,
62 virtual void capture_ic(int mode, std::vector<uint8_t>& tx,
64
65 private:
66 AxiLite gtys_;
68 std::shared_ptr<AxiLite> iceccoder_;
69 int ilink_;
70 bool isdaq_;
72};
73
74} // namespace bittware
75} // namespace pflib
76
77#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:306
virtual uint8_t read_reg(uint16_t reg)
Read the contents of the identified single register.
Definition bittware_optolink.cxx:297
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:380
virtual void write_reg(uint16_t reg, uint8_t value)
Write the given value to the identified single register.
Definition bittware_optolink.cxx:375
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