cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
osaPort1394.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  Author(s): Zihan Chen, Peter Kazanzides
6  Created on: 2011-06-10
7 
8  (C) Copyright 2011-2014 Johns Hopkins University (JHU), All Rights Reserved.
9 
10 --- begin cisst license - do not edit ---
11 
12 This software is provided "as is" under an open source license, with
13 no warranty. The complete license can be found in license.txt and
14 http://www.cisst.org/cisst/license.txt.
15 
16 --- end cisst license ---
17 */
18 
19 #ifndef _osaPort1394_h
20 #define _osaPort1394_h
21 
22 #include <vector>
23 #include <map>
24 
25 #ifdef SAW_ROBOT_IO_1394_WO_CISST
26 #include <boost/shared_ptr.hpp>
27 #include <Eigen/Dense>
28 #include "EigenWrapper.h"
29 #include "MinimalPrm.h"
30 #endif
31 
36 
37 class AmpIO;
38 class FirewirePort;
39 
40 namespace sawRobotIO1394 {
41 
42  class osaPort1394 {
50  public:
51 
52  osaPort1394(int portNumber, std::ostream & messageStream = std::cerr);
53  ~osaPort1394();
54 
56  // used by the mtsRobotIO1394 SAW component.
57  void Configure(const osaPort1394Configuration & config);
58 
60  // which provides an instance of an mtsRobot1394 component (derived from osaRobot1394).
61  // This class takes "ownership" of the pointer and deletes it in the destructor (it
62  // assumes the object was dynamically created).
63  void AddRobot(osaRobot1394 * Robot);
64 
66  // which provides an instance of an mtsDigitalInput1394 component (derived from osaDigitalInput1394).
67  // This class takes "ownership" of the pointer and deletes it in the destructor (it
68  // assumes the object was dynamically created).
69  void AddDigitalInput(osaDigitalInput1394 * digitalInput);
70  void AddDigitalOutput(osaDigitalOutput1394 * digitalInput);
71 
73  osaRobot1394 * Robot(const std::string & name);
74  const osaRobot1394 * Robot(const std::string & name) const;
75 
76  osaRobot1394 * Robot(const int index);
77  const osaRobot1394 * Robot(const int index) const;
78 
79  void GetRobotNames(std::vector<std::string> & names) const;
80  void GetDigitalInputNames(std::vector<std::string> & names) const;
81  void GetDigitalOutputNames(std::vector<std::string> & names) const;
82 
84  void Read(void);
85  void Write(void);
86 
87  int NumberOfBoards(void) const;
88  int NumberOfRobots(void) const;
89  int NumberOfDigitalInputs(void) const;
90  int NumberOfDigitalOutputs(void) const;
91 
92  protected:
93 
95  FirewirePort * mPort;
96 
97  std::map<int, AmpIO*> mBoards;
98  typedef std::map<int, AmpIO*>::iterator board_iterator;
99  typedef std::map<int, AmpIO*>::const_iterator board_const_iterator;
100 
102  std::vector<osaRobot1394*> mRobots;
103  std::map<std::string, osaRobot1394*> mRobotsByName;
104  typedef std::vector<osaRobot1394*>::iterator robot_iterator;
105  typedef std::vector<osaRobot1394*>::const_iterator robot_const_iterator;
106 
107  std::vector<osaDigitalInput1394*> mDigitalInputs;
108  std::map<std::string, osaDigitalInput1394*> mDigitalInputsByName;
109  typedef std::vector<osaDigitalInput1394*>::iterator digital_input_iterator;
110  typedef std::vector<osaDigitalInput1394*>::const_iterator digital_input_const_iterator;
111 
112  std::vector<osaDigitalOutput1394*> mDigitalOutputs;
113  std::map<std::string, osaDigitalOutput1394*> mDigitalOutputsByName;
114  typedef std::vector<osaDigitalOutput1394*>::iterator digital_output_iterator;
115  typedef std::vector<osaDigitalOutput1394*>::const_iterator digital_output_const_iterator;
116  };
117 
118 } // namespace sawRobotIO1394
119 
120 #endif // _osaPort1394_h
int NumberOfDigitalOutputs(void) const
void GetRobotNames(std::vector< std::string > &names) const
int NumberOfRobots(void) const
int NumberOfBoards(void) const
Definition: osaConfiguration1394.h:144
void Read(void)
Input/Ouput.
osaRobot1394 * Robot(const std::string &name)
Robot Accessors.
std::map< std::string, osaRobot1394 * > mRobotsByName
Definition: osaPort1394.h:103
std::vector< osaRobot1394 * >::iterator robot_iterator
Definition: osaPort1394.h:104
std::vector< osaRobot1394 * >::const_iterator robot_const_iterator
Definition: osaPort1394.h:105
std::map< std::string, osaDigitalInput1394 * > mDigitalInputsByName
Definition: osaPort1394.h:108
std::map< int, AmpIO * >::iterator board_iterator
Definition: osaPort1394.h:98
FirewirePort * mPort
Board Objects.
Definition: osaPort1394.h:95
void AddDigitalOutput(osaDigitalOutput1394 *digitalInput)
void GetDigitalInputNames(std::vector< std::string > &names) const
void Configure(const osaPort1394Configuration &config)
Configure the port using the specified configuration file. This method is not.
int NumberOfDigitalInputs(void) const
std::map< std::string, osaDigitalOutput1394 * > mDigitalOutputsByName
Definition: osaPort1394.h:113
void AddDigitalInput(osaDigitalInput1394 *digitalInput)
Add a digital input to this port. This method is used by the mtsRobotIO1394 SAW component,.
osaPort1394(int portNumber, std::ostream &messageStream=std::cerr)
std::map< int, AmpIO * > mBoards
Definition: osaPort1394.h:97
Definition: osaDigitalInput1394.h:27
std::vector< osaDigitalOutput1394 * >::iterator digital_output_iterator
Definition: osaPort1394.h:114
Definition: osaDigitalOutput1394.h:27
Definition: osaPort1394.h:42
std::vector< osaDigitalInput1394 * > mDigitalInputs
Definition: osaPort1394.h:107
std::map< int, AmpIO * >::const_iterator board_const_iterator
Definition: osaPort1394.h:99
void AddRobot(osaRobot1394 *Robot)
Add a robot to this port. This method is used by the mtsRobotIO1394 SAW component,.
void GetDigitalOutputNames(std::vector< std::string > &names) const
std::vector< osaRobot1394 * > mRobots
Robot Objects.
Definition: osaPort1394.h:102
Definition: osaRobot1394.h:48
std::vector< osaDigitalOutput1394 * > mDigitalOutputs
Definition: osaPort1394.h:112
std::vector< osaDigitalInput1394 * >::iterator digital_input_iterator
Definition: osaPort1394.h:109
std::vector< osaDigitalInput1394 * >::const_iterator digital_input_const_iterator
Definition: osaPort1394.h:110
std::vector< osaDigitalOutput1394 * >::const_iterator digital_output_const_iterator
Definition: osaPort1394.h:115