MX Foundation 4

Functions

uint32 mxfHDLCTxAperiodicWrite (HMXF_BUFFER buffer, uint64 options, uint64 startTime, uint64 count, MXF_HDLC_DATAREC *rec)
 
uint32 mxfHDLCRxAcqRead (HMXF_BUFFER buffer, uint64 maxMsgCount, uint64 maxBytesCount, uint64 *status, uint64 *msgCount, uint64 *byteCount, MXF_HDLC_DATAREC *rec)
 
uint32 mxfHDLCNextDataRecordPtrGet (MXF_HDLC_DATAREC *currentRec, MXF_HDLC_DATAREC **nextRec)
 
uint32 mxfHDLCEmbeddedNVStorageFileMsgRead (HMXF_NVSTORAGE nvStorage, uint64 fileIndex, uint64 maxMsgCount, uint64 maxBytesCount, uint64 *msgCount, uint64 *byteCount, MXF_HDLC_DATAREC *msg)
 
uint32 mxfHDLCEmbeddedNVStorageFileMsgWrite (HMXF_NVSTORAGE nvStorage, uint64 fileIndex, uint64 maxMsgCount, MXF_HDLC_DATAREC *msg, uint64 *count)
 
uint32 mxfHDLCChannelEnable (HMXF_CHANNEL channelHandle, uint64 clockSource)
 
uint32 mxfHDLCChannelDisable (HMXF_CHANNEL channelHandle)
 

Detailed Description

Function Documentation

uint32 mxfHDLCTxAperiodicWrite ( HMXF_BUFFER  buffer,
uint64  options,
uint64  startTime,
uint64  count,
MXF_HDLC_DATAREC rec 
)
C#
public static extern UInt32 mxfHDLCTxAperiodicWrite(UInt64 buffer, UInt64 options, UInt64 startTime, UInt64 count, IntPtr rec);

Sends aperiodic data record for transmission. The data items to be transmitted are specified within the records, along with an optional time tag. The first data item is transmitted at the specified starting time.

The records to transmit on time tag must be placed in chronological order in the array. The same time tag must not appear more than once in the array. When the start time is specified the time tag of the first record or the start time should be at least 50 msec in advance to be relatively precise, otherwise it will be sent as soon as possible. Also, the cumulative time of all record’s time tag and the start time must be smaller than 30 seconds.

Note
This function is the specific version for HDLC of the multi-protocol mxfTxAperiodicWrite() function.
Parameters
[in]bufferbuffer handle.
[in]optionsoptions for controlling the transmitter before for sending the data records. The details of the options are explained below.
  • MXF_TXAPERIODIC_FLAG_DEFAULT
  • MXF_TXAPERIODIC_FLAG_USE_RECORD_ABSOLUTE_TIME
  • MXF_TXAPERIODIC_FLAG_ABSOLUTE_START_TIME
  • MXF_TXAPERIODIC_FLAG_USE_RECORD_RELATIVE_TIME

[in]startTimestart time based on the timebase. This is the time at which the data held in the first record is transmitted by the device. The time is either expressed accordingly to the process time base or relative to the current real-time clock value (i.e. offset in the future). If the bit MXF_TXAPERIODIC_FLAG_ABSOLUTE_START_TIME of the transmit flag is set, then the start time is specified in absolute time (rather than relative). MXF_TXAPERIODIC_FLAG_USE_RECORD_ABSOLUTE_TIME or MXF_TXAPERIODIC_FLAG_USE_RECORD_RELATIVE_TIME options can't be used with a start time.
[in]countnumber of records to write.
[in]recpointer to MXF_HDLC_DATAREC records to write. The records in the buffer need to be indexed using mxfHDLCNextDataRecordPtrGet() function.


