MX Foundation 4
device_info.cs
/*****************************************************************************
//
// File:
// device_info.cs
//
// Copyright (c) MAX Technologies Inc. 1988-2019, All Rights Reserved.
// CONFIDENTIAL AND PROPRIETARY INFORMATION WHICH IS THE
// PROPERTY OF MAX TECHNOLOGIES INC.
//
// This example demonstrates the basic usage of device management functions.
//
// Hardware requirements:
// - MAXT Flex1553-PCIe or FlexMulti.
//
*****************************************************************************/
//#define LOCAL
using System;
using static MAXT.MXFoundation.mxf;
using System.Text;
using System.Runtime.InteropServices;
namespace DeviceMgmt_example
{
class device_info
{
static void Main(string[] args)
{
UInt32 rc;
UInt64 server;
UInt64 device = 0;
var deviceInfo = new MXF_DEVICE_INFO();
var flashInfo = new MXF_FLASH_INFO();
UInt64 deviceIndex = 0;
UInt64 i;
var sensors = new MXF_SENSOR_VALUE[32];
UInt64 sensorsCount = 0;
var sensorInfo = new MXF_SENSOR_INFO();
// Connect to services and initialize environment
#if LOCAL
rc = mxfServerConnect("0.0.0.0", "", "", 0, out server);
#else
rc = mxfServerConnect("192.168.0.1", "admin", "admin", 0, out server);
#endif
if (rc == MAXT_SUCCESS)
rc = mxfSystemDeviceGet(server, deviceIndex, out device);
// Read device information
if (rc == MAXT_SUCCESS)
rc = mxfDeviceInfoGet(device, out deviceInfo);
// Read device flash information
if (rc == MAXT_SUCCESS)
rc = mxfDeviceFlashInfoRead(device, -1, out flashInfo);
// Read device sensors
if (rc == MAXT_SUCCESS)
rc = mxfSensorsReadAll(device, 32, out sensorsCount, sensors);
if (rc == MAXT_SUCCESS)
{
// Display device/sensors/modules informations
Console.Write("\n\r");
Console.Write("Device #{0} \n\r", deviceInfo.deviceIndex);
Console.Write("--------- \n\r");
Console.Write("\n\r");
Console.Write(" Name : {0} \n\r", deviceInfo.name);
Console.Write(" Revision : {0} \n\r", deviceInfo.deviceRev);
Console.Write(" Part Number : {0} \n\r", flashInfo.partNumber);
Console.Write(" Serial Number : {0} \n\r", flashInfo.serialNumber);
Console.Write(" PCB Version : {0} \n\r", flashInfo.pcbVersion);
Console.Write(" Modification Rev : {0} \n\r", flashInfo.modificationRev);
for (i = 0; i < deviceInfo.revisionCount; i++)
Console.Write(" {0,-19}: {1} \n\r", deviceInfo.revisions[i].name, deviceInfo.revisions[i].rev);
for (i = 0; i < flashInfo.revisionCount; i++)
Console.Write(" {0,-19}: {1}", flashInfo.revisions[i].name, flashInfo.revisions[i].rev);
Console.Write(" MAC address : {0} \n", flashInfo.macAddress);
Console.Write(" IP address : {0} \n", flashInfo.ipAddress);
Console.Write(" IP Netmask : {0} \n", flashInfo.ipNetMask);
Console.Write("\n\r");
Console.Write("Sensors \n\r");
Console.Write("------- \n\r");
Console.Write("\n\r");
for (i = 0; i < sensorsCount && rc == MAXT_SUCCESS; i++)
{
rc = mxfSensorsInfoGet(device, sensors[i].sensorId, out sensorInfo);
if (rc == MAXT_SUCCESS)
Console.Write(" {0,-19}: {1:F2} {2}\n\r", sensorInfo.name, sensors[i].value, sensorInfo.unit);
}
Console.Write("\n\r");
Console.Write("Modules \n\r");
Console.Write("------- \n\r");
Console.Write("\n\r");
for (i = 0; i < deviceInfo.moduleCount; i++)
{
Console.Write(" IO # {0} : {1} \n\r", deviceInfo.modules[i].position, deviceInfo.modules[i].name);
Console.Write(" Type: {0:00}, Rev: {1}, RX Nb: {2:00}, TX Nb: {3:00}, Discrete Nb: {4:00} \n\r",
deviceInfo.modules[i].type,
deviceInfo.modules[i].rev,
deviceInfo.modules[i].rxCount,
deviceInfo.modules[i].txCount,
deviceInfo.modules[i].discreteCount);
}
}
// Catch any previous failing function
if (rc != MAXT_SUCCESS)
{
var buffer = new StringBuilder(256);
if (mxfSystemErrorStringGet(server, rc, (UInt32)Marshal.SizeOf(buffer), buffer) != 0)
Console.Write(buffer + "ERROR # 0x{0:X8}", rc);
Console.Write("{0}\n\r", buffer);
}
// Disconnect from MX Foundation library
Console.Write("\n\rPress a key to terminate\n\r");
Console.ReadKey();
return;
}
}
}
Updated 10/23/2023