From aef91bb9db4d09c8cc30400d69a6a11f5999d618 Mon Sep 17 00:00:00 2001 From: Aditya Naik Date: Fri, 7 Aug 2020 14:47:02 -0400 Subject: Handshake state machine files, massive simplification in main --- include/devices.h | 5 +++++ include/handshake.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 include/handshake.h (limited to 'include') diff --git a/include/devices.h b/include/devices.h index b2cb825..d96d2b8 100644 --- a/include/devices.h +++ b/include/devices.h @@ -1,6 +1,9 @@ #include "handshake.pb.h" +#ifndef __DEVICES_H +#define __DEVICES_H + #define _MDR s2m_MDR_response typedef struct _device_info { @@ -41,3 +44,5 @@ typedef enum state { /* Handshake message size definitions */ #define MDR_req_buf_len 2 + +#endif /* __DEVICES_H */ diff --git a/include/handshake.h b/include/handshake.h new file mode 100644 index 0000000..a777abb --- /dev/null +++ b/include/handshake.h @@ -0,0 +1,28 @@ +#include "devices.h" +#include "stream.h" + +#ifndef __HANDSHAKE_H +#define __HANDSHAKE_H + +#define EXPAND_AS_ENUM(a, b) a, +#define EXPAND_AS_JUMPTABLE(a, b) b, +#define EXPAND_AS_PROTOTYPES(a, b) hs_status_t b(p_stream_t, void**); + +typedef hs_status_t (*hs_func_t)(p_stream_t, void**); + +#define HS_STATE_TABLE(ENTRY) \ + ENTRY(HS_STATE_0, HS_func_0) \ + ENTRY(HS_STATE_1, HS_func_1) \ + ENTRY(HS_STATE_2, HS_func_2) \ + ENTRY(HS_STATE_3, HS_func_3) \ + +enum { + HS_STATE_TABLE(EXPAND_AS_ENUM) + NUM_STATES, + HS_STATE_FAIL, + HS_STATE_SUCCESS, +}; + +HS_STATE_TABLE(EXPAND_AS_PROTOTYPES); + +#endif /* __HANDSHAKE_H */ -- cgit v1.2.3