// Becuase of using fifo[0], fifo has to reside in a consecutive memory blocks.
// This is why I use std::vector rather than std::deque for m_tx_fifo.
// reinterpret_cast<SerialConsole *>(mp_output_device)->put_char_to_serial_console(m_tx_fifo);
+ std::string output;
+
+ for (std::vector<uint8_t>::iterator iter = m_tx_fifo.begin();
+ iter != m_tx_fifo.end();
+ ++iter)
+ {
+ if ((*iter) & 0x80)
+ {
+ (*iter) = 0x20;
+ }
+ }
+
+ if (0xd == m_tx_fifo.back())
+ {
+ output.append(reinterpret_cast<char const *>(&(m_tx_fifo[0])), m_tx_fifo.size());
+
+ m_need_append_more = true;
+ }
+ else
+ {
+ if (true == m_need_append_more)
+ {
+ output.append(reinterpret_cast<char const *>(&(m_tx_fifo[0])), m_tx_fifo.size());
+
+ m_need_append_more = false;
+ }
+ else
+ {
+ if (false == output.empty())
+ {
+ m_output(output.c_str());
+ }
+
+ std::string lala = std::string(reinterpret_cast<char const *>(&(m_tx_fifo[0])), m_tx_fifo.size());
+ m_output(lala.c_str());
+ }
+ }
+
}
inline void Uart::rx_data() {
// reinterpret_cast<SerialConsole *>(mp_output_device)->get_char_from_serial_console();
}
- Uart::Uart() {
+ Uart::Uart(std::function<void(const char *)>& output) : m_output(output) {
init_register();
}
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="6">
+ <widget class="QLabel" name="screen">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QPushButton" name="startButton">
+ <property name="text">
+ <string>Start</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="3" column="0" colspan="5">
+ <widget class="QLabel" name="regsLabel">
+ <property name="font">
+ <font/>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="4">
+ <widget class="QPushButton" name="stepTickButton">
+ <property name="text">
+ <string>Step (Tick)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="4">
+ <widget class="QPushButton" name="stopButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
<item row="1" column="0">
<widget class="QLabel" name="cycleCounter">
<property name="text">
</property>
</widget>
</item>
+ <item row="2" column="3">
+ <widget class="QPushButton" name="stepInsnButton">
+ <property name="text">
+ <string>Step (Insn)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="5">
+ <widget class="QPlainTextEdit" name="logView"/>
+ </item>
<item row="4" column="0" colspan="5">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
- <number>2</number>
+ <number>3</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<item row="4" column="0" colspan="13">
<widget class="QLabel" name="memoryViewLabel">
<property name="font">
- <font>
- <family>Courier New</family>
- </font>
+ <font/>
</property>
<property name="text">
<string>TextLabel</string>
<item>
<widget class="QLabel" name="codeLabel">
<property name="font">
- <font>
- <family>Courier New</family>
- </font>
+ <font/>
</property>
<property name="text">
<string>TextLabel</string>
</item>
</layout>
</widget>
+ <widget class="QWidget" name="tab_4">
+ <attribute name="title">
+ <string>UART</string>
+ </attribute>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QTextEdit" name="serialConsole"/>
+ </item>
+ </layout>
+ </widget>
</widget>
</item>
- <item row="3" column="0" colspan="5">
- <widget class="QLabel" name="regsLabel">
- <property name="font">
- <font>
- <family>Courier New</family>
- </font>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="1" column="3">
- <widget class="QPushButton" name="startButton">
- <property name="text">
- <string>Start</string>
- </property>
- </widget>
- </item>
- <item row="2" column="4">
- <widget class="QPushButton" name="stepTickButton">
- <property name="text">
- <string>Step (Tick)</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0" colspan="6">
- <widget class="QLabel" name="screen">
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="2" column="3">
- <widget class="QPushButton" name="stepInsnButton">
- <property name="text">
- <string>Step (Insn)</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2">
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="4">
- <widget class="QPushButton" name="stopButton">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Stop</string>
- </property>
- </widget>
- </item>
- <item row="5" column="0" colspan="5">
- <widget class="QPlainTextEdit" name="logView"/>
- </item>
</layout>
</widget>
</widget>