#include "example.h"
#define LOCAL
int main(void)
{
uint32 rc;
uint64 deviceCount = 0;
uint64 moduleCount = 0;
HMXF_SERVER server;
HMXF_DEVICE device = 0;
HMXF_MODULE module[2];
HMXF_CHANNEL bc = 0;
HMXF_CHANNEL bm = 0;
HMXF_CHANNEL rt4 = 0;
HMXF_CHANNEL rt5 = 0;
HMXF_BUFFER bcLowAperBuffer = 0;
HMXF_BUFFER bcHighAperBuffer = 0;
HMXF_BUFFER bcBuffer0 = 0;
HMXF_BUFFER bcBuffer1 = 0;
HMXF_BUFFER bcBufferTx = 0;
HMXF_BUFFER rt4Buffer = 0;
HMXF_BUFFER rt5Buffer = 0;
HMXF_BUFFER bmBuffer = 0;
uint64 startTime = 0;
uint64 txBufferSize = 0, rxBufferSize = 0;
uint64 rxAcqStatus = 0;
uint64 msgCount;
uint64 byteCount;
uint64 rxRec;
uint32 data;
uint32 checksumError = 0;
char errorString[200];
#ifdef LOCAL
#else
#endif
if (!rc)
{
printf("Starting ...\n\r");
}
if (!rc)
if (!rc && !deviceCount)
if (!rc && deviceCount)
{
if (moduleCount != 2)
{
printf("This example only works for FM1553-4 or FX1553-4\n");
rc = MAXT_ERROR_MODEL;
}
}
else if (!rc && !deviceCount)
rc = MAXT_ERROR_MODEL;
if (!rc)
if (!rc)
if (!rc)
if (!rc)
#ifdef LOOPBACK
if (!rc)
#endif
if (!rc)
{
txBufferSize = 4096;
if (!rc)
if (!rc)
if (!rc)
if (!rc)
if (!rc)
if (!rc)
if (!rc)
{
if (!txBuffer)
rc = MAXT_ERROR_MEM;
}
}
if (!rc)
{
rxBufferSize = 10 * 1024;
if (!rc)
if (!rc)
{
if (!rxBuffer)
rc = MAXT_ERROR_MEM;
}
}
if (!rc)
if (!rc)
if (!rc)
if (!rc)
if (!rc)
if (!rc)
if (!rc)
{
msgid.
type = MXF_MIL1553_MSGTYPE_TX;
}
if (!rc)
if (!rc)
{
memset(minorFrame, 0, sizeof(minorFrame));
minorFrame[0].
options = MXF_MIL1553_TXPERIODIC_MJRFRAME_MSG_OPT_CHECKSUM_ENABLE;
minorFrame[0].
buffer = bcBuffer0;
if (!rc)
{
minorFrame[1].
delay = 80000;
minorFrame[1].
options = MXF_MIL1553_TXPERIODIC_MJRFRAME_MSG_OPT_DELAY;
minorFrame[1].
buffer = bcBuffer1;
}
if (!rc)
{
minorFrame[2].
delay = 80000;
minorFrame[2].
options = MXF_MIL1553_TXPERIODIC_MJRFRAME_MSG_OPT_DELAY;
minorFrame[2].
buffer = bcBufferTx;
}
if (!rc)
{
minorFrame[3].
delay = 80000;
minorFrame[3].
options = MXF_MIL1553_TXPERIODIC_MJRFRAME_MSG_OPT_DELAY;
minorFrame[3].
buffer = bcBufferTx;
}
if (!rc)
{
minorFrame[4].
delay = 80000;
minorFrame[4].
options = MXF_MIL1553_TXPERIODIC_MJRFRAME_MSG_OPT_DELAY;
minorFrame[4].
buffer = bcBufferTx;
}
if (!rc)
}
if (!rc)
{
rec1553->
data[0] = 0x0000;
rec1553->
data[1] = 0x0000;
rec1553->
data[2] = 0x1111;
rec1553->
data[3] = 0x2222;
rec1553->
data[4] = 0x3333;
}
if (!rc)
{
rec1553->
data[0] = 0x0000;
rec1553->
data[1] = 0x1234;
rec1553->
data[2] = 0x5678;
rec1553->
data[3] = 0x9ABC;
rec1553->
data[4] = 0xDEF0;
}
if (!rc)
{
rec1553->
data[0] = 0x0000;
rec1553->
data[1] = 0xAAAA;
rec1553->
data[2] = 0xBBBB;
rec1553->
data[3] = 0xCCCC;
rec1553->
data[4] = 0xDDDD;
}
if (!rc)
{
printf("Starting RT 4\n\r");
if (!rc)
}
if (!rc)
{
printf("Starting RT 5\n\r");
if (!rc)
}
if (!rc)
startTime += 200000000;
if (!rc)
{
memset(&minorProperties, 0, sizeof(minorProperties));
}
if (!rc)
{
rec1553->
timeTag = startTime + 52000000;
rec1553->
control = MXF_MIL1553_TXAPERIODIC_REC_CTRL_CHECKSUM_ENABLE;
rec1553->
data[1] = 0x1111;
rec1553->
data[2] = 0x1111;
rec1553->
data[3] = 0x1111;
rec1553->
data[4] = 0x1111;
}
if (!rc)
{
rec1553->
timeTag = startTime + 54000000;
rec1553->
control = MXF_MIL1553_TXAPERIODIC_REC_CTRL_CHECKSUM_ENABLE | MXF_MIL1553_TXAPERIODIC_REC_CTRL_GAP;
rec1553->
data[1] = 0x2222;
rec1553->
data[2] = 0x2222;
rec1553->
data[3] = 0x2222;
rec1553->
data[4] = 0x2222;
}
if (!rc)
{
rc =
mxfMIL1553RxAcqRead(bmBuffer, 0, rxBufferSize, &rxAcqStatus, &msgCount, &byteCount, rxBuffer);
for (rxRec = 0; rxRec < msgCount && !rc; rxRec++)
{
printf(
"\n\r%llu:\t", rec1553->
timeTag);
printf(
"Control: 0x%08x", rec1553->
control);
if (rec1553->
control & MXF_MIL1553_RX_REC_CTRL_MSG_CHECKSUM_ERROR)
checksumError++;
for (data = 0; data < rec1553->
dataSize / 2; data++)
{
if (data && !(data % 5))
printf("\n\r\t\t\t");
printf(
" 0x%04x", rec1553->
data[data]);
}
printf("\n\r");
}
}
if (!rc)
{
if (rxAcqStatus & MXF_RXACQ_STATUS_BUFFER_FULL)
printf("Acquisition stopped with buffer full\n");
}
if (!rc)
printf("Number of checksum error = %u\n", checksumError);
if (!rc)
if (!rc)
if (!rc)
if (!rc)
if (txBuffer)
free(txBuffer);
if (rxBuffer)
free(rxBuffer);
if (rc)
{
sprintf(errorString, "ERROR # 0x%08X", rc);
printf("%s\n\r", errorString);
}
if (bcLowAperBuffer)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (bcHighAperBuffer)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (bcBuffer0)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (bcBuffer1)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (bcBufferTx)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (rt4Buffer)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (rt5Buffer)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (bmBuffer)
{
if (rc)
printf("Free buffer failed !\n\r");
}
printf("\n\rPress enter to terminate\n\r");
getchar();
return 0;
}