The transmission channels of A629 modules support this service (logical channel 1 to 120).
Refer to the MXF_A629_TXPERIODIC_MJRFRAME_MSG structure for major frame building.
The major frame (XPP) can contain up to 31 minor frames (messages) and a total of 31 messages (wordstrings).
The minor frame rate is taken from the module TI value.
Each element of the major frame corresponds to the MXF_A629_TXPERIODIC_MJRFRAME_MSG structure. It contains the label to be sent, the length of the wordstring, and other options.
Before setting the major frame, it is suggested to clear it using the mxfTxPeriodicMajorFrameClear() function.
The minor frame can then be set using the mxfA629TxPeriodicMajorFrameSet() function. By default, the major frame is empty.
To set the data associated to the label, refer to the Periodic Update Message Service section.
Building a major frame:
#define MAX_TX_RECORDS_TO_TRANSMIT 1
#define TX_BUFFER_SIZE MAX_TX_RECORDS_TO_TRANSMIT*sizeof(MXF_A629_DATAREC)
HMXF_SERVER server;
HMXF_CHANNEL txChannel;
HMXF_BUFFER txBuffer[6]={0,0,0,0,0,0};
uint64 index;
...
if(!rc)
if(!rc)
{
for(index=0; index<6 && !rc; index++)
}
if(!rc)
if(!rc)
{
memset(minorFrame, 0, sizeof(minorFrame));
minorFrame[0].
buffer = txBuffer[0];
minorFrame[0].
label = 0x1;
minorFrame[1].
buffer = txBuffer[1];
minorFrame[1].
label = 0x2;
minorFrame[2].
buffer = txBuffer[2];
minorFrame[2].
label = 0x3;
}
if(!rc)
{
minorFrame[0].
buffer = txBuffer[3];
minorFrame[0].
label = 0x4;
minorFrame[0].
options = MXF_A629_TXPERIODIC_MJRFRAME_MSG_OPT_CRC_ENABLE;
minorFrame[1].
buffer = txBuffer[4];
minorFrame[1].
label = 0x5;
minorFrame[1].
options = MXF_A629_TXPERIODIC_MJRFRAME_MSG_OPT_CRC_ENABLE;
}
if(!rc)
{
memset(&txRec629, 0, sizeof(txRec629));
txRec629.
data[1] = 0x1111;
}
if(!rc)
{
txRec629.
data[1] = 0x2222;
txRec629.
data[2] = 0x2222;
}
if(!rc)
{
majorProperties.
mode = MXF_A629_TXPERIODIC_MJRFRAME_PROPERTIES_MODE_BLOCK;
}
...
if(!rc)
if(!rc)
...
- Note
- If two wordstrings with the same buffer are close to each other in the minor frame, it can happen that the firmware doesn't have the time to update the buffer before the next occurrence of the wordstring is sent, so the same data will be sent twice. If they need to have different data, simply assign a different buffer to one of the wordstring and update both buffers individually.