MX Foundation 4
dac.c
/*****************************************************************************
//
// File:
// dac.c
//
// Copyright (c) MAX Technologies Inc. 1988-2021, All Rights Reserved.
// CONFIDENTIAL AND PROPRIETARY INFORMATION WHICH IS THE
// PROPERTY OF MAX TECHNOLOGIES INC.
//
// This example demonstrates the configuration of an IPM-DAC module and perform
// basic transmission on one single-ended channel.
//
// Hardware requirements:
// - MAXT 500 series carrier with IPM-DAC (jumpers must be set for +/- 10V operation).
//
*****************************************************************************/
#include "example.h"
int main(void)
{
uint32 rc;
HMXF_SERVER server;
HMXF_MODULE module=0;
HMXF_CHANNEL txChn=0;
HMXF_BUFFER txBuffer;
// Connect to services and initialize environment
rc = mxfServerConnect("0.0.0.0", "", "", FALSE, &server);
if (rc != MAXT_SUCCESS)
{
printf("Failed to connect; rc=0x%08x", rc);
printf("\nPress a key to terminate\n");
getchar();
return 0;
}
// Initialize the server
printf("\nStarting\n");
rc = mxfSystemInit(server);
// Get a handle to first Analog IPM-DAC channel
if (!rc)
rc = mxfChannelGet(server, MXF_CLASS_ANALOG, MXF_SCLASS_TX_CHANNEL, MXF_MODULE_ALL, 0, &txChn);
if (!rc)
rc = mxfChannelInfoGet(txChn, NULL, &module);
// Set time base
if(!rc)
rc = mxfSystemTimeBaseSet(server, MXF_TIMEBASE_DEVICE_USEC);
// Set the outut range to +/-10v
if(!rc)
rc = mxfAttributeUint64Set(module, KMXF_ANALOG_MODULE_DAC_OUTPUT_RANGE, VMXF_ANALOG_MODULE_DAC_OUTPUT_RANGE_10v);
if(!rc)
{
// Allocate TX aperiodic buffer
rc = mxfTxAperiodicBufferAlloc(txChn, MXF_TXAPERIODIC_PRIORITY_NORMAL, sizeof(recANALOG), &txBuffer, NULL);
if(!rc)
{
recANALOG.timeTag = 0;
recANALOG.control = 0;
recANALOG.repeatCount = 1;
recANALOG.reserved = 0;
recANALOG.data.value = 2.5;
rc = mxfAnalogTxAperiodicWrite(txBuffer, MXF_TXAPERIODIC_FLAG_DEFAULT, 0, 1, &recANALOG);
}
}
if (rc)
{
char buffer[256];
if (mxfSystemErrorStringGet(server, rc, sizeof(buffer), buffer))
sprintf(buffer, "ERROR # 0x%08X", rc);
printf("%s\n\r", buffer);
}
// Terminate
printf("\nPress enter to terminate\n");
getchar();
return rc;
}
Updated 10/23/2023