72 lines
2 KiB
Go
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
|
|
*/
|