13#error This is a C++ include file and cannot be used from plain C
26#define ngcbMODIO_THR 1
41 erms_[0] =
'\0'; path_[0] =
'\0';
ngcbModInit(&mod_);
52 erms_[0] =
'\0'; path_[0] =
'\0';
ngcbModInit(&mod_);
53 if (path != NULL) strcpy(path_, path);
58 if (mod_.fd >= 0)
Close();
62 const char *
ErrMsg() {
return (erms_);}
66 if (stat) mod_.flags |= 0x1;
67 else mod_.flags &= ~0x1;
72 if (stat) mod_.flags |= 0x2;
73 else mod_.flags &= ~0x2;
77 void Period(
unsigned int p) {mod_.period = p;}
83 int Open(
const char *path) {
86 strcpy(erms_,
"device is already open");
118 int Read(
int addr,
int *buffer,
int size) {
119 return (
ngcbModRead(&mod_, addr, buffer, size, erms_));
123 int Write(
int addr,
const int *buffer,
int size) {
124 return (
ngcbModWrite(&mod_, addr, buffer, size, erms_));
131 int Wait(
int addr,
int mask,
void *lock = NULL) {
132 return (
Wait(addr, mask, -1, lock));
142 int Wait(
int addr,
int mask,
int timeout,
void *lock = NULL) {
144 unsigned long int p = 1000 * mod_.period;
145 long int n = (timeout * 1000000) / p;
147 pthread_mutex_t *m = (pthread_mutex_t *)lock;
152 if (
Read(addr, ®, 1) < 0)
157 while (((reg & mask) != mask) && (n != 0))
164 if (pthread_mutex_unlock(m) != 0)
166 sprintf(erms_,
"mutex unlock failed - %s", strerror(errno));
181 if (pthread_mutex_lock(m) != 0)
183 sprintf(erms_,
"mutex lock failed - %s", strerror(errno));
191 if (
Read(addr, ®, 1) < 0)
199 if ((reg & mask) != mask)
204 strcpy(erms_,
"timeout");
211 return (
ngcbModWait(&mod_, addr, mask, timeout, erms_));
229 void MicroSleep_(
unsigned long int ms) {
233 t.tv_sec = ms / 1000000;
234 ms -= t.tv_sec * 1000000;
236 select(0, NULL, NULL, NULL, &t);
int Fifo(int size)
Definition ngcbMODIO.hpp:115
void Verbose(int stat)
Set verbose mode (0 or 1)
Definition ngcbMODIO.hpp:71
int Wait(int addr, int mask, void *lock=NULL)
Definition ngcbMODIO.hpp:131
int Open()
Open module using the saved path.
Definition ngcbMODIO.hpp:80
int Wait(int addr, int mask, int timeout, void *lock=NULL)
Definition ngcbMODIO.hpp:142
int Write(int addr, const int *buffer, int size)
Write buffer to address - size is given in words (32-bit)
Definition ngcbMODIO.hpp:123
void Period(unsigned int p)
Set polling period (milliseconds)
Definition ngcbMODIO.hpp:77
ngcbMODIO()
Trivial constructor.
Definition ngcbMODIO.hpp:40
void Sim(int stat)
Set simulation mode (0 or 1)
Definition ngcbMODIO.hpp:65
virtual ~ngcbMODIO()
Destructor.
Definition ngcbMODIO.hpp:57
int Timeout(int seconds)
Set communication timeout.
Definition ngcbMODIO.hpp:106
int Open(const char *path)
Open module path.
Definition ngcbMODIO.hpp:83
int Close()
Shutdown module interface.
Definition ngcbMODIO.hpp:103
const char * ErrMsg()
Return error message.
Definition ngcbMODIO.hpp:62
ngcbMODIO(const char *path)
Definition ngcbMODIO.hpp:51
int Read(int addr, int *buffer, int size)
Read buffer from address - size is given in words (32-bit)
Definition ngcbMODIO.hpp:118
int ngcbModWrite(ngcb_mod_t *m, int addr, const int *buffer, int size, char *erms)
Definition ngcbDrvMod.c:455
int ngcbModWait(ngcb_mod_t *m, int addr, int mask, int timeout, char *erms)
Definition ngcbDrvMod.c:602
int ngcbModFifo(ngcb_mod_t *m, int size, char *erms)
Definition ngcbDrvMod.c:308
int ngcbModRead(ngcb_mod_t *m, int addr, int *buffer, int size, char *erms)
Definition ngcbDrvMod.c:327
int ngcbModOpen(const char *path, ngcb_mod_t *m, char *erms)
Definition ngcbDrvMod.c:56
void ngcbModInit(ngcb_mod_t *m)
Definition ngcbDrvMod.c:44
int ngcbModTimeout(ngcb_mod_t *m, int seconds, char *erms)
Definition ngcbDrvMod.c:286
int ngcbModClose(ngcb_mod_t *m, char *erms)
Definition ngcbDrvMod.c:249
#define USE(x)
Definition ngcb.h:29