summaryrefslogtreecommitdiffstats
path: root/src/device
diff options
context:
space:
mode:
authorGravatar Ramūnas Mažeikis <ramunasnezinomas@gmail.com> 2019-05-21 17:41:21 +0300
committerGravatar Ramūnas Mažeikis <ramunasnezinomas@gmail.com> 2019-05-21 17:41:21 +0300
commitcabb90c1240015ee5cd17d91573588527bcc2482 (patch)
tree0e3b07fa887ca25a12e32f5c126407d149483a21 /src/device
parentbb70fccb66f55e9cc2b9ed0bf366479828f41346 (diff)
downloadusurpation-cabb90c1240015ee5cd17d91573588527bcc2482.tar.gz
usurpation-cabb90c1240015ee5cd17d91573588527bcc2482.tar.bz2
usurpation-cabb90c1240015ee5cd17d91573588527bcc2482.zip
Protocol: changes to interface and some re-implementation.
Most functions exposed in protocol.h take a connection descriptor (cd_t) as first argument. This allows for multiple connections. Device gets only one connection which means that cd_t is effectively 0 all the time. Additionaly, any function that actually does anything with a connection descriptor instead of just passing it to another function must be implemented separately in device and daemon. Signed-off-by: Ramūnas Mažeikis <ramunasnezinomas@gmail.com>
Diffstat (limited to 'src/device')
-rwxr-xr-xsrc/device/protocol_device.ino38
-rwxr-xr-xsrc/device/protocol_device_private.h37
2 files changed, 75 insertions, 0 deletions
diff --git a/src/device/protocol_device.ino b/src/device/protocol_device.ino
new file mode 100755
index 0000000..778196d
--- /dev/null
+++ b/src/device/protocol_device.ino
@@ -0,0 +1,38 @@
+#include "protocol.h"
+#include "protocol_private.h"
+#include "protocol_device_private.h"
+#include <ESP8266WiFi.h>
+#include <time.h>
+#include <stdlib.h>
+
+static struct connection_t connection;
+
+static int push_bytes(cd_t cd, char *data, size_t size)
+{
+ int ret = 0;
+
+ if (cd >= MAX_CONNECTIONS) {
+ ret = E_IVALID_DESCRIPTOR;
+ } else if (connection.outp_crs + size >= sizeof(connection.outp_buf)) {
+ ret = E_PACKET_OVERFLOW;
+ } else {
+
+ }
+ return ret;
+}
+
+static int push_tlv_header(cd_t connection, enum tlv_type type, size_t size)
+{
+ return 0;
+}
+
+struct tlv * get_tlv()
+{
+ return NULL;
+}
+
+
+void get_last_data(cd_t connection)
+{
+
+}
diff --git a/src/device/protocol_device_private.h b/src/device/protocol_device_private.h
new file mode 100755
index 0000000..0fb46c7
--- /dev/null
+++ b/src/device/protocol_device_private.h
@@ -0,0 +1,37 @@
+#ifndef PROTOCOL_DEVICE_PRIVATE_H
+#define PROTOCOL_DEVICE_PRIVATE_H
+
+#define MAX_PACKET_SIZE_OUT (64)
+#define MAX_PACKET_SIZE_IN (512)
+#define MAX_CONNECTIONS (1UL)
+
+/**
+ * Device's view of connection to daemon.
+ */
+struct connection_t {
+ /**
+ * Initially 0, non-zero when connection is open, 0 when connection
+ * is closed again.
+ */
+ int is_live;
+
+ /** Daemon IP adress */
+ IPAddress address;
+
+ /** Time last packet was reveived */
+ time_t last_packet_sec;
+
+ /** Incoming packet buffer */
+ char inp_buf[MAX_PACKET_SIZE_IN];
+
+ /** Incoming packet cursor */
+ size_t inp_crs;
+
+ /** Outgoing packet buffer */
+ char outp_buf[MAX_PACKET_SIZE_OUT];
+
+ /** Outgoing packet cursor */
+ size_t outp_crs;
+};
+
+#endif /* PROTOCOL_DEVICE_PRIVATE_H */ \ No newline at end of file