PDPRP Technical LBC Main Loop check_serial()

PDPRP Technical LBC Main Loop check_serial()


The serial ports are checked for input commands near continuously in LBC's main event loop. If an RFL (Ready For Light - or Lightbeam Request) or DWL (Done with Light - or Lightbeam Released) signal comes in, I stuff a 1 in an array (Srfl[serial_port] and Sdwl[serial_port]) which the code later reads when it is Checking the Cycle to see if it is time to go to another bench.

If we are not cycling, but we get a DWL anyhow, I acknowledge it here since the rest of the code will never look for it because we are not cycling and everyone will get confused later on.

If we are not cycling, but get an RFL coming in, I do nothing different. This just means when we do start the cycle and it looks to see if the bench is ready, it will already have the RFL signal. I treat the case of two RFL signals arriving in a row in the section of the code where I look for a DWL signal. (This makes sense: I've got one RFL, so I'm looking for DWL now. But check, just in case, to see if I get another RFL instead.) This can happen if the cycle in LBC is stopped prior to the cycle on the host computer. Before it is stopped, then, the host can finish its cycle and send an RFL, which is promptly seen and stored here. Later, the host is stopped and both the LBC and host are, in that order, re-started. Once the LBC cycle is started, it sees the RFL and sends an acknowledgement to the host who is not yet looking for it. Once the host is started, it sends a second RFL because it is starting up and is once again ready for the light to the LBC which is waiting for a DWL it will never get. Actually, the situation may be somewhat more complicated than that, depending on the exact order of when things were stopped and started. I hope, therefore, that we anticipated all possibilities and accounted for them, if not, have fun!

If an END (host cycle terminating) command comes in (currently, only from the OSLVax and VMGVax - CCDMac sends no such commands), I acknowledge it here and stop the cycle on the telescope that contains the camera controlled by the host that sent the command. Note no notice of the cycle termination is given to the user, although perhaps it should be.

The Vaxes send an IFR (Information Request) command to get telescope position and region number. I respond to this request here, also, as soon as it is received.

Thus, with the exception of the RFL and DWL commands, all incoming serial commands are processed here. Since responding to the RFL command tells the host it is OK to take a picture, I store this signal and process it in the Cycle Checkpart of the code.

Similarly, unless the DWL command comes when we are not cycling, it is stored and processed in the Cycle Check part of the code.


Return to Technical LBC Page

Return to PDPRP Technical Info Page

Return toPDPRP Main Page.

sjk@begonias.bbso.njit.edu
11Dec97