summaryrefslogtreecommitdiff
path: root/minion/src/wifi_module.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'minion/src/wifi_module.hpp')
-rw-r--r--minion/src/wifi_module.hpp322
1 files changed, 161 insertions, 161 deletions
diff --git a/minion/src/wifi_module.hpp b/minion/src/wifi_module.hpp
index da4a487..1049c54 100644
--- a/minion/src/wifi_module.hpp
+++ b/minion/src/wifi_module.hpp
@@ -1,161 +1,161 @@
-#pragma once
-
-#include "http/request.hpp"
-#include "network_connection.hpp"
-
-#include <SoftwareSerial.h>
-#include <avr/pgmspace.h>
-#include <stddef.h>
-#include <stdint.h>
-
-constexpr auto MAX_NETWORK_MODULE_RESPONSE_LENGTH = 128U;
-
-constexpr auto REQUEST_DATA_LENGTH_BUF_SIZE = 16U;
-constexpr auto REQUEST_METHOD_STR_MAX_LENGTH = 10U;
-constexpr auto REQUEST_PATH_MAX_LENGTH = 64U;
-constexpr auto REQUEST_HTTP_VERSION_MAX_LENGTH = 10U;
-
-constexpr auto WIFI_CONNECT_COMMAND_BASE_LENGTH = 7U;
-constexpr auto CREATE_TCP_SERVER_COMMAND_BASE_LENGTH = 8U;
-constexpr auto CLOSE_CONNECTION_COMMAND_BASE_LENGTH = 51U;
-constexpr auto SEND_RESPONSE_COMMAND_BASE_LENGTH = 51U;
-
-constexpr auto ASCII_TO_CHAR = 48U;
-
-constexpr auto TIMEOUT_SHORT = 1500U;
-constexpr auto TIMEOUT_MEDIUM = 4000U;
-constexpr auto TIMEOUT_LONG = 10000U;
-
-const char RESPONSE_HTTP_VERSION[] PROGMEM = { "HTTP/1.1" };
-constexpr auto RESPONSE_STATUS_CODE_LENGTH = 3U;
-
-constexpr auto NUMBER_BASE = 10U;
-
-enum WifiMode
-{
- Station = 1,
- SoftAP = 2,
- SoftAPAndStation = 3
-};
-
-enum WiFiModuleResponseStatus
-{
- OK,
- FAIL,
- ERROR,
- TIMEOUT
-};
-
-struct WiFiModuleOptions
-{
- uint8_t receive_pin;
- uint8_t transmit_pin;
-};
-
-class WiFiModule
-{
-public:
- explicit WiFiModule(const WiFiModuleOptions &options) noexcept;
-
- void begin(size_t baudrate) noexcept;
-
- auto get_available() noexcept -> int;
-
- void reset() noexcept;
-
- /**
- * Connects to a wifi network.
- *
- * @param ssid The service set identifier of a wifi network.
- * @param password The wifi network password.
- *
- * @returns Whether or not it succeeded.
- */
- auto connect_to_wifi(const char *ssid, const char *password) noexcept -> bool;
-
- void set_wifi_mode(WifiMode wifi_mode) noexcept;
-
- void set_multiple_connections_enabled(bool is_enabled) noexcept;
-
- void set_echo_enabled(bool is_enabled) noexcept;
-
- void create_tcp_server(size_t port) noexcept;
-
- /**
- * Tests the connection to the wifi module.
- *
- * @returns Whether or not the test succeeded.
- */
- auto test() noexcept -> bool;
-
- /**
- * Gets local IP address of the wifi module.
- *
- * @param local_ip_out Local IP output buffer.
- *
- * @returns A pointer to the local IP output buffer.
- */
- auto get_local_ip(char *local_ip_out) noexcept -> const char *;
-
- /**
- * Gets the MAC address of the wifi module.
- *
- * @param mac_address_out MAC address output buffer.
- *
- * @returns A pointer to the MAC address output buffer.
- */
- auto get_mac_address(char *mac_address_out) noexcept -> const char *;
-
- /**
- * Reads a incoming HTTP request.
- *
- * @returns A request. Has a connection with a ID of -1 if reading the request failed.
- */
- auto read_incoming_request() noexcept -> HTTPRequest;
-
- auto close_connection(NetworkConnection &connection) noexcept -> bool;
-
- auto send_response(
- const NetworkConnection &connection,
- size_t status_code,
- const char **headers,
- size_t headers_cnt,
- const char *body
- ) noexcept -> bool;
-
-private:
- SoftwareSerial _serial;
-
- /**
- * Sends a command to the wifi module.
- *
- * @param command A command without the "AT+" in the beginning.
- *
- * @returns Whether or not it succeeded.
- */
- auto _send_serial(const char *command) noexcept -> bool;
-
- auto _read_connection_id() noexcept -> int8_t;
-
- auto _read_request_data_length() noexcept -> size_t;
-
- auto _read_request_method(size_t &request_data_length) noexcept -> HTTPRequestMethod;
-
- /**
- * Reads from the wifi module until it responds with a status.
- *
- * @param timeout Timeout in milliseconds.
- * @param response_out Response output buffer.
- *
- * @returns The response status.
- *
- */
- auto _read(uint64_t timeout, char *response_out) noexcept -> WiFiModuleResponseStatus;
-
- void
- _read_to(char *buffer_out, size_t length, char stop_char, uint64_t timeout) noexcept;
-
- void _read_bytes(char *buffer_out, size_t length, uint64_t timeout) noexcept;
-
- auto _read_byte() noexcept -> char;
-};
+#pragma once
+
+#include "http/request.hpp"
+#include "network_connection.hpp"
+
+#include <SoftwareSerial.h>
+#include <avr/pgmspace.h>
+#include <stddef.h>
+#include <stdint.h>
+
+constexpr auto MAX_NETWORK_MODULE_RESPONSE_LENGTH = 128U;
+
+constexpr auto REQUEST_DATA_LENGTH_BUF_SIZE = 16U;
+constexpr auto REQUEST_METHOD_STR_MAX_LENGTH = 10U;
+constexpr auto REQUEST_PATH_MAX_LENGTH = 64U;
+constexpr auto REQUEST_HTTP_VERSION_MAX_LENGTH = 10U;
+
+constexpr auto WIFI_CONNECT_COMMAND_BASE_LENGTH = 7U;
+constexpr auto CREATE_TCP_SERVER_COMMAND_BASE_LENGTH = 8U;
+constexpr auto CLOSE_CONNECTION_COMMAND_BASE_LENGTH = 51U;
+constexpr auto SEND_RESPONSE_COMMAND_BASE_LENGTH = 51U;
+
+constexpr auto ASCII_TO_CHAR = 48U;
+
+constexpr auto TIMEOUT_SHORT = 1500U;
+constexpr auto TIMEOUT_MEDIUM = 4000U;
+constexpr auto TIMEOUT_LONG = 10000U;
+
+const char RESPONSE_HTTP_VERSION[] PROGMEM = { "HTTP/1.1" };
+constexpr auto RESPONSE_STATUS_CODE_LENGTH = 3U;
+
+constexpr auto NUMBER_BASE = 10U;
+
+enum WifiMode
+{
+ Station = 1,
+ SoftAP = 2,
+ SoftAPAndStation = 3
+};
+
+enum WiFiModuleResponseStatus
+{
+ OK,
+ FAIL,
+ ERROR,
+ TIMEOUT
+};
+
+struct WiFiModuleOptions
+{
+ uint8_t receive_pin;
+ uint8_t transmit_pin;
+};
+
+class WiFiModule
+{
+public:
+ explicit WiFiModule(const WiFiModuleOptions &options) noexcept;
+
+ void begin(size_t baudrate) noexcept;
+
+ auto get_available() noexcept -> int;
+
+ void reset() noexcept;
+
+ /**
+ * Connects to a wifi network.
+ *
+ * @param ssid The service set identifier of a wifi network.
+ * @param password The wifi network password.
+ *
+ * @returns Whether or not it succeeded.
+ */
+ auto connect_to_wifi(const char *ssid, const char *password) noexcept -> bool;
+
+ void set_wifi_mode(WifiMode wifi_mode) noexcept;
+
+ void set_multiple_connections_enabled(bool is_enabled) noexcept;
+
+ void set_echo_enabled(bool is_enabled) noexcept;
+
+ void create_tcp_server(size_t port) noexcept;
+
+ /**
+ * Tests the connection to the wifi module.
+ *
+ * @returns Whether or not the test succeeded.
+ */
+ auto test() noexcept -> bool;
+
+ /**
+ * Gets local IP address of the wifi module.
+ *
+ * @param local_ip_out Local IP output buffer.
+ *
+ * @returns A pointer to the local IP output buffer.
+ */
+ auto get_local_ip(char *local_ip_out) noexcept -> const char *;
+
+ /**
+ * Gets the MAC address of the wifi module.
+ *
+ * @param mac_address_out MAC address output buffer.
+ *
+ * @returns A pointer to the MAC address output buffer.
+ */
+ auto get_mac_address(char *mac_address_out) noexcept -> const char *;
+
+ /**
+ * Reads a incoming HTTP request.
+ *
+ * @returns A request. Has a connection with a ID of -1 if reading the request failed.
+ */
+ auto read_incoming_request() noexcept -> HTTPRequest;
+
+ auto close_connection(NetworkConnection &connection) noexcept -> bool;
+
+ auto send_response(
+ const NetworkConnection &connection,
+ size_t status_code,
+ const char **headers,
+ size_t headers_cnt,
+ const char *body
+ ) noexcept -> bool;
+
+private:
+ SoftwareSerial _serial;
+
+ /**
+ * Sends a command to the wifi module.
+ *
+ * @param command A command without the "AT+" in the beginning.
+ *
+ * @returns Whether or not it succeeded.
+ */
+ auto _send_serial(const char *command) noexcept -> bool;
+
+ auto _read_connection_id() noexcept -> int8_t;
+
+ auto _read_request_data_length() noexcept -> size_t;
+
+ auto _read_request_method(size_t &request_data_length) noexcept -> HTTPRequestMethod;
+
+ /**
+ * Reads from the wifi module until it responds with a status.
+ *
+ * @param timeout Timeout in milliseconds.
+ * @param response_out Response output buffer.
+ *
+ * @returns The response status.
+ *
+ */
+ auto _read(uint64_t timeout, char *response_out) noexcept -> WiFiModuleResponseStatus;
+
+ void
+ _read_to(char *buffer_out, size_t length, char stop_char, uint64_t timeout) noexcept;
+
+ void _read_bytes(char *buffer_out, size_t length, uint64_t timeout) noexcept;
+
+ auto _read_byte() noexcept -> char;
+};