Base Framework
Public Member Functions | Static Public Member Functions | List of all members
IEEE1394Impl Class Referenceabstract

IEEE 1394 implementation. More...

#include <base/communication/IEEE1394Impl.h>

Inherits ReferenceCountedObject, and IEEE1394Common.

Inherited by DummyIEEE1394, and LinuxRawIEEE1394.

Public Member Functions

virtual bool hasBeenReset () const =0
 
virtual void acknowledgeReset ()=0
 
virtual void resetBus ()=0
 
virtual Array< EUI64getAdapters ()=0
 
virtual void open ()=0
 
virtual void open (const EUI64 &adapter)=0
 
virtual void close ()=0
 
virtual unsigned int getLocalId () const =0
 
virtual unsigned int getNumberOfNodes () const =0
 
virtual unsigned int getStatus () const =0
 
virtual unsigned int getFIFOSize () const =0
 
virtual void read (unsigned short node, uint64 address, uint8 *buffer, unsigned int size)=0
 
virtual void write (unsigned short node, uint64 address, const uint8 *buffer, unsigned int size)=0
 
virtual unsigned int read (unsigned short node, uint64 address, uint32 *buffer, unsigned int size, uint32 value)=0
 
virtual IsochronousReadChannel getReadChannel (unsigned int maxPacketsPerRequest, uint64 subchannels)=0
 
virtual IsochronousWriteChannel getWriteChannel (unsigned int maxPacketsPerRequest, uint64 subchannels)=0
 
virtual void readIsochronous (unsigned int channel, unsigned int maximumPayload, IsochronousChannelListener *listener)=0
 
virtual bool wait (unsigned int milliseconds)=0
 
virtual void dequeue ()=0
 
virtual void registerFCPListener (FunctionControlProtocolListener *listener)=0
 
virtual void unregisterFCPListener ()=0
 
virtual ~IEEE1394Impl ()
 
- Public Member Functions inherited from ReferenceCountedObject
 ReferenceCountedObject () noexcept
 
 ReferenceCountedObject (const ReferenceCountedObject &copy) noexcept
 
 ReferenceCountedObject (ReferenceCountedObject &&move) noexcept
 
ReferenceCountedObjectoperator= (const ReferenceCountedObject &copy) noexcept
 
ReferenceCountedObjectoperator= (ReferenceCountedObject &&move) noexcept
 
MemorySize getNumberOfReferences_INTERNAL () const noexcept
 
virtual bool useGarbageCollector () const noexcept
 
- Public Member Functions inherited from DynamicObject
 DynamicObject () noexcept
 
bool isValidObject () const noexcept
 
virtual ~DynamicObject () noexcept(false)
 
 _COM_AZURE_DEV__BASE__OVERRIDE_ALLOC ()
 

Static Public Member Functions

static IEEE1394ImplgetDefault () noexcept
 
- Static Public Member Functions inherited from IEEE1394Common
static unsigned short makeNodeId (unsigned int physicalId, unsigned int busId=0x3ff) noexcept
 
static unsigned int getBusId (unsigned short node) noexcept
 
static bool isLocalBus (unsigned short node) noexcept
 
static unsigned int getPhysicalId (unsigned short node) noexcept
 
static bool isBroadcast (unsigned short node) noexcept
 

Additional Inherited Members

- Public Types inherited from IEEE1394Common
enum  Standard { STANDARD_UNSPECIFIED, STANDARD_IEEE_1394, STANDARD_IEEE_1394A, STANDARD_IEEE_1394B }
 
enum  IsochronousRequestType {
  NOT_A_REQUEST, READ_PACKETS_REQUEST, READ_FIXED_PACKETS_REQUEST, READ_FIXED_DATA_REQUEST,
  WRITE_PACKETS_REQUEST, WRITE_FIXED_PACKETS_REQUEST, WRITE_DATA_REQUEST
}
 
enum  IsochronousRequestStatus {
  READY, PENDING, ERROR, TIMEDOUT,
  COMPLETED
}
 
enum  Status {
  STATUS_OK, STATUS_INCOMPATIBLE, STATUS_INTERNAL, STATUS_CONFLICT,
  STATUS_BUSY, STATUS_ABORTED, STATUS_TIMEOUT, STATUS_ERROR
}
 
