Files
geutebruck/geutebruck_app/lib/presentation/blocs/geviscope/geviscope_event.dart
Administrator a92b909539 feat: GeViScope SDK integration with C# Bridge and Flutter app
- Add GeViScope Bridge (C# .NET 8.0) on port 7720
  - Full SDK wrapper for camera control, PTZ, actions/events
  - 17 REST API endpoints for GeViScope server interaction
  - Support for MCS (Media Channel Simulator) with 16 test channels
  - Real-time action/event streaming via PLC callbacks

- Add GeViServer Bridge (C# .NET 8.0) on port 7710
  - Integration with GeViSoft orchestration layer
  - Input/output control and event management

- Update Python API with new routers
  - /api/geviscope/* - Proxy to GeViScope Bridge
  - /api/geviserver/* - Proxy to GeViServer Bridge
  - /api/excel/* - Excel import functionality

- Add Flutter app GeViScope integration
  - GeViScopeRemoteDataSource with 17 API methods
  - GeViScopeBloc for state management
  - GeViScopeScreen with PTZ controls
  - App drawer navigation to GeViScope

- Add SDK documentation (extracted from PDFs)
  - GeViScope SDK docs (7 parts + action reference)
  - GeViSoft SDK docs (12 chunks)

- Add .mcp.json for Claude Code MCP server config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 08:14:17 +01:00

182 lines
3.8 KiB
Dart

import 'package:equatable/equatable.dart';
abstract class GeViScopeEvent extends Equatable {
const GeViScopeEvent();
@override
List<Object?> get props => [];
}
/// Connect to GeViScope Camera Server
class ConnectGeViScopeEvent extends GeViScopeEvent {
final String address;
final String username;
final String password;
const ConnectGeViScopeEvent({
required this.address,
required this.username,
required this.password,
});
@override
List<Object?> get props => [address, username, password];
}
/// Disconnect from GeViScope
class DisconnectGeViScopeEvent extends GeViScopeEvent {
const DisconnectGeViScopeEvent();
}
/// Check connection status
class CheckGeViScopeStatusEvent extends GeViScopeEvent {
const CheckGeViScopeStatusEvent();
}
/// Load media channels
class LoadChannelsEvent extends GeViScopeEvent {
const LoadChannelsEvent();
}
/// Refresh media channels
class RefreshChannelsEvent extends GeViScopeEvent {
const RefreshChannelsEvent();
}
/// Send CrossSwitch command
class SendGeViScopeCrossSwitchEvent extends GeViScopeEvent {
final int videoInput;
final int videoOutput;
final int switchMode;
const SendGeViScopeCrossSwitchEvent({
required this.videoInput,
required this.videoOutput,
this.switchMode = 0,
});
@override
List<Object?> get props => [videoInput, videoOutput, switchMode];
}
/// PTZ Camera Pan
class CameraPanEvent extends GeViScopeEvent {
final int camera;
final String direction;
final int speed;
const CameraPanEvent({
required this.camera,
required this.direction,
this.speed = 50,
});
@override
List<Object?> get props => [camera, direction, speed];
}
/// PTZ Camera Tilt
class CameraTiltEvent extends GeViScopeEvent {
final int camera;
final String direction;
final int speed;
const CameraTiltEvent({
required this.camera,
required this.direction,
this.speed = 50,
});
@override
List<Object?> get props => [camera, direction, speed];
}
/// PTZ Camera Zoom
class CameraZoomEvent extends GeViScopeEvent {
final int camera;
final String direction;
final int speed;
const CameraZoomEvent({
required this.camera,
required this.direction,
this.speed = 50,
});
@override
List<Object?> get props => [camera, direction, speed];
}
/// PTZ Camera Stop
class CameraStopEvent extends GeViScopeEvent {
final int camera;
const CameraStopEvent({required this.camera});
@override
List<Object?> get props => [camera];
}
/// PTZ Camera Preset
class CameraPresetEvent extends GeViScopeEvent {
final int camera;
final int preset;
const CameraPresetEvent({
required this.camera,
required this.preset,
});
@override
List<Object?> get props => [camera, preset];
}
/// Close digital contact
class GeViScopeCloseContactEvent extends GeViScopeEvent {
final int contactId;
const GeViScopeCloseContactEvent({required this.contactId});
@override
List<Object?> get props => [contactId];
}
/// Open digital contact
class GeViScopeOpenContactEvent extends GeViScopeEvent {
final int contactId;
const GeViScopeOpenContactEvent({required this.contactId});
@override
List<Object?> get props => [contactId];
}
/// Send custom action
class SendGeViScopeCustomActionEvent extends GeViScopeEvent {
final int typeId;
final String text;
const SendGeViScopeCustomActionEvent({
required this.typeId,
this.text = '',
});
@override
List<Object?> get props => [typeId, text];
}
/// Send raw action
class SendGeViScopeActionEvent extends GeViScopeEvent {
final String action;
const SendGeViScopeActionEvent({required this.action});
@override
List<Object?> get props => [action];
}
/// Clear last action result
class ClearGeViScopeActionResultEvent extends GeViScopeEvent {
const ClearGeViScopeActionResultEvent();
}