For each telescope, it creates a list of active benches starting with the 26E1 for the 26" and 10E on the 10" and continuing in the same order as does the LBC GUI display. First it asks is the time right for another bench in the list. It starts with the next bench in the list, then works its way down the list from there and finally back to the bench it's currently on if no other bench's time has arrived.
Once it has determined that a bench's time has arrived (based on the Cycle Time for that bench and the time the light was last sent there), it asks is the bench ready. If the bench has no controlling Host, then the answer to this question is always yes. If the bench is under host-control, it sees if it has received a Ready For Light signal from the host. If not, it checks to see if an Error condition has been met, processes it if so, or goes to the next bench.
Now that it has determined the bench is ready for the light, it issues the flip mirror command to the hardware Lightbeam Controller and awaits for a signal that the mirror is in place. Again, if this signal doesn't arrive it waits until it does, or until an Error condition has been met.
Once the signal has arrived that the mirror is in place, LBC tells the host computer (if there is one) that the light is there and waits for the light to be released.
If the light released signal does not come in after some delay, an Error condition is met and dealt with. Otherwise, the loop repeats and LBC looks for the next bench whose time has come.
LBC tries to keep the interval between pictures as uniform as possible. Therefore, if it is delayed and unable to go to a bench exactly on its ready time, it gets there as soon afterwards as it can and sets the time for the next picture one Cycle Time away from whenever it finally arrived that time.