#include "example.h"
#define LOCAL
typedef struct
{
uint64 rxBufferSize;
FILE* fp;
}
EVENT_INFO;
uint32 eventHandler(HMXF_HANDLE asyncEvent, void* param);
uint32 ReadDiscreteInput(HMXF_BUFFER bufferRx, EVENT_INFO* eventInfo);
int main(void)
{
uint32 rc;
uint64 channelCount=0;
uint64 msgCount;
HMXF_SERVER server;
HMXF_DEVICE device=0;
HMXF_MODULE module=0;
HMXF_CHANNEL rx=0;
HMXF_CHANNEL tx=0;
HMXF_BUFFER bufferRx=0;
HMXF_BUFFER bufferTx=0;
HMXF_ASYNCEVENT asyncEvent=0;
EVENT_INFO eventInfo;
char errorString[200];
uint64 moduleType=0;
uint32 edge=0x0010;
#ifdef LOCAL
#else
#endif
if(!rc)
{
printf("Starting ...\n");
};
if (!rc)
rc =
mxfChannelAllGet(server, MXF_CLASS_DISCRETE, MXF_SCLASS_RX_CHANNEL, MXF_MODULE_ALL, 1, &channelCount, &rx);
if(!rc && channelCount)
rc =
mxfChannelAllGet(server, MXF_CLASS_DISCRETE, MXF_SCLASS_TX_CHANNEL, MXF_MODULE_ALL, 1, &channelCount, &tx);
if(!rc && !channelCount)
rc = MAXT_ERROR_NOT_FOUND;
if(!rc)
if(!rc)
if(!rc)
if (!rc)
if(!rc)
{
if(moduleType == MXF_MODULE_DIOFIFO_EH)
{
}
else
{
}
}
memset(&eventInfo, 0, sizeof(eventInfo));
if(!rc)
{
eventInfo.rxBufferSize = 10*1024;
if(!rc)
{
if(!eventInfo.rxHostBuffer)
rc = MAXT_ERROR_MEM;
}
}
if(!rc)
if(!rc)
{
eventInfo.fp = fopen("discrete_log.txt", "w+t");
}
if(!rc)
{
condition.
condID = MXF_ASYNCEVENT_COND_RXACQ_BUFFER_THRESHOLD;
}
if(!rc)
if(!rc)
printf("Acquisition started\n");
if(!rc)
{
uint32 pulseCount;
uint64 timer=0;
memset(dioRec, 0, sizeof(dioRec));
if(!rc)
if(!rc)
{
for(pulseCount=0; !rc && pulseCount<149-1; pulseCount++)
{
timer += (uint64)100*1000*1000;
timer += 100*1000*1000;
if (rc)
{
printf("mxfDiscreteTxAperiodicWrite() error; rc=0x%08x, pulse count=%u\n", rc, pulseCount);
break;
}
}
if(!rc)
{
do
{
} while(!rc && (msgCount != 0));
}
}
}
if(!rc)
if(!rc)
if(!rc)
if (!rc)
if(!rc)
if(!rc)
if(!rc)
rc = ReadDiscreteInput(bufferRx, &eventInfo);
printf("\n");
if(eventInfo.fp)
fclose(eventInfo.fp);
if(eventInfo.rxHostBuffer)
free(eventInfo.rxHostBuffer);
if(rc)
{
sprintf (errorString,"ERROR # 0x%08X", rc);
printf("%s\n\r", errorString);
}
if (bufferRx)
{
if (rc)
printf("Free buffer failed !\n\r");
}
if (bufferTx)
{
if (rc)
printf("Free buffer failed !\n\r");
}
printf("\nPress a key to terminate\n");
getchar();
return rc;
}
uint32 eventHandler(HMXF_HANDLE asyncEvent, void* param)
{
uint32 rc;
uint64 count;
if(!rc && count)
{
if(pendingInfo.
condID == MXF_ASYNCEVENT_COND_RXACQ_BUFFER_THRESHOLD)
{
printf("+");
}
}
if(rc)
printf("event handler rc=0x%08x\n", rc);
return rc;
}
uint32 ReadDiscreteInput(HMXF_BUFFER bufferRx, EVENT_INFO* eventInfo)
{
uint32 rc;
uint64 status, msgCount, byteCount, msg;
rc =
mxfDiscreteRxAcqRead(bufferRx, 0, eventInfo->rxBufferSize, &status, &msgCount, &byteCount, eventInfo->rxHostBuffer);
rxRec = eventInfo->rxHostBuffer;
for (msg=0; msg<msgCount && !rc; msg++)
{
fprintf(eventInfo->fp,
"%"PRIu64
": 0x%04x 0x%04x\n\r", rxRec->
timeTag, rxRec->
data, rxRec->
edge);
fflush(eventInfo->fp);
}
return rc;
}