#include "example.h"
#define EX_USER_COMMAND_ID_INIT 0x0
#define EX_USER_COMMAND_ID_START_TX 0x1
#define EX_USER_COMMAND_ID_STOP_TX 0x2
#define EX_USER_COMMAND_ID_START_ACQ 0x3
#define EX_USER_COMMAND_ID_STOP_ACQ 0x4
#define EX_USER_COMMAND_ID_TERMINATE 0x5
#define EX_USER_COMMAND_ACK 0xA5A5A5A5
#define EX_STRING_SIZE 64
#define EX_MAX_PARAM 8
#define TX_INDEX 0
#define RX_INDEX 1
typedef struct
{
uint32 command;
uint32 paramNum;
uint32 param[EX_MAX_PARAM];
}
EX_COMMAND;
uint32 initAttribHandler(HMXF_SERVER server, uint64 cardIndex, uint64 moduleIndex, uint64 channelIndex, uint64 attrib, uint64* value);
uint32 CommandSend(HMXF_BUFFER txBuffer, HMXF_BUFFER rxBuffer, EX_COMMAND* cmd);
int main(void)
{
HMXF_SERVER server = 0;
HMXF_DEVICE device = 0;
HMXF_MODULE module = 0;
HMXF_CHANNEL rxChannel = 0;
HMXF_CHANNEL txChannel = 0;
HMXF_BUFFER txBuffer = 0;
HMXF_BUFFER rxBuffer = 0;
EX_COMMAND Cmd;
uint64 devIdx = 0, modIdx = 0, rxChnIdx = 0, txChnIdx = 0;
uint64 count = 0;
uint32 rc;
if (!rc)
printf("Starting\n");
if (!rc)
if (!rc)
if (!rc && count)
if (!rc && count)
if (!rc && count)
if (!rc && !count)
rc = MAXT_ERROR_NOT_FOUND;
if (!rc)
if (!rc)
if (!rc)
if (!rc)
{
if (!rc)
}
if (!rc)
rc =
mxfDeviceFileUpload(device, MXF_DEVICE_FILETYPE_APPLICATION,
"ar429_embedded_comm_queues-flex.mxf");
if (!rc)
{
Cmd.command = EX_USER_COMMAND_ID_INIT;
Cmd.paramNum = 0;
rc = CommandSend(txBuffer, rxBuffer, &Cmd);
if (!rc)
printf("Initialisation\n");
}
if (!rc)
{
Cmd.command = EX_USER_COMMAND_ID_START_ACQ;
Cmd.paramNum = 1;
Cmd.param[0] = (uint32)rxChnIdx;
rc = CommandSend(txBuffer, rxBuffer, &Cmd);
if (!rc)
printf("Acquisition started\n");
}
if (!rc)
{
Cmd.command = EX_USER_COMMAND_ID_START_TX;
Cmd.paramNum = 1;
Cmd.param[0] = (uint32)txChnIdx;
rc = CommandSend(txBuffer, rxBuffer, &Cmd);
if (!rc)
printf("Transmission started\n");
}
if (!rc)
{
printf("Running...\n");
}
if (!rc)
{
Cmd.command = EX_USER_COMMAND_ID_STOP_TX;
Cmd.paramNum = 0;
Cmd.param[0] = (uint32)txChnIdx;
rc = CommandSend(txBuffer, rxBuffer, &Cmd);
if (!rc)
printf("Transmission stopped\n");
}
if (!rc)
{
Cmd.command = EX_USER_COMMAND_ID_STOP_ACQ;
Cmd.paramNum = 1;
Cmd.param[0] = (uint32)rxChnIdx;
rc = CommandSend(txBuffer, rxBuffer, &Cmd);
if (!rc)
printf("Acquisition stopped\n");
}
if (!rc)
{
Cmd.command = EX_USER_COMMAND_ID_TERMINATE;
Cmd.paramNum = 0;
rc = CommandSend(txBuffer, rxBuffer, &Cmd);
if (!rc)
printf("Terminating\n");
}
if (rc)
{
char buffer[256];
printf("%s\n", buffer);
}
printf("\nPress enter to terminate\n");
getchar();
return 0;
}
uint32 initAttribHandler(HMXF_SERVER server, uint64 cardIndex, uint64 moduleIndex, uint64 channelIndex, uint64 attrib, uint64* value)
{
(void)server;
(void)cardIndex;
(void)moduleIndex;
(void)channelIndex;
if (attrib == KMXF_DEVICE_COMM_QUEUE_NUM)
{
*value = 2;
return TRUE;
}
return FALSE;
}
uint32 CommandSend(HMXF_BUFFER txBuffer, HMXF_BUFFER rxBuffer, EX_COMMAND* cmd)
{
uint64 readCnt;
uint64 byteCnt;
uint32 rc = 0;
memset(&msg, 0, sizeof(msg));
if (rc)
printf("Write error rc=0x%08x\n", rc);
while (!rc)
{
if (readCnt && msg.
data[0] == EX_USER_COMMAND_ACK)
break;
}
return rc;
}