feat(gateway): integrate bridge service into gateway controller for transport handling

Signed-off-by: Tony <tonylu@tony-cloud.com>
This commit is contained in:
Tony
2026-05-19 05:52:36 +08:00
parent 3bc5355041
commit 226855362b
6 changed files with 391 additions and 112 deletions
@@ -19,6 +19,7 @@ namespace gateway {
class DaliDomainService;
struct DaliRawFrame;
class GatewayBridgeService;
class GatewayRuntime;
struct GatewayControllerConfig {
@@ -76,6 +77,7 @@ class GatewayController {
void addBleStateSink(BleStateSink sink);
void addWifiStateSink(WifiStateSink sink);
void addGatewayNameSink(GatewayNameSink sink);
void setBridgeService(GatewayBridgeService* bridge_service);
bool setupMode() const;
bool wirelessSetupMode() const;
@@ -100,6 +102,13 @@ class GatewayController {
uint8_t scene_id{0};
};
struct BridgeTransportRequestState {
uint8_t version{0};
uint16_t payload_length{0};
uint8_t total_chunks{0};
std::map<uint8_t, std::vector<uint8_t>> chunks;
};
static void TaskEntry(void* arg);
void taskLoop();
void dispatchCommand(const std::vector<uint8_t>& command);
@@ -156,10 +165,14 @@ class GatewayController {
void handleAllocationCommand(uint8_t gateway_id, const std::vector<uint8_t>& command);
void handleInternalSceneCommand(uint8_t gateway_id, const std::vector<uint8_t>& command);
void handleInternalGroupCommand(uint8_t gateway_id, const std::vector<uint8_t>& command);
void handleBridgeTransportCommand(uint8_t gateway_id, const std::vector<uint8_t>& command);
void publishBridgeTransportResponse(uint8_t gateway_id, uint8_t version, uint8_t sequence,
std::string_view response);
GatewayRuntime& runtime_;
DaliDomainService& dali_domain_;
GatewayCache& cache_;
GatewayBridgeService* bridge_service_{nullptr};
GatewayControllerConfig config_;
TaskHandle_t task_handle_{nullptr};
SemaphoreHandle_t maintenance_lock_{nullptr};
@@ -167,6 +180,7 @@ class GatewayController {
std::vector<BleStateSink> ble_state_sinks_;
std::vector<WifiStateSink> wifi_state_sinks_;
std::vector<GatewayNameSink> gateway_name_sinks_;
std::map<uint16_t, BridgeTransportRequestState> bridge_transport_requests_;
std::map<uint8_t, ReconciliationJob> reconciliation_jobs_;
std::atomic<int> maintenance_activity_gateway_{-1};
bool setup_mode_{false};