The options modify the transmission scheme as described below:

  • MXF_TXAPERIODIC_FLAG_DEFAULT

    This is the default transmission flag, the scheduling priority defined when the buffer area was defined (see mxfTxAperiodicBufferAlloc()) is used to schedule the transmissions.

    The time tag field is not used and must be set to 0. The records are transmitted with minimum delay between them.

  • MXF_TXAPERIODIC_FLAG_USE_RECORD_ABSOLUTE_TIME

    When set, the absolute transmit time of each data must be set in the record time tag. The time tag must be formatted according to the process time base.

    This flag can’t be used with MXF_TXAPERIODIC_FLAG_USE_RECORD_RELATIVE_TIME, MXF_TXAPERIODIC_FLAG_ABSOLUTE_START_TIME or a start time.

  • MXF_TXAPERIODIC_FLAG_USE_RECORD_RELATIVE_TIME

    When set, the relative transmit time of each data must be set in the record time tag. The process time base resolution is used, but the time base itself is ignored.

    This option causes transmission of the first record at the specified offset and transmission of the remaining records after a delay that is computed by subtracting the record time tag from the time tag of preceding records (i.e. delta time).

    Let’s assume N data records to be transmitted with the MXF_TXAPERIODIC_FLAG_USE_RECORD_RELATIVE_TIME.

    The actual record data transmit time will be computed as follows:

    Time rec1 = Transmission offset (min 50 msec)
    Time rec2 = Time rec1 + (rec2 time tag – rec1 time tag )
    Time rec3 = Time rec2 + (rec3 time tag – rec2 time tag )

    Time recN = Time recN-1 + (recN time tag - recN-1 time tag )

    This flag can’t be used with MXF_TXAPERIODIC_FLAG_USE_RECORD_ABSOLUTE_TIME, MXF_TXAPERIODIC_FLAG_ABSOLUTE_START_TIME or a start time.

  • MXF_TXAPERIODIC_FLAG_ABSOLUTE_START_TIME

    When set, the startTime parameter must be formatted according to the process time base.

    If not set, the startTime parameter is expressed as a relative time from the current real time clock value. The process time base resolution is used, but the time base itself is ignored.

    The time tag field is not used and must be set to 0. The first record is sent at the specified start time and then the other records are transmitted with minimum delay between them.

    This flag cannot be used with MXF_TXAPERIODIC_FLAG_USE_RECORD_ABSOLUTE_TIME or MXF_TXAPERIODIC_FLAG_USE_RECORD_RELATIVE_TIME options.
Returns
MAXT_SUCCESS is returned when the function has succeeded.
Refer to mxf_error.h for a list of defined errors.
Call mxfSystemErrorStringGet() to transform the return code into a text string.
Availability:
Available in MX Foundation 4.0 and later.
See also
mxfTxAperiodicWrite()
mxfTxAperiodicBufferAlloc()
mxfTxAperiodicBufferStatusGet()
mxfTxAperiodicClear()
mxfSystemTimeBaseSet()
mxfHDLCNextDataRecordPtrGet()
Examples:
hdlc.c, hdlc.cs, hdlc_aperiodic.c, hdlc_aperiodic.cs, hdlc_buffer_threshold.c, hdlc_buffer_threshold.cs, hdlc_flexsmp.c, hdlc_flexsmp.cs, hdlc_trigger.c, hdlc_trigger.cs, hdlc_tx_error_injection.c, and hdlc_tx_error_injection.cs.
uint32 mxfHDLCRxAcqRead ( HMXF_BUFFER  buffer,
uint64  maxMsgCount,
uint64  maxBytesCount,
uint64 *  status,
uint64 *  msgCount,
uint64 *  byteCount,
MXF_HDLC_DATAREC rec 
)
C#
public static extern UInt32 mxfHDLCRxAcqRead(UInt64 buffer, UInt64 maxMsgCount, UInt64 maxBytesCount, out UInt64 status, out UInt64 msgCount, out UInt64 byteCount, IntPtr rec);

Transfers the records from the channel acquisition buffer to the calling application.

Note
This function is the specific version for HDLC of the multi-protocol mxfRxAcqRead() function.
Parameters
[in]bufferbuffer handle.
[in]maxMsgCountmaximum messages to read (0 means all messages).
[in]maxBytesCountmaximum number of bytes to be read.
[out]statuslast status set.
[out]msgCountnumber of records returned.
[out]byteCountnumber of bytes returned.
[out]recaddress of data records. The records in the buffer need to be indexed using mxfHDLCNextDataRecordPtrGet() function.
Returns
MAXT_SUCCESS is returned when the function has succeeded.
Refer to mxf_error.h for a list of defined errors.
Call mxfSystemErrorStringGet() to transform the return code into a text string.
Availability:
Available in MX Foundation 4.0 and later.
See also
mxfRxAcqRead()
mxfRxAcqStart()
mxfRxAcqBufferAlloc()
mxfRxAcqStop()
mxfHDLCNextDataRecordPtrGet()
Examples:
csdb_flexsmp.cs, hdlc.c, hdlc.cs, hdlc_aperiodic.c, hdlc_aperiodic.cs, hdlc_buffer_threshold.c, hdlc_buffer_threshold.cs, hdlc_flexsmp.c, hdlc_flexsmp.cs, hdlc_trigger.c, hdlc_trigger.cs, hdlc_tx_error_injection.c, and hdlc_tx_error_injection.cs.
uint32 mxfHDLCNextDataRecordPtrGet ( MXF_HDLC_DATAREC currentRec,
MXF_HDLC_DATAREC **  nextRec 
)
C#
public static extern UInt32 mxfHDLCNextDataRecordPtrGet(IntPtr currentRec, out IntPtr nextRec);