enum  Speed {
  S100, S200, S400, S800,
  S1600, S3200
}
 
enum  AcknowledgeCode {
  ACK_RESERVED_0, ACK_COMPLETE, ACK_PENDING, ACK_RESERVED_3,
  ACK_BUSY_X, ACK_BUSY_A, ACK_BUSY_B, ACK_RESERVED_7,
  ACK_RESERVED_8, ACK_RESERVED_9, ACK_RESERVED_10, ACK_RESERVED_11,
  ACK_RESERVED_12, ACK_DATA_ERROR, ACK_TYPE_ERROR, ACK_RESERVED_15
}
 
enum  ResponseCode {
  RCODE_COMPLETE, RCODE_RESERVED_1, RCODE_RESERVED_2, RCODE_RESERVED_3,
  RCODE_CONFLICT_ERROR, RCODE_DATA_ERROR, RCODE_TYPE_ERROR, RCODE_ADDRESS_ERROR,
  RCODE_RESERVED_8, RCODE_RESERVED_9, RCODE_RESERVED_10, RCODE_RESERVED_11,
  RCODE_RESERVED_12, RCODE_RESERVED_13, RCODE_RESERVED_14, RCODE_RESERVED_15
}
 
enum  TransactionCode {
  TCODE_WRITE_REQUEST_FOR_DATA_QUADLET, TCODE_WRITE_REQUEST_FOR_DATA_BLOCK, TCODE_WRITE_RESPONSE, TCODE_RESERVED_3,
  TCODE_READ_REQUEST_FOR_DATA_QUADLET, TCODE_READ_REQUEST_FOR_DATA_BLOCK, TCODE_READ_RESPONSE_FOR_DATA_QUADLET, TOCDE_READ_RESPONSE_FOR_DATA_BLOCK,
  TCODE_CYCLE_START, TCODE_LOCK_REQUEST, TCODE_ISOCHRONOUS_DATA_BLOCK, TCODE_LOCK_RESPONSE,
  TCODE_RESERVED_12, TCODE_RESERVED_13, TCODE_RESERVED_14, TCODE_RESERVED_15
}
 
enum  LockInstruction {
  MASK_SWAP, COMPARE_SWAP, FETCH_ADD, LITTLE_FETCH_ADD,
  BOUNDED_ADD, WRAP_ADD
}
 
enum  IsochronousRequestOption { SWAP_BYTE_ORDER = 1 }
 
typedef BigEndian< uint32 > Quadlet
 
- Static Public Attributes inherited from IEEE1394Common
static const unsigned int BROADCAST = 63
 
static const unsigned int LOCAL_BUS = 1023
 
static const unsigned int ISOCHRONOUS_CHANNELS = 64
 
static const unsigned int MAXIMUM_ATTEMPTS = 5
 
- Static Protected Member Functions inherited from IEEE1394Common
static Reference< IsochronousReadPacketsRequestImplgetContext (IsochronousReadPacketsRequest &request) noexcept
 
static Reference< IsochronousReadFixedPacketsRequestImplgetContext (IsochronousReadFixedPacketsRequest &request) noexcept
 
static Reference< IsochronousReadFixedDataRequestImplgetContext (IsochronousReadFixedDataRequest &request) noexcept
 
static Reference< IsochronousReadRequestImplgetContext (IsochronousReadRequest &request) noexcept
 
static Reference< IsochronousWritePacketsRequestImplgetContext (IsochronousWritePacketsRequest &request) noexcept
 
static Reference< IsochronousWriteFixedPacketsRequestImplgetContext (IsochronousWriteFixedPacketsRequest &request) noexcept
 
static Reference< IsochronousWriteDataRequestImplgetContext (IsochronousWriteDataRequest &request) noexcept
 
static Reference< IsochronousWriteRequestImplgetContext (IsochronousWriteRequest &request) noexcept
 

Detailed Description

IEEE 1394 implementation.

IEEE 1394 implementation.

Version
1.0

Constructor & Destructor Documentation

◆ ~IEEE1394Impl()

virtual IEEE1394Impl::~IEEE1394Impl ( )
virtual

Destroys the IEEE 1394 implementation.

Member Function Documentation

◆ acknowledgeReset()

virtual void IEEE1394Impl::acknowledgeReset ( )
pure virtual

