MX Foundation 4
Resources Structure

Basics Concepts and Terminology

The hardware architecture of the MAX Technologies products (devices with modules) and the software design of the API services are closely related. In this section, the basic terminology that needs to be learned in order to use the services will be explained.

Without formally defining at this point all details of the implementation, the hierarchical view of the software and hardware structure is presented below;


Client <–> MX Foundation API <–> Server <–> Device <–> Module <–> Channel Class <–> Channel <–> Physical Port

Figure 1: Resources Structure Organization

The previous diagram can be described as follows:

  • A user written application to control or monitor a data bus is called a client application. This application can access MXF4 services through a PCIe/PXIe, Ethernet or USB connection to the MAX Technologies hardware.
  • For an Ethernet or USB connection, MXF4 translates the user's function calls into commands sent to the device server application that will in turn call the corresponding MXF4 functions on the device.
  • Each device can support one or multiple protocols on units called modules.
  • Each module has one or more channels, which are channel class objects. These objects are used to access the physical ports.

This hierarchy becomes obvious in an application where each resource is defined by a HANDLE. A handle is an identifier used for accessing a specific resource. All the handles are logically linked to form the core structure of an application.

MX Foundation API

MX Foundation 4 (MXF4) is the API that the client application needs to call to access the MAXT hardware.

MXF4 is based on a client / server architecture.

The first step to communicate with MXF4 is to establish a connection to it with one of the mxfConnect functions. These functions will return a handle of type HMXF_SERVER that will be used later with other function calls.

The connection can be PCIe/PXIe, Ethernet or USB.

The second step is to initialize the library by calling the mxfSystemInit() function. The initialization will detect the installed devices and modules.

The System, Time and Network sections define the functions that can be used with a server handle.

The complete description of the Client / Server server functions is given in the section Client/Server.

Device

A device is a piece of MAXT hardware on which modules are located. For example, the Flex1553-PCIe is a device on which five modules are available.

The table below lists the supported device:

Device Constant Description
MXF_DEVICE_FLEX1553_PCIE Flex1553-PCIe
MXF_DEVICE_FLEXMULTI_1553 FlexMulti 1553
MXF_DEVICE_FLEXMULTI_629 FlexMulti 629
MXF_DEVICE_FLEXMULTI_664 FlexMulti 664
MXF_DEVICE_FLEXMULTI_429 FlexMulti 429
MXF_DEVICE_FLEXMULTI FlexMulti
MXF_DEVICE_PCIE502 MAXPCIe 502 carrier
MXF_DEVICE_PXIE500 MAXPXIe 500 carrier
MXF_DEVICE_FMOB429_PLUS FlexMobile 429+
MXF_DEVICE_FLEXMAX_3U FlexMAX 3U
MXF_DEVICE_FLEXMAX_1U FlexMAX 1U
MXF_DEVICE_RELAYBOX RelayBox

The mxfSystemDeviceGet() function can be used to get the reference to a device. A handle of type HMXF_DEVICE will be returned. This handle will be used later with other function calls.

Module

A module is a functional unit on a device, and contains one or more channels.

Depending on the device type one or more modules can be part of the device.

The table below lists the supported modules:

Module Constant Description
MXF_MODULE_MIL1553MRT_EH MIL-1553 Enhanced
MXF_MODULE_A429_EH ARINC 429 Enhanced
MXF_MODULE_ASYNC_EH ASYNC serial RS-422/485 Enhanced
MXF_MODULE_DIOFIFO_EH Discrete I/O Enhanced
MXF_MODULE_MULTI_EH Multi Enhanced
MXF_MODULE_A629MRT_EH ARINC 629 Enhanced
MXF_MODULE_A708_EH ARINC 708 Enhanced
MXF_MODULE_A664 ARINC 664
MXF_MODULE_CANBUS CAN bus
MXF_MODULE_A429E IPM-429 module
MXF_MODULE_ADC IPM-ADC module
MXF_MODULE_DAC IPM-DAC module
MXF_MODULE_ASYNC IPM-ASYNC module
MXF_MODULE_A708 IPM-708 module
MXF_MODULE_A629MRT_REV2 IPM-629 module
MXF_MODULE_MULTI IPM-MULTI module
MXF_MODULE_HFCE IPM-HFCE module
MXF_MODULE_MIL1553MRT IPM-1553-MRT module
MXF_MODULE_ASCBMRT IPM-ASCB module
MXF_MODULE_DIOFIFO24DIFF IPM-DIO-24 module
MXF_MODULE_DIO48 IPM-DIO-48 module
MXF_MODULE_DIOFIFO48 IPM-DIO-48-FIFO module
MXF_MODULE_FLEXDIO FlexMAX DIO module
MXF_MODULE_FLEXADC FlexMAX ADC module
MXF_MODULE_FLEXDAC FlexMAX DAC module
MXF_MODULE_FLEX429 FlexMAX 429 module

For instance, the Flex1553-PCIe has five modules: two MXF_MODULE_MIL1553MRT_EH, one MXF_MODULE_A429_EH, one MXF_MODULE_ASYNC_EH and one MXF_MODULE_DIOFIFO_EH.

The mxfDeviceModuleGet() function can be used to get the reference to a module. A handle of type HMXF_MODULE will be returned. This handle will be used later with other function calls.

Channel Class


At the heart of the MX Foundation multi-protocol library is the channel class concept.

Each of the communication channels (path to a port) supported by the MXF4 function libraries belongs to a channel class.

A channel class is specific to a given communication protocol or legacy I/O and provides channel abstraction and services encapsulation. MX Foundation provides a consistent set of services working the same way regardless of the channel classes.

The table below lists the supported channel class:

Channel Class Constant Description
MXF_CLASS_MIL1553 MIL-1553
MXF_CLASS_A429 ARINC 429
MXF_CLASS_ASYNC_ENHANCED ASYNC serial RS-422/485
MXF_CLASS_DISCRETE Discrete I/O
MXF_CLASS_ANALOG Analog IO
MXF_CLASS_CSDB CSDB
MXF_CLASS_ASCB ASCB
MXF_CLASS_A629 ARINC 629
MXF_CLASS_A717 ARINC 717
MXF_CLASS_A708 ARINC 708
MXF_CLASS_HDLC HDLC/SDLC
MXF_CLASS_CLOCK CLOCK
MXF_CLASS_PULSE Pulse
MXF_CLASS_HANDSHAKE Handshake
MXF_CLASS_HFCE HFCE
MXF_CLASS_A664 ARINC 664
MXF_CLASS_CANBUS CAN
MXF_CLASS_FLEXDIO Flex Discrete IO
MXF_CLASS_FLEXANALOG Flex Analog IO

A handle to a channel can be obtained with the mxfModuleChannelGet() or the mxfModuleChannelAllGet() function. A handle of type HMXF_CHANNEL will be returned. This handle will be used later with other function calls.

Using the channel handle, MX Foundation can easily retrieve all of the channel attributes and perform operations in accordance with the channel class.

Updated 10/23/2023