forked from pschatzmann/Arduino-Emulator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFileStream.h
More file actions
107 lines (84 loc) · 2.27 KB
/
FileStream.h
File metadata and controls
107 lines (84 loc) · 2.27 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#pragma once
#include <iostream>
#include <fstream>
#include "api/Stream.h"
namespace arduino {
/**
* @brief We use the SerialDef class to be able to provide Serail, Serial1 and Serial2 outside of the
* Arduino environment;
*/
class FileStream : public Stream {
public:
FileStream(const char* outDevice="/dev/stdout", const char* inDevice="/dev/stdin"){
open(outDevice, inDevice);
}
~FileStream(){
in.close();
out.close();
}
void open(const char* outDevice, const char* inDevice){
if (outDevice!=nullptr)
out.open(outDevice,std::ios::out);
if (inDevice!=nullptr)
in.open(inDevice,std::ios::in);
}
virtual void begin(int speed){
// nothing to be done
}
virtual void print(const char* str){
out << str;
out.flush();
}
virtual void println(const char* str=""){
out << str << "\n";
out.flush();
}
virtual void print(int str){
out << str;
out.flush();
}
virtual void println(int str){
out << str << "\n";
out.flush();
}
virtual void flush() {
out.flush();
}
virtual void write(const char* str, int len) {
out.write(str, len);
}
virtual void write(uint8_t* str, int len) {
out.write((const char*)str, len);
}
virtual size_t write(int32_t value){
out.put(value);
return 1;
}
virtual size_t write(uint8_t value){
out.put(value);
return 1;
}
virtual int available() {
return in.rdbuf()->in_avail();
};
virtual int read() {
return in.get();
}
virtual int peek() {
return in.peek();
}
protected:
std::fstream out;
std::fstream in;
};
/**
* @brief Global Serial1 instance for secondary serial communication.
*
* This object provides access to the /dev/ttyACM0 device, typically used for USB serial or secondary UART on Linux systems.
* Use this instance in your sketches to perform serial communication, similar to the standard Arduino Serial1 object.
* Example:
* Serial1.begin(9600);
* Serial1.println("Hello from Serial1");
*/
static FileStream Serial1("/dev/ttyACM0");
}