|
rllib
1
|
00001 /*************************************************************************** 00002 rlcanopen.cpp - description 00003 ------------------- 00004 begin : Tue March 03 2004 00005 copyright : (C) 2004 by Marc Br�tigam, Christian Wilmes, Rainer Lehrig 00006 email : lehrig@t-online.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This library is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE as * 00013 * published by the Free Software Foundation * 00014 * * 00015 ***************************************************************************/ 00016 #include <stdio.h> 00017 #include <stdlib.h> 00018 #include <sys/types.h> 00019 #include <unistd.h> 00020 #include "rlsocket.h" 00021 #include "rlthread.h" 00022 #include "rlcutil.h" 00023 #include "rlwthread.h" 00024 00025 #include "rlcanopentypes.h" 00026 00028 00034 class rlCanOpenClient 00035 { 00036 public: 00037 00038 enum rl_msg { 00039 MSG_SEND = 0, 00040 MSG_RECEIVE = 1, 00041 MSG_SDO_READ = 0, 00042 MSG_SDO_WRITE = 1, 00043 MSG_PDO_RECEIVE = 3, 00044 MSG_CONNECT = 5, 00045 MSG_DISCONNECT = 6, 00046 MSG_PDO_TRANSMIT = 4, 00047 MSG_NMT_TRANSMIT = 7, 00048 MSG_RESTART_BOARD = 8, 00049 MSG_GET_NODE_STATE = 9 00050 }; 00051 00053 rlCanOpenClient(); 00055 rlCanOpenClient(int _port, char* _remoteadress); 00057 ~rlCanOpenClient(); 00059 int connect(); 00061 int disconnect(); 00062 00063 00069 int sdo_read( int _boardnr, 00070 int _nodeid,int _objectindex, 00071 int _subindex, 00072 rlCanOpenTypes &_sdo_data); 00073 00079 int sdo_write(int _boardnr, 00080 int _nodeid,int _objectindex, 00081 int _subindex, 00082 rlCanOpenTypes &_sdo_data); 00083 00088 int pdo_receive(int _boardnr, 00089 int _nodeid,int _pdonr, 00090 int _mappingnr, 00091 rlCanOpenTypes &_pdo_data); 00092 00097 int pdo_receive(int _boardnr, 00098 int _nodeid,int _pdonr, 00099 rlCanOpenTypes &_pdo_data); 00100 00105 int pdo_transmit(int _boardnr, 00106 int _nodeid,int _pdonr, 00107 int _mappingnr, 00108 rlCanOpenTypes &_pdo_data); 00109 00114 int pdo_transmit(int _boardnr, 00115 int _nodeid, 00116 int _pdonr, 00117 rlCanOpenTypes &_pdo_data); 00118 00120 int sendNMTCommand( int _boardnr, 00121 int _nodeid, 00122 unsigned char _cmd, 00123 bool &returnstate); 00124 00126 int restartBoard(int _boardnr, int _restarttype, bool &returnstate); 00127 00129 int getNodeState(int _boardnr, int _nodeid,rlCanOpenTypes &_data); 00130 00132 void setPort(int _port); 00133 00135 void setAdr(char* _adr); 00136 00137 private: 00139 int pid; 00140 00142 bool connected; 00143 00145 int port; 00146 00148 char remoteadress[40]; 00149 00151 rlSocket* socket; 00153 int client_timeout; 00154 }; 00155 00156 //##################################################################################### 00157 // convenience class for client users 00158 class rlCanClient : public rlCanOpenClient 00159 { 00160 public: 00161 rlCanClient(int _port, char* _remoteadress, int _boardnr); 00162 ~rlCanClient(); 00163 int sdo_read(int _nodeid, int _objectindex, int _subindex, rlCanOpenTypes &_sdo_data); 00164 int sdo_write(int _nodeid,int _objectindex, int _subindex, rlCanOpenTypes &_sdo_data); 00165 int pdo_receive(int _nodeid, int _pdonr, int _mappingnr, rlCanOpenTypes &_pdo_data); 00166 int pdo_receive(int _nodeid, int _pdonr, rlCanOpenTypes &_pdo_data); 00167 int pdo_transmit(int _nodeid, int _pdonr, int _mappingnr, rlCanOpenTypes &_pdo_data); 00168 int pdo_transmit(int _nodeid, int _pdonr, rlCanOpenTypes &_pdo_data); 00169 int sendNMTCommand(int _nodeid, unsigned char _cmd, bool &returnstate); 00170 int restartBoard(int _restarttype, bool &returnstate); 00171 int getNodeState(int _nodeid, rlCanOpenTypes &_data); 00172 private: 00173 int boardnr; 00174 };
1.7.5.1