summaryrefslogtreecommitdiff
path: root/include/handshake.h
blob: a777abb269717776bdb7c9dc9ab85a65026521f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 */