cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsRobotIO1394.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  Author(s): Zihan Chen, Peter Kazanzides
7  Created on: 2011-06-10
8 
9  (C) Copyright 2011-2014 Johns Hopkins University (JHU), All Rights Reserved.
10 
11 --- begin cisst license - do not edit ---
12 
13 This software is provided "as is" under an open source license, with
14 no warranty. The complete license can be found in license.txt and
15 http://www.cisst.org/cisst/license.txt.
16 
17 --- end cisst license ---
18 */
19 
20 #ifndef _mtsRobotIO1394_h
21 #define _mtsRobotIO1394_h
22 
23 #include <ostream>
24 #include <iostream>
25 #include <vector>
26 
28 
29 namespace sawRobotIO1394 {
30  class osaPort1394;
31  class mtsRobot1394;
32  class mtsDigitalInput1394;
33  class mtsDigitalOutput1394;
34 }
35 
37 
39 public:
40  enum { MAX_BOARDS = 16 };
41 
42 protected:
43 
44  std::ostream * MessageStream; // Stream provided to the low level boards for messages, redirected to cmnLogger
45 
48 
49  typedef std::vector<sawRobotIO1394::mtsRobot1394*> RobotsType;
50  typedef RobotsType::iterator robots_iterator;
52 
53  typedef std::vector<sawRobotIO1394::mtsDigitalInput1394*> DigitalInputsType;
54  typedef DigitalInputsType::iterator digital_inputs_iterator;
56 
57  typedef std::vector<sawRobotIO1394::mtsDigitalOutput1394*> DigitalOutputsType;
58  typedef DigitalOutputsType::iterator digital_outputs_iterator;
60 
62 public:
63  // Constructor & Destructor
64  mtsRobotIO1394(const std::string & name, const double periodInSeconds, const int portNumber);
65  mtsRobotIO1394(const mtsTaskPeriodicConstructorArg & arg); // TODO: add port_num
66  virtual ~mtsRobotIO1394();
67 
68  void Init(const int portNumber);
69 
70  void Configure(const std::string & filename);
71  bool SetupRobot(sawRobotIO1394::mtsRobot1394 * robot);
72  bool SetupDigitalInput(sawRobotIO1394::mtsDigitalInput1394 * digitalInput);
73  bool SetupDigitalOutput(sawRobotIO1394::mtsDigitalOutput1394 * digitalOutput);
74  void Startup(void);
75  void Run(void);
76  void Cleanup(void);
77  void GetNumberOfDigitalInputs(int & placeHolder) const;
78  void GetNumberOfDigitalOutputs(int & placeHolder) const;
79 
80 protected:
81  void GetNumberOfBoards(int & placeHolder) const;
82  void GetNumberOfRobots(int & placeHolder) const;
83  void GetNumberOfActuatorsPerRobot(vctIntVec & placeHolder) const;
84  void GetNumberOfBrakesPerRobot(vctIntVec & placeHolder) const;
85 
86  void PreRead(void);
87  void PostRead(void);
88  void PreWrite(void);
89  void PostWrite(void);
90 
92 private:
93  // Make uncopyable
95  mtsRobotIO1394 & operator = (const mtsRobotIO1394 &);
96 };
97 
99 
100 #endif // _mtsRobotIO1394_h
Definition: mtsRobotIO1394.h:40
std::vector< sawRobotIO1394::mtsRobot1394 * > RobotsType
Definition: mtsRobotIO1394.h:49
void PostWrite(void)
DigitalInputsType::iterator digital_inputs_iterator
Definition: mtsRobotIO1394.h:54
void GetNumberOfRobots(int &placeHolder) const
bool SetupRobot(sawRobotIO1394::mtsRobot1394 *robot)
void GetNumberOfDigitalOutputs(int &placeHolder) const
RobotsType::iterator robots_iterator
Definition: mtsRobotIO1394.h:50
void Init(const int portNumber)
bool SetupDigitalInput(sawRobotIO1394::mtsDigitalInput1394 *digitalInput)
Definition: mtsTaskPeriodic.h:38
RobotsType mRobots
Definition: mtsRobotIO1394.h:51
bool SetupDigitalOutput(sawRobotIO1394::mtsDigitalOutput1394 *digitalOutput)
const int CMN_DYNAMIC_CREATION_ONEARG
Definition: cmnClassRegisterMacros.h:333
void Startup(void)
Definition: mtsRobotIO1394.h:36
DigitalOutputsType::iterator digital_outputs_iterator
Definition: mtsRobotIO1394.h:58
void GetNumberOfBoards(int &placeHolder) const
DigitalOutputsType mDigitalOutputs
Definition: mtsRobotIO1394.h:59
Definition: osaPort1394.h:42
DigitalInputsType mDigitalInputs
Definition: mtsRobotIO1394.h:55
mtsRobotIO1394(const std::string &name, const double periodInSeconds, const int portNumber)
void Run(void)
Defines a periodic task.
sawRobotIO1394::osaPort1394 * mPort
Definition: mtsRobotIO1394.h:46
bool mPortExceptionFlag
Definition: mtsRobotIO1394.h:47
void PreWrite(void)
virtual ~mtsRobotIO1394()
void PostRead(void)
std::ostream * MessageStream
Definition: mtsRobotIO1394.h:44
CMN_DECLARE_SERVICES_INSTANTIATION(mtsRobotIO1394)
void Configure(const std::string &filename)
void GetNumberOfBrakesPerRobot(vctIntVec &placeHolder) const
std::vector< sawRobotIO1394::mtsDigitalInput1394 * > DigitalInputsType
Definition: mtsRobotIO1394.h:53
Definition: mtsTaskPeriodic.h:80
void PreRead(void)
void GetNumberOfDigitalInputs(int &placeHolder) const
void GetNumberOfActuatorsPerRobot(vctIntVec &placeHolder) const
void Cleanup(void)
std::vector< sawRobotIO1394::mtsDigitalOutput1394 * > DigitalOutputsType
Definition: mtsRobotIO1394.h:57
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76