Returns the next buffer address in a MXF_HDLC_DATAREC buffer array.

Note
This function is the specific version for HDLC of the multi-protocol mxfNextRecordPtrGet() function.
Parameters
[in]currentRecpointer to the beginning or the current record in the buffer.
[out]nextRecpointer to next record in the buffer.
Returns
MAXT_SUCCESS is returned when the function has succeeded.
Refer to mxf_error.h for a list of defined errors.
Call mxfSystemErrorStringGet() to transform the return code into a text string.
Availability:
Available in MX Foundation 4.0 and later.
See also
mxfNextRecordPtrGet()
mxfHDLCRxAcqRead()
mxfHDLCTxAperiodicWrite()
Examples:
hdlc.c, hdlc.cs, hdlc_aperiodic.c, hdlc_aperiodic.cs, hdlc_buffer_threshold.c, hdlc_buffer_threshold.cs, hdlc_trigger.c, hdlc_trigger.cs, hdlc_tx_error_injection.c, hdlc_tx_error_injection.cs, multi.c, multi.cs, write_read_async.c, and write_read_async.cs.
uint32 mxfHDLCEmbeddedNVStorageFileMsgRead ( HMXF_NVSTORAGE  nvStorage,
uint64  fileIndex,
uint64  maxMsgCount,
uint64  maxBytesCount,
uint64 *  msgCount,
uint64 *  byteCount,
MXF_HDLC_DATAREC msg 
)
C#
public static extern UInt32 mxfHDLCEmbeddedNVStorageFileMsgRead(UInt64 storage, UInt64 fileIndex, UInt64 maxRecCount, UInt64 maxBytesCount, out UInt64 recCount, out UInt64 bytesCount, IntPtr rec);

Reads the records from a specific file. The messages format must be of type MXF_EMBEDDED_NVSTORAGE_MSGTYPE_HDLC.

Note
This function is the specific version for HDLC of the multi-protocol mxfEmbeddedNVStorageFileMsgRead() function.
Parameters
[in]nvStoragenon-volatile storage handle
[in]fileIndexfile index
[in]maxMsgCountmaximum number of messages that can be returned
[in]maxBytesCountmaximum byte count that can be returned
[out]msgCountcount of messages returned
[out]byteCountnumber of bytes returned in the msg buffer
[out]msgpointer to read buffer containing messages. The records in the buffer need to be indexed using the mxfHDLCNextDataRecordPtrGet() function.
Returns
MAXT_SUCCESS is returned when the function has succeeded.
Refer to mxf_error.h for a list of defined errors.
Call mxfSystemErrorStringGet() to transform the return code into a text string.
Availability:
Available in MX Foundation 4.0 and later.
See also
mxfEmbeddedNVStorageHandleGet()
mxfEmbeddedNVStorageFileStatusGet()
uint32 mxfHDLCEmbeddedNVStorageFileMsgWrite ( HMXF_NVSTORAGE  nvStorage,
uint64  fileIndex,
uint64  maxMsgCount,
MXF_HDLC_DATAREC msg,
uint64 *  count 
)
C#
public static extern UInt32 mxfHDLCEmbeddedNVStorageFileMsgWrite(UInt64 storage, UInt64 fileIndex, UInt64 maxRecCount, IntPtr rec, out UInt64 count);

Writes messages to the specified file. The messages format must be of type MXF_EMBEDDED_NVSTORAGE_MSGTYPE_HDLC.

