Qualia  0.2
MapperConnector.h
Go to the documentation of this file.
1 #ifndef LIBMAPPER_CONNECTOR_INC
2 #define LIBMAPPER_CONNECTOR_INC
3 
4 #include <string.h>
5 #include <stdlib.h>
6 #include <signal.h>
7 #include <mapper/mapper.h>
8 
9 #include <qualia/core/common.h>
10 
11 #include <map>
12 #include <string>
13 
15 public:
16  struct SignalData {
17  mapper_signal sig;
18  float* data;
19  int n;
20  bool isBlocking;
21  bool flag;
22 
23  SignalData(mapper_signal sig_, int n_, bool isBlocking_, float* initialData=0);
24  ~SignalData();
25  };
26 
27  typedef std::map<std::string, SignalData*> SignalDataMap;
28 
29  char* deviceName;
33 
36 
37  int nLinked;
38 // int connected;
39 
40  mapper_admin admin;
41  mapper_device dev;
42  mapper_monitor mon;
43  mapper_db db;
44 
45  MapperConnector(const char* deviceName, const char* peerDeviceName, bool autoConnect = true, int initialPort = 9000);
46  virtual ~MapperConnector();
47 
48  void init();
49  void logout();
50 
51  void createConnections();
52 
53  // Helper methods.
54  void addInput(const char* name, int length, char type, const char* unit, void* minimum, void* maximum, bool blocking=true, float* initialData=0);
55  void addOutput(const char* name, int length, char type, const char* unit, void* minimum, void* maximum, float* initialData=0);
56 
57  void readInput(const char* name, float* data);
58  void readInput(const char* name, int* data);
59  void writeOutput(const char* name, const float* data);
60  void writeOutput(const char* name, const int* data);
61 
62  void waitForBlockingInputs();
63  void sendAllOutputs();
64 
65  // Internal use.
66  static void updateInput(mapper_signal sig, mapper_db_signal props, int instance_id, void *value, int count, mapper_timetag_t *timetag);
67  static void devDbCallback(mapper_db_device record, mapper_db_action_t action, void *user);
68  static void linkDbCallback(mapper_db_link record, mapper_db_action_t action, void *user);
69 };
70 
71 #endif // LIBMAPPER_CONNECTOR_INC
72