029785ff1d
- Changed flash size configuration from 16MB to 4MB and updated partition table filename. - Introduced two gateway channels with UART configurations for communication. - Added support for gateway cache and startup services including BLE and Wi-Fi. - Enabled SPI RAM and configured its parameters for better memory management. - Enhanced the gateway bridge service to handle generated Modbus points more efficiently. - Refactored the gateway Modbus component to improve point management and added new methods for point description and generation. - Implemented a new Gateway485ControlBridge for handling 485 control communication with UART. - Added necessary files for the 485 control bridge including configuration and implementation. Signed-off-by: Tony <tonylu@tony-cloud.com>
47 lines
1.0 KiB
C++
47 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <vector>
|
|
|
|
#include "esp_err.h"
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
|
|
namespace gateway {
|
|
|
|
class GatewayController;
|
|
|
|
struct Gateway485ControlBridgeConfig {
|
|
bool enabled{false};
|
|
int tx_pin{-1};
|
|
int rx_pin{-1};
|
|
uint32_t baudrate{9600};
|
|
size_t rx_buffer_size{256};
|
|
size_t tx_buffer_size{256};
|
|
uint32_t read_timeout_ms{20};
|
|
uint32_t write_timeout_ms{20};
|
|
uint32_t task_stack_size{4096};
|
|
UBaseType_t task_priority{4};
|
|
};
|
|
|
|
class Gateway485ControlBridge {
|
|
public:
|
|
Gateway485ControlBridge(GatewayController& controller,
|
|
Gateway485ControlBridgeConfig config = {});
|
|
|
|
esp_err_t start();
|
|
|
|
private:
|
|
static void TaskEntry(void* arg);
|
|
void taskLoop();
|
|
void handleBytes(const uint8_t* data, size_t len);
|
|
void handleGatewayNotification(const std::vector<uint8_t>& frame);
|
|
|
|
GatewayController& controller_;
|
|
Gateway485ControlBridgeConfig config_;
|
|
TaskHandle_t task_handle_{nullptr};
|
|
bool started_{false};
|
|
};
|
|
|
|
} // namespace gateway
|