oxen-core/src/device/io_ledger_tcp.hpp

48 lines
1,023 B
C++
Raw Permalink Normal View History

// TCP APDU interface, as used by Ledger's emulator system (Speculos).
#pragma once
#include <chrono>
#include <memory>
#include <string>
2023-04-13 15:50:13 +02:00
#include "io_device.hpp"
#pragma once
namespace hw::io {
using namespace std::literals;
class ledger_tcp : public device {
2023-04-13 15:50:13 +02:00
std::unique_ptr<int> sockfd;
2023-04-13 15:50:13 +02:00
public:
std::string host = "localhost";
std::string port = "9999";
2023-04-13 15:50:13 +02:00
std::chrono::microseconds connect_timeout = 10s;
std::chrono::microseconds exchange_timeout = 120s;
2023-04-13 15:50:13 +02:00
ledger_tcp() = default;
~ledger_tcp() override;
2023-04-13 15:50:13 +02:00
ledger_tcp(ledger_tcp&&) = default;
ledger_tcp& operator=(ledger_tcp&&) = default;
2023-04-13 15:50:13 +02:00
void init() override {}
void release() override {}
void connect();
bool connected() const override;
int exchange(
const unsigned char* command,
unsigned int cmd_len,
unsigned char* response,
unsigned int max_resp_len,
bool user_input) override;
void disconnect() override;
};
2023-04-13 15:50:13 +02:00
} // namespace hw::io