run method
Runs this command.
The return value is wrapped in a Future
if necessary and returned by
CommandRunner.runCommand
.
Implementation
@override
void run() async {
if (argResults?['pan-tilt-x'] == null &&
argResults?['pan-tilt-y'] == null &&
argResults?['pan-tilt-zoom'] == null) {
throw UsageException(
'API usage error:',
'Either pan-tilt (both x and y values) or pan-tilt-zoom must be specified.',
);
} else if ((argResults?['pan-tilt-x'] != null &&
argResults?['pan-tilt-y'] == null) ||
(argResults?['pan-tilt-x'] == null &&
argResults?['pan-tilt-y'] != null)) {
throw UsageException(
'API usage error:',
'When using pan-tilt, both pan-tilt-x or pan-tilt-y must be specified.',
);
}
Vector2D? panTilt;
Vector1D? zoom;
if (argResults?['pan-tilt-x'] != null &&
argResults?['pan-tilt-y'] != null) {
panTilt = Vector2D.fromString(
x: argResults!['pan-tilt-x'],
y: argResults!['pan-tilt-y'],
);
}
if (argResults?['pan-tilt-zoom'] != null) {
zoom = Vector1D.fromString(x: argResults!['pan-tilt-zoom']);
}
await initializeOnvif();
try {
final place = PtzVector(panTilt: panTilt, zoom: zoom);
await ptz.absoluteMove(argResults!['profile-token'], position: place);
} on DioException catch (err) {
throw UsageException('API usage error:', err.usage);
}
}