Files
spectr/cmd/daemon/main.go
T
2026-08-27 19:41:00 +03:00

48 lines
955 B
Go

package main
import (
"context"
"flag"
"log"
"os"
"os/signal"
"syscall"
"spektr/internal/config"
"spektr/internal/discovery"
grpcserver "spektr/internal/grpc"
"spektr/internal/service"
"spektr/internal/uart"
)
func main() {
configPath := flag.String("config", "./config.yaml", "path to config file")
flag.Parse()
cfg, err := config.Load(*configPath)
if err != nil {
log.Fatal(err)
}
u, err := uart.New(cfg.UARTDevice, cfg.UARTBaud)
if err != nil {
log.Fatal(err)
}
log.Printf("UART opened: %s @ %d", cfg.UARTDevice, cfg.UARTBaud)
defer u.Close()
svc := service.New(u)
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer cancel()
go func() {
if err := discovery.Serve(ctx, cfg.DiscoveryPort, cfg.GRPCAdvertiseAddr); err != nil {
log.Println("discovery stopped:", err)
}
}()
if err := grpcserver.Serve(ctx, cfg.GRPCListenAddr, svc); err != nil {
log.Fatal(err)
}
}