diff --git a/dist/roverd b/dist/roverd index b5a89b26..5cc7c554 100755 Binary files a/dist/roverd and b/dist/roverd differ diff --git a/dist/servoverifier b/dist/servoverifier index 89e121d9..28aa3ea3 100755 Binary files a/dist/servoverifier and b/dist/servoverifier differ diff --git a/pi/roverd/camera_servo.go b/pi/roverd/camera_servo.go index 16eb92d7..c1ea8ac4 100644 --- a/pi/roverd/camera_servo.go +++ b/pi/roverd/camera_servo.go @@ -42,7 +42,7 @@ func NewCameraServo(cfg CameraServoConfig, logger *log.Logger) (*CameraServo, er rpio.Close() return nil, err } - logger.Printf("camera servo initialized on GPIO %d (%.1f..%.1f deg)", cfg.Pin, cfg.MinAngle, cfg.MaxAngle) + logger.Printf("camera servo initialized on GPIO %d (%.1f..%.1f deg, %d..%d us, invert=%v)", cfg.Pin, cfg.MinAngle, cfg.MaxAngle, cfg.MinPulseUs, cfg.MaxPulseUs, cfg.Invert) return servo, nil } diff --git a/pi/roverd/config.go b/pi/roverd/config.go index 5a0c7f6b..0bfbe20f 100644 --- a/pi/roverd/config.go +++ b/pi/roverd/config.go @@ -249,9 +249,16 @@ func validateServoConfig(cfg *CameraServoConfig) error { if cfg.CycleLen <= 0 { return errors.New("cycleLen must be > 0") } - if cfg.MinPulseUs <= 0 || cfg.MaxPulseUs <= 0 || cfg.MinPulseUs >= cfg.MaxPulseUs { + if cfg.MinPulseUs <= 0 || cfg.MaxPulseUs <= 0 { return errors.New("minPulseUs/maxPulseUs invalid") } + if cfg.MinPulseUs == cfg.MaxPulseUs { + return errors.New("minPulseUs/maxPulseUs cannot be equal") + } + if cfg.MinPulseUs > cfg.MaxPulseUs { + cfg.MinPulseUs, cfg.MaxPulseUs = cfg.MaxPulseUs, cfg.MinPulseUs + cfg.Invert = !cfg.Invert + } if cfg.MinAngle >= cfg.MaxAngle { return errors.New("minAngle must be less than maxAngle") }