diff -r 52a005ffd011 -r ee305a780a02 tool/MasterDevice.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool/MasterDevice.h Mon Jul 21 22:20:23 2008 +0000 @@ -0,0 +1,94 @@ +/***************************************************************************** + * + * $Id$ + * + ****************************************************************************/ + +#ifndef __EC_MASTER_H__ +#define __EC_MASTER_H__ + +#include +#include +#include +#include +using namespace std; + +#include "../include/ecrt.h" +#include "../master/ioctl.h" + +/****************************************************************************/ + +class MasterDeviceException: + public runtime_error +{ + public: + /** Constructor with std::string parameter. */ + MasterDeviceException( + const string &s /**< Message. */ + ): runtime_error(s) {} +}; + +/****************************************************************************/ + +class MasterDevice +{ + public: + MasterDevice(); + ~MasterDevice(); + + void setIndex(unsigned int); + + enum Permissions {Read, ReadWrite}; + void open(Permissions); + void close(); + + unsigned int slaveCount(); + + void getMaster(ec_ioctl_master_t *); + void getConfig(ec_ioctl_config_t *, unsigned int); + void getConfigPdo(ec_ioctl_config_pdo_t *, unsigned int, uint8_t, + uint16_t); + void getConfigPdoEntry(ec_ioctl_config_pdo_entry_t *, unsigned int, + uint8_t, uint16_t, uint8_t); + void getConfigSdo(ec_ioctl_config_sdo_t *, unsigned int, unsigned int); + void getDomain(ec_ioctl_domain_t *, unsigned int); + void getFmmu(ec_ioctl_domain_fmmu_t *, unsigned int, unsigned int); + void getData(ec_ioctl_domain_data_t *, unsigned int, unsigned int, + unsigned char *); + void getSlave(ec_ioctl_slave_t *, uint16_t); + void getSync(ec_ioctl_slave_sync_t *, uint16_t, uint8_t); + void getPdo(ec_ioctl_slave_sync_pdo_t *, uint16_t, uint8_t, uint8_t); + void getPdoEntry(ec_ioctl_slave_sync_pdo_entry_t *, uint16_t, uint8_t, + uint8_t, uint8_t); + void getSdo(ec_ioctl_slave_sdo_t *, uint16_t, uint16_t); + void getSdoEntry(ec_ioctl_slave_sdo_entry_t *, uint16_t, int, uint8_t); + void readSii(ec_ioctl_slave_sii_t *); + void writeSii(ec_ioctl_slave_sii_t *); + + protected: +#if 0 + void outputDomainData(unsigned int); + enum {BreakAfterBytes = 16}; + void showDomain(unsigned int); + void listSlavePdos(uint16_t, bool = false); + void listSlaveSdos(uint16_t, bool = false); + void listSlaves(int); + void showSlave(uint16_t); + void generateSlaveXml(uint16_t); + void requestState(uint16_t, uint8_t); + + static string slaveState(uint8_t); + static void printRawData(const uint8_t *, unsigned int); + static uint8_t calcSiiCrc(const uint8_t *, unsigned int); +#endif + + private: + //enum {DefaultBufferSize = 1024}; + + unsigned int index; + int fd; +}; + +/****************************************************************************/ + +#endif