ASCOMInitiative / ASCOMPlatform

The ASCOM Platform implements the ASCOM interface standards and provides development and runtime components to ease driver and application development.
http://www.ascom-standards.org
Other
99 stars 32 forks source link

Consider Implementing a slewtoaltazasync method for Dome #61

Closed michealroberts closed 3 months ago

michealroberts commented 2 years ago

As the title suggests, it would be nice to have a slew to coordinates asynchronously which matches that of the telescope specific API methods, and alt-az tracking.

Peter-Simpson commented 2 years ago

Hi Micheal,

Thanks for this suggestion, which, like your issue #60, we also discussed yesterday.

We already have Dome.SlewToAltitude and Dome.SlewToAzimuth members in the interface and in our view, adding a new member that simply combines the outcomes from these two commands doesn't deliver sufficient value to justify the interface change.

However, your point about asynchronous operation is well taken and, as part of the next Dome interface, we do intend to require that the Dome.SlewToAltitude and Dome.SlewToAzimuth methods operate asynchronously. This will enable you to create your own SlewToAltAzAsync method that fires off two concurrent tasks to slew to Alt and Az and waits for both to complete asynchronously.

Best wishes, Peter

michealroberts commented 2 years ago

Hi Peter,

That's great, I appreciate the compromise.

To keep things consistent with the Telescope API (https://ascom-standards.org/api/#/Telescope%20Specific%20Methods/put_telescope__device_number__slewtoaltazasync) shouldn't we implement both a synchronous call (keeping both Dome.SlewToAzimuth and Dome.SlewToAltitude) and introduce the async methods as Dome.SlewToXAsync (where X is either Azimuth or Altitude)?

I'd argue for the extra async functions, as we would need both the async call (so to make the request and response cycle close early), and then SSE poll for the { alt, az } position. However, it is also useful to have the sun version for a procedural view of the return, so we don't need to long poll for the sync to target.

Let me know if that makes sense! Essentially, I would argue that there is a strong need for both the sync and async versions of the SlewTo methods for the Dome.

I'd appreciate this to be taken into consideration for the final implementation.

Peter-Simpson commented 2 years ago

Hi Michael,

I don't know whether you noticed our public release of the ASCOM Library over the week end. Amongst other things this includes both Alpaca and COM clients that have asynchronous methods that return awaitable .NET Tasks for all the long-running interface operations such as slewing telescopes and domes.

These encapsulate the operation initiation and completion variable polling activities in one method. Here are links to the introduction, api and some basic use examples.

Hopefully the library will make your development more straightforward.

Best wishes, Peter

michealroberts commented 2 years ago

Hi Peter,

That's excellent! 🚀 :)

Do you know when these changes will also be reflected in the ASCOM alpaca Simulators / API? Do you need a separate PR for this? I'm happy to contribute ...

Many thanks,

Michael

Peter-Simpson commented 3 months ago

Closing due to no recent activity.