#include "example.h"
#define LOOPBACK
#define LOCAL
#define BUFFER_SIZE 4096 // 4KB
#define TX_MSG_LABEL 5
#define TX_MSG_SI 0
#define BLOCKCOUNT 6
uint32 PeriodicScheduling(HMXF_CHANNEL txChannel, HMXF_BUFFER *txBuffer,
MXF_CSDB_DATAREC *recCsdb);
uint32 InitCSDBProtocolHandler(HMXF_SERVER server, uint64 deviceIndex, uint64 moduleIndex, uint64 channelIndex, uint64 attrib, uint64* value);
int main(void)
{
uint32 rc;
HMXF_SERVER server;
HMXF_DEVICE device=0;
HMXF_MODULE module=0;
uint64 count=0;
HMXF_CHANNEL rxChannel=0;
HMXF_CHANNEL txChannel=0;
HMXF_BUFFER rxBuffer=0;
HMXF_BUFFER txBuffer[2]={0,0};
uint64 dev, mod, port, indexBuffer;
#ifdef LOCAL
#else
#endif
if (rc)
{
printf("Failed to connect; rc=0x%08x", rc);
printf("\nPress a key to terminate\n");
getchar();
return 0;
}
printf("\nStarting\n");
if(!rc)
if (!rc)
if (!rc)
if (!rc && count)
if (!rc && count)
if(!rc && !count)
rc = MAXT_ERROR_NOT_FOUND;
if(!rc)
if(!rc)
if (!rc)
if (!rc)
{
if (!rc)
printf("Acquisition Channel (RX) location=%"PRIu64".%"PRIu64".%"PRIu64"\n", dev, mod, port);
}
if (!rc)
{
if (!rc)
printf("Transmitter Channel (TX) location=%"PRIu64".%"PRIu64".%"PRIu64"\n", dev, mod, port);
}
#ifdef LOOPBACK
if (!rc)
#endif
if (!rc)
if(!rc)
if(!rc)
if (!rc)
{
if (!rec)
rc = MAXT_ERROR_MEM;
}
if (!rc)
if (!rc)
{
if (!rc)
printf("\nAcquisition started\n\r");
}
if (!rc)
{
rc = PeriodicScheduling(txChannel, txBuffer, rec);
if (!rc)
{
rc = ReadAcquisitionData(rxBuffer, rec);
}
}
if (!rc)
if (!rc)
{
if (!rc)
printf("\nAcquisition stopped\n\r");
}
if (rc)
{
char buffer[256];
printf("%s\n", buffer);
}
printf("\nTerminating\n");
if (rxBuffer)
for (indexBuffer = 0; indexBuffer < 2; indexBuffer++)
{
if (txBuffer[indexBuffer])
{
}
}
if (rec)
free(rec);
printf("\nPress enter to terminate\n");
getchar();
return rc;
}
{
uint64 status, msgsCount, bytesCount;
uint64 i, j;
uint32 rc;
rc =
mxfCSDBRxAcqRead(rxBuffer, 0, BUFFER_SIZE, &status, &msgsCount, &bytesCount, recCsdb);
for (j=0; j<msgsCount && !rc; j++)
{
printf(
"%02"PRIu64
": Timetag=%016"PRIu64
": CSDB data=[ ", j, rec->
timeTag);
for (i=0; i<BLOCKCOUNT; i++)
printf(
"0x%02X ", rec->
data[i]);
printf("]\n\r");
}
return rc;
}
uint32 PeriodicScheduling(HMXF_CHANNEL txChannel, HMXF_BUFFER *txBuffer,
MXF_CSDB_DATAREC *recCsdb)
{
HMXF_SCHED schedule;
HMXF_SCHED_MSG msg=0;
uint32 rc;
uint64 i;
if(!rc)
if(!rc)
if(!rc)
{
for (i=0; i<BLOCKCOUNT; i++)
}
if(!rc)
{
recCsdb->
data[0] = TX_MSG_LABEL;
recCsdb->
data[1] = TX_MSG_SI;
for (i=2; i<BLOCKCOUNT; i++)
recCsdb->
data[i]= (uint8)i;
}
if(!rc)
{
printf("Running periodic transmission, please wait...\n\r");
}
if(!rc)
{
}
if(!rc)
printf("\n\rTransmission stopped\n\r");
return rc;
}
uint32 InitCSDBProtocolHandler(HMXF_SERVER server, uint64 deviceIndex, uint64 moduleIndex, uint64 channelIndex, uint64 attrib, uint64* value)
{
server=server;
deviceIndex=deviceIndex;
moduleIndex=moduleIndex;
channelIndex=channelIndex;
if(attrib==KMXF_CHANNEL_CLASS)
{
*value=MXF_CLASS_CSDB;
return TRUE;
}
return FALSE;
}