Note
This function is the specific version for HDLC of the multi-protocol mxfEmbeddedNVStorageFileMsgWrite() function.
Parameters
[in]nvStoragenon-volatile storage handle
[in]fileIndexfile index
[in]maxMsgCountmaximum number of messages to write
[in]msgpointer to messages to write. The records in the buffer need to be indexed using mxfHDLCNextDataRecordPtrGet() function.
[out]countnumber of messages actually written
Returns
MAXT_SUCCESS is returned when the function has succeeded.
Refer to mxf_error.h for a list of defined errors.
Call mxfSystemErrorStringGet() to transform the return code into a text string.
Availability:
Available in MX Foundation 4.0 and later.
See also
mxfEmbeddedNVStorageHandleGet()
mxfEmbeddedNVStorageFileStatusGet()
uint32 mxfHDLCChannelEnable ( HMXF_CHANNEL  channelHandle,
uint64  clockSource 
)

Enable the HDLC channel and, when necessary, its corresponding clock channel.

On Tx channel, when enabling with clockSource set to VMXF_HDLC_CLOCK_SOURCE_INTERNAL, this will start transmitting the clock. If the Tx channel is configured with KMXF_HDLC_TX_INTERFRAME_TIME_FILL set to VMXF_HDLC_TX_INTERFRAME_TIME_FILL_FLAGS, it will also start transmitting flags.
On Tx channel, when enabling with clockSource set to VMXF_HDLC_CLOCK_SOURCE_EXTERNAL, the clock signal must be present on corresponding Rx clock channel. If the Tx channel is configured with KMXF_HDLC_TX_INTERFRAME_TIME_FILL set to VMXF_HDLC_TX_INTERFRAME_TIME_FILL_FLAGS, it will also start transmitting flags based on receive clock.

On Rx channel, when enabling with clockSource set to VMXF_HDLC_CLOCK_SOURCE_INTERNAL, this will start transmitting the clock.
On Rx channel, when enabling with clockSource set to VMXF_HDLC_CLOCK_SOURCE_EXTERNAL, the clock signal must be present on corresponding Rx clock channel.

Parameters
[in]channelHandlechannel handle
[in]clockSourceclock source
Constant Value
VMXF_HDLC_CLOCK_SOURCE_EXTERNAL The clock source is external (from the channel point of view, the clock source is an input). (default for RX channel)
VMXF_HDLC_CLOCK_SOURCE_INTERNAL The clock source is internal (from the channel point of view, the clock source is an output). (default for TX channel)
VMXF_HDLC_CLOCK_SOURCE_NONE No clock (used only with KMXF_HDLC_DATA_ENCODING set to VMXF_HDLC_ENCODING_MANCHESTER_NOCLK).
Returns
MAXT_SUCCESS is returned when the function has succeeded.
Refer to mxf_error.h for a list of defined errors.
Call mxfSystemErrorStringGet() to transform the return code into a text string.
Availability:
Available in MX Foundation 4.4.2 and later.
See also
mxfHDLCChannelDisable()
Examples:
hdlc.c, hdlc.cs, hdlc_aperiodic.c, hdlc_aperiodic.cs, hdlc_buffer_threshold.c, hdlc_buffer_threshold.cs, hdlc_flexsmp.c, hdlc_flexsmp.cs, hdlc_trigger.c, hdlc_trigger.cs, hdlc_tx_error_injection.c, and hdlc_tx_error_injection.cs.
uint32 mxfHDLCChannelDisable ( HMXF_CHANNEL  channelHandle)

Disable the HDLC channel and, when necessary, its corresponding clock channel

On Tx channel, this will stop data and clock transmission.
On Rx channel, this will stop clock transmission on corresponding Tx clock channel.

Note that if the opposite channel is also using the clock as an output, disabling the channel will not stop the clock transmission until both channels are disabled.

Parameters
[in]channelHandlechannel handle
Returns
MAXT_SUCCESS is returned when the function has succeeded.
Refer to mxf_error.h for a list of defined errors.
Call mxfSystemErrorStringGet() to transform the return code into a text string.
Availability:
Available in MX Foundation 4.4.2 and later.
See also
mxfHDLCChannelEnable()
Examples:
hdlc.c, hdlc.cs, hdlc_aperiodic.c, hdlc_aperiodic.cs, hdlc_buffer_threshold.c, hdlc_buffer_threshold.cs, hdlc_flexsmp.c, hdlc_flexsmp.cs, hdlc_trigger.c, hdlc_trigger.cs, hdlc_tx_error_injection.c, and hdlc_tx_error_injection.cs.
Updated 10/23/2023