/* * 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 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