aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-01-24 13:50:11 +0100
committerDimitri Sokolyuk <demon@dim13.org>2017-01-24 13:50:11 +0100
commit48048379d727c054bbd60c6a4e5acd4b536d7120 (patch)
tree37d1e41be96e58752df4068ccd2192ca9f9ea309
parent3282f656eb1d4313bb309c9078534aef77a5bf93 (diff)
Rename common
-rw-r--r--car/car.ino2
-rw-r--r--car/common.cpp33
2 files changed, 34 insertions, 1 deletions
diff --git a/car/car.ino b/car/car.ino
index c9c6b8e..c36e0c3 100644
--- a/car/car.ino
+++ b/car/car.ino
@@ -3,7 +3,7 @@
#include <Servo.h>
#include <IRremote.h>
-#include <os48.h>
+//#include <os48.h>
#include "config.h"
#include "ir.h"
diff --git a/car/common.cpp b/car/common.cpp
new file mode 100644
index 0000000..86f195c
--- /dev/null
+++ b/car/common.cpp
@@ -0,0 +1,33 @@
+#include <Arduino.h>
+#include <HardwareSerial.h>
+#include "pb_encode.h"
+#include "pb_decode.h"
+
+bool
+write_callback(pb_ostream_t *stream, const uint8_t *buf, size_t count)
+{
+ return Serial.write(buf, count) == count;
+}
+
+bool
+read_callback(pb_istream_t *stream, uint8_t *buf, size_t count)
+{
+ int result = Serial.readBytes(buf, count);
+ if (result <= 0)
+ stream->bytes_left = 0; // EOF
+ return result == count;
+}
+
+pb_ostream_t
+pb_ostream_from_serial()
+{
+ pb_ostream_t stream = {&write_callback, NULL, SIZE_MAX, 0};
+ return stream;
+}
+
+pb_istream_t
+pb_istream_from_serial()
+{
+ pb_istream_t stream = {&read_callback, NULL, SIZE_MAX};
+ return stream;
+}