#pragma once #include #include #include #include #include #include namespace hex::plugin::windows { class ViewTTYConsole : public View::Window { public: ViewTTYConsole(); ~ViewTTYConsole() override = default; void drawContent() override; private: std::vector> m_comPorts; std::vector> getAvailablePorts() const; bool connect(); bool disconnect(); void transmitData(std::vector &data); HANDLE m_portHandle = INVALID_HANDLE_VALUE; std::jthread m_receiveThread; int m_selectedPort = 0; int m_selectedBaudRate = 11; // 115200 int m_selectedNumBits = 3; // 8 int m_selectedStopBits = 0; // 1 int m_selectedParityBits = 0; // None bool m_hasCTSFlowControl = false; // No bool m_shouldAutoScroll = true; std::mutex m_receiveBufferMutex; std::vector m_receiveDataBuffer, m_transmitDataBuffer; std::vector m_wrapPositions; bool m_transmitting = false; constexpr static std::array BaudRates = { "110", "300", "600", "1200", "2400", "4800", "9600", "14400", "19200", "38400", "57600", "115200", "128000", "256000" }; constexpr static std::array NumBits = { "5", "6", "7", "8" }; constexpr static std::array StopBits = { "1", "1.5", "2.0" }; constexpr static std::array ParityBits = { "None", "Odd", "Even", "Mark", "Space" }; }; }