Follow this link to skip to the main content

claraty::DIO_impl Class Reference

#include <digital_io_impl.h>

Inheritance diagram for claraty::DIO_impl:

Inheritance graph
[legend]
Collaboration diagram for claraty::DIO_impl:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DIO_impl (size_t n_bits, char *dir_str="", bool invert_signal=false)
virtual int input ()=0
virtual int output ()=0
virtual int output (unsigned long data)=0
DIO_implset_mask (unsigned long mask)
void set_IO_direction (char *dir_str)
void invert_IO (bool val=true)
std::string to_str () const
void print (const char *msg="") const

Protected Attributes

Bits _data_bits
Bits _mask_bits
int _invert_signal

Private Attributes

Bits _input_bits
Bits _output_bits

Friends

class DIO

Detailed Description

Definition at line 45 of file digital_io_impl.h.


Constructor & Destructor Documentation

claraty::DIO_impl::DIO_impl ( size_t  n_bits,
char *  dir_str = "",
bool  invert_signal = false 
)

Definition at line 37 of file digital_io_impl.cc.

References set_IO_direction().

00041   : _data_bits  (0, n_bits),
00042     _mask_bits (0, n_bits),             // 1 for no-mask; after shifted
00043     _invert_signal (invert_signal),
00044     _input_bits  (0, n_bits),           // 1 for input; before shifted
00045     _output_bits  (0, n_bits)           // 1 for output; before shifted
00046 {
00047   // default:
00048   //   invert_signal=false              // normal logic i/o
00049   //   dir_str = ""                     // neither in nor out for any bits
00050   set_IO_direction(dir_str);
00051 }

Here is the call graph for this function:


Member Function Documentation

virtual int claraty::DIO_impl::input (  )  [pure virtual]

Implemented in claraty::DIO_null, and claraty::DIO_sim.

Referenced by claraty::DIO::input().

virtual int claraty::DIO_impl::output (  )  [pure virtual]

Implemented in claraty::DIO_null, and claraty::DIO_sim.

Referenced by claraty::DIO::output().

virtual int claraty::DIO_impl::output ( unsigned long  data  )  [pure virtual]

Implemented in claraty::DIO_null, and claraty::DIO_sim.

DIO_impl & claraty::DIO_impl::set_mask ( unsigned long  mask  ) 

Definition at line 80 of file digital_io_impl.cc.

References _mask_bits, and claraty::Bits::unchecked_set().

00081 {
00082   _mask_bits.unchecked_set (mask);      // for effciency
00083 
00084   return *this;
00085 }

Here is the call graph for this function:

void claraty::DIO_impl::set_IO_direction ( char *  dir_str  ) 

Definition at line 87 of file digital_io_impl.cc.

References _input_bits, _output_bits, claraty::Bits::clr(), claraty::Bits::set(), and claraty::Bits::set_bit().

Referenced by DIO_impl(), and claraty::DIO_null::DIO_null().

00088 {
00089   // Setting I/O direction for all bits:        B = bi-directional for all bits
00090   //                                            I = input for all bits
00091   //                                            O = output for all bits
00092   //
00093   // Setting I/O direction for each bit
00094   // e.g., "BBIO" for 4 bits where rightmost character is bit 0 or LSB
00095   //
00096   //                                            b = input bit
00097   //                                            i = input bit
00098   //                                            o = input bit
00099   //                                            x = neither input nor output
00100   //
00101 
00102   int len = strlen(dir_str);
00103 
00104 
00105   if (len == 1) {
00106     switch (dir_str[0]) {
00107     case 'B':
00108       _input_bits.set();
00109       _output_bits.set();
00110       return;
00111     case 'I':
00112       _input_bits.set();
00113       _output_bits.clr();
00114       return;
00115     case 'O':
00116       _input_bits.clr();
00117       _output_bits.set();
00118       return;
00119     }
00120   }
00121 
00122 
00123   _input_bits.clr();
00124   _output_bits.clr();
00125 
00126   for (int i=0; i < len; ++i) {
00127     // start with the last character for bit 0 or LSB
00128     //
00129     switch (dir_str[len-i-1]) {
00130     case 'b':
00131       _input_bits.set_bit(i);
00132       _output_bits.set_bit(i);
00133       break;
00134     case 'i':
00135       _input_bits.set_bit(i);
00136       break;
00137     case 'o':
00138       _output_bits.set_bit(i);
00139       break;
00140     case 'x':
00141       break;
00142     default:
00143       cerr << "invalid argument DIO_impl::set_IO_direction" << endl;
00144     } // switch
00145   } // for i
00146 }

Here is the call graph for this function:

void claraty::DIO_impl::invert_IO ( bool  val = true  ) 

Definition at line 149 of file digital_io_impl.cc.

References _invert_signal.

00150 {
00151   //  default: invert_signal
00152   //
00153 
00154   _invert_signal = val;
00155 }

string claraty::DIO_impl::to_str (  )  const

Definition at line 158 of file digital_io_impl.cc.

References _data_bits, and claraty::Bits::to_str().

00159 {
00160   return _data_bits.to_str();
00161 }

Here is the call graph for this function:

void claraty::DIO_impl::print ( const char *  msg = ""  )  const

Definition at line 164 of file digital_io_impl.cc.

References _data_bits, and claraty::Bits::print().

00165 {
00166   _data_bits.print(msg);
00167 }

Here is the call graph for this function:


Friends And Related Function Documentation

friend class DIO [friend]

Definition at line 46 of file digital_io_impl.h.


Member Data Documentation


The documentation for this class was generated from the following files: