with SYSTEM; use SYSTEM; with UATL_DATA_TYPES; use UATL_DATA_TYPES; with INTERFACE_DATA_TYPES_488; use INTERFACE_DATA_TYPES_488; package COMMON_TO_BOTH_488 is RECEIVE_QUEUE : MESSAGE_LINK; SEND_QUEUE : MESSAGE_LINK; POLL_QUEUE : array (ID_TYPE) of MESSAGE_POINTER; ACTIVE_DEVICES : DEVICE_LIST_ACCESS; RECEIVED_MESSAGE_PTR : MESSAGE_POINTER; -- For direct deposit of returned -- messages. CONTROL : BOOLEAN; -- True if this is the controller of the bus. DEVICE_ID : ID_TYPE; -- The id of this unit. PORT_NUMBER : INTEGER := 0; -- This is where we receive information from the 488 bus. task IO_488 is -- --\ Purpose: This task hides details of the interface to the IEEE488 --\ hardware and drivers, or to simulators, when these are --\ used with a test driver. --\ pragma PRIORITY (PRIORITY'last-2); entry RECEIVE(BUFFER : out GENERAL_488_MESSAGE); --\ Invoked when: On demand. --\ Purpose: Receive one inbound message from IEEE488 interface. --\ The interface copies the message into the callers buffer, so --\ that the interface buffer is free at the end of the rendezvous. --\ The caller is expected to use only its own Function_id. --\ Maximum processing delay: The caller is suspended waiting for a --\ rendezvous until an inbound message arrives. To avoid being --\ suspended, the caller may use a conditional or timed entry --\ call. entry UNLOCK; --\ Invoked when: A new message has arrived. --\ Purpose: To freeze up the caller and not release him until --\ a message has come in. --\ Maximum processing delay: Howver long it takes a message to arrive. end IO_488; function QUEUE_COUNT (QUEUE_NAME : in MESSAGE_LINK) return INTEGER; task QUEUE_TASK is pragma PRIORITY(PRIORITY'last); entry QUEUE(QUEUE_NAME : in out MESSAGE_LINK; LINK : MESSAGE_POINTER); entry DEQUEUE(QUEUE_NAME : in out MESSAGE_LINK); end QUEUE_TASK; end COMMON_TO_BOTH_488;