From cd9ed5861a8ebacd71fbea6bb75b8d3ca3d6361c Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Wed, 9 Apr 2025 15:40:44 +0300 Subject: [PATCH] Implemented some operations for the cps feature. --- .../ceiling_presence_sensor_functions.dart | 635 ++++++++++++++++++ 1 file changed, 635 insertions(+) create mode 100644 lib/pages/routines/models/ceiling_presence_sensor_functions.dart diff --git a/lib/pages/routines/models/ceiling_presence_sensor_functions.dart b/lib/pages/routines/models/ceiling_presence_sensor_functions.dart new file mode 100644 index 00000000..5bd15e66 --- /dev/null +++ b/lib/pages/routines/models/ceiling_presence_sensor_functions.dart @@ -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 { + CpsFunctions({ + required super.deviceId, + required super.deviceName, + required super.code, + required super.operationName, + required super.icon, + required this.type, + }); + + final String type; + + List 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 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 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 getOperationalValues() { + final values = []; + 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 getOperationalValues() { + // TODO: implement getOperationalValues + throw UnimplementedError(); + } +} \ No newline at end of file