Cat
UsbI2cBus.cpp
Go to the documentation of this file.
1 // $Id: $
2 // Include files
3 
4 
5 // local
6 #include "UsbI2cBus.h"
7 
8 //-----------------------------------------------------------------------------
9 // Implementation file for class : UsbI2cBus
10 //
11 // 2006-10-23 :
12 //-----------------------------------------------------------------------------
13 
14 //=============================================================================
15 // Standard constructor, initializes variables
16 //=============================================================================
18  setName("UsbI2cBus");
19  setType("UsbI2cBus");
20 
21  m_regAddress=new Register();
22  m_regData=new Register();
23 
24  m_regAddress->setName("AddReg");
25  m_regData ->setName("DataReg");
26 
27  m_regAddress->io()->defDataU8(4);
28  m_regAddress->io()->setAddress(0);
29 
30  m_regData->io()->setAddress(0);
31 
34 
37 }
38 //=============================================================================
39 // Destructor
40 //=============================================================================
42 // delete m_regData;
43 // delete m_regAddress;
44 }
45 
46 //=============================================================================
47 //
48 //=============================================================================
50  if (0==m_connection){
51  if (0==this->parent()){
52  fatal("Cannot define connection for "+type()+". No parent found.",
53  "UsbI2cBus::init");
54  return StatusCode::FAILURE;
55  }
56  return setConnection(this->parent());
57  }
58  else return StatusCode::SUCCESS;
59 }
60 
61 //=============================================================================
62 //
63 //=============================================================================
65  U8* buffer=m_regAddress->io()->dataU8();
66  buffer[0]=(U8)(io->address());
67  buffer[1]=(U8)(0);
68  buffer[2]=(U8)(0);
69  buffer[3]=(U8)(0);
70  m_regData->io()->setDataU8(io->dataU8(),io->length());
71  Interface* connection = dynamic_cast<Interface*> (m_connection);
72  if (connection->write(m_regAddress->io()).isFailure()){
73  warning("Cannot write Address register on UsbI2cBus",
74  "UsbI2cBus::read");
75  return StatusCode::FAILURE;
76  }
77  if (connection->read(m_regData->io()).isFailure()){
78  warning("Cannot read Data register on UsbI2cBus",
79  "UsbI2cBus::read"); ;
80  return StatusCode::FAILURE;
81  }
82  return StatusCode::SUCCESS;
83 }
84 
85 //=============================================================================
86 //
87 //=============================================================================
89  U8* buffer=m_regAddress->io()->dataU8();
90  buffer[0]=(U8)(io->address());
91  buffer[1]=(U8)(0);
92  buffer[2]=(U8)(0);
93  buffer[3]=(U8)(0);
94  m_regData->io()->setDataU8(io->dataU8(),io->length());
95  Interface* connection = dynamic_cast<Interface*> (m_connection);
96  if (connection->write(m_regAddress->io()).isFailure()){
97  warning("Cannot write Address register on UsbI2cBus",
98  "UsbI2cBus::write");
99  return StatusCode::FAILURE;
100  }
101  if (connection->write(m_regData->io()).isFailure()){
102  warning("Cannot write Data register on UsbI2cBus","UsbI2cBus::write");
103  return StatusCode::FAILURE;
104  }
105  return StatusCode::SUCCESS;
106 }
107 
108 //=============================================================================
Hierarchy * connection()
Definition: Element.cpp:84
Hierarchy * m_connection
Definition: Element.h:70
UsbI2cBus()
Standard constructor.
Definition: UsbI2cBus.cpp:17
StatusCode setConnection(Hierarchy *)
Definition: Element.cpp:55
U32 address()
Definition: IOdata.h:59
virtual StatusCode write(IOdata *)
Definition: UsbI2cBus.cpp:88
virtual StatusCode read(IOdata *)=0
void setName(std::string name)
Definition: Object.h:51
Hierarchy * parent()
Definition: Hierarchy.h:28
void fatal(std::string mymsg)
Definition: Object.h:41
void setType(std::string type)
Definition: Object.h:52
virtual StatusCode write(IOdata *)=0
Register * m_regAddress
Definition: UsbI2cBus.h:69
unsigned char U8
Definition: UsbI2cBus.h:20
StatusCode setAddress(U32 address)
Definition: IOdata.h:51
virtual ~UsbI2cBus()
Destructor.
Definition: UsbI2cBus.cpp:41
U32 length()
Definition: IOdata.h:175
virtual StatusCode read(IOdata *)
Definition: UsbI2cBus.cpp:64
Definition: IOdata.h:17
U8 * dataU8()
Definition: IOdata.h:214
virtual StatusCode init()
Definition: UsbI2cBus.cpp:49
virtual void addChild(Hierarchy *element)
Definition: Hierarchy.cpp:83
void setDataU8(U8 *data, U32 length)
Definition: IOdata.h:239
StatusCode setWordSize(IOdata::WordSize wordSize)
Definition: IOdata.h:126
std::string type()
Definition: Object.h:29
void defDataU8(unsigned long size)
Definition: IOdata.h:179
Register * m_regData
Definition: UsbI2cBus.h:70
void warning(std::string mymsg)
Definition: Object.h:39
IOdata * io()
Definition: IOobject.h:66