LOM2M  0.8.0
bsp.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013-2021 LAAS-CNRS (www.laas.fr)
3  7 Colonel Roche 31077 Toulouse - France
4 
5  The use of this source code requires an agreement with the CNRS.
6 
7  Initial Contributors:
8  David Gauchard, Guillaume Garzone, Thierry Monteil.
9 */
10 
11 #ifndef __LOM2M_BSP_H
12 #define __LOM2M_BSP_H
13 
14 #include <WString.h>
15 #include <ArduinoJson.h>
16 #include "ResponsePrimitive.h"
17 
19 {
20  H000 = 0,
21  H200_OK = 200,
22  H201_Created = 201,
36 };
37 
39 {
40  ENC_NONE = -1,
42 };
43 
44 // BSP must define:
45 //enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
46 
47 #ifdef ESP8266
48 #include "bsp-esp8266.h"
49 #endif
50 
51 class ResponsePrimitive;
52 
53 const String HTTPCode2Human(HTTPCode code);
54 
55 HTTPMethod method();
56 
57 const char* method(HTTPMethod m);
58 
59 [[deprecated("Replaced by the same function using Response Primitive")]]
60 void sendReply(HTTPCode code, const String& contentType, const String& message);
61 
62 void sendReply(ResponsePrimitive& resp, const String& contentType, const String& message);
63 
64 inline void sendReply(ResponsePrimitive& resp, const String& message)
65 {
66  return sendReply(resp, String(F("text/plain")), message);
67 };
68 
69 const String& HTTPContent();
70 template <typename T> const String& HTTPHeader(const T& attribute);
71 template <typename T> const String& HTTPArg(const T& key);
72 template <typename T> inline bool HTTPHasArg(const T& key);
73 
75 typedef uint64_t utime_t;
77 String get_ctime(time_t t);
84 utime_t getTimeFromString(String t);
85 
86 extern const String emptyString;
88 
89 constexpr char listSeparator = '#'; // internal common
90 
91 void log_setup();
92 void log(const char* fmt, ...);
93 
94 inline void logStream(Stream* in)
95 {
96  while (in && in->available())
97  {
98  log("%c", in->read());
99  }
100 }
101 
103 
104 void printHuman(Stream& to, int level, const char* tag, const char* data);
105 void printHumanSerial(int level, const char* tag, const char* data);
106 String getMac();
107 
108 using printfmt = std::function<void(int level, const char* tag, const char* data)>;
109 
111 
112 using Millis = decltype(millis());
113 
115 
116 extern const char* defaultPersistenceName;
117 
122 bool FSOpen ();
127 void FSClose ();
128 
136 int persistenceStore(JsonObject toStore, const char* name = defaultPersistenceName);
137 
149 DeserializationError persistenceLoad(JsonDocument& toStore, const char* name = defaultPersistenceName);
150 
151 
153 
154 #endif // __LOM2M_BSP_H
const char * contentType(const String &filename)
Definition: bsp-esp8266.cpp:13
bool FSOpen()
Definition: bsp-esp8266.cpp:148
uint64_t utime_t
Definition: bsp.h:75
const String & HTTPHeader(const T &attribute)
Definition: bsp-esp8266.h:41
void sendReply(HTTPCode code, const String &contentType, const String &message)
Definition: bsp-esp8266.h:35
const String & HTTPContent()
Definition: bsp-esp8266.h:58
void printHumanSerial(int level, const char *tag, const char *data)
Definition: bsp-esp8266.cpp:76
const String & HTTPArg(const T &key)
Definition: bsp-esp8266.h:47
void log(const char *fmt,...)
Definition: bsp-esp8266.cpp:100
decltype(millis()) Millis
Definition: bsp.h:112
utime_t getTimeFromString(String t)
Definition: bsp-esp8266.cpp:44
int persistenceStore(JsonObject toStore, const char *name=defaultPersistenceName)
Definition: bsp-esp8266.cpp:164
constexpr char listSeparator
Definition: bsp.h:89
void logStream(Stream *in)
Definition: bsp.h:94
String get_ctime(time_t t)
Definition: bsp-esp8266.cpp:33
String getMac()
Definition: bsp-esp8266.cpp:81
HTTPCode
Definition: bsp.h:19
@ H200_OK
Definition: bsp.h:21
@ H401_Unauthorized
Definition: bsp.h:25
@ H404_NotFound
Definition: bsp.h:27
@ H501_NotImplemented
Definition: bsp.h:34
@ H204_NoContent
Definition: bsp.h:23
@ H201_Created
Definition: bsp.h:22
@ H409_Conflict
Definition: bsp.h:31
@ H415_Unsupported
Definition: bsp.h:32
@ H403_Forbidden
Definition: bsp.h:26
@ H406_NotAcceptable
Definition: bsp.h:29
@ H405_NotAllowed
Definition: bsp.h:28
@ H400_BadRequest
Definition: bsp.h:24
@ H500_InternalError
Definition: bsp.h:33
@ H000
Definition: bsp.h:20
@ H408_RequestTimeout
Definition: bsp.h:30
@ H503_Maintenance
Definition: bsp.h:35
bool HTTPHasArg(const T &key)
Definition: bsp-esp8266.h:53
std::function< void(int level, const char *tag, const char *data)> printfmt
Definition: bsp.h:108
utime_t default_expiration_duration
Definition: lom2m.cpp:70
utime_t get_utime()
Definition: bsp-esp8266.cpp:23
const String emptyString
void log_setup()
Definition: bsp-esp8266.cpp:93
void printHuman(Stream &to, int level, const char *tag, const char *data)
Definition: bsp-esp8266.cpp:59
const String HTTPCode2Human(HTTPCode code)
Definition: bsp-esp8266.h:30
void FSClose()
Definition: bsp-esp8266.cpp:159
const char * defaultPersistenceName
Definition: bsp.cpp:13
HTTPMethod method()
Definition: bsp-esp8266.h:78
DeserializationError persistenceLoad(JsonDocument &toStore, const char *name=defaultPersistenceName)
Definition: bsp-esp8266.cpp:184
Encoding
Definition: bsp.h:39
@ ENC_NONE
Definition: bsp.h:40
@ ENC_JSON
Definition: bsp.h:41
Definition: ResponsePrimitive.h:49
String message
Definition: mqttBinding.cpp:190