ICubeXSource.h

Go to the documentation of this file.
00001 /* ========================================================================
00002  * Copyright (c) 2006,
00003  * Institute for Computer Graphics and Vision
00004  * Graz University of Technology
00005  * All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions are
00009  * met:
00010  *
00011  * Redistributions of source code must retain the above copyright notice,
00012  * this list of conditions and the following disclaimer.
00013  *
00014  * Redistributions in binary form must reproduce the above copyright
00015  * notice, this list of conditions and the following disclaimer in the
00016  * documentation and/or other materials provided with the distribution.
00017  *
00018  * Neither the name of the Graz University of Technology nor the names of
00019  * its contributors may be used to endorse or promote products derived from
00020  * this software without specific prior written permission.
00021  *
00022  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
00023  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
00024  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
00025  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
00026  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00027  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00028  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00029  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00030  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00031  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00032  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033  * ========================================================================
00034  * PROJECT: OpenTracker
00035  * ======================================================================== */
00042 /* ======================================================================= */
00043 
00044 #include <OpenTracker/OpenTracker.h>
00045 #include <OpenTracker/tool/midi.h>
00046 #include <OpenTracker/tool/SyncQueue.h>
00047 #include <vector>
00048 #include <map>
00049 #include <string>
00050 
00051 namespace ot{
00052 
00053 
00054   class ixMidiSocket;
00055   class MidiMsg;
00056   class ICubeXSensor;
00057   class ICubeXSource: public Node{
00058   public:
00059     typedef std::vector<ICubeXSensor *> SensorArray;
00060   protected:
00061     SensorArray sensors;
00062     std::string config;
00063     unsigned char confignr;  
00064     char name[8];
00065     unsigned char version[5];
00066     unsigned char id;
00067     unsigned char mode;
00068     unsigned char running_status;
00069     unsigned char midi_thru;
00070 
00071     unsigned char default_config[9];
00072 
00073 
00074     unsigned char nextControllerNumber;
00075 
00076     ixMidiSocket * socket;
00077     bool changed;
00078     Event event;
00079 
00080 
00081     friend class ICubeXModule;
00082     ICubeXSource();
00083     void configure(StringTable & config);
00084 
00085     void start();
00086     void stop();
00087 
00088   public:
00089     static const unsigned int numberOfPorts;
00090     typedef SyncQueue<MidiMsg *> MsgQueue;
00091     MsgQueue mQueue;
00092 
00093     virtual ~ICubeXSource();
00094     virtual int isEventGenerator();
00095     void pushEvent();
00096 
00097     void addSensor(ICubeXSensor * );
00098         ICubeXSensor * getSensor( int index );
00099     
00100 
00101     void asHostMode(unsigned char idd);
00102     bool isHostMode();
00103     bool isStandAloneMode();
00104     unsigned char getId();
00105     unsigned char getConfigNr();
00106     unsigned char getRunningStatus();
00107     unsigned char getMidiThru();
00108     float getFirmwareVersion();
00109     float getHardwareVersion();
00110     unsigned int getSerial();
00111     void setVersion( unsigned char * ptr ); 
00112     void setSensorConfig(int index, unsigned char * ptr);
00113     unsigned char * getSensorConfig(int index);
00114     void setName(unsigned char * ptr);
00115     void clear(MidiMsg & mMsg) ;
00116     void makeHeader(MidiMsg & mMsg);
00117     void makeFooter(MidiMsg & mMsg);
00118     void makeCmdMsg(MidiMsg & mMsg, unsigned char cmd);
00119     void makeOneByteMsg(MidiMsg & mMsg, unsigned char cmd, unsigned char data1);
00120 
00121     void makeTwoByteMsg(MidiMsg & mMsg, unsigned char cmd, unsigned char data1, unsigned char data2);
00122 
00123 
00124 
00125   };
00126   
00127 
00128 
00129 } // namespace ot

Generated on Wed Feb 28 15:18:49 2007 for NaviTrack by  doxygen 1.4.6