domain_deviceOperatingState.js

import BitmaskEnum from "../util/bitmaskEnum.js";

/**
 * An enumeration of standardized device operating states.
 *
 * @extends module:util~Enum
 * @alias module:domain~DeviceOperatingState
 */
class DeviceOperatingState extends BitmaskEnum {
	/**
	 * Constructor.
	 *
	 * @param {string} name the name
	 * @param {number} bitNumber the bit offset, starting from `1` for the least significant bit
	 */
	constructor(name, bitNumber) {
		super(name, bitNumber);
		if (this.constructor === DeviceOperatingState) {
			Object.freeze(this);
		}
	}

	/**
	 * Get the state code value.
	 *
	 * @returns {number} the code
	 */
	get code() {
		return this.bitmaskBitNumber;
	}

	/**
	 * Get an enum for a code value.
	 *
	 * @param {number} code the code to look for
	 * @returns {DeviceOperatingState} the state, or `null` if not found
	 */
	static forCode(code) {
		return BitmaskEnum.enumForBitNumber(code, DeviceOperatingStateValues);
	}

	/**
	 * Get the {@link module:domain~DeviceOperatingStates} values.
	 *
	 * @inheritdoc
	 */
	static enumValues() {
		return DeviceOperatingStateValues;
	}
}

const DeviceOperatingStateValues = Object.freeze([
	new DeviceOperatingState("Unknown", 0),
	new DeviceOperatingState("Normal", 1),
	new DeviceOperatingState("Starting", 2),
	new DeviceOperatingState("Standby", 3),
	new DeviceOperatingState("Shutdown", 4),
	new DeviceOperatingState("Fault", 5),
	new DeviceOperatingState("Disabled", 6),
	new DeviceOperatingState("Recovery", 7),
	new DeviceOperatingState("Override", 8),
]);

/**
 * The enumeration of supported DeviceOperatingState values.
 *
 * @readonly
 * @enum {module:domain~DeviceOperatingState}
 * @property {module:domain~DeviceOperatingState} Unknown an unknown state
 * @property {module:domain~DeviceOperatingState} Normal normal operating state
 * @property {module:domain~DeviceOperatingState} Starting a startup/initializing state
 * @property {module:domain~DeviceOperatingState} Standby a standby/low power mode
 * @property {module:domain~DeviceOperatingState} Shutdown a shutdown/off state
 * @property {module:domain~DeviceOperatingState} Fault a faulty or error condition
 * @property {module:domain~DeviceOperatingState} Disabled a disabled state
 * @property {module:domain~DeviceOperatingState} Recovery a recovery state
 * @property {module:domain~DeviceOperatingState} Override a manual or overridden state
 * @alias module:domain~DeviceOperatingStates
 */
const DeviceOperatingStates = DeviceOperatingState.enumsValue(DeviceOperatingStateValues);

export default DeviceOperatingStates;
export { DeviceOperatingState };