Main Page | Class Hierarchy | Class List | File List | Class Members

MipDevice.h

00001 // Copyright (c) 2004, Thomas Lochmatter, thl@lothosoft.ch 00002 00003 #ifndef classMipDevice 00004 #define classMipDevice 00005 00006 class MipDevice; 00007 00008 #include <string> 00009 #include "MipBus.h" 00010 #include "MipCommand.h" 00011 #include "MipManager.h" 00012 00014 00023 class MipDevice { 00024 00025 protected: 00026 #include "MipErrors.inc.h" 00027 #include "MipWarnings.inc.h" 00028 #include "MipAxisStatus.inc.h" 00029 #include "MipTrajectoryFlags.inc.h" 00030 00031 private: 00033 MipBus *mMipBus; 00035 int mDeviceID; 00037 bool mIsOpen; 00038 00040 static const int mMipCommandMax=16; 00042 MipCommand *mMipCommand[mMipCommandMax]; 00044 int mMipCommandExecuteIndex; 00046 int mMipCommandAddIndex; 00047 00048 public: 00050 MipDevice(MipBus *mipbus=0, int deviceid=0); 00052 MipDevice(MipManager *mm, const std::string &device, int baudrate, int deviceid); 00053 00055 MipBus *GetMipBus() const {return mMipBus;} 00057 int GetDeviceID() const {return mDeviceID;} 00058 00060 bool Open(); 00062 bool Close(); 00064 bool IsOpen() {return mIsOpen;} 00065 00067 void OnAckReceived(MipCommand *cmd); 00069 void OnPacketReceived(MipCommand *cmd); 00071 void OnErronousPacketReceived(MipCommand *cmd); 00072 00074 bool AddCommand(MipCommand *cmd); 00076 bool AddPriorityCommand(MipCommand *cmd); 00078 void FlushCommandQueue(); 00080 MipCommand *GetNextCommand(); 00082 int GetMipCommandMax() {return mMipCommandMax;} 00084 MipCommand *GetMipCommand(int i) {return mMipCommand[i];} 00085 00087 void SetMipBus(MipBus *MipBus); 00089 void SetDeviceID(int deviceid); 00091 void SetDevice(MipManager *mm, const std::string &device, int baudrate, int deviceid); 00093 void SetDevice(MipBus *mipbus, int deviceid); 00094 00095 bool SendCommand(int cmdid, MipMessage::eType type); 00096 bool SendCommand_SignedInteger32(int cmdid, MipMessage::eType type, int param1); 00097 bool SendCommand_Float(int cmdid, MipMessage::eType type, float param1); 00098 bool SendCommand_Byte(int cmdid, MipMessage::eType type, unsigned char param1); 00099 bool SendCommand_ByteFloatFloat(int cmdid, MipMessage::eType type, unsigned char param1, float param2, float param3); 00100 00101 bool SendReadAxisStatus(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadAxisStatus);} 00102 bool SendReadError(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadError);} 00103 bool SendClearError(int cmdid=0) {return SendCommand(cmdid, MipMessage::sClearError);} 00104 bool SendReadWarning(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadWarning);} 00105 bool SendClearWarning(int cmdid=0) {return SendCommand(cmdid, MipMessage::sClearWarning);} 00106 bool SendReadVersion(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadVersion);} 00107 00108 bool SendSetRegMode(int cmdid, unsigned char mode) {return SendCommand_Byte(cmdid, MipMessage::sSetRegMode, mode);} 00109 bool SendSetPosVelocity(int cmdid, float velocity) {return SendCommand_Float(cmdid, MipMessage::sSetPosVelocity, velocity);} 00110 bool SendSetWaitMode(int cmdid, unsigned char mode) {return SendCommand_Byte(cmdid, MipMessage::sSetWaitMode, mode);} 00111 bool SendMoveAbsolute(int cmdid, int position) {return SendCommand_SignedInteger32(cmdid, MipMessage::sMoveAbsolute, position);} 00112 bool SendMoveRelative(int cmdid, int relposition) {return SendCommand_SignedInteger32(cmdid, MipMessage::sMoveRelative, relposition);} 00113 bool SendStopMotion(int cmdid=0, unsigned char stopmode=0) {return SendCommand_Byte(cmdid, MipMessage::sStopMotion, stopmode);} 00114 bool SendFindHomeSys(int cmdid=0, int timeoutms=0) {return SendCommand_SignedInteger32(cmdid, MipMessage::sFindHomeSys, timeoutms);} 00115 00116 bool SendReadPosition(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadPosition);} 00117 bool SendReadVelocity(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadVelocity);} 00118 bool SendReadVelocityMean(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadVelocityMean);} 00119 bool SendReadCurrent(int cmdid=0) {return SendCommand(cmdid, MipMessage::sReadCurrent);} 00120 00121 bool SendCheckCRC(int cmdid, unsigned char selection) {return SendCommand_Byte(cmdid, MipMessage::sCheckCRC, selection);} 00122 00123 virtual void OnReceivedReadAxisStatus(int cmdid, eAxisStatusFlags status) = 0; 00124 virtual void OnReceivedReadError(int cmdid, eError error) = 0; 00125 virtual void OnReceivedClearError(int cmdid) = 0; 00126 virtual void OnReceivedReadWarning(int cmdid, eWarning warning) = 0; 00127 virtual void OnReceivedClearWarning(int cmdid) = 0; 00128 virtual void OnReceivedReadVersion(int cmdid, int command_interpreter_version, int runtime_library_version, int hardware_revision, int bootrom_version, int application_number, int application_version) = 0; 00129 virtual void OnReceivedSetPosVelocity(int cmdid) = 0; 00130 virtual void OnReceivedSetWaitMode(int cmdid) = 0; 00131 virtual void OnReceivedMoveAbsolute(int cmdid) = 0; 00132 virtual void OnReceivedMoveRelative(int cmdid) = 0; 00133 virtual void OnReceivedStopMotion(int cmdid) = 0; 00134 virtual void OnReceivedFindHomeSys(int cmdid) = 0; 00135 virtual void OnReceivedReadPosition(int cmdid, int value) = 0; 00136 virtual void OnReceivedReadVelocity(int cmdid, int value) = 0; 00137 virtual void OnReceivedReadVelocityMean(int cmdid, int value) = 0; 00138 virtual void OnReceivedReadCurrent(int cmdid, int value) = 0; 00139 virtual void OnReceivedCheckCRC(int cmdid, bool ok, int crc) = 0; 00140 00142 void Report(const std::string &name, std::ostream &out, int ccindent=0) const; 00143 }; 00144 00145 #endif

Generated on Wed Jun 1 09:19:07 2005 for libmip by doxygen 1.3.8