This is Unofficial EPICS BASE Doxygen Site
pvutils.h
Go to the documentation of this file.
1 /*
2  * Copyright information and license terms for this software can be
3  * found in the file LICENSE that is included with the distribution
4  */
5 #ifndef PVUTILS_H
6 #define PVUTILS_H
7 
8 #include <ostream>
9 #include <iostream>
10 #include <string>
11 
12 #include <epicsEvent.h>
13 #include <epicsMutex.h>
14 #include <epicsGuard.h>
15 
16 #include <pv/event.h>
17 #include <pv/pvData.h>
18 #include <pv/pvAccess.h>
19 
22 namespace pvd = epics::pvData;
23 namespace pva = epics::pvAccess;
24 
25 #define COMMON_OPTIONS \
26  "options:\n" \
27  " -h: Help: Print this message\n" \
28  " -V: Print version and exit\n" \
29  " -r <pv request>: Request, specifies what fields to return and options, default is '%s'\n" \
30  " -w <sec>: Wait time, specifies timeout, default is %f second(s)\n" \
31  " -p <provider>: Set default provider name, default is '%s'\n" \
32  " -M <raw|nt|json>: Output mode. default is 'nt'\n" \
33  " -v: Show entire structure (implies Raw mode)\n" \
34  " -q: Quiet mode, print only error messages\n" \
35  " -d: Enable debug output\n"
36 
37 extern double timeout;
38 extern bool debugFlag;
39 
40 extern pvd::PVStructure::Formatter::format_t outmode;
41 extern int verbosity;
42 
43 extern std::string request;
44 extern std::string defaultProvider;
45 
46 struct Tracker {
49  typedef std::set<Tracker*> inprog_t;
50  static inprog_t inprog;
51  static bool abort;
52 
54  {
55  Guard G(doneLock);
56  inprog.insert(this);
57  }
59  {
60  done();
61  }
62  void done()
63  {
64  {
65  Guard G(doneLock);
66  inprog.erase(this);
67  }
68  doneEvt.signal();
69  }
70 
71  static void prepare();
73 };
74 
75 void jarray(pvd::shared_vector<std::string>& out, const char *inp);
76 
77 
78 #endif /* PVUTILS_H */
Tracker()
Definition: pvutils.h:53
std::string request
static epicsMutex doneLock
Definition: pvutils.h:47
void jarray(pvd::shared_vector< std::string > &out, const char *inp)
Definition: pvutils.cpp:68
~Tracker()
Definition: pvutils.h:58
bool debugFlag
Definition: pvutils.cpp:26
static void prepare()
Definition: pvutils.cpp:49
static epicsEvent doneEvt
Definition: pvutils.h:48
pvd::PVStructure::Formatter::format_t outmode
Definition: pvutils.cpp:28
epicsGuard< epicsMutex > Guard
Definition: pvutils.h:20
std::set< Tracker * > inprog_t
Definition: pvutils.h:49
Holds all PVA related.
Definition: pvif.h:34
pvData
Definition: monitor.h:428
double timeout
Definition: pvutils.cpp:25
static inprog_t inprog
Definition: pvutils.h:50
APIs for the epicsMutex mutual exclusion semaphore.
epicsGuardRelease< epicsMutex > UnGuard
Definition: pvutils.h:21
APIs for the epicsEvent binary semaphore.
void done()
Definition: pvutils.h:62
#define EPICS_NOT_COPYABLE(CLASS)
Disable implicit copyable.
std::string defaultProvider
static bool abort
Definition: pvutils.h:51
int verbosity
Definition: pvutils.cpp:29