92 lines
2.1 KiB
C
92 lines
2.1 KiB
C
/*
|
|
* This is an encapsulation of a National Instruments counter.
|
|
*
|
|
* It presents a simple 64-bit counter abstraction. When the counter is
|
|
* created, it commences counting at zero until it is destroyed.
|
|
*
|
|
* The counter can be read and returns a 64-bit unsigned value.
|
|
*/
|
|
#ifndef _HDIO_H_
|
|
#define _HDIO_H_
|
|
|
|
#include <stdbool.h>
|
|
|
|
struct counter_private_t;
|
|
typedef struct counter_private_t* pHDIO;
|
|
|
|
/**
|
|
* Create a 64-bit counter and start it counting
|
|
*
|
|
* \param device_name the name of the device (e.g. "dev1/ctr0")
|
|
* \param ptr address of pointer to opaque private data structure
|
|
*
|
|
* \return
|
|
* 0 OK
|
|
* !0 Error
|
|
*/
|
|
int hdio_ctor(const char* device_name, pHDIO* ptr);
|
|
|
|
/**
|
|
* Read the value of the 64-bit counter
|
|
*
|
|
* \param hdio pointer to opaque private data structure
|
|
* \param value address of unsigned 64-bit value to receive the output
|
|
*
|
|
* \return
|
|
* 0 OK
|
|
* !0 Error
|
|
*/
|
|
int hdio_read(pHDIO hdio, unsigned long long* value);
|
|
|
|
/**
|
|
* Enables external sync on designated (up/down) line
|
|
*
|
|
* \param hdio pointer to opaque private data structure
|
|
* \param value to be written to the associated line
|
|
* < 0 disconnect
|
|
* = 0 logic low
|
|
* > 0 logic high
|
|
*/
|
|
int hdio_outp(pHDIO hdio, int value);
|
|
|
|
/**
|
|
* Enables external sync on designated (up/down) line
|
|
*
|
|
* \param hdio pointer to opaque private data structure
|
|
* \param external true for external sync, false for internal
|
|
*/
|
|
void hdio_sync(pHDIO hdio, bool external);
|
|
|
|
/**
|
|
* Destroy the 64-bit counter
|
|
*
|
|
* \param ptr address of pointer to opaque private data structure
|
|
*
|
|
* \return
|
|
* 0 OK
|
|
* !0 Error
|
|
*/
|
|
int hdio_dtor(pHDIO* hdio);
|
|
|
|
/**
|
|
* Tests returned error value to see if it represents failure
|
|
*
|
|
* \param error a value returned from another hdio function
|
|
*
|
|
* \return
|
|
* true the error was a failure
|
|
* false the error was not a failure (warning)
|
|
*/
|
|
bool hdio_failed(int error);
|
|
|
|
/**
|
|
* Retrieves a textual representation of the most recent error
|
|
*
|
|
* \param buff a pointer to the buffer to receive the text
|
|
* \param len the length of the provided buffer
|
|
*/
|
|
void hdio_errmsg(char* buff, int len);
|
|
|
|
#endif
|
|
|