OSDN Git Service

first
[psychlops/cpp.git] / psychlops / core / devices / psychlops_io_analog.h
1 /*
2  *  psychlops_io_analog.h
3  *  Psychlops Standard Library (Universal)
4  *
5  *  Last Modified 2008/10/05 by Kenchi HOSOKAWA
6  *  (C) 2006 Kenchi HOSOKAWA, Kazushi MARUYA and Takao SATO
7  */
8
9 #ifndef HEADER_PSYCHLOPS_IO_ANALOG
10 #define HEADER_PSYCHLOPS_IO_ANALOG
11
12 #include "../math/psychlops_math.h"
13
14 namespace Psychlops {
15
16         class ITrigger
17         {
18                 public:
19                 virtual ~ITrigger();
20                 virtual double getLatency() = 0;
21                 virtual double getJitterSD() = 0;
22                 virtual Interval getRange() = 0;
23                 virtual bool isAnalog() = 0;
24
25                 virtual double get() = 0;
26                 virtual void put(double) = 0;
27                 virtual void pulse(double) = 0;
28                 virtual void keep(double) = 0;
29         };
30
31         class Trigger : public ITrigger
32         {
33                 private:
34                 ITrigger *instance;
35
36                 public:
37                 Trigger();
38                 Trigger(ITrigger *);
39                 Trigger(ITrigger &);
40                 void set(ITrigger *);
41                 void set(ITrigger &);
42                 virtual ~Trigger();
43                 virtual double getLatency();
44                 virtual double getJitterSD();
45                 virtual Interval getRange();
46                 virtual bool isAnalog();
47
48                 virtual double get();
49                 virtual void put(double);
50                 virtual void pulse(double);
51                 virtual void keep(double);
52         };
53
54
55         class AnalogInput {
56                 public:
57                 double (*normalize)(double);
58                 virtual ~AnalogInput();
59                 virtual double get() = 0;
60 //              virtual setNormalize(double (*fn)(double)) = 0;
61         };
62
63         class AnalogOutput {
64                 public:
65                 double (*denormalize)(double);
66                 virtual ~AnalogOutput();
67                 virtual void put(double) = 0;
68 //              virtual denormalize(double) = 0;
69         };
70
71 }       /*      <- namespace Psycholops         */
72
73 #endif