feat: use /configuration/device and replice reachview system to define

antenna height

See Pyxis/fieldnotes#63 (comment)
This commit is contained in:
2024-09-20 10:12:05 +02:00
parent b2cdf23fb7
commit bea49c78a9
8 changed files with 149 additions and 16 deletions

View File

@ -60,6 +60,8 @@ func (o *Operations) Reboot(ctx context.Context) error {
return err
}
const DeviceHeight = 0.134
// SetBase implements protocol.Operations.
func (o *Operations) SetBase(ctx context.Context, funcs ...protocol.SetBaseOptionFunc) error {
config, err := o.GetConfiguration(ctx)
@ -96,17 +98,41 @@ func (o *Operations) SetBase(ctx context.Context, funcs ...protocol.SetBaseOptio
base.Coordinates.Longitude = *opts.Longitude
}
if opts.AntennaOffset != nil {
base.AntennaOffset = *opts.AntennaOffset
}
if _, err := o.PostBaseCoordinates(ctx, base); err != nil {
return errors.WithStack(err)
}
if opts.AntennaOffset != nil {
device := &model.ConfigurationDevice{
AntennaHeight: *opts.AntennaOffset + DeviceHeight,
}
if _, err := o.PostDevice(ctx, device); err != nil {
return errors.WithStack(err)
}
}
return nil
}
// GetBaseInfo implements protocol.Operations.
func (o *Operations) GetBaseInfo(ctx context.Context) (*protocol.BaseInfo, error) {
config, err := o.GetConfiguration(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
baseInfo := &protocol.BaseInfo{
Mode: config.BaseMode.BaseCoordinates.Mode,
AntennaOffset: config.BaseMode.BaseCoordinates.AntennaOffset - DeviceHeight,
Height: config.BaseMode.BaseCoordinates.Coordinates.Height,
Latitude: config.BaseMode.BaseCoordinates.Coordinates.Latitude,
Longitude: config.BaseMode.BaseCoordinates.Coordinates.Longitude,
}
return baseInfo, nil
}
// Configuration implements protocol.Operations.
func (o *Operations) Configuration(ctx context.Context) (any, error) {
config, err := o.GetConfiguration(ctx)