/* * ESP8266.hpp * * Created on: Mar 7, 2023 * Author: Gabriel */ #ifndef SRC_COMPONENTS_ESP8266_HPP_ #define SRC_COMPONENTS_ESP8266_HPP_ #include "main.h" #include class ESP8266 { public: typedef enum { STATUS_OK, STATUS_ERROR, STATUS_TIMEOUT } statusTypeDef; ESP8266(UART_HandleTypeDef* huart); virtual ~ESP8266(); void init(); statusTypeDef command(const char* command); void send_uint32(const char* name, uint32_t value); uint64_t receive_uint64(); private: static const uint32_t MAX_BUFFER_SIZE = 256; static const uint32_t OK_TIMEOUT = 5000; uint8_t interruptHeader[9]; uint8_t interruptPayload[MAX_BUFFER_SIZE]; statusTypeDef send(const char* data); HAL_StatusTypeDef wait_on_flag_until_timeout(uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout); HAL_StatusTypeDef uart_receive_until_termination_byte(uint8_t *pData, uint16_t Size, uint8_t terminationByte, uint32_t Timeout); statusTypeDef wait_until_ok(); statusTypeDef wait_until_send_ok(); UART_HandleTypeDef* huart; uint8_t buffer[MAX_BUFFER_SIZE]; char string2[MAX_BUFFER_SIZE]; uint64_t recvValue64; }; #endif /* SRC_COMPONENTS_ESP8266_HPP_ */