interface ModeSelectBehavior {
    [reference]: Datasource<StateType>;
    agent: Agent;
    cluster: never;
    context: ActionContext;
    endpoint: Endpoint<Empty>;
    env: Environment;
    events: EventEmitter & Omit<ClusterEvents<Of<{
        attributes: {};
        commands: {};
        events: {};
        id: 0;
        name: "Unknown";
        revision: 0;
    }>, typeof ClusterBehavior>, never> & {
        currentMode$Changing: ClusterEvents.AttributeObservable<Attribute<number, any>>;
        description$Changing: ClusterEvents.AttributeObservable<FixedAttribute<string, any>>;
        standardNamespace$Changing: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
        supportedModes$Changing: ClusterEvents.AttributeObservable<FixedAttribute<TypeFromFields<{
            label: FieldType<string>;
            mode: FieldType<number>;
            semanticTags: FieldType<TypeFromFields<{
                mfgCode: ...;
                value: ...;
            }>[]>;
        }>[], any>>;
    } & {
        startUpMode$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    } & {
        currentMode$Changed: ClusterEvents.AttributeObservable<Attribute<number, any>>;
        description$Changed: ClusterEvents.AttributeObservable<FixedAttribute<string, any>>;
        standardNamespace$Changed: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
        supportedModes$Changed: ClusterEvents.AttributeObservable<FixedAttribute<TypeFromFields<{
            label: FieldType<string>;
            mode: FieldType<number>;
            semanticTags: FieldType<TypeFromFields<{
                mfgCode: ...;
                value: ...;
            }>[]>;
        }>[], any>>;
    } & {
        startUpMode$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    } & {} & {};
    features: TypeFromBitSchema<{}> & TypeFromBitSchema<{
        onOff: BitFlag;
    }>;
    session: SecureSession;
    state: Omit<ClusterState.Type<Of<{
        attributes: {};
        commands: {};
        events: {};
        id: 0;
        name: "Unknown";
        revision: 0;
    }>, typeof ClusterBehavior>, never> & {
        currentMode: number;
    } & {
        startUpMode?: null | number;
    } & {
        description: string;
        standardNamespace: null | number;
        supportedModes: TypeFromFields<{
            label: FieldType<string>;
            mode: FieldType<number>;
            semanticTags: FieldType<TypeFromFields<{
                mfgCode: FieldType<VendorId>;
                value: FieldType<number>;
            }>[]>;
        }>[];
    } & {};
    [asyncDispose](): MaybePromise;
    asAdmin(fn: (() => void)): void;
    assertAttributeEnabled<This, K>(this: This, attributeName: K): void;
    callback<A, R>(reactor: Reactor<A, R>, options?: Reactor.Options): ((...args: A) => undefined | R);
    changeToMode(request: ModeSelect.ChangeToModeRequest): MaybePromise;
    initialize(_options?: {}): MaybePromise;
    reactTo<O>(observable: O, reactor: Reactor<Parameters<O["emit"]>, ReturnType<O["emit"]>>, options?: Reactor.Options): void;
    requireAttributeEnabled<This, K>(this: This, attributeName: K): Exclude<This["state"][K], undefined>;
    toString(): string;
    State: any;
}

Hierarchy

  • ModeSelectBehaviorType
    • ModeSelectBehavior

Properties

[reference]: Datasource<StateType>
agent: Agent
cluster: never

The implemented cluster.

context: ActionContext
endpoint: Endpoint<Empty>
events: EventEmitter & Omit<ClusterEvents<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior>, never> & {
    currentMode$Changing: ClusterEvents.AttributeObservable<Attribute<number, any>>;
    description$Changing: ClusterEvents.AttributeObservable<FixedAttribute<string, any>>;
    standardNamespace$Changing: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
    supportedModes$Changing: ClusterEvents.AttributeObservable<FixedAttribute<TypeFromFields<{
        label: FieldType<string>;
        mode: FieldType<number>;
        semanticTags: FieldType<TypeFromFields<{
            mfgCode: ...;
            value: ...;
        }>[]>;
    }>[], any>>;
} & {
    startUpMode$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
} & {
    currentMode$Changed: ClusterEvents.AttributeObservable<Attribute<number, any>>;
    description$Changed: ClusterEvents.AttributeObservable<FixedAttribute<string, any>>;
    standardNamespace$Changed: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
    supportedModes$Changed: ClusterEvents.AttributeObservable<FixedAttribute<TypeFromFields<{
        label: FieldType<string>;
        mode: FieldType<number>;
        semanticTags: FieldType<TypeFromFields<{
            mfgCode: ...;
            value: ...;
        }>[]>;
    }>[], any>>;
} & {
    startUpMode$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
} & {} & {}

Access the behavior's events.

features: TypeFromBitSchema<{}> & TypeFromBitSchema<{
    onOff: BitFlag;
}>

Supported features as a flag object.

