-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathusb.h
More file actions
48 lines (41 loc) · 1.08 KB
/
usb.h
File metadata and controls
48 lines (41 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef USB_H
#define USB_H
#include <list>
#include <thread>
#include <mutex>
#include <sstream>
#include <functional>
#include "work-queue.h"
using namespace std;
using namespace std::chrono;
class Usb {
public:
~Usb();
void run(string device_path);
void stop();
void write_line(string text);
void set_line_callback(std::function <void(const char *)> line_callback);
void add_line_listener(WorkQueue<StampedString>*);
void remove_line_listener(WorkQueue<StampedString>*);
void write_on_connect(string s);
void flush();
//std::string path ;
private:
std::function <void(const char*)> line_callback;
vector<char> read_buffer;
string _device_path;
string _write_on_connect = "\ntd+\n";
string string_pending_write;
std::mutex usb_mutex;
bool running = false;
bool quit = false;
void monitor_incoming_data();
void monitor_incoming_data_thread();
void send_to_listeners(const string & s);
void process_data(const char * data);
string leftover_data;
list<WorkQueue<StampedString>*> line_listeners;
thread run_thread;
};
void test_usb();
#endif // USB_H