Base Framework
Classes | Public Member Functions | List of all members
LinuxRawIEEE1394 Class Reference

Linux (RAW) IEEE 1394 implementation. More...

#include <base/communication/LinuxRawIEEE1394.h>

Inherits IEEE1394Impl.

Public Member Functions

void resetBus ()
 
 LinuxRawIEEE1394 ()
 
bool hasBeenReset () const
 
void acknowledgeReset ()
 
Array< EUI64getAdapters ()
 
void open ()
 
void open (const EUI64 &adapter)
 
void close ()
 
unsigned int getLocalId () const
 
unsigned int getNumberOfNodes () const
 
unsigned int getStatus () const
 
unsigned int getFIFOSize () const
 
void read (unsigned short node, uint64 address, uint8 *buffer, unsigned int size)
 
void write (unsigned short node, uint64 address, const uint8 *buffer, unsigned int size)
 
unsigned int read (unsigned short node, uint64 address, uint32 *buffer, unsigned int size, uint32 value)
 
uint32 lock (unsigned short node, uint64 address, LockInstruction instruction, uint32 argument, uint32 data)
 
IsochronousReadChannel getReadChannel (unsigned int maxPacketsPerRequest, uint64 subchannels)
 
IsochronousWriteChannel getWriteChannel (unsigned int maxPacketsPerRequest, uint64 subchannels)
 
 ~LinuxRawIEEE1394 ()
 
bool wait (unsigned int milliseconds)
 
void dequeueResponse ()
 
void dequeue ()
 
void registerFCPListener (FunctionControlProtocolListener *listener)
 
void unregisterFCPListener ()
 
void readIsochronous (unsigned int channel, unsigned int maximumPayload, IsochronousChannelListener *listener)
 
void writeIsochronous (const uint8 *buffer, unsigned int size, unsigned int channel, unsigned int tag, unsigned int sy, Speed speed)
 
- Public Member Functions inherited from IEEE1394Impl
virtual void registerFCPListener (FunctionControlProtocolListener *listener)=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 ()
 

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 Member Functions inherited from IEEE1394Impl
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
 
- 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

Linux (RAW) IEEE 1394 implementation.

Linux (RAW) IEEE 1394 implementation.

Version
1.0

Constructor & Destructor Documentation

◆ LinuxRawIEEE1394()

LinuxRawIEEE1394::LinuxRawIEEE1394 ( )

Initializes IEEE 1394 implementation.

◆ ~LinuxRawIEEE1394()

LinuxRawIEEE1394::~LinuxRawIEEE1394 ( )

Destroys the IEEE 1394 implementation.

Member Function Documentation

◆ acknowledgeReset()

void LinuxRawIEEE1394::acknowledgeReset ( )
virtual

Acknowledges the bus reset.

Implements IEEE1394Impl.

◆ close()

void LinuxRawIEEE1394::close ( )
virtual

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

Implements IEEE1394Impl.

◆ dequeueResponse()

void LinuxRawIEEE1394::dequeueResponse ( )

Dequeues one response from the driver.

◆ getAdapters()

Array<EUI64> LinuxRawIEEE1394::getAdapters ( )
virtual

Returns the adapters available.

Implements IEEE1394Impl.

◆ getFIFOSize()

unsigned int LinuxRawIEEE1394::getFIFOSize ( ) const
virtual

Returns the size of the FIFO.

Implements IEEE1394Impl.

◆ getLocalId()

unsigned int LinuxRawIEEE1394::getLocalId ( ) const
virtual

Returns the physical id of the adapter.

Implements IEEE1394Impl.

◆ getNumberOfNodes()

unsigned int LinuxRawIEEE1394::getNumberOfNodes ( ) const
virtual

Returns the number of nodes on the local bus.

Implements IEEE1394Impl.

◆ getReadChannel()

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

Returns an isochronous read channel.

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

Implements IEEE1394Impl.

◆ getStatus()

unsigned int LinuxRawIEEE1394::getStatus ( ) const
virtual

Returns the current error status.

Implements IEEE1394Impl.

◆ getWriteChannel()

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

Returns an isochronous write channel.

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

Implements IEEE1394Impl.

◆ hasBeenReset()

bool LinuxRawIEEE1394::hasBeenReset ( ) const
virtual

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

Implements IEEE1394Impl.

◆ lock()

uint32 LinuxRawIEEE1394::lock ( unsigned short  node,
uint64  address,
LockInstruction  instruction,
uint32  argument,
uint32  data 
)

This methods provides atomic write access to quadlet.

Parameters
nodeThe node id of the node.
addressThe address of the quadlet (must be a quadlet boundary).
instructionThe atomic instruction.
argumentThe argument to the instruction (ignored by FETCH_ADD and LITTLE_FETCH_ADD).
dataThe data value use by the instruction.
Returns
The result.

◆ open() [1/2]

void LinuxRawIEEE1394::open ( )
virtual

Opens a connection to the primary adapter.

Implements IEEE1394Impl.

◆ open() [2/2]

void LinuxRawIEEE1394::open ( const EUI64 adapter)
virtual

Opens a connection to the specified adapter.

Parameters
adapterThe id of the adapter.

Implements IEEE1394Impl.

◆ read() [1/2]

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

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

Parameters
nodeThe node id of the 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.

Implements IEEE1394Impl.

◆ read() [2/2]

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

Read data from device.

Parameters
nodeThe node id of the 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).

Implements IEEE1394Impl.

◆ readIsochronous()

void LinuxRawIEEE1394::readIsochronous ( unsigned int  channel,
unsigned int  maximumPayload,
IsochronousChannelListener listener 
)
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.

Implements IEEE1394Impl.

◆ resetBus()

void LinuxRawIEEE1394::resetBus ( )
virtual

Resets the bus.

Implements IEEE1394Impl.

◆ wait()

bool LinuxRawIEEE1394::wait ( unsigned int  milliseconds)
virtual

Wait for an event or until the timeout period expires.

Parameters
millisecondsThe timeout period.
Returns
True if event is ready to be dequeued.

Implements IEEE1394Impl.

◆ write()

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

Write data to device.

Parameters
nodeThe node id of the 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).

Implements IEEE1394Impl.