using System;
using static MAXT.MXFoundation.mxf;
using System.Text;
using System.Runtime.InteropServices;
namespace DeviceMgmt_example
{
class selfTests
{
const int EXT_LOOPBACK = 1;
static void Main(string[] args)
{
UInt32 rc;
UInt64 server;
UInt64 device = 0;
UInt64 result = 0;
StringBuilder info = new StringBuilder("", 256);
StringBuilder diagnostic = new StringBuilder("", 256);
UInt64 zone = 0;
UInt64 port;
int testCnt = 0;
int failCnt = 0;
#if LOCAL
#else
#endif
if (rc != MAXT_SUCCESS)
{
Console.Write("Failed to connect; rc=0x%08x", rc);
Console.ReadKey();
return;
}
if (rc == MAXT_SUCCESS)
Console.Write("Starting ...\n\n");
if (rc == MAXT_SUCCESS)
Console.Write("mxfSelfTestMEMORY(EXHAUSTIVE) ... ");
rc =
mxfSelfTestMEMORY(device, MXF_SELFTEST_LEVEL_EXHAUSTIVE, out result, info, diagnostic);
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestMILSTD1553(port #{0}) ... ", port);
rc =
mxfSelfTestMILSTD1553(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestEBR1553(port #{0}) ... ", port);
rc =
mxfSelfTestEBR1553(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestSERIALASYNC(port #{0}) ... ", port);
rc =
mxfSelfTestSERIALASYNC(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestARINC429(port #{0}) ... ", port);
rc =
mxfSelfTestARINC429(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestARINC717(port #{0}) ... ", port);
rc =
mxfSelfTestARINC717(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestHDLC(port #{0}) ... ", port);
rc =
mxfSelfTestHDLC(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestCSDB(port #{0}) ... ", port);
rc =
mxfSelfTestCSDB(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestARINC629(port #{0}) ... ", port);
rc =
mxfSelfTestARINC629(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestDISCRETE(port #{0}) ... ", port);
rc =
mxfSelfTestDISCRETE(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (port = 0; ; port++)
{
Console.Write("mxfSelfTestARINC708(port #{0}) ... ", port);
rc =
mxfSelfTestARINC708(device, port, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
if (rc == MAXT_ERROR_PORT_NOT_FOUND) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (zone = 0; ; zone++)
{
double value;
Console.Write("mxfSelfTestVOLTAGE({0}) ... ", zone);
if (rc == MAXT_ERROR_ZONE) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
Console.Write(" value = {0:F2} \n", value);
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (zone = 0; ; zone++)
{
double value;
Console.Write("mxfSelfTestCURRENT({0}) ... ", zone);
if (rc == MAXT_ERROR_ZONE) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
Console.Write(" value = {0:F2} \n", value);
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
for (zone = 0; ; zone++)
{
double value;
Console.Write("mxfSelfTestTEMPERATURE({0}) ... ", zone);
if (rc == MAXT_ERROR_ZONE) { rc = 0; Console.Write("\r \r"); break; }
Console.Write("\n");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
Console.Write(" value = {0:F2} \n", value);
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
Console.Write("mxfSelfTestRTCLK() ... ");
rc =
mxfSelfTestRTCLK(device, MXF_SELFTEST_LEVEL_QUICK, out result, info, diagnostic);
if(rc == MAXT_ERROR_NOT_SUPPORTED)
{
rc = MAXT_SUCCESS;
Console.Write("\r \r");
}
else
{
Console.WriteLine("");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
Console.Write("mxfSelfTestDEBUGCOMPORT() ... ");
if(rc == MAXT_ERROR_NOT_SUPPORTED)
{
rc = MAXT_SUCCESS;
Console.Write("\r \r");
}
else
{
Console.WriteLine("");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
Console.Write("mxfSelfTestNVSTORAGE() ... ");
if((rc == MAXT_ERROR_NVSTORAGE_NOT_FOUND) || (rc == MAXT_ERROR_FUNCTION_NOT_IMPLEMENTED))
{
rc = MAXT_SUCCESS;
Console.Write("\r \r");
}
else
{
Console.WriteLine("");
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
}
Console.Write("mxfSelfTestSYNCIO() ... \n");
rc =
mxfSelfTestSYNCIO(device, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
Console.Write("mxfSelfTestIRIGB(Digital) ... \n");
rc =
mxfSelfTestIRIGB(device, MXF_SELFTEST_IRIGB_SIGNAL_DIGITAL, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
#if IRIG_AM
Console.Write("mxfSelfTestIRIGB(AM) ... \n");
rc =
mxfSelfTestIRIGB(device, MXF_SELFTEST_IRIGB_SIGNAL_AM, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc > 0)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
Console.Write("mxfSelfTestIRIGB(AM+1PPS External Signal) ... \n");
rc =
mxfSelfTestIRIGB(device, MXF_SELFTEST_IRIGB_SIGNAL_AM_1PPS, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
testCnt++; if (rc > 0 || result > 0) failCnt++;
if (rc > 0)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
#endif
#if LOCAL
Console.Write("mxfSelfTestETHERNET() ... \n");
rc =
mxfSelfTestETHERNET(device, 0, MXF_SELFTEST_LEVEL_QUICK, EXT_LOOPBACK, out result, info, diagnostic);
testCnt++; if (rc >0 || result > 0) failCnt++;
if (rc != MAXT_SUCCESS)
{
Console.Write(" ERROR = 0x{0:X8} \n", rc);
}
else
{
Console.Write(" info = {0} \n", info);
Console.Write(" Result = {0} \n", result > 0 ? "FAILED" : "PASSED");
if (result > 0)
Console.Write(" diagnostic = {0} \n", diagnostic);
}
Console.Write(" \n");
#endif
Console.Write(" --------------------------------------- \n");
Console.Write(" TEST {0} ", failCnt > 0 ? "FAILED" : "PASSED");
if (failCnt > 0)
Console.Write("({0} of {1} tests failed) \n", failCnt, testCnt);
else
Console.Write("\n");
Console.Write(" --------------------------------------- \n");
Console.Write("\n");
if (rc != MAXT_SUCCESS)
{
var errorString = new StringBuilder(256);
Console.Write(errorString + "ERROR # 0x{0:X8}", rc);
Console.Write("{0}\n\r", errorString);
}
Console.Write("\nPress a key to terminate\n");
Console.ReadKey();
return;
}
}
}