Acknowledges the bus reset.

Implemented in DummyIEEE1394, and LinuxRawIEEE1394.

◆ close()

virtual void IEEE1394Impl::close ( )
pure virtual

Closes this handle to the adapter. The adapter is destroyed when all handles have been closed.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ getAdapters()

virtual Array<EUI64> IEEE1394Impl::getAdapters ( )
pure virtual

Returns the adapters available.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ getDefault()

static IEEE1394Impl* IEEE1394Impl::getDefault ( )
staticnoexcept

Returns the default IEEE 1394 implementation.

◆ getFIFOSize()

virtual unsigned int IEEE1394Impl::getFIFOSize ( ) const
pure virtual

Returns the size of the FIFO.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ getLocalId()

virtual unsigned int IEEE1394Impl::getLocalId ( ) const
pure virtual

Returns the physical id of the adapter.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ getNumberOfNodes()

virtual unsigned int IEEE1394Impl::getNumberOfNodes ( ) const
pure virtual

Returns the number of nodes on the local bus.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ getReadChannel()

virtual IsochronousReadChannel IEEE1394Impl::getReadChannel ( unsigned int  maxPacketsPerRequest,
uint64  subchannels 
)
pure virtual

Returns an isochronous read channel.

Parameters
maxPacketsPerRequestThe maximum number of packets per request.
subchannelMask specifying the subchannel to reserve for this channel.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ getStatus()

virtual unsigned int IEEE1394Impl::getStatus ( ) const
pure virtual

Returns the current error status.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ getWriteChannel()

virtual IsochronousWriteChannel IEEE1394Impl::getWriteChannel ( unsigned int  maxPacketsPerRequest,
uint64  subchannels 
)
pure virtual

Returns an isochronous write channel.

Parameters
maxPacketsPerRequestThe maximum number of packets per request.
subchannelMask specifying the subchannel to reserve for this channel.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ hasBeenReset()

virtual bool IEEE1394Impl::hasBeenReset ( ) const
pure virtual

Returns true if the bus has been reset since last check.

Implemented in DummyIEEE1394, and LinuxRawIEEE1394.

◆ open() [1/2]

virtual void IEEE1394Impl::open ( )
pure virtual

Opens a connection to the primary adapter.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ open() [2/2]

virtual void IEEE1394Impl::open ( const EUI64 adapter)
pure virtual

Opens a connection to the specified adapter.

Parameters
adapterThe id of the adapter.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ read() [1/2]

virtual unsigned int IEEE1394Impl::read ( unsigned short  node,
uint64  address,
uint32 *  buffer,
unsigned int  size,
uint32  value 
)
pure virtual

Read data from device. This method is only used for debugging and development.

Parameters
nodeThe node id of source node.
addressThe base address of the memory region to read from (must be a quadlet boundary).
bufferThe data buffer.
sizeThe number of quadlets to read (not bytes!).
valueThe default value to store in the buffer for unsuccessful reads.
Returns
The number of quadlets read successfully.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ read() [2/2]

virtual void IEEE1394Impl::read ( unsigned short  node,
uint64  address,
uint8 *  buffer,
unsigned int  size 
)
pure virtual

Read data from device.

Parameters
nodeThe node id of source node.
addressThe base address of the memory region to read from.
bufferThe data buffer.
sizeThe number of bytes to read (must be an integral number of quadlets).

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ readIsochronous()

virtual void IEEE1394Impl::readIsochronous ( unsigned int  channel,
unsigned int  maximumPayload,
IsochronousChannelListener listener 
)
pure virtual

Starts an isochronous packet listener.

Parameters
channelThe isochronous channel [0; 63].
maximumPayloadThe maximum payload of a packet.
listenerThe listener to be notified on incoming packets.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ resetBus()

virtual void IEEE1394Impl::resetBus ( )
pure virtual

Resets the bus.

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.

◆ write()

virtual void IEEE1394Impl::write ( unsigned short  node,
uint64  address,
const uint8 *  buffer,
unsigned int  size 
)
pure virtual

Write data to device.

Parameters
nodeThe node id of destination node.
addressThe base address of the memory region to write to.
bufferThe data buffer.
sizeThe number of bytes to write (must be an integral number of quadlets).

Implemented in LinuxRawIEEE1394, and DummyIEEE1394.