1
0
mirror of synced 2024-12-12 07:51:05 +01:00
ImHex/plugins/windows/include/views/view_tty_console.hpp

86 lines
2.0 KiB
C++
Raw Normal View History

2021-05-29 21:52:52 +02:00
#pragma once
#include <hex/ui/view.hpp>
2021-05-29 21:52:52 +02:00
#include <windows.h>
#include <mutex>
2021-05-29 21:52:52 +02:00
#include <thread>
#include <jthread.hpp>
#include <vector>
2021-05-29 21:52:52 +02:00
namespace hex::plugin::windows {
2021-05-29 21:52:52 +02:00
class ViewTTYConsole : public View::Window {
2021-05-29 21:52:52 +02:00
public:
ViewTTYConsole();
~ViewTTYConsole() override = default;
2021-05-29 21:52:52 +02:00
void drawContent() override;
private:
std::vector<std::pair<std::string, std::string>> m_comPorts;
2023-11-10 20:47:08 +01:00
std::vector<std::pair<std::string, std::string>> getAvailablePorts() const;
2021-05-29 21:52:52 +02:00
bool connect();
bool disconnect();
void transmitData(std::vector<char> &data);
2021-05-29 21:52:52 +02:00
HANDLE m_portHandle = INVALID_HANDLE_VALUE;
std::jthread m_receiveThread;
2022-02-01 22:09:44 +01:00
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
2021-05-29 21:52:52 +02:00
bool m_shouldAutoScroll = true;
std::mutex m_receiveBufferMutex;
2021-05-29 21:52:52 +02:00
std::vector<char> m_receiveDataBuffer, m_transmitDataBuffer;
std::vector<u32> 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"
2021-05-29 21:52:52 +02:00
};
constexpr static std::array NumBits = {
"5",
"6",
"7",
"8"
2021-05-29 21:52:52 +02:00
};
constexpr static std::array StopBits = {
"1",
"1.5",
"2.0"
2021-05-29 21:52:52 +02:00
};
constexpr static std::array ParityBits = {
"None",
"Odd",
"Even",
"Mark",
"Space"
2021-05-29 21:52:52 +02:00
};
};
}