Implemented some operations for the cps feature.

This commit is contained in:
Faris Armoush
2025-04-09 15:40:44 +03:00
parent c0662bb19e
commit cd9ed5861a

View File

@ -0,0 +1,635 @@
import 'package:syncrow_web/pages/routines/models/device_functions.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
class CpsOperationalValue {
final String icon;
final String description;
final dynamic value;
CpsOperationalValue({
required this.icon,
required this.description,
required this.value,
});
}
abstract class CpsFunctions extends DeviceFunction<CpsOperationalValue> {
CpsFunctions({
required super.deviceId,
required super.deviceName,
required super.code,
required super.operationName,
required super.icon,
required this.type,
});
final String type;
List<CpsOperationalValue> getOperationalValues();
}
final class CpsRadarSwitchFunction extends CpsFunctions {
CpsRadarSwitchFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'radar_switch',
operationName: 'Radar Switch',
icon: Assets.acPower,
);
@override
List<CpsOperationalValue> getOperationalValues() => [
CpsOperationalValue(
icon: Assets.assetsAcPower,
description: "ON",
value: true,
),
CpsOperationalValue(
icon: Assets.assetsAcPowerOFF,
description: "OFF",
value: false,
),
];
}
final class CpsSpatialParameterSwitchFunction extends CpsFunctions {
CpsSpatialParameterSwitchFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'space_para_switch',
operationName: 'Spatial Parameter Switch',
icon: Assets.acPower,
);
@override
List<CpsOperationalValue> getOperationalValues() => [
CpsOperationalValue(
icon: Assets.assetsAcPower,
description: "ON",
value: true,
),
CpsOperationalValue(
icon: Assets.assetsAcPowerOFF,
description: "OFF",
value: false,
),
];
}
final class CpsSensitivityFunction extends CpsFunctions {
CpsSensitivityFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : min = 1,
max = 10,
step = 1,
scale = 0,
super(
code: 'far_detection',
operationName: 'Far Detection',
icon: Assets.sensitivity,
);
final int min;
final int max;
final int step;
final int scale;
@override
List<CpsOperationalValue> getOperationalValues() {
final values = <CpsOperationalValue>[];
for (var value = min; value <= max; value += step) {
values.add(
CpsOperationalValue(
icon: Assets.sensitivity,
description: '$value',
value: value,
),
);
}
return values;
}
}
final class CpsMovingSpeedFunction extends CpsFunctions {
CpsMovingSpeedFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.speedoMeter,
);
@override
List<CpsOperationalValue> getOperationalValues() {
return [];
}
}
final class CpsSpatialStaticValueFunction extends CpsFunctions {
CpsSpatialStaticValueFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.spatialStaticValue,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsSpatialMotionValueFunction extends CpsFunctions {
CpsSpatialMotionValueFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.spatialMotionValue,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsMaxDistanceOfDetectionFunction extends CpsFunctions {
CpsMaxDistanceOfDetectionFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.currentDistanceIcon,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsMaxDistanceOfStaticDetectionFunction extends CpsFunctions {
CpsMaxDistanceOfStaticDetectionFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.currentDistanceIcon,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsDetectionRangeFunction extends CpsFunctions {
CpsDetectionRangeFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.farDetection,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsDistanceOfMovingObjectsFunction extends CpsFunctions {
CpsDistanceOfMovingObjectsFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.currentDistanceIcon,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsPresenceJudgementThrsholdFunction extends CpsFunctions {
CpsPresenceJudgementThrsholdFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.presenceJudgementThrshold,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsMotionAmplitudeTriggerThresholdFunction extends CpsFunctions {
CpsMotionAmplitudeTriggerThresholdFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.presenceJudgementThrshold,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsPerpetualBoundaryFunction extends CpsFunctions {
CpsPerpetualBoundaryFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.boundary,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsMotionTriggerBoundaryFunction extends CpsFunctions {
CpsMotionTriggerBoundaryFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.motionMeter,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsMotionTriggerTimeFunction extends CpsFunctions {
CpsMotionTriggerTimeFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.motionMeter,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsMotionToStaticTimeFunction extends CpsFunctions {
CpsMotionToStaticTimeFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.motionMeter,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsEnteringNoBodyStateTimeFunction extends CpsFunctions {
CpsEnteringNoBodyStateTimeFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.motionMeter,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}
final class CpsSelfTestResultFunctions extends CpsFunctions {
CpsSelfTestResultFunctions({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'self_test_result',
operationName: 'Self-Test Result',
icon: Assets.selfTestResult,
);
@override
List<CpsOperationalValue> getOperationalValues() {
return [
CpsOperationalValue(
description: 'Self Testing',
icon: Assets.selfTestResult,
value: 'self_testing',
),
CpsOperationalValue(
description: 'Self Testing Success',
icon: Assets.selfTestingSuccess,
value: 'self_testing_success',
),
CpsOperationalValue(
description: 'Self Testing Failure',
icon: Assets.selfTestingFailure,
value: 'self_testing_failure',
),
CpsOperationalValue(
description: 'Self Testing Timeout',
icon: Assets.selfTestingTimeout,
value: 'self_testing_timeout',
),
CpsOperationalValue(
description: 'Communication Fault',
icon: Assets.communicationFault,
value: 'communication_fault',
),
];
}
}
final class CpsNobodyTimeFunction extends CpsFunctions {
CpsNobodyTimeFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'nobody_time',
operationName: 'Entering Nobody Time',
icon: Assets.assetsNobodyTime,
);
@override
List<CpsOperationalValue> getOperationalValues() {
return [
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: 'None',
value: 'none',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '10sec',
value: '10s',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '30sec',
value: '30s',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '1min',
value: '1min',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '2min',
value: '2min',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '5min',
value: '5min',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '10min',
value: '10min',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '30min',
value: '30min',
),
CpsOperationalValue(
icon: Assets.assetsNobodyTime,
description: '1hour',
value: '1hr',
),
];
}
}
final class CpsMovementFunctions extends CpsFunctions {
CpsMovementFunctions({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'movement',
operationName: 'Movement',
icon: Assets.motion,
);
@override
List<CpsOperationalValue> getOperationalValues() {
return [
CpsOperationalValue(
description: 'None',
icon: Assets.nobodyTime,
value: 'none',
),
CpsOperationalValue(
description: 'Close To',
icon: Assets.closeToMotion,
value: 'parlour',
),
CpsOperationalValue(
description: 'Far Away',
icon: Assets.farAwayMotion,
value: 'far_away',
),
];
}
}
final class CpsCustomModeFunction extends CpsFunctions {
CpsCustomModeFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'custom_mode',
operationName: 'Custom Mode',
icon: Assets.cpsCustomMode,
);
@override
List<CpsOperationalValue> getOperationalValues() {
return [
CpsOperationalValue(
icon: Assets.cpsMode1,
description: 'Mode 1',
value: 'mode1',
),
CpsOperationalValue(
icon: Assets.cpsMode2,
description: 'Mode 2',
value: 'mode2',
),
CpsOperationalValue(
icon: Assets.cpsMode3,
description: 'Mode 3',
value: 'mode3',
),
CpsOperationalValue(
icon: Assets.cpsMode4,
description: 'Mode 4',
value: 'mode4',
),
];
}
}
final class CpsSpaceTypeFunctions extends CpsFunctions {
CpsSpaceTypeFunctions({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'space_type',
operationName: 'Space Type',
icon: Assets.spaceType,
);
@override
List<CpsOperationalValue> getOperationalValues() {
return [
CpsOperationalValue(
description: 'Office',
icon: Assets.office,
value: 'office',
),
CpsOperationalValue(
description: 'Parlour',
icon: Assets.parlour,
value: 'parlour',
),
CpsOperationalValue(
description: 'Bathroom',
icon: Assets.bathroom,
value: 'bathroom',
),
CpsOperationalValue(
description: 'Bedroom',
icon: Assets.bedroom,
value: 'bedroom',
),
CpsOperationalValue(
description: 'DIY',
icon: Assets.dyi,
value: 'dyi',
),
];
}
}
class CpsPresenceStatusFunctions extends CpsFunctions {
CpsPresenceStatusFunctions({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: 'presence_state',
operationName: 'Presence Status',
icon: Assets.presenceSensor,
);
@override
List<CpsOperationalValue> getOperationalValues() {
return [
CpsOperationalValue(
icon: Assets.nobodyTime,
description: 'None',
value: 'none',
),
CpsOperationalValue(
icon: Assets.presenceState,
description: 'Presence',
value: 'presence',
),
CpsOperationalValue(
icon: Assets.motion,
description: 'Motion',
value: 'motion',
),
];
}
}
final class CpsSportsParaFunction extends CpsFunctions {
CpsSportsParaFunction({
required super.deviceId,
required super.deviceName,
required super.type,
}) : super(
code: '',
operationName: '',
icon: Assets.sportsPara,
);
@override
List<CpsOperationalValue> getOperationalValues() {
// TODO: implement getOperationalValues
throw UnimplementedError();
}
}