blitzer-v2/radar/main.go
2025-08-09 14:27:26 +02:00

72 lines
2 KiB
Go

package radar
import (
"fmt"
"git.ctdo.de/henne/blitzer-v2/camera"
"git.ctdo.de/henne/blitzer-v2/config"
"git.ctdo.de/henne/blitzer-v2/db"
"git.ctdo.de/henne/blitzer-v2/printer"
"git.ctdo.de/henne/blitzer-v2/radar_lib"
"git.ctdo.de/henne/blitzer-v2/speedsign"
"github.com/sirupsen/logrus"
)
var r *radar_lib.Radar
func init() {
r = radar_lib.New(config.C.Radar.Port, config.C.Radar.Baud)
r.SetEventHandler(onEvent)
r.SetSpeedHandler(onSpeedEvent)
SetCommunicationConfig()
}
func onSpeedEvent(speed int) {
speedsign.Show(speed)
}
func onEvent(speed int) {
speedingTicket := db.SpeedingTicket{
Speed: speed,
AllowedSpeed: db.GetConfig().TriggerSpeed,
}
if err := db.DB.Save(&speedingTicket).Error; err != nil {
logrus.Error(err)
}
if err := camera.TakePhoto(speedingTicket.ID.String()); err != nil {
logrus.Error(err)
}
speedingTicket.ImagePath = fmt.Sprintf("/images/original/ticket-%s.jpg", speedingTicket.ID)
if err := db.DB.Save(&speedingTicket).Error; err != nil {
logrus.Error(err)
}
printer.PrintTicket(speedingTicket)
}
func SetConfig(height int, angle int, waveform bool) {
if waveform {
r.SetBaseConfig(height, angle, 1)
} else {
r.SetBaseConfig(height, angle, 0)
}
}
func SetSpeedConfig(speed int, minDistance, maxDistance, minSpeed, maxSpeed, triggerDistance int) {
r.SetTargetSpeedConfig(radar_lib.DirectionIncoming, minDistance*2, maxDistance*2, minSpeed, maxSpeed, speed, radar_lib.OutputLogicMostPlausible)
}
func SetCommunicationConfig() {
r.SetCommunicationConfig(radar_lib.PortRS485, radar_lib.Baud115200, radar_lib.OutputTypeNoOutput, radar_lib.OutputTypeNoOutput, radar_lib.OutputTypeNoOutput, 50)
}
/*
cfg.RadarAngle = form.RadarAngle
cfg.RadarHeight = form.RadarHeight
cfg.RadarMaxDistance = form.RadarMaxDistance
cfg.RadarMinDistance = form.RadarMinDistance
cfg.RadarMaxSpeed = form.RadarMaxSpeed
cfg.RadarMinSpeed = form.RadarMinSpeed
cfg.RadarWaveform = form.RadarWaveform
cfg.TriggerDistance = form.TriggerDistance
cfg.TriggerSpeed = form.TriggerSpeed
*/