30 void _subsBseExecEvent (
ClbEvent event)
50 static void configureEdfa() {
53 if(bse.edfa_emi)edfaEmOn();
56 edfaWriteSetpoint(bse.edfa_setp_wr, &returnedString);
76 static bool _monitorBps()
87 bse.bps_lbl_i_max = 0;
89 bse.bps_du_irtn_max = 0;
91 bse.bps_hydro_i_max = 0;
92 bse.bps_mon_theatsink_max = 0;
93 bse.bps_tboard_max =0;
94 bse.bps_alarm_max = 0;
98 bse.bps_5v_i_max = sens_max.mon_5V_i;
99 bse.bps_lbl_i_max = sens_max.mon_LBL_i;
100 bse.bps_du_i_max = sens_max.mon_DU_i;
101 bse.bps_du_irtn_max = sens_max.mon_DU_irtn;
102 bse.bps_v_max = sens_max.mon_BPS_v;
103 bse.bps_hydro_i_max = sens_max.mon_HYDRO_i;
104 bse.bps_mon_theatsink_max = sens_max.mon_MON_THEATSINK;
105 bse.bps_tboard_max = sens_max.mon_TBOARD;
109 printf(
"MAX_VAL: %d ", bse.bps_5v_i_max);
110 printf(
"%d ", bse.bps_lbl_i_max);
111 printf(
"%d ", bse.bps_du_i_max);
112 printf(
"%d ", bse.bps_du_irtn_max);
113 printf(
"%d ", bse.bps_v_max);
114 printf(
"%d ", bse.bps_hydro_i_max);
115 printf(
"%d ", bse.bps_mon_theatsink_max);
116 printf(
"%d ", bse.bps_tboard_max);
119 bse.bps_alarm_max = (sens_max.mon_ALRMNEG2 & 0x01)<<3 | (sens_max.mon_ALRMNEG1 & 0x01)<<2 | (sens_max.mon_ALRMPOS2 & 0x01)<<1 | sens_max.mon_ALRMPOS1 & 0x01;
123 printf(
"%x \n", bse.bps_alarm_max);
127 bse.bps_alarm_fired = 0;
128 for(i_loop=0;i_loop<21;i_loop++)
132 bse.bps_alarm_fired = 0;
135 bse.bps_alarm_fired = ( bse.bps_alarm_fired << 1 ) | sens_alarm_fired.alarm_val & 0x01;
140 printf(
"ALARM_FIRED: %x \n",bse.bps_alarm_fired);
149 bse.bps_du_irtn_m = 0;
151 bse.bps_hydro_i_m = 0;
152 bse.bps_mon_theatsink_m = 0;
157 bse.bps_5v_i_m = sens_mean.mon_5V_i_M;
158 bse.bps_lbl_i_m = sens_mean.mon_LBL_i_M;
159 bse.bps_du_i_m = sens_mean.mon_DU_i_M;
160 bse.bps_du_irtn_m = sens_mean.mon_DU_irtn_M;
161 bse.bps_v_m = sens_mean.mon_BPS_v_M;
162 bse.bps_hydro_i_m = sens_mean.mon_HYDRO_i_M;
163 bse.bps_mon_theatsink_m = sens_mean.mon_MON_THEATSINK_M;
164 bse.bps_tboard_m = sens_mean.mon_TBOARD_M;
168 printf(
"MEAN_VAL: %d ", bse.bps_5v_i_m);
169 printf(
"%d ", bse.bps_lbl_i_m);
170 printf(
"%d ", bse.bps_du_i_m);
171 printf(
"%d ", bse.bps_du_irtn_m);
172 printf(
"%d ", bse.bps_v_m);
173 printf(
"%d ", bse.bps_hydro_i_m);
174 printf(
"%d ", bse.bps_mon_theatsink_m);
175 printf(
"%d \n", bse.bps_tboard_m);
182 static bool _monitorBps()
198 bse.bps_iback = sens.mon_i;
199 bse.bps_i12 = sens.mon1_i12;
200 bse.bps_v375 = sens.mon2_v375;
201 bse.bps_i375 = sens.mon3_i375;
202 bse.bps_v5 = sens.mon4_v375;
203 bse.bps_alarm = sens.alarm;
204 bse.bps_breaker = sens.breaker;
212 static bool _monitorEdfa()
216 char *returnedString;
218 if (!edfaReadSerial(&returnedString))
goto failed;
219 memcpy(bse.edfa_sn, returnedString, 32);
221 bse.edfa_oop = edfaOutputPower();
222 bse.edfa_iop = edfaInputPower();
223 bse.edfa_pumpdc = edfaPumpCur();
224 bse.edfa_temp = edfaTemp();
225 bse.edfa_setp_rd = edfaReadSetpoint();
227 if (!edfaReadStatus(&emi,&start))
goto failed;
236 bse.edfa_setp_rd = 0;
241 static bool _monitorAcdc()
246 if (!acdcGetNFrames(&frame, 1)) {
255 bse.acdc_cur = frame.current * ISCALE + IOFF;
256 bse.acdc_volt = frame.volt * VSCALE + VOFF;
257 bse.acdc_temp = frame.temp * TSCALE + TOFF;
263 #define CAROUSEL_MAX 3
264 static int _carousel = 0;
265 static const uint8_t _DEVICES[] = { BSE_INST_FAIL_EDFA, BSE_INST_FAIL_BPS, BSE_INST_FAIL_ACDC};
268 bool _subsBseUpdate(
ClbState state, uint32_t time)
273 if ( ( bse.inst_fail & _DEVICES[_carousel] ) == 0) {
275 case 0: s = _monitorEdfa();
break;
276 case 1: s = _monitorBps();
break;
277 case 2: s = _monitorAcdc();
break;
286 bse.inst_fail |= _DEVICES[_carousel];
292 if (_carousel == CAROUSEL_MAX) _carousel = 0;
bool bpsReadSensorMaxV3(BpsRdSensAnswV3 *stat)
return all sensors' max values
bool bpsAlarmFiredGetV3(uint8_t ch, BpsAlarmV3 *AlarmFiredGet)
Return flag of one alarm.
ClbEvent
All state change events.
bool bseConfigure()
Base Configure event.
static void edfaInit()
Initializes the EDFA.
bool bseReset()
Base Reset event.
uint8_t clbSys2Idx[6]
Mapping from subsystem ID to index.
Undefined => Idle, for internal use only.
void errPrint(bool clear)
Prints the last error.
bool bpsReadSensorAverageV3(BpsRdSensAverageAnswV3 *stat)
return all sensors' mean values
bool bpsReadSensor(BpsRdSensAnsw *stat)
return sensor values
void acdcInit(bool active)
Initializes the ACDC.
#define LOG_DEF(NAME,...)
Define a logger for a module.
The CLB stare module tracks is responsible for state management of the various sub-systems on the CLB...
static void bpsInit()
Initializes the BPS.
EDFA-EAU (30-C3-20-C) Uart driver.
Implements a generic logger facility.
void _clbStateUpdate(int idx, ClbEvent event, uint8_t status)
Invoked by the subsystem to indicate a state change has happened.