@0x9fa2b43397f34e02;

using CSharp = import "../programming_language/csharp.capnp";
$CSharp.namespace("FabAccessAPI.Schema");

using import "../traits.capnp".TraitSuper;
using import "../traits.capnp".TraitError;
using import "../utils.capnp".Fallible;
using import "../utils.capnp".Duration;

# OID for this trait: 1.3.6.1.4.1.61783.612.1.5
#                                   │    │  │ │
#                       RLKM UG PEN ╯    │  │ │
#                                        │  │ │
#                      FabAccess subtree ╯  │ │
#                                           │ │
#                                    Traits ╯ │
#                                             │
#                                  Locateable ╯

interface TraitLocateable extends (TraitSuper) {
    getState @0 () -> ();
    identify @1 ( time :Duration ) -> Fallible(TraitLocateable, TraitError(ErrorLocateable));
    setActive @2 () -> Fallible(TraitLocateable, TraitError(ErrorLocateable));
    setIdle @3 () -> Fallible(TraitLocateable, TraitError(ErrorLocateable));
}

struct ErrorLocateable {

}

struct StateLocateable {
    union {
        idle @0 :Void;
        active @1 :Void;
    }
}