\hypertarget{classComSquare_1_1Memory_1_1IMemoryBus}{}\doxysection{Com\+Square\+::Memory\+::I\+Memory\+Bus Class Reference}
\label{classComSquare_1_1Memory_1_1IMemoryBus}\index{ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}}


The memory bus is the component responsible of mapping addresses to components address and transmitting the data.  




{\ttfamily \#include $<$I\+Memory\+Bus.\+hpp$>$}



Inheritance diagram for Com\+Square\+::Memory\+::I\+Memory\+Bus\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classComSquare_1_1Memory_1_1IMemoryBus__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for Com\+Square\+::Memory\+::I\+Memory\+Bus\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=205pt]{classComSquare_1_1Memory_1_1IMemoryBus__coll__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemoryBus_a5538f7e281f45053245a4036473a5e46}{$\sim$\+I\+Memory\+Bus}} ()=default
\begin{DoxyCompactList}\small\item\em A virtual default destructor. \end{DoxyCompactList}\item 
virtual uint8\+\_\+t \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemoryBus_a560cf44b01d039ac4e13762e2abf46b1}{read}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr)=0
\begin{DoxyCompactList}\small\item\em Read data at a global address. This form allow read to be silenced. \end{DoxyCompactList}\item 
virtual std\+::optional$<$ uint8\+\_\+t $>$ \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemoryBus_a715161996b7842c55c0be82d3cd22572}{peek}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr)=0
\begin{DoxyCompactList}\small\item\em This as the same purpose as a read but it does not change the open bus and won\textquotesingle{}t throw an exception. \end{DoxyCompactList}\item 
virtual uint8\+\_\+t \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemoryBus_a474f556b1f4ef4af276217a489031775}{peek\+\_\+v}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr)=0
\begin{DoxyCompactList}\small\item\em This as the same purpose as a read but it does not change the open bus and won\textquotesingle{}t throw an exception. \end{DoxyCompactList}\item 
virtual void \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemoryBus_a393b05cf83c6dc1ee6c0cad9648cb31b}{write}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr, uint8\+\_\+t data)=0
\begin{DoxyCompactList}\small\item\em Write a data to a global address. \end{DoxyCompactList}\item 
virtual \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemory}{I\+Memory}} $\ast$ \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemoryBus_ad0ab5473f22b232b701a7fc101f4489b}{get\+Accessor}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr)=0
\begin{DoxyCompactList}\small\item\em Helper function to get the components that is responsible of read/write at an address. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
The memory bus is the component responsible of mapping addresses to components address and transmitting the data. 

\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classComSquare_1_1Memory_1_1IMemoryBus_a5538f7e281f45053245a4036473a5e46}\label{classComSquare_1_1Memory_1_1IMemoryBus_a5538f7e281f45053245a4036473a5e46}} 
\index{ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}!````~IMemoryBus@{$\sim$IMemoryBus}}
\index{````~IMemoryBus@{$\sim$IMemoryBus}!ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}}
\doxysubsubsection{\texorpdfstring{$\sim$IMemoryBus()}{~IMemoryBus()}}
{\footnotesize\ttfamily virtual Com\+Square\+::\+Memory\+::\+I\+Memory\+Bus\+::$\sim$\+I\+Memory\+Bus (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}}



A virtual default destructor. 



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classComSquare_1_1Memory_1_1IMemoryBus_ad0ab5473f22b232b701a7fc101f4489b}\label{classComSquare_1_1Memory_1_1IMemoryBus_ad0ab5473f22b232b701a7fc101f4489b}} 
\index{ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}!getAccessor@{getAccessor}}
\index{getAccessor@{getAccessor}!ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}}
\doxysubsubsection{\texorpdfstring{getAccessor()}{getAccessor()}}
{\footnotesize\ttfamily virtual \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemory}{I\+Memory}}$\ast$ Com\+Square\+::\+Memory\+::\+I\+Memory\+Bus\+::get\+Accessor (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Helper function to get the components that is responsible of read/write at an address. 


\begin{DoxyParams}{Parameters}
{\em addr} & The address you want to look for. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The components responsible for the address param or nullptr if none was found. 
\end{DoxyReturn}


Implemented in \mbox{\hyperlink{classComSquare_1_1Debugger_1_1MemoryBusDebug_a4b082fcada287cf8cd0a58dc1447412e}{Com\+Square\+::\+Debugger\+::\+Memory\+Bus\+Debug}}, and \mbox{\hyperlink{classComSquare_1_1Memory_1_1MemoryBus_acd9f28fab89e9c3b46571f049f37a0c3}{Com\+Square\+::\+Memory\+::\+Memory\+Bus}}.

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1IMemoryBus_a715161996b7842c55c0be82d3cd22572}\label{classComSquare_1_1Memory_1_1IMemoryBus_a715161996b7842c55c0be82d3cd22572}} 
\index{ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}!peek@{peek}}
\index{peek@{peek}!ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}}
\doxysubsubsection{\texorpdfstring{peek()}{peek()}}
{\footnotesize\ttfamily virtual std\+::optional$<$uint8\+\_\+t$>$ Com\+Square\+::\+Memory\+::\+I\+Memory\+Bus\+::peek (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



This as the same purpose as a read but it does not change the open bus and won\textquotesingle{}t throw an exception. 


\begin{DoxyParams}{Parameters}
{\em addr} & The address to read from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The value that the component returned for this address. If the address was mapped to ram, it simply returned the value. If the address was mapped to a register the component returned the register. 
\end{DoxyReturn}


Implemented in \mbox{\hyperlink{classComSquare_1_1Debugger_1_1MemoryBusDebug_a884781dd68300d7cf32468fbe1fc1acd}{Com\+Square\+::\+Debugger\+::\+Memory\+Bus\+Debug}}, and \mbox{\hyperlink{classComSquare_1_1Memory_1_1MemoryBus_abd086c2053ce7432256e2b79949d46df}{Com\+Square\+::\+Memory\+::\+Memory\+Bus}}.

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1IMemoryBus_a474f556b1f4ef4af276217a489031775}\label{classComSquare_1_1Memory_1_1IMemoryBus_a474f556b1f4ef4af276217a489031775}} 
\index{ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}!peek\_v@{peek\_v}}
\index{peek\_v@{peek\_v}!ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}}
\doxysubsubsection{\texorpdfstring{peek\_v()}{peek\_v()}}
{\footnotesize\ttfamily virtual uint8\+\_\+t Com\+Square\+::\+Memory\+::\+I\+Memory\+Bus\+::peek\+\_\+v (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



This as the same purpose as a read but it does not change the open bus and won\textquotesingle{}t throw an exception. 


\begin{DoxyParams}{Parameters}
{\em addr} & The address to read from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The value that the component returned for this address. If the address was mapped to ram, it simply returned the value. If the address was mapped to a register the component returned the register. 
\end{DoxyReturn}
\begin{DoxyNote}{Note}
If the value address is not mapped, 0 is returned instead of nullopt. 
\end{DoxyNote}


Implemented in \mbox{\hyperlink{classComSquare_1_1Debugger_1_1MemoryBusDebug_adbf4a8e7f30de8496a37696270aa9515}{Com\+Square\+::\+Debugger\+::\+Memory\+Bus\+Debug}}, and \mbox{\hyperlink{classComSquare_1_1Memory_1_1MemoryBus_ab8e47918f6eccef0aeee50cd7b77eaec}{Com\+Square\+::\+Memory\+::\+Memory\+Bus}}.

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1IMemoryBus_a560cf44b01d039ac4e13762e2abf46b1}\label{classComSquare_1_1Memory_1_1IMemoryBus_a560cf44b01d039ac4e13762e2abf46b1}} 
\index{ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}!read@{read}}
\index{read@{read}!ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}}
\doxysubsubsection{\texorpdfstring{read()}{read()}}
{\footnotesize\ttfamily virtual uint8\+\_\+t Com\+Square\+::\+Memory\+::\+I\+Memory\+Bus\+::read (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Read data at a global address. This form allow read to be silenced. 


\begin{DoxyParams}{Parameters}
{\em addr} & The address to read from. \\
\hline
\end{DoxyParams}

\begin{DoxyExceptions}{Exceptions}
{\em \mbox{\hyperlink{classComSquare_1_1InvalidAddress}{Invalid\+Address}}} & If the address is not mapped to the bus, this exception is thrown. \\
\hline
\end{DoxyExceptions}
\begin{DoxyReturn}{Returns}
The value that the component returned for this address. If the address was mapped to ram, it simply returned the value. If the address was mapped to a register the component returned the register. 
\end{DoxyReturn}


Implemented in \mbox{\hyperlink{classComSquare_1_1Debugger_1_1MemoryBusDebug_aac4caac70c61e9dca7237669490c2505}{Com\+Square\+::\+Debugger\+::\+Memory\+Bus\+Debug}}, and \mbox{\hyperlink{classComSquare_1_1Memory_1_1MemoryBus_a8d2c99fb0e1f2dafd48180ea66fd1c7a}{Com\+Square\+::\+Memory\+::\+Memory\+Bus}}.

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1IMemoryBus_a393b05cf83c6dc1ee6c0cad9648cb31b}\label{classComSquare_1_1Memory_1_1IMemoryBus_a393b05cf83c6dc1ee6c0cad9648cb31b}} 
\index{ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}!write@{write}}
\index{write@{write}!ComSquare::Memory::IMemoryBus@{ComSquare::Memory::IMemoryBus}}
\doxysubsubsection{\texorpdfstring{write()}{write()}}
{\footnotesize\ttfamily virtual void Com\+Square\+::\+Memory\+::\+I\+Memory\+Bus\+::write (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr,  }\item[{uint8\+\_\+t}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Write a data to a global address. 


\begin{DoxyParams}{Parameters}
{\em addr} & The address to write to. \\
\hline
{\em data} & The data to write. \\
\hline
\end{DoxyParams}


Implemented in \mbox{\hyperlink{classComSquare_1_1Debugger_1_1MemoryBusDebug_a768c48fdb11d35c051b690f9c7478b2d}{Com\+Square\+::\+Debugger\+::\+Memory\+Bus\+Debug}}, and \mbox{\hyperlink{classComSquare_1_1Memory_1_1MemoryBus_aa3ba7681ed7bf83fa66c8994a57dc0dd}{Com\+Square\+::\+Memory\+::\+Memory\+Bus}}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
sources/\+Memory/\mbox{\hyperlink{IMemoryBus_8hpp}{I\+Memory\+Bus.\+hpp}}\end{DoxyCompactItemize}
