blob: d4c25d6ae97a50c8beffa40fb2af7b6a54b2fe43 [file] [log] [blame] [raw]
package stargatetech2.api.bus;
/**
* This provides a level of abstraction over the IBusInterface.
* Implement to your own liking.
*
* @author LordFokas
*/
public interface IBusDriver {
/**
* Used to check if this device should receive a specific
* packet type from this sender. If true is returned,
* handlePacket() is called afterwards.
*
* @param sender The Bus address of the packet's sender.
* @param protocolID The unique ID of this packet type.
* @param hasLIP whether the packet can be converted to the LIP format or not.
* @return Whether the device will accept this packet or not.
*/
public boolean canHandlePacket(short sender, int protocolID, boolean hasLIP);
/**
* Called by the network to have this device handle a packet.
*
* @param packet The packet to be handled.
*/
public void handlePacket(BusPacket packet);
/**
* Used to make the IBusDriver give all packets in its send
* queue, one by one, to the IBusInterface so that it can
* send them accross the network.
*
* @return The next BusPacket in the queue, if any, null otherise.
*/
public BusPacket getNextPacketToSend();
/**
* Called by the hardware representation (IBusInterface)
* to check if it's active or not.
* Inactive interfaces cannot send or receive packets.
*
* @return Whether this interface is active or not.
*/
public boolean isInterfaceEnabled();
/**
* Called by this Driver's Interface to check it's own address.
*
* @return The address of this IBusDriver's IBusInterface.
*/
public short getInterfaceAddress();
}