改造成支持lora mesh(没实现,只是支持)
This commit is contained in:
@@ -20,6 +20,7 @@ import (
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/transport"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/transport/lora"
|
||||
)
|
||||
|
||||
@@ -37,6 +38,9 @@ type Application struct {
|
||||
executionLogRepo repository.ExecutionLogRepository
|
||||
pendingCollectionRepo repository.PendingCollectionRepository
|
||||
analysisPlanTaskManager *task.AnalysisPlanTaskManager
|
||||
|
||||
// Lora Mesh 监听器
|
||||
loraMeshCommunicator transport.Listener
|
||||
}
|
||||
|
||||
// NewApplication 创建并初始化一个新的 Application 实例。
|
||||
@@ -98,15 +102,27 @@ func NewApplication(configPath string) (*Application, error) {
|
||||
// 初始化审计服务
|
||||
auditService := audit.NewService(userActionLogRepo, logger)
|
||||
|
||||
// 初始化设备上行监听器
|
||||
listenHandler := webhook.NewChirpStackListener(logger, sensorDataRepo, deviceRepo, areaControllerRepo, deviceCommandLogRepo, pendingCollectionRepo)
|
||||
// --- 初始化 LoRa 相关组件 ---
|
||||
var listenHandler webhook.ListenHandler
|
||||
var comm transport.Communicator
|
||||
var loraListener transport.Listener
|
||||
|
||||
if cfg.Lora.Mode == config.LoraMode_LoRaWAN {
|
||||
logger.Info("当前运行模式: lora_wan。初始化 ChirpStack 监听器和传输层。")
|
||||
listenHandler = webhook.NewChirpStackListener(logger, sensorDataRepo, deviceRepo, areaControllerRepo, deviceCommandLogRepo, pendingCollectionRepo)
|
||||
comm = lora.NewChirpStackTransport(cfg.ChirpStack, logger)
|
||||
loraListener = lora.NewPlaceholderTransport(logger)
|
||||
} else {
|
||||
logger.Info("当前运行模式: lora_mesh。初始化 LoRa Mesh 传输层和占位符监听器。")
|
||||
listenHandler = webhook.NewPlaceholderListener(logger)
|
||||
tp := lora.NewLoRaMeshUartPassthroughTransport(cfg.LoraMesh, logger)
|
||||
loraListener = tp
|
||||
comm = tp
|
||||
}
|
||||
|
||||
// 初始化计划触发器管理器
|
||||
analysisPlanTaskManager := task.NewAnalysisPlanTaskManager(planRepo, pendingTaskRepo, executionLogRepo, logger)
|
||||
|
||||
// 初始化设备通信器 (纯粹的通信客户端)
|
||||
comm := lora.NewChirpStackTransport(cfg.ChirpStack, logger)
|
||||
|
||||
// 初始化通用设备服务
|
||||
generalDeviceService := device.NewGeneralDeviceService(
|
||||
deviceRepo,
|
||||
@@ -160,6 +176,7 @@ func NewApplication(configPath string) (*Application, error) {
|
||||
executionLogRepo: executionLogRepo,
|
||||
pendingCollectionRepo: pendingCollectionRepo,
|
||||
analysisPlanTaskManager: analysisPlanTaskManager,
|
||||
loraMeshCommunicator: loraListener,
|
||||
}
|
||||
|
||||
return app, nil
|
||||
@@ -169,6 +186,11 @@ func NewApplication(configPath string) (*Application, error) {
|
||||
func (app *Application) Start() error {
|
||||
app.Logger.Info("应用启动中...")
|
||||
|
||||
// -- 启动 LoRa Mesh 监听器
|
||||
if err := app.loraMeshCommunicator.Listen(); err != nil {
|
||||
return fmt.Errorf("启动 LoRa Mesh 监听器失败: %w", err)
|
||||
}
|
||||
|
||||
// --- 清理待采集任务 ---
|
||||
if err := app.initializePendingCollections(); err != nil {
|
||||
// 这是一个非致命错误,记录它,但应用应继续启动
|
||||
@@ -216,6 +238,11 @@ func (app *Application) Stop() error {
|
||||
app.Logger.Errorw("数据库连接断开失败", "error", err)
|
||||
}
|
||||
|
||||
// 关闭 LoRa Mesh 监听器
|
||||
if err := app.loraMeshCommunicator.Stop(); err != nil {
|
||||
app.Logger.Errorw("LoRa Mesh 监听器关闭失败", "error", err)
|
||||
}
|
||||
|
||||
// 刷新日志缓冲区
|
||||
_ = app.Logger.Sync()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user