session: SecureSession
state: Omit<ClusterState.Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior>, never> & {
    currentMode: number;
} & {
    startUpMode?: null | number;
} & {
    description: string;
    standardNamespace: null | number;
    supportedModes: TypeFromFields<{
        label: FieldType<string>;
        mode: FieldType<number>;
        semanticTags: FieldType<TypeFromFields<{
            mfgCode: FieldType<VendorId>;
            value: FieldType<number>;
        }>[]>;
    }>[];
} & {}

Access the behavior's state.

Type declaration

  • ReadonlycurrentMode: number

    This attribute represents the current mode of the server.

    The value of this field must match the Mode field of one of the entries in the SupportedModes

    attribute.

    MatterSpecification.v13.Cluster § 1.9.6.5

Type declaration

  • Optional ReadonlystartUpMode?: null | number

    The StartUpMode attribute value indicates the desired startup mode for the server when it is supplied with power.

    If this attribute is not null, the CurrentMode attribute shall be set to the StartUpMode value, when the server is powered up, except in the case when the OnMode attribute overrides the StartUpMode attribute (see OnModeWithPowerUp).

    This behavior does not apply to reboots associated with OTA. After an OTA restart, the CurrentMode attribute shall return to its value prior to the restart.

    The value of this field shall match the Mode field of one of the entries in the SupportedModes

    attribute.

    If this attribute is not implemented, or is set to the null value, it shall have no effect.

    MatterSpecification.v13.Cluster § 1.9.6.6

Type declaration

  • Readonlydescription: string

    This attribute describes the purpose of the server, in readable text.

    For example, a coffee machine may have a Mode Select cluster for the amount of milk to add, and another Mode Select cluster for the amount of sugar to add. In this case, the first instance can have the description Milk and the second instance can have the description Sugar. This allows the user to tell the purpose of each of the instances.

    MatterSpecification.v13.Cluster § 1.9.6.2

  • ReadonlystandardNamespace: null | number

    This attribute, when not null, shall indicate a single standard namespace for any standard semantic tag value supported in this or any other cluster instance with the same value of this attribute. A

    null value indicates no standard namespace, and therefore, no standard semantic tags are provided in this cluster instance. Each standard namespace and corresponding values and value meanings shall be defined in another document.

    MatterSpecification.v13.Cluster § 1.9.6.3

  • ReadonlysupportedModes: TypeFromFields<{
        label: FieldType<string>;
        mode: FieldType<number>;
        semanticTags: FieldType<TypeFromFields<{
            mfgCode: FieldType<VendorId>;
            value: FieldType<number>;
        }>[]>;
    }>[]

    This attribute is the list of supported modes that may be selected for the CurrentMode attribute. Each item in this list represents a unique mode as indicated by the Mode field of the ModeOptionStruct. Each entry in this list shall have a unique value for the Mode field.

    MatterSpecification.v13.Cluster § 1.9.6.4

Methods

  • Release resources. This is the public API for releasing application resources held by behaviors in internal state.

    Returns MaybePromise

  • Execute logic with elevated privileges.

    The provided function executes with privileges escalated to offline mode. This is not commonly necessary.

    Elevated logic effectively ignores ACLs so should be used with care.

    Note that interactions with the behavior will remain elevated until the synchronous completion of this call. You should only elevate privileges for synchronous logic.

    Parameters

    • fn: (() => void)

      the elevated logic

        • (): void
        • Returns void

    Returns void

  • Type Parameters

    • This extends Behavior
    • K extends string | number | symbol

    Parameters

    • this: This
    • attributeName: K

    Returns void

  • Create a generic callback function that has the same properties as a Reactor.

    Like a reactor, the callback's "this" will be bound to an active Behavior instance. Because of this: The reactor MUST be a real JS function - arrow functions will not work!

    Type Parameters

    • A extends any[]
    • R

    Parameters

    Returns ((...args: A) => undefined | R)

      • (...args): undefined | R
      • Parameters

        • Rest...args: A

        Returns undefined | R

  • On receipt of this command, if the NewMode field indicates a valid mode transition within the supported list, the server shall set the CurrentMode attribute to the NewMode value, otherwise, the server shall respond with an INVALID_COMMAND status response.

    Parameters

    Returns MaybePromise

    MatterSpecification.v13.Cluster § 1.9.7.1

  • Behaviors are ephemeral and should not perform initialization in their constructor. They can override this method instead.

    This method may be synchronous or asyncronous. If asynchronous, the behavior will not be available for external use until initialization completes.

    Parameters

    • Optional_options: {}

      Returns MaybePromise

    • Install a Reactor.

      Important: The reactor MUST be a real JS function - arrow functions will not work!

      Type Parameters

      Parameters

      Returns void

    • Type Parameters

      • This extends Behavior
      • K extends string | number | symbol

      Parameters

      • this: This
      • attributeName: K

      Returns Exclude<This["state"][K], undefined>

    • Description used in diagnostic messages.

      Returns string