hanze/muizenval

client/include/interface.h in master
Repositories | Summary | Log | Files

interface.h (1243B) download


 1#pragma once
 2
 3#include <Arduino_JSON.h>
 4
 5
 6typedef JSONVar json;
 7
 8extern json null_response;
 9
10struct interface {
11	enum method {
12		METHOD_GET,
13		METHOD_POST
14	};
15
16	enum command_status {
17		STATUS_OK		 = 0,	 // command succeed
18		STATUS_ERROR	 = 1,	 // command returned an error
19		STATUS_TIMEOUT	 = 2,	 // command timed out
20		STATUS_NOT_READY = 3,	 // interface is not ready
21	};
22
23	enum command_flags {
24		COMMAND_NONE,				// none of them underneath
25		COMMAND_FORCE  = 1 << 0,	// ignore modemReady/remoteReady
26		COMMAND_BLOCK  = 1 << 1,	// no time-out (for waiting commands)
27		COMMAND_IGNORE = 1 << 2,	// don't wait for response, just wait $ignoreDelay secounds
28	};
29
30  protected:
31	bool remoteReady = false;
32	bool modemReady	 = false;
33
34	void beginModem();
35
36	void beginRemote();
37	void endRemote();
38
39  public:
40	char token[17];
41
42	json request, response;
43
44	void begin();
45
46	int send(method method, const char* endpoint);
47
48	void sendToken();
49
50	command_status remote(const char* command, json params = nullptr, json& response = null_response, command_flags flags = COMMAND_NONE);
51
52	command_status modem(const char* request, char* response, command_flags flags = COMMAND_NONE);
53	command_status modem(const char* request, command_flags flags = COMMAND_NONE);
54};