Files
esdi/tui/tui.go
T
esilva 16e102dd83 Too many things for a single commit but in summary:
We got them data bytes computer majigs being transmitted to the display
and correctly parsed over there. Also seems to be fast. I won't touch
performance issues until I have this working and documented tho.
2026-03-10 23:10:10 +00:00

49 lines
1.0 KiB
Go

// Package tui
package tui
import (
"esdi/tui/internal/controllers"
"esdi/tui/internal/services"
"log/slog"
"github.com/rivo/tview"
)
type ControlPanel struct {
*controllers.Controller
DeviceController *controllers.DeviceController
}
func NewControlPanel(logger *slog.Logger) *ControlPanel {
baseController := &controllers.Controller{
Logger: logger,
App: tview.NewApplication(),
}
devService := services.NewCDashService(logger)
telemService := services.NewTelemetryService(logger, devService).
SetProvider("iRacing")
if telemService == nil {
panic("failed to create the telemetry service")
}
return &ControlPanel{
Controller: baseController,
DeviceController: controllers.NewDeviceController(baseController, devService, telemService),
}
}
func (cp *ControlPanel) Run() error {
if err := cp.DeviceController.Main(); err != nil {
return err
}
return cp.App.Run()
}
func Run(logger *slog.Logger) error {
progController := NewControlPanel(logger)
return progController.Run()
}