Skip to content

Concept: AS Lite backend autodiscovery/configuration #513

@j5155

Description

@j5155

Is your feature request related to a problem? Please describe.
There's a couple problems that I think can be solved by one solution. Currently, AdvantageScope Lite assets require manual uploading to synchronize, and there's no way for AdvantageScope Desktop to access logs through the AdvantageScope Lite backend. Also, synchronizing custom assets between computers running AdvantageScope Desktop requires manually passing around some large files out of band. There's also no way for any AdvantageScope frontend to automatically discover which live logging endpoints are available and what ports and IPs they are on (#503 ).

Describe the solution you'd like
It would be really nice if there was a standardized way for the AdvantageScope Lite backend to pass data about itself to both the Lite and Desktop frontends. This would allow AdvantageScope Desktop to automatically connect to your robot without any manual configuration, and allow it to use the Lite endpoints, like custom asset syncing and log downloading.

What this actually means, I think, is three things:

A config.json exposed by the Lite backend with the endpoint ports for #503 , and for desktop. This can easily be implemented by itself for #503 , though I'm not sure how the backend should reliably know what else is available on the device. Implementations would have to be platform-specific, maybe all that should be provided is a default live logging service to immediately connect to?

A way for desktop to autodiscover Lite instances. To be truly universal, this has to be possible within the C#, Python, and Android/Kotlin backends, and has to work no matter the port or path Lite is hosted on. I think the only option for this is MDNS service discovery. I found libraries for each platform (link goes to advertising example): Python C# Android Node for frontend This would allow for one-click autoconnection to discovered robots without ever manually typing IPs or specifying what library to use. The backend would just expose an MDNS service with the IP, port and path. If the scope creep is too much, one alternative would be for AdvantageScope Desktop to expose a custom URI scheme, and AdvantageScope Lite to have an "open in desktop" button that passes it's ip/port/path to Desktop. I believe this would require zero backend changes at a slight usability cost.

Desktop frontend support for properly syncing and actually making use of the Lite endpoints. This means log downloading and asset syncing. Log downloading is easy once the Lite backend IP is known, it's just a case of enabling the existing UI. Asset syncing requires a little more thought. Automatically uploading downloaded assets onto the robot is definitely a good idea to avoid manually uploading them, but we would have to find a procedure for downloading assets from the robot to the desktop that properly handles versioning, conflicts, and deletion. However, this would make it really easy to get custom robot and field assets to new users, by just connecting to the robot.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions