| /* |
| * FPGA Interface C API 2.0 header file. |
| * |
| * Copyright (c) 2011, |
| * National Instruments Corporation. |
| * All rights reserved. |
| */ |
| |
| #ifndef __NiFpga_h__ |
| #define __NiFpga_h__ |
| |
| /* |
| * Determine platform details. |
| */ |
| #if defined(_M_IX86) \ |
| || defined(_M_X64) \ |
| || defined(i386) \ |
| || defined(__i386__) \ |
| || defined(__amd64__) \ |
| || defined(__amd64) \ |
| || defined(__x86_64__) \ |
| || defined(__x86_64) \ |
| || defined(__i386) \ |
| || defined(_X86_) \ |
| || defined(__THW_INTEL__) \ |
| || defined(__I86__) \ |
| || defined(__INTEL__) \ |
| || defined(__X86__) \ |
| || defined(__386__) \ |
| || defined(__I86__) \ |
| || defined(M_I386) \ |
| || defined(M_I86) \ |
| || defined(_M_I386) \ |
| || defined(_M_I86) |
| #if defined(_WIN32) \ |
| || defined(_WIN64) \ |
| || defined(__WIN32__) \ |
| || defined(__TOS_WIN__) \ |
| || defined(__WINDOWS__) \ |
| || defined(_WINDOWS) \ |
| || defined(__WINDOWS_386__) \ |
| || defined(__CYGWIN__) |
| /* Either Windows or Phar Lap ETS. */ |
| #define NiFpga_Windows 1 |
| #elif defined(__linux) \ |
| || defined(__linux__) \ |
| || defined(__gnu_linux__) \ |
| || defined(linux) |
| #define NiFpga_Linux 1 |
| #else |
| #error Unsupported OS. |
| #endif |
| #elif defined(__powerpc) \ |
| || defined(__powerpc__) \ |
| || defined(__POWERPC__) \ |
| || defined(__ppc__) \ |
| || defined(__PPC) \ |
| || defined(_M_PPC) \ |
| || defined(_ARCH_PPC) \ |
| || defined(__PPC__) \ |
| || defined(__ppc) |
| #if defined(__vxworks) |
| #define NiFpga_VxWorks 1 |
| #else |
| #error Unsupported OS. |
| #endif |
| #else |
| #error Unsupported architecture. |
| #endif |
| |
| /* |
| * Determine compiler. |
| */ |
| #if defined(_MSC_VER) |
| #define NiFpga_Msvc 1 |
| #elif defined(__GNUC__) |
| #define NiFpga_Gcc 1 |
| #elif defined(_CVI_) && !defined(_TPC_) |
| #define NiFpga_Cvi 1 |
| /* Enables CVI Library Protection Errors. */ |
| #pragma EnableLibraryRuntimeChecking |
| #else |
| /* Unknown compiler. */ |
| #endif |
| |
| /* |
| * Determine compliance with different C/C++ language standards. |
| */ |
| #if defined(__cplusplus) |
| #define NiFpga_Cpp 1 |
| #if __cplusplus >= 199707L |
| #define NiFpga_Cpp98 1 |
| #endif |
| #endif |
| #if defined(__STDC__) |
| #define NiFpga_C89 1 |
| #if defined(__STDC_VERSION__) |
| #define NiFpga_C90 1 |
| #if __STDC_VERSION__ >= 199409L |
| #define NiFpga_C94 1 |
| #if __STDC_VERSION__ >= 199901L |
| #define NiFpga_C99 1 |
| #endif |
| #endif |
| #endif |
| #endif |
| |
| /* |
| * Determine ability to inline functions. |
| */ |
| #if NiFpga_Cpp || NiFpga_C99 |
| /* The inline keyword exists in C++ and C99. */ |
| #define NiFpga_Inline inline |
| #elif NiFpga_Msvc |
| /* Visual C++ (at least since 6.0) also supports an alternate keyword. */ |
| #define NiFpga_Inline __inline |
| #elif NiFpga_Gcc |
| /* GCC (at least since 2.95.2) also supports an alternate keyword. */ |
| #define NiFpga_Inline __inline__ |
| #elif !defined(NiFpga_Inline) |
| /* |
| * Disable inlining if inline support is unknown. To manually enable |
| * inlining, #define the following macro before #including NiFpga.h: |
| * |
| * #define NiFpga_Inline inline |
| */ |
| #define NiFpga_Inline |
| #endif |
| |
| /* |
| * Define exact-width integer types, if they have not already been defined. |
| */ |
| #if NiFpga_ExactWidthIntegerTypesDefined \ |
| || defined(_STDINT) \ |
| || defined(_STDINT_H) \ |
| || defined(_STDINT_H_) \ |
| || defined(_INTTYPES_H) \ |
| || defined(_INTTYPES_H_) \ |
| || defined(_SYS_STDINT_H) \ |
| || defined(_SYS_STDINT_H_) \ |
| || defined(_SYS_INTTYPES_H) \ |
| || defined(_SYS_INTTYPES_H_) \ |
| || defined(_STDINT_H_INCLUDED) \ |
| || defined(BOOST_CSTDINT_HPP) \ |
| || defined(_MSC_STDINT_H_) \ |
| || defined(_PSTDINT_H_INCLUDED) |
| /* Assume that exact-width integer types have already been defined. */ |
| #elif NiFpga_VxWorks |
| #include <vxWorks.h> |
| #elif NiFpga_C99 \ |
| || NiFpga_Gcc /* GCC (at least since 3.0) has a stdint.h. */ \ |
| || defined(HAVE_STDINT_H) |
| /* Assume that stdint.h can be included. */ |
| #include <stdint.h> |
| #elif NiFpga_Msvc \ |
| || NiFpga_Cvi |
| /* Manually define exact-width integer types. */ |
| typedef signed char int8_t; |
| typedef unsigned char uint8_t; |
| typedef short int16_t; |
| typedef unsigned short uint16_t; |
| typedef int int32_t; |
| typedef unsigned int uint32_t; |
| typedef __int64 int64_t; |
| typedef unsigned __int64 uint64_t; |
| #else |
| /* |
| * Exact-width integer types must be defined by the user, and the following |
| * macro must be #defined, before #including NiFpga.h: |
| * |
| * #define NiFpga_ExactWidthIntegerTypesDefined 1 |
| */ |
| #error Exact-width integer types must be defined by the user. See comment. |
| #endif |
| |
| /* Included for definition of size_t. */ |
| #include <stddef.h> |
| |
| #if NiFpga_Cpp |
| extern "C" { |
| #endif |
| |
| /** |
| * A boolean value; either NiFpga_False or NiFpga_True. |
| */ |
| typedef uint8_t NiFpga_Bool; |
| |
| /** |
| * Represents a false condition. |
| */ |
| static const NiFpga_Bool NiFpga_False = 0; |
| |
| /** |
| * Represents a true condition. |
| */ |
| static const NiFpga_Bool NiFpga_True = 1; |
| |
| /** |
| * Represents the resulting status of a function call through its return value. |
| * 0 is success, negative values are errors, and positive values are warnings. |
| */ |
| typedef int32_t NiFpga_Status; |
| |
| /** |
| * No errors or warnings. |
| */ |
| static const NiFpga_Status NiFpga_Status_Success = 0; |
| |
| /** |
| * The timeout expired before the FIFO operation could complete. |
| */ |
| static const NiFpga_Status NiFpga_Status_FifoTimeout = -50400; |
| |
| /** |
| * A memory allocation failed. Try again after rebooting. |
| */ |
| static const NiFpga_Status NiFpga_Status_MemoryFull = -52000; |
| |
| /** |
| * An unexpected software error occurred. |
| */ |
| static const NiFpga_Status NiFpga_Status_SoftwareFault = -52003; |
| |
| /** |
| * A parameter to a function was not valid. This could be a NULL pointer, a bad |
| * value, etc. |
| */ |
| static const NiFpga_Status NiFpga_Status_InvalidParameter = -52005; |
| |
| /** |
| * A required resource was not found. The NiFpga.* library, the RIO resource, |
| * or some other resource may be missing, or the NiFpga.* library may not be |
| * the required minimum version. |
| */ |
| static const NiFpga_Status NiFpga_Status_ResourceNotFound = -52006; |
| |
| /** |
| * A required resource was not properly initialized. This could occur if |
| * NiFpga_Initialize was not called or a required NiFpga_IrqContext was not |
| * reserved. |
| */ |
| static const NiFpga_Status NiFpga_Status_ResourceNotInitialized = -52010; |
| |
| /** |
| * The FPGA is already running. |
| */ |
| static const NiFpga_Status NiFpga_Status_FpgaAlreadyRunning = -61003; |
| |
| /** |
| * The bitfile was not compiled for the specified resource's device type. |
| */ |
| static const NiFpga_Status NiFpga_Status_DeviceTypeMismatch = -61024; |
| |
| /** |
| * An error was detected in the communication between the host computer and the |
| * FPGA target. |
| */ |
| static const NiFpga_Status NiFpga_Status_CommunicationTimeout = -61046; |
| |
| /** |
| * The timeout expired before any of the IRQs were asserted. |
| */ |
| static const NiFpga_Status NiFpga_Status_IrqTimeout = -61060; |
| |
| /** |
| * The specified bitfile is invalid or corrupt. |
| */ |
| static const NiFpga_Status NiFpga_Status_CorruptBitfile = -61070; |
| |
| /** |
| * The FIFO depth is invalid. It was either 0, greater than the amount of |
| * available memory in the host computer, or greater than the maximum size |
| * allowed by the hardware. |
| */ |
| static const NiFpga_Status NiFpga_Status_BadDepth = -61072; |
| |
| /** |
| * The number of FIFO elements is invalid. Either the number is greater than |
| * the depth of the host memory DMA FIFO, or more elements were requested for |
| * release than had been acquired. |
| */ |
| static const NiFpga_Status NiFpga_Status_BadReadWriteCount = -61073; |
| |
| /** |
| * A hardware clocking error occurred. A derived clock lost lock with its base |
| * clock during the execution of the LabVIEW FPGA VI. If any base clocks with |
| * derived clocks are referencing an external source, make sure that the |
| * external source is connected and within the supported frequency, jitter, |
| * accuracy, duty cycle, and voltage specifications. Also verify that the |
| * characteristics of the base clock match the configuration specified in the |
| * FPGA Base Clock Properties. If all base clocks with derived clocks are |
| * generated from free-running, on-board sources, please contact National |
| * Instruments technical support at ni.com/support. |
| */ |
| static const NiFpga_Status NiFpga_Status_ClockLostLock = -61083; |
| |
| /** |
| * Operation could not be performed because the FPGA is busy. Stop all the |
| * activities on the FPGA before requesting this operation. |
| */ |
| static const NiFpga_Status NiFpga_Status_FpgaBusy = -61141; |
| |
| /** |
| * Operation could not be performed because the FPGA is busy operating in FPGA |
| * Interface C API mode. Stop all the activities on the FPGA before requesting |
| * this operation. |
| */ |
| static const NiFpga_Status NiFpga_Status_FpgaBusyFpgaInterfaceCApi = -61200; |
| |
| /** |
| * The chassis is in Scan Interface programming mode. In order to run FPGA VIs, |
| * you must go to the chassis properties page, select FPGA programming mode, |
| * and deploy settings. |
| */ |
| static const NiFpga_Status NiFpga_Status_FpgaBusyScanInterface = -61201; |
| |
| /** |
| * Operation could not be performed because the FPGA is busy operating in FPGA |
| * Interface mode. Stop all the activities on the FPGA before requesting this |
| * operation. |
| */ |
| static const NiFpga_Status NiFpga_Status_FpgaBusyFpgaInterface = -61202; |
| |
| /** |
| * Operation could not be performed because the FPGA is busy operating in |
| * Interactive mode. Stop all the activities on the FPGA before requesting this |
| * operation. |
| */ |
| static const NiFpga_Status NiFpga_Status_FpgaBusyInteractive = -61203; |
| |
| /** |
| * Operation could not be performed because the FPGA is busy operating in |
| * Emulation mode. Stop all the activities on the FPGA before requesting this |
| * operation. |
| */ |
| static const NiFpga_Status NiFpga_Status_FpgaBusyEmulation = -61204; |
| |
| /** |
| * An unexpected internal error occurred. |
| */ |
| static const NiFpga_Status NiFpga_Status_InternalError = -61499; |
| |
| /** |
| * Access to the remote system was denied. Use MAX to check the Remote Device |
| * Access settings under Software>>NI-RIO>>NI-RIO Settings on the remote system. |
| */ |
| static const NiFpga_Status NiFpga_Status_AccessDenied = -63033; |
| |
| /** |
| * A connection could not be established to the specified remote device. Ensure |
| * that the device is on and accessible over the network, that NI-RIO software |
| * is installed, and that the RIO server is running and properly configured. |
| */ |
| static const NiFpga_Status NiFpga_Status_RpcConnectionError = -63040; |
| |
| /** |
| * The RPC session is invalid. The target may have reset or been rebooted. Check |
| * the network connection and retry the operation. |
| */ |
| static const NiFpga_Status NiFpga_Status_RpcSessionError = -63043; |
| |
| /** |
| * A Read FIFO or Write FIFO function was called while the host had acquired |
| * elements of the FIFO. Release all acquired elements before reading or |
| * writing. |
| */ |
| static const NiFpga_Status NiFpga_Status_FifoElementsCurrentlyAcquired = -63083; |
| |
| /** |
| * The bitfile could not be read. |
| */ |
| static const NiFpga_Status NiFpga_Status_BitfileReadError = -63101; |
| |
| /** |
| * The specified signature does not match the signature of the bitfile. If the |
| * bitfile has been recompiled, regenerate the C API and rebuild the |
| * application. |
| */ |
| static const NiFpga_Status NiFpga_Status_SignatureMismatch = -63106; |
| |
| /** |
| * Either the supplied resource name is invalid as a RIO resource name, or the |
| * device was not found. Use MAX to find the proper resource name for the |
| * intended device. |
| */ |
| static const NiFpga_Status NiFpga_Status_InvalidResourceName = -63192; |
| |
| /** |
| * The requested feature is not supported. |
| */ |
| static const NiFpga_Status NiFpga_Status_FeatureNotSupported = -63193; |
| |
| /** |
| * The NI-RIO software on the remote system is not compatible with the local |
| * NI-RIO software. Upgrade the NI-RIO software on the remote system. |
| */ |
| static const NiFpga_Status NiFpga_Status_VersionMismatch = -63194; |
| |
| /** |
| * The session is invalid or has been closed. |
| */ |
| static const NiFpga_Status NiFpga_Status_InvalidSession = -63195; |
| |
| /** |
| * The maximum number of open FPGA sessions has been reached. Close some open |
| * sessions. |
| */ |
| static const NiFpga_Status NiFpga_Status_OutOfHandles = -63198; |
| |
| /** |
| * Tests whether a status is an error. |
| * |
| * @param status status to check for an error |
| * @return whether the status was an error |
| */ |
| static NiFpga_Inline NiFpga_Bool NiFpga_IsError(const NiFpga_Status status) |
| { |
| return status < NiFpga_Status_Success; |
| } |
| |
| /** |
| * Tests whether a status is not an error. Success and warnings are not errors. |
| * |
| * @param status status to check for an error |
| * @return whether the status was a success or warning |
| */ |
| static NiFpga_Inline NiFpga_Bool NiFpga_IsNotError(const NiFpga_Status status) |
| { |
| return status >= NiFpga_Status_Success; |
| } |
| |
| /** |
| * Conditionally sets the status to a new value. The previous status is |
| * preserved unless the new status is more of an error, which means that |
| * warnings and errors overwrite successes, and errors overwrite warnings. New |
| * errors do not overwrite older errors, and new warnings do not overwrite |
| * older warnings. |
| * |
| * @param status status to conditionally set |
| * @param newStatus new status value that may be set |
| * @return the resulting status |
| */ |
| static NiFpga_Inline NiFpga_Status NiFpga_MergeStatus( |
| NiFpga_Status* const status, |
| const NiFpga_Status newStatus) |
| { |
| if (!status) |
| { |
| return NiFpga_Status_InvalidParameter; |
| } |
| if (NiFpga_IsNotError(*status) |
| && (*status == NiFpga_Status_Success || NiFpga_IsError(newStatus))) |
| { |
| *status = newStatus; |
| } |
| return *status; |
| } |
| |
| /** |
| * This macro evaluates the expression only if the status is not an error. The |
| * expression must evaluate to an NiFpga_Status, such as a call to any NiFpga_* |
| * function, because the status will be set to the returned status if the |
| * expression is evaluated. |
| * |
| * You can use this macro to mimic status chaining in LabVIEW, where the status |
| * does not have to be explicitly checked after each call. Such code may look |
| * like the following example. |
| * |
| * NiFpga_Status status = NiFpga_Status_Success; |
| * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...)); |
| * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...)); |
| * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...)); |
| * |
| * @param status status to check for an error |
| * @param expression expression to call if the incoming status is not an error |
| */ |
| #define NiFpga_IfIsNotError(status, expression) \ |
| if (NiFpga_IsNotError(status)) \ |
| { \ |
| NiFpga_MergeStatus(&status, (expression)); \ |
| } |
| |
| /** |
| * You must call this function before all other function calls. This function |
| * loads the NiFpga library so that all the other functions will work. If this |
| * function succeeds, you must call NiFpga_Finalize after all other function |
| * calls. |
| * |
| * @warning This function is not thread safe. |
| * |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Initialize(void); |
| |
| /** |
| * You must call this function after all other function calls if |
| * NiFpga_Initialize succeeds. This function unloads the NiFpga library. |
| * |
| * @warning This function is not thread safe. |
| * |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Finalize(void); |
| |
| /** |
| * A handle to an FPGA session. |
| */ |
| typedef uint32_t NiFpga_Session; |
| |
| /** |
| * Attributes that NiFpga_Open accepts. |
| */ |
| typedef enum |
| { |
| NiFpga_OpenAttribute_NoRun = 1 |
| } NiFpga_OpenAttribute; |
| |
| /** |
| * Opens a session to the FPGA. This call ensures that the contents of the |
| * bitfile are programmed to the FPGA. The FPGA runs unless the |
| * NiFpga_OpenAttribute_NoRun attribute is used. |
| * |
| * Because different operating systems have different default current working |
| * directories for applications, you must pass an absolute path for the bitfile |
| * parameter. If you pass only the filename instead of an absolute path, the |
| * operating system may not be able to locate the bitfile. For example, the |
| * default current working directories are C:\ni-rt\system\ for Phar Lap ETS and |
| * /c/ for VxWorks. Because the generated *_Bitfile constant is a #define to a |
| * string literal, you can use C/C++ string-literal concatenation to form an |
| * absolute path. For example, if the bitfile is in the root directory of a |
| * Phar Lap ETS system, pass the following for the bitfile parameter. |
| * |
| * "C:\\" NiFpga_MyApplication_Bitfile |
| * |
| * @param bitfile path to the bitfile |
| * @param signature signature of the bitfile |
| * @param resource RIO resource string to open ("RIO0" or "rio://mysystem/RIO") |
| * @param attribute bitwise OR of any NiFpga_OpenAttributes, or 0 |
| * @param session outputs the session handle, which must be closed when no |
| * longer needed |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Open(const char* bitfile, |
| const char* signature, |
| const char* resource, |
| uint32_t attribute, |
| NiFpga_Session* session); |
| |
| /** |
| * Attributes that NiFpga_Close accepts. |
| */ |
| typedef enum |
| { |
| NiFpga_CloseAttribute_NoResetIfLastSession = 1 |
| } NiFpga_CloseAttribute; |
| |
| /** |
| * Closes the session to the FPGA. The FPGA resets unless either another session |
| * is still open or you use the NiFpga_CloseAttribute_NoResetIfLastSession |
| * attribute. |
| * |
| * @param session handle to a currently open session |
| * @param attribute bitwise OR of any NiFpga_CloseAttributes, or 0 |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Close(NiFpga_Session session, |
| uint32_t attribute); |
| |
| /** |
| * Attributes that NiFpga_Run accepts. |
| */ |
| typedef enum |
| { |
| NiFpga_RunAttribute_WaitUntilDone = 1 |
| } NiFpga_RunAttribute; |
| |
| /** |
| * Runs the FPGA VI on the target. If you use NiFpga_RunAttribute_WaitUntilDone, |
| * NiFpga_Run blocks the thread until the FPGA finishes running (if ever). |
| * |
| * @param session handle to a currently open session |
| * @param attribute bitwise OR of any NiFpga_RunAttributes, or 0 |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Run(NiFpga_Session session, |
| uint32_t attribute); |
| |
| /** |
| * Aborts the FPGA VI. |
| * |
| * @param session handle to a currently open session |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Abort(NiFpga_Session session); |
| |
| /** |
| * Resets the FPGA VI. |
| * |
| * @param session handle to a currently open session |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Reset(NiFpga_Session session); |
| |
| /** |
| * Re-downloads the FPGA bitstream to the target. |
| * |
| * @param session handle to a currently open session |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_Download(NiFpga_Session session); |
| |
| /** |
| * Reads a boolean value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadBool(NiFpga_Session session, |
| uint32_t indicator, |
| NiFpga_Bool* value); |
| |
| /** |
| * Reads a signed 8-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadI8(NiFpga_Session session, |
| uint32_t indicator, |
| int8_t* value); |
| |
| /** |
| * Reads an unsigned 8-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadU8(NiFpga_Session session, |
| uint32_t indicator, |
| uint8_t* value); |
| |
| /** |
| * Reads a signed 16-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadI16(NiFpga_Session session, |
| uint32_t indicator, |
| int16_t* value); |
| |
| /** |
| * Reads an unsigned 16-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadU16(NiFpga_Session session, |
| uint32_t indicator, |
| uint16_t* value); |
| |
| /** |
| * Reads a signed 32-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadI32(NiFpga_Session session, |
| uint32_t indicator, |
| int32_t* value); |
| |
| /** |
| * Reads an unsigned 32-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadU32(NiFpga_Session session, |
| uint32_t indicator, |
| uint32_t* value); |
| |
| /** |
| * Reads a signed 64-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadI64(NiFpga_Session session, |
| uint32_t indicator, |
| int64_t* value); |
| |
| /** |
| * Reads an unsigned 64-bit integer value from a given indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param value outputs the value that was read |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadU64(NiFpga_Session session, |
| uint32_t indicator, |
| uint64_t* value); |
| |
| /** |
| * Writes a boolean value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteBool(NiFpga_Session session, |
| uint32_t control, |
| NiFpga_Bool value); |
| |
| /** |
| * Writes a signed 8-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteI8(NiFpga_Session session, |
| uint32_t control, |
| int8_t value); |
| |
| /** |
| * Writes an unsigned 8-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteU8(NiFpga_Session session, |
| uint32_t control, |
| uint8_t value); |
| |
| /** |
| * Writes a signed 16-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteI16(NiFpga_Session session, |
| uint32_t control, |
| int16_t value); |
| |
| /** |
| * Writes an unsigned 16-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteU16(NiFpga_Session session, |
| uint32_t control, |
| uint16_t value); |
| |
| /** |
| * Writes a signed 32-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteI32(NiFpga_Session session, |
| uint32_t control, |
| int32_t value); |
| |
| /** |
| * Writes an unsigned 32-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteU32(NiFpga_Session session, |
| uint32_t control, |
| uint32_t value); |
| |
| /** |
| * Writes a signed 64-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteI64(NiFpga_Session session, |
| uint32_t control, |
| int64_t value); |
| |
| /** |
| * Writes an unsigned 64-bit integer value to a given control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param value value to write |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteU64(NiFpga_Session session, |
| uint32_t control, |
| uint64_t value); |
| |
| /** |
| * Reads an entire array of boolean values from a given array indicator or |
| * control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayBool(NiFpga_Session session, |
| uint32_t indicator, |
| NiFpga_Bool* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of signed 8-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayI8(NiFpga_Session session, |
| uint32_t indicator, |
| int8_t* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of unsigned 8-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayU8(NiFpga_Session session, |
| uint32_t indicator, |
| uint8_t* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of signed 16-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayI16(NiFpga_Session session, |
| uint32_t indicator, |
| int16_t* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of unsigned 16-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayU16(NiFpga_Session session, |
| uint32_t indicator, |
| uint16_t* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of signed 32-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayI32(NiFpga_Session session, |
| uint32_t indicator, |
| int32_t* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of unsigned 32-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayU32(NiFpga_Session session, |
| uint32_t indicator, |
| uint32_t* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of signed 64-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayI64(NiFpga_Session session, |
| uint32_t indicator, |
| int64_t* array, |
| size_t size); |
| |
| /** |
| * Reads an entire array of unsigned 64-bit integer values from a given array |
| * indicator or control. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * indicator or control. |
| * |
| * @param session handle to a currently open session |
| * @param indicator indicator or control from which to read |
| * @param array outputs the entire array that was read |
| * @param size exact number of elements in the indicator or control |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadArrayU64(NiFpga_Session session, |
| uint32_t indicator, |
| uint64_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of boolean values to a given array control or |
| * indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayBool(NiFpga_Session session, |
| uint32_t control, |
| const NiFpga_Bool* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of signed 8-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayI8(NiFpga_Session session, |
| uint32_t control, |
| const int8_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of unsigned 8-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayU8(NiFpga_Session session, |
| uint32_t control, |
| const uint8_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of signed 16-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayI16(NiFpga_Session session, |
| uint32_t control, |
| const int16_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of unsigned 16-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayU16(NiFpga_Session session, |
| uint32_t control, |
| const uint16_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of signed 32-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayI32(NiFpga_Session session, |
| uint32_t control, |
| const int32_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of unsigned 32-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayU32(NiFpga_Session session, |
| uint32_t control, |
| const uint32_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of signed 64-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayI64(NiFpga_Session session, |
| uint32_t control, |
| const int64_t* array, |
| size_t size); |
| |
| /** |
| * Writes an entire array of unsigned 64-bit integer values to a given array |
| * control or indicator. |
| * |
| * @warning The size passed must be the exact number of elements in the |
| * control or indicator. |
| * |
| * @param session handle to a currently open session |
| * @param control control or indicator to which to write |
| * @param array entire array to write |
| * @param size exact number of elements in the control or indicator |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteArrayU64(NiFpga_Session session, |
| uint32_t control, |
| const uint64_t* array, |
| size_t size); |
| |
| /** |
| * Enumeration of all 32 possible IRQs. Multiple IRQs can be bitwise ORed |
| * together like this: |
| * |
| * NiFpga_Irq_3 | NiFpga_Irq_23 |
| */ |
| typedef enum |
| { |
| NiFpga_Irq_0 = 1 << 0, |
| NiFpga_Irq_1 = 1 << 1, |
| NiFpga_Irq_2 = 1 << 2, |
| NiFpga_Irq_3 = 1 << 3, |
| NiFpga_Irq_4 = 1 << 4, |
| NiFpga_Irq_5 = 1 << 5, |
| NiFpga_Irq_6 = 1 << 6, |
| NiFpga_Irq_7 = 1 << 7, |
| NiFpga_Irq_8 = 1 << 8, |
| NiFpga_Irq_9 = 1 << 9, |
| NiFpga_Irq_10 = 1 << 10, |
| NiFpga_Irq_11 = 1 << 11, |
| NiFpga_Irq_12 = 1 << 12, |
| NiFpga_Irq_13 = 1 << 13, |
| NiFpga_Irq_14 = 1 << 14, |
| NiFpga_Irq_15 = 1 << 15, |
| NiFpga_Irq_16 = 1 << 16, |
| NiFpga_Irq_17 = 1 << 17, |
| NiFpga_Irq_18 = 1 << 18, |
| NiFpga_Irq_19 = 1 << 19, |
| NiFpga_Irq_20 = 1 << 20, |
| NiFpga_Irq_21 = 1 << 21, |
| NiFpga_Irq_22 = 1 << 22, |
| NiFpga_Irq_23 = 1 << 23, |
| NiFpga_Irq_24 = 1 << 24, |
| NiFpga_Irq_25 = 1 << 25, |
| NiFpga_Irq_26 = 1 << 26, |
| NiFpga_Irq_27 = 1 << 27, |
| NiFpga_Irq_28 = 1 << 28, |
| NiFpga_Irq_29 = 1 << 29, |
| NiFpga_Irq_30 = 1 << 30, |
| NiFpga_Irq_31 = 1U << 31 |
| } NiFpga_Irq; |
| |
| /** |
| * Represents an infinite timeout. |
| */ |
| static const uint32_t NiFpga_InfiniteTimeout = 0xFFFFFFFF; |
| |
| /** |
| * See NiFpga_ReserveIrqContext for more information. |
| */ |
| typedef void* NiFpga_IrqContext; |
| |
| /** |
| * IRQ contexts are single-threaded; only one thread can wait with a particular |
| * context at any given time. Clients must reserve as many contexts as the |
| * application requires. |
| * |
| * If a context is successfully reserved (the returned status is not an error), |
| * it must be unreserved later. Otherwise a memory leak will occur. |
| * |
| * @param session handle to a currently open session |
| * @param context outputs the IRQ context |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReserveIrqContext(NiFpga_Session session, |
| NiFpga_IrqContext* context); |
| |
| /** |
| * Unreserves an IRQ context obtained from NiFpga_ReserveIrqContext. |
| * |
| * @param session handle to a currently open session |
| * @param context IRQ context to unreserve |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_UnreserveIrqContext(NiFpga_Session session, |
| NiFpga_IrqContext context); |
| |
| /** |
| * This is a blocking function that stops the calling thread until the FPGA |
| * asserts any IRQ in the irqs parameter, or until the function call times out. |
| * Before calling this function, you must use NiFpga_ReserveIrqContext to |
| * reserve an IRQ context. No other threads can use the same context when this |
| * function is called. |
| * |
| * You can use the irqsAsserted parameter to determine which IRQs were asserted |
| * for each function call. |
| * |
| * @param session handle to a currently open session |
| * @param context IRQ context with which to wait |
| * @param irqs bitwise OR of NiFpga_Irqs |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param irqsAsserted if non-NULL, outputs bitwise OR of IRQs that were |
| * asserted |
| * @param timedOut if non-NULL, outputs whether the timeout expired |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WaitOnIrqs(NiFpga_Session session, |
| NiFpga_IrqContext context, |
| uint32_t irqs, |
| uint32_t timeout, |
| uint32_t* irqsAsserted, |
| NiFpga_Bool* timedOut); |
| |
| /** |
| * Acknowledges an IRQ or set of IRQs. |
| * |
| * @param session handle to a currently open session |
| * @param irqs bitwise OR of NiFpga_Irqs |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcknowledgeIrqs(NiFpga_Session session, |
| uint32_t irqs); |
| |
| /** |
| * Specifies the depth of the host memory part of the DMA FIFO. This method is |
| * optional. In order to see the actual depth configured, use |
| * NiFpga_ConfigureFifo2. |
| * |
| * @param session handle to a currently open session |
| * @param fifo FIFO to configure |
| * @param depth requested number of elements in the host memory part of the |
| * DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ConfigureFifo(NiFpga_Session session, |
| uint32_t fifo, |
| size_t depth); |
| |
| /** |
| * Specifies the depth of the host memory part of the DMA FIFO. This method is |
| * optional. |
| * |
| * @param session handle to a currently open session |
| * @param fifo FIFO to configure |
| * @param requestedDepth requested number of elements in the host memory part |
| * of the DMA FIFO |
| * @param actualDepth if non-NULL, outputs the actual number of elements in the |
| * host memory part of the DMA FIFO, which may be more than |
| * the requested number |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ConfigureFifo2(NiFpga_Session session, |
| uint32_t fifo, |
| size_t requestedDepth, |
| size_t* actualDepth); |
| /** |
| * Starts a FIFO. This method is optional. |
| * |
| * @param session handle to a currently open session |
| * @param fifo FIFO to start |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_StartFifo(NiFpga_Session session, |
| uint32_t fifo); |
| |
| /** |
| * Stops a FIFO. This method is optional. |
| * |
| * @param session handle to a currently open session |
| * @param fifo FIFO to stop |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_StopFifo(NiFpga_Session session, |
| uint32_t fifo); |
| |
| /** |
| * Reads from a target-to-host FIFO of booleans. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoBool(NiFpga_Session session, |
| uint32_t fifo, |
| NiFpga_Bool* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of signed 8-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoI8(NiFpga_Session session, |
| uint32_t fifo, |
| int8_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of unsigned 8-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoU8(NiFpga_Session session, |
| uint32_t fifo, |
| uint8_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of signed 16-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoI16(NiFpga_Session session, |
| uint32_t fifo, |
| int16_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of unsigned 16-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoU16(NiFpga_Session session, |
| uint32_t fifo, |
| uint16_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of signed 32-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoI32(NiFpga_Session session, |
| uint32_t fifo, |
| int32_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of unsigned 32-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoU32(NiFpga_Session session, |
| uint32_t fifo, |
| uint32_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of signed 64-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoI64(NiFpga_Session session, |
| uint32_t fifo, |
| int64_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Reads from a target-to-host FIFO of unsigned 64-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param data outputs the data that was read |
| * @param numberOfElements number of elements to read |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReadFifoU64(NiFpga_Session session, |
| uint32_t fifo, |
| uint64_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* elementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of booleans. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoBool(NiFpga_Session session, |
| uint32_t fifo, |
| const NiFpga_Bool* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of signed 8-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoI8(NiFpga_Session session, |
| uint32_t fifo, |
| const int8_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of unsigned 8-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoU8(NiFpga_Session session, |
| uint32_t fifo, |
| const uint8_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of signed 16-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoI16(NiFpga_Session session, |
| uint32_t fifo, |
| const int16_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of unsigned 16-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoU16(NiFpga_Session session, |
| uint32_t fifo, |
| const uint16_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of signed 32-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoI32(NiFpga_Session session, |
| uint32_t fifo, |
| const int32_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of unsigned 32-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoU32(NiFpga_Session session, |
| uint32_t fifo, |
| const uint32_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of signed 64-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoI64(NiFpga_Session session, |
| uint32_t fifo, |
| const int64_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Writes to a host-to-target FIFO of unsigned 64-bit integers. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param data data to write |
| * @param numberOfElements number of elements to write |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param emptyElementsRemaining if non-NULL, outputs the number of empty |
| * elements remaining in the host memory part of |
| * the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_WriteFifoU64(NiFpga_Session session, |
| uint32_t fifo, |
| const uint64_t* data, |
| size_t numberOfElements, |
| uint32_t timeout, |
| size_t* emptyElementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of booleans. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsBool( |
| NiFpga_Session session, |
| uint32_t fifo, |
| NiFpga_Bool** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of signed 8-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsI8( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int8_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of unsigned 8-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsU8( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint8_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of signed 16-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsI16( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int16_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of unsigned 16-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsU16( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint16_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of signed 32-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsI32( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int32_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of unsigned 32-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsU32( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint32_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of signed 64-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsI64( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int64_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for reading from a target-to-host FIFO of unsigned 64-bit |
| * integers. |
| * |
| * Acquiring, reading, and releasing FIFO elements prevents the need to copy |
| * the contents of elements from the host memory buffer to a separate |
| * user-allocated buffer before reading. The FPGA target cannot write to |
| * elements acquired by the host. Therefore, the host must release elements |
| * after reading them. The number of elements acquired may differ from the |
| * number of elements requested if, for example, the number of elements |
| * requested reaches the end of the host memory buffer. Always release all |
| * acquired elements before closing the session. Do not attempt to access FIFO |
| * elements after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo target-to-host FIFO from which to read |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoReadElementsU64( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint64_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of booleans. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsBool( |
| NiFpga_Session session, |
| uint32_t fifo, |
| NiFpga_Bool** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of signed 8-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsI8( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int8_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of unsigned 8-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsU8( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint8_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of signed 16-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsI16( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int16_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of unsigned 16-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsU16( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint16_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of signed 32-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsI32( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int32_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of unsigned 32-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsU32( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint32_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of signed 64-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsI64( |
| NiFpga_Session session, |
| uint32_t fifo, |
| int64_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Acquires elements for writing to a host-to-target FIFO of unsigned 64-bit |
| * integers. |
| * |
| * Acquiring, writing, and releasing FIFO elements prevents the need to write |
| * first into a separate user-allocated buffer and then copy the contents of |
| * elements to the host memory buffer. The FPGA target cannot read elements |
| * acquired by the host. Therefore, the host must release elements after |
| * writing to them. The number of elements acquired may differ from the number |
| * of elements requested if, for example, the number of elements requested |
| * reaches the end of the host memory buffer. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo host-to-target FIFO to which to write |
| * @param elements outputs a pointer to the elements acquired |
| * @param elementsRequested reqested number of elements |
| * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout |
| * @param elementsAcquired actual number of elements acquired, which may be |
| * less than the requested number |
| * @param elementsRemaining if non-NULL, outputs the number of elements |
| * remaining in the host memory part of the DMA FIFO |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_AcquireFifoWriteElementsU64( |
| NiFpga_Session session, |
| uint32_t fifo, |
| uint64_t** elements, |
| size_t elementsRequested, |
| uint32_t timeout, |
| size_t* elementsAcquired, |
| size_t* elementsRemaining); |
| |
| /** |
| * Releases previously acquired FIFO elements. |
| * |
| * The FPGA target cannot read elements acquired by the host. Therefore, the |
| * host must release elements after acquiring them. Always release all acquired |
| * elements before closing the session. Do not attempt to access FIFO elements |
| * after the elements are released or the session is closed. |
| * |
| * @param session handle to a currently open session |
| * @param fifo FIFO from which to release elements |
| * @param elements number of elements to release |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_ReleaseFifoElements(NiFpga_Session session, |
| uint32_t fifo, |
| size_t elements); |
| |
| /** |
| * Gets an endpoint reference to a peer-to-peer FIFO. |
| * |
| * @param session handle to a currently open session |
| * @param fifo peer-to-peer FIFO |
| * @param endpoint outputs the endpoint reference |
| * @return result of the call |
| */ |
| NiFpga_Status NiFpga_GetPeerToPeerFifoEndpoint(NiFpga_Session session, |
| uint32_t fifo, |
| uint32_t* endpoint); |
| |
| #if NiFpga_Cpp |
| } |
| #endif |
| |
| #endif |