00001 #ifndef DEVICE_TOKIN3D_H
00002 #define DEVICE_TOKIN3D_H
00003
00004 #if _MSC_VER > 1000
00005 #pragma once
00006 #endif // _MSC_VER > 1000
00007 #include "DRRealDevice.h"
00008 #include "DVOrientationBase.h"
00009 #include "DVPioBase.h"
00010 #include <base/Affine.h>
00011
00012 namespace Spr {
00013 class SPR_DLL DRTokin3D: public DRRealDevice{
00014 public:
00015
00016 class DVOrientation:public DVOrientationBase{
00017 protected:
00018 DRTokin3D* realDevice;
00019 public:
00020 DVOrientation(DRTokin3D* r):realDevice(r){}
00021 virtual DRRealDevice* RealDevice() { return realDevice; }
00022 virtual const char* Name() const{ return realDevice->Name(); }
00023 virtual void GetOrientationMatrix(Matrix3f& ori){
00024 realDevice->GetMatrix(ori);
00025 }
00026 virtual void GetMatrix(Matrix3f& ori){
00027 realDevice->GetMatrix(ori);
00028 }
00029 virtual Vec3f GetEuler(){
00030 return realDevice->GetEuler();
00031 }
00032 };
00033 class DVInputPort:public DVInputPortBase{
00034 protected:
00035 DRTokin3D* realDevice;
00036 int ch;
00037 char name[256];
00038 public:
00039 DVInputPort(DRTokin3D* r, int c);
00040 virtual DRRealDevice* RealDevice() { return realDevice; }
00041 virtual const char* Name() const{ return name; }
00042 virtual int Get(){
00043 return realDevice->GetPort(ch);
00044 }
00045 };
00046 protected:
00047 void* intf;
00048 char name[1024];
00049 public:
00050
00051 DRTokin3D();
00052
00053 virtual ~DRTokin3D();
00054
00055 virtual bool Init();
00056
00057 virtual void Register(DVVirtualDevicePool& vpool);
00058
00059 virtual const char* Name() const { return name; }
00060
00061 virtual void GetMatrix(Matrix3f& ori);
00062
00063 virtual Vec3f GetEuler();
00064
00065 virtual int GetPort(int ch);
00066 };
00067
00068 }
00069
00070 #endif