Files
PFC/Code/STM32/Core/Src/Components/ESP8266.hpp

46 lines
1.2 KiB
C++

/*
* ESP8266.hpp
*
* Created on: Mar 7, 2023
* Author: Gabriel
*/
#ifndef SRC_COMPONENTS_ESP8266_HPP_
#define SRC_COMPONENTS_ESP8266_HPP_
#include "main.h"
#include <cstring>
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_ */