diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/protocol.h | 80 | ||||
-rw-r--r-- | include/utils.h | 11 |
2 files changed, 91 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 */ diff --git a/include/utils.h b/include/utils.h new file mode 100644 index 0000000..ca2d2ee --- /dev/null +++ b/include/utils.h @@ -0,0 +1,11 @@ +#ifdef PROJECT_UTILS_H +#define PROJECT_UTILS_H + +typedef int fpi1_t; + +fpi1_t add(fpi1_t a, fpi1_t b); +fpi1_t sub(fpi1_t a, fpi1_t b); +fpi1_t mul(fpi1_t a, fpi1_t b); +fpi1_t div(fpi1_t a, fpi1_t b); + +#endif /* PROJECT_UTILS_H */ |