#include "example.h"
#define LOOPBACK
#define LOCAL
#define BUFFER_SIZE 4096 // 4KB
#define FILE_SIZE 256*1024*1024 // 256 MB
uint32 TX429PeriodicScheduling(HMXF_CHANNEL txChannel);
uint32 read429RecordsFromEmbeddedFlash(HMXF_NVSTORAGE flash, uint64 fileIdx);
int main(void)
{
uint32 rc;
HMXF_SERVER server;
HMXF_DEVICE device=0;
HMXF_MODULE module=0;
uint64 count=0;
HMXF_CHANNEL tx429=0, rx429=0;
HMXF_NVSTORAGE flash=0;
uint64 fileIdx=0, fileSize;
uint32 needUnmount=FALSE;
#ifdef LOCAL
#else
#endif
if(rc!=MAXT_SUCCESS)
{
printf("Failed to connect; rc=0x%08x", rc);
printf("\nPress a key to terminate\n");
getchar();
return 0;
}
memset(&nvInfo, 0, sizeof(nvInfo));
printf("\nStarting\n");
if (!rc)
if(!rc && count)
if (!rc && count)
if (!rc && count)
if(!rc && !count)
rc = MAXT_ERROR_NOT_FOUND;
if(!rc)
#ifdef LOOPBACK
if (!rc)
#endif
if(!rc)
{
if(!rc)
}
if(!rc)
if (!rc)
if (!rc && (nvInfo.
type == MXF_EMBEDDED_NVSTORAGE_TYPE_EMMC))
{
needUnmount = TRUE;
}
if(!rc)
{
if (rc == MAXT_ERROR_NVSTORAGE_NOT_FORMATTED)
{
printf("Formatting...\n");
printf("Done\n");
count = 0;
}
}
if(!rc)
{
if(count)
{
if(!rc)
{
{
fileIdx = 0;
if(!rc)
printf("File #%llu reset\n", fileIdx);
}
else
{
printf("Formatting...\n");
printf("Done\n");
if(!rc)
if(!rc)
printf("File #%llu allocated\n", fileIdx);
}
}
}
else
{
if(!rc)
if(!rc)
printf("File #%llu allocated\n", fileIdx);
}
}
if(!rc)
{
if (!rc)
}
if(!rc)
rc = TX429PeriodicScheduling(tx429);
if (!rc)
rc = read429RecordsFromEmbeddedFlash(flash, fileIdx);
if(!rc)
if(needUnmount)
if(rc)
{
char buffer[256];
sprintf (buffer,"ERROR # 0x%08X", rc);
printf("%s\n\r", buffer);
}
printf("\nPress enter to terminate\n");
getchar();
return rc;
}
uint32 TX429PeriodicScheduling(HMXF_CHANNEL txChannel)
{
HMXF_SCHED schedule;
HMXF_SCHED_MSG msg[3]={0,0,0};
uint32 data, ssm=0;
uint32 rc;
uint64 labelMsg0[6]={004,077,0103,0104,0251,0252};
uint64 labelMsg1[2]={0100,0110};
uint64 labelMsg2[3]={0140,0141,0143};
HMXF_BUFFER bufferMsg0[6];
HMXF_BUFFER bufferMsg1[2];
HMXF_BUFFER bufferMsg2[3];
uint32 rec, indexBuffer;
double bnr;
if(!rc)
for(rec=0; rec<6 && !rc; rec++)
{
if(!rc)
{
data=0;
switch(rec)
{
case 0:
data = 0x40000;
ssm = 0;
break;
case 1:
bnr = 100.123;
data >>= 10;
ssm = 3;
break;
case 2:
bnr = 400.126;
data >>= 10;
ssm = 3;
break;
case 3:
bnr = -25;
data >>= 10;
ssm = 3;
break;
case 4:
bnr = 2222.2;
data >>= 10;
ssm = 3;
break;
case 5:
bnr = 333.3;
data >>= 10;
ssm = 3;
break;
}
if(!rc)
}
}
if(!rc)
if(!rc)
for(rec=0; rec<2 && !rc; rec++)
{
if(!rc)
{
data = 0;
switch(rec)
{
case 0:
bnr = 45.08;
data >>= 10;
ssm = 3;
break;
case 1:
bnr = 44;
data >>= 10;
ssm = 3;
break;
}
if(!rc)
}
}
if(!rc)
if(!rc)
for(rec=0; rec<3 && !rc; rec++)
{
if(!rc)
{
data = 0;
switch(rec)
{
case 0:
bnr = 5;
data >>= 10;
ssm = 3;
break;
case 1:
bnr = -2;
data >>= 10;
ssm = 3;
break;
case 2:
bnr = 0;
data >>= 10;
ssm = 3;
break;
}
if(!rc)
}
}
if(!rc)
if(!rc)
{
printf("Running periodic transmission, please wait...\n\r");
}
if(!rc)
{
}
if(!rc)
printf("\n\rTransmission stopped\n\r");
for (indexBuffer = 0; indexBuffer < 6; indexBuffer++)
{
if (bufferMsg0[indexBuffer])
}
for (indexBuffer = 0; indexBuffer < 2; indexBuffer++)
{
if (bufferMsg1[indexBuffer])
}
for (indexBuffer = 0; indexBuffer < 3; indexBuffer++)
{
if (bufferMsg2[indexBuffer])
}
return rc;
}
uint32 read429RecordsFromEmbeddedFlash(HMXF_NVSTORAGE flash, uint64 fileIdx)
{
uint64 msgReadCnt, byteReadCnt;
uint64 iRec, iMsg=0, label, sdi, ssm, parity, data;
uint32 rc=0;
uint64 result;
double bnr;
if (!rec429)
rc = MAXT_ERROR_MEM;
printf("Reading from flash\n\n");
if(!rc)
{
do
{
for (iRec=0, p=rec429; iRec < msgReadCnt; iRec++, iMsg++)
{
switch(label)
{
case 004:
data >>= 8;
result = (data & 0xf) + (((data >> 4) & 0xf)*10) + (((data >> 8) & 0xf)*100);
result *= 100;
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%llu Feet\n\r", iMsg, p->
timeTag, p->
data, label, sdi, result);
break;
case 077:
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%0.03f MLb-in\n\r", iMsg, p->
timeTag, p->
data, label, sdi, bnr);
break;
case 0100:
case 0110:
case 0140:
case 0141:
case 0143:
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%0.02f Deg/180\n\r", iMsg, p->
timeTag, p->
data, label, sdi, bnr);
break;
case 0103:
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%0.02f Knots\n\r", iMsg, p->
timeTag, p->
data, label, sdi, bnr);
break;
case 0104:
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%0.02f Ft/Min\n\r", iMsg, p->
timeTag, p->
data, label, sdi, bnr);
break;
case 0251:
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%0.03f N.M.\n\r", iMsg, p->
timeTag, p->
data, label, sdi, bnr);
break;
case 0252:
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%0.01f Min.\n\r", iMsg, p->
timeTag, p->
data, label, sdi, bnr);
break;
default:
printf(
"%02llu - time tag=%llu (arw=0x%08x): label=%03llo, sdi=%llu, data=%05llX\n\r", iMsg, p->
timeTag, p->
data, label, sdi, data);
}
}
}while(!rc && msgReadCnt);
}
if (rec429)
free(rec429);
return rc;
}