72def GetBFields():
73
74 partition = "initial"
75 log.debug(f"Trying to read magnetic field configuration from {partition=}")
76
77
78 try:
79 ipcPart = ipc.IPCPartition(partition)
80 if not ipcPart.isValid():
81 raise UserWarning(
82 f"{partition=} invalid - cannot access magnetic field setting "
83 )
84
85 torCurrent = ISInfoDynAny(ipcPart, "DdcFloatInfo")
86 solCurrent = ISInfoDynAny(ipcPart, "DdcFloatInfo")
87 torInvalid = ISInfoDynAny(ipcPart, "DdcIntInfo")
88 solInvalid = ISInfoDynAny(ipcPart, "DdcIntInfo")
89
90 torInvalid.value = 1
91 solInvalid.value = 1
92
93 log.info(f"toroidCurrent = {torCurrent.value}")
94 log.info(f"toroidInvalid = {torInvalid.value}")
95 log.info(f"solenoidCurrent = {solCurrent.value}")
96 log.info(f"solenoidInvalid = {solInvalid.value}")
97
98
99 solOn = (solCurrent.value > 1000.0) and (solInvalid.value == 0)
100 torOn = (torCurrent.value > 1000.0) and (torInvalid.value == 0)
101 except UserWarning as err:
102 log.error(err)
103
104 log.fatal("Failed to read magnetic field configuration from IS, aborting")
105
106 sys.exit(1)
107
108
109 log.info(f"Magnetic field in solenoid is {((solOn and 'ON') or 'OFF')}")
110 log.info(f"Magnetic field in toroid is {((torOn and 'ON') or 'OFF')}")
111
112
113 return (solCurrent, torCurrent)
114
115