summaryrefslogtreecommitdiffstats
path: root/include/protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/protocol.h')
-rw-r--r--include/protocol.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/include/protocol.h b/include/protocol.h
new file mode 100644
index 0000000..c1b786c
--- /dev/null
+++ b/include/protocol.h
@@ -0,0 +1,80 @@
+/*
+ * Usurpataion --- client-server protocol interface.
+ *
+ * Copyright (C) 2019 Ramūnas Mažeikis
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; version 2.1
+ * of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifdef PROTOCOL_H_INCLUDED
+#define PROTOCOL_H_INCLUDED
+
+#include <errno.h>
+
+#define SUCCESS (0)
+#define TLV_OVERFLOW (1 << 0)
+
+enum packet_type {
+ REGURAL,
+ HEARTBEAT,
+ DISCOVERY
+};
+
+enum tlv_type {
+ TEXT, /* NULL-terminated string. */
+ FPI1, /* Fixed point. 1 decimal digit of precision. */
+ TIMESTAMP,
+ REQUEST,
+ REPLY,
+ UUID
+};
+
+struct packet_data {
+ enum packet_type type;
+ size_t packet_size;
+ char *data; /* Bytes representing tlv's */
+};
+
+struct tlv {
+ enum tlv_type type;
+ size_t length;
+ void *data;
+};
+
+/*
+ * Reads last packets received, parses and stores them to be later retreived
+ * via get_tlv.
+ * */
+void get_last_data(void);
+
+/* Returns tlv's parsed by get_last_data. Returned tlv is only valid until
+ * next call to get_tlv.
+ * */
+struct tlv * get_tlv(void);
+
+/* Any modifications made to the pending outgoing packet are nullified.
+ * */
+void clear_data(void);
+
+/* Appends data to the next packet to be sent. Type of data is determined by
+ * enum tlv_type.
+ * */
+void push_data(char *data, enum tlv_type);
+
+/* Sends packet towards the other end.
+ * */
+void flush_data(void);
+
+#endif /* PROTOCOL_H_INCLUDED */