M1M3 Support System
Loading...
Searching...
No Matches
FPGAAddresses.h
1/*
2 * This file is part of LSST M1M3 support system package.
3 *
4 * Developed for the Vera C. Rubin Telescope and Site System.
5 * This product includes software developed by the LSST Project
6 * (https://www.lsst.org).
7 * See the COPYRIGHT file at the top-level directory of this distribution
8 * for details of code ownership.
9 *
10 * This program is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
24#ifndef FPGAADDRESSES_H_
25#define FPGAADDRESSES_H_
26
27#include <cstdint>
28
29namespace LSST {
30namespace M1M3 {
31namespace SS {
32namespace FPGAAddresses {
33
37enum Type {
38 NA = 0,
39 AccelerometerAx = 1, // Slot1/AI0
40 AccelerometerAz = 2, // Slot1/AI1
41 AccelerometerBy = 3, // Slot1/AI2
42 AccelerometerBz = 4, // Slot1/AI3
43 AccelerometerCx = 5, // Slot2/AI0
44 AccelerometerCz = 6, // Slot2/AI1
45 AccelerometerDy = 7, // Slot2/AI2
46 AccelerometerDz = 8, // Slot2/AI3
47 ModbusSubnetATx = 9, // Slot3/DIO0
48 ModbusSubnetBTx = 10, // Slot3/DIO1
49 ModbusSubnetCTx = 11, // Slot3/DIO2
50 ModbusSubnetDTx = 12, // Slot3/DIO3
51 ModbusSubnetARx = 13, // Slot3/DIO4
52 ModbusSubnetBRx = 14, // Slot3/DIO5
53 ModbusSubnetCRx = 15, // Slot3/DIO6
54 ModbusSubnetDRx = 16, // Slot3/DIO7
55 ModbusSubnetETx = 17, // Slot4/DIO0
56 GyroTx = 18, // Slot4/DIO1
57 Slot4DIO2 = 19,
58 Slot4DIO3 = 20,
59 ModbusSubnetERx = 21, // Slot4/DIO4
60 GyroRx = 22, // Slot4/DIO5
61 Slot4DIO6 = 23,
62 Slot4DIO7 = 24,
63 ILCPowerInterlockStatus = 25, // Slot5/DI0
64 FanCoilerHeaterInterlockStatus = 26, // Slot5/DI1
65 Slot5DI2 = 27,
66 AirSupplyInterlockStatus = 28, // Slot5/DI3
67 CabinetDoorInterlockStatus = 29, // Slot5/DI4
68 Slot5DI5 = 30,
69 TMAMotionStopInterlockStatus = 31, // Slot5/DI6
70 GISHeartbeatInterlockStatus = 32, // Slot5/DI7
71 AirSupplyValveOpen = 33, // Slot5/DI8
72 AirSupplyValveClosed = 34, // Slot5/DI9
73 MirrorCellLightsOn = 35, // Slot5/DI10
74 Slot5DI11 = 36,
75 Slot5DI12 = 37,
76 Slot5DI13 = 38,
77 Slot5DI14 = 39,
78 Slot5DI15 = 40,
79 Slot5DI16 = 41,
80 Slot5DI17 = 42,
81 Slot5DI18 = 43,
82 Slot5DI19 = 44,
83 Slot5DI20 = 45,
84 Slot5DI21 = 46,
85 Slot5DI22 = 47,
86 Slot5DI23 = 48,
87 Slot5DI24 = 49,
88 Slot5DI25 = 50,
89 Slot5DI26 = 51,
90 Slot5DI27 = 52,
91 Slot5DI28 = 53,
92 Slot5DI29 = 54,
93 Slot5DI30 = 55,
94 Slot5DI31 = 56,
95 HeartbeatToSafetyController = 57, // Slot6/CH0
96 CriticalFailureToSafetyController = 58, // Slot6/CH1
97 MirrorRaisingLoweringToSafetyController = 59, // Slot6/CH2
98 MirrorParkedToSafetyController = 60, // SLot6/CH3
99 AirSupplyValveControl = 61, // Slot6/CH4
100 MirrorCellLightControl = 62, // Slot6/CH5
101 Slot6CH6 = 63,
102 Slot6CH7 = 64,
103 DCAuxPowerNetworkAOn = 65, // Slot7/CH0
104 DCAuxPowerNetworkBOn = 66, // Slot7/CH1
105 DCAuxPowerNetworkCOn = 67, // Slot7/CH2
106 DCAuxPowerNetworkDOn = 68, // Slot7/CH3
107 DCPowerNetworkAOn = 69, // Slot7/CH4
108 DCPowerNetworkBOn = 70, // Slot7/CH5
109 DCPowerNetworkCOn = 71, // Slot7/CH6
110 DCPowerNetworkDOn = 72, // Slot7/CH7
111 Displacement = 73,
112 Inclinometer = 74,
113 Slot8Port3 = 75,
114 Slot8Port4 = 76,
115 ModbusSoftwareTrigger = 252,
116 Telemetry = 253,
117 Timestamp = 254
118};
119
123enum DigitalInputs {
124 AirValveOpened = 0x0100,
125 AirValveClosed = 0x0200,
126 CellLightsOn = 0x0400,
127};
128
132enum DigitalOutputs {
133 HeartbeatOutputState = 0x01,
134 AirCommandOutputOn = 0x10,
135 CellLightsOutputOn = 0x20,
136};
137
138enum PowerSupply {
139 AuxA = 0x01,
140 AuxB = 0x02,
141 AuxC = 0x04,
142 AuxD = 0x08,
143 A = 0x10,
144 B = 0x20,
145 C = 0x40,
146 D = 0x80
147};
148
152const static uint8_t ModbusSubnetsTx[] = {FPGAAddresses::ModbusSubnetATx, FPGAAddresses::ModbusSubnetBTx,
153 FPGAAddresses::ModbusSubnetCTx, FPGAAddresses::ModbusSubnetDTx,
154 FPGAAddresses::ModbusSubnetETx};
155
159const static uint8_t ModbusSubnetsRx[] = {FPGAAddresses::ModbusSubnetARx, FPGAAddresses::ModbusSubnetBRx,
160 FPGAAddresses::ModbusSubnetCRx, FPGAAddresses::ModbusSubnetDRx,
161 FPGAAddresses::ModbusSubnetERx};
162
163} /* namespace FPGAAddresses */
164} /* namespace SS */
165} /* namespace M1M3 */
166} /* namespace LSST */
167
168#endif /* FPGAADDRESSES_H_ */