diff options
author | 2019-06-01 15:27:19 +0300 | |
---|---|---|
committer | 2019-06-01 15:27:19 +0300 | |
commit | fb220a85890b1de874061cc6b1b2102ba33ad43f (patch) | |
tree | 6ec02e665d35d114c2212a5243dd1cb0f6afff37 /include/protocol.h | |
parent | 96d7d31534921889c219a5c9e00a46c3e94d0124 (diff) | |
parent | 227a0e12ee262dbabdd8d988fec194273cf90029 (diff) | |
download | usurpation-fb220a85890b1de874061cc6b1b2102ba33ad43f.tar.gz usurpation-fb220a85890b1de874061cc6b1b2102ba33ad43f.tar.bz2 usurpation-fb220a85890b1de874061cc6b1b2102ba33ad43f.zip |
Merge branch '35-Message-Output'
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'include/protocol.h')
-rw-r--r-- | include/protocol.h | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/include/protocol.h b/include/protocol.h deleted file mode 100644 index 34ad4a3..0000000 --- a/include/protocol.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 - */ - -#ifndef USURPATION_PROTOCOL_H_INCLUDED -#define USURPATION_PROTOCOL_H_INCLUDED - -#include <errno.h> - -#define E_TLV_OVERFLOW (1 << 0) -#define E_UNKNOWN_TYPE (1 << 1) -#define E_IVALID_DESCRIPTOR (1 << 2) -#define END_OF_PACKET (1 << 3) - -/** - * Regular packets contain tlv's defined by tlv_type. - * - * Hearbeat packet tell daemon that device is still alive and listening. - * - * Discovery packets are used for what they say. - */ -enum packet_type { - REGURAL, - HEARTBEAT, - DISCOVERY -}; - -/** - * Message sequence number since beggining of sesssion. - * - * Mainly used for identifying lost messages. - */ -typedef unsigned int msg_idx_t; - -enum tlv_type { - /** - * NULL-terminated string. To be put in a queue to display on the - * screen. - */ - TEXT, - - /** Fixed point. 1 decimal digit of precision. */ - FPI1, - - /** Literally time_t */ - TIMESTAMP, - - /** Represents a request for lost message. Data is unsigned integer - * that uniquely identifies the message. - */ - REQUEST, - - /** - * Response to request. Begins with unsigned integer that represents - * which message is being repeated and the actual null-terminated - * message after that. - */ - REPLY, - - /** - * UUID that represents a particular device. - */ - UUID -}; - -/** - * Packet data itself is a special type of tlv. A packet is either regular, - * hearbeat or discovery. - * - * May be used to send data. - */ -struct tlv_packet { - enum packet_type type; - size_t size; - size_t offset; - char *data; /* Bytes representing tlv's */ -}; - -/** - * Literally type-length-value - * */ -struct tlv { - enum tlv_type type; - size_t length; - void *data; -}; - -struct tlv_parser { - char *data; - size_t offset; - size_t size; -}; - -int get_tlv(struct tlv_parser *parser, struct tlv *ret); - -/** - * Appends data to the next packet to be sent. Type of data is determined by - * enum tlv_type. - * - * In case of overflow return E_TLV_OVERFLOW. - * - * On next call after retreiving last packet returns END_OF_PACKET. - * - * Overflow can be detected after forming tlv header. This means that the - * packet may have changes. - * */ -int push_data(struct tlv_packet *packet, enum tlv_type type, char *data); - - -/** - * Resets offset to 0 and set entire buffer to 0. - */ -void clear_data(struct tlv_packet *packet); - - -/** - * Tells what size of buffer is needed for next tlv. - */ -size_t tlv_data_size(struct tlv_parser *parser); - -#endif /* USURPATION_PROTOCOL_H_INCLUDED */ |