- 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>
77 lines
2.2 KiB
Dart
77 lines
2.2 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
|
|
enum ConnectionStatus {
|
|
disconnected,
|
|
connecting,
|
|
connected,
|
|
error,
|
|
}
|
|
|
|
class GeViServerState extends Equatable {
|
|
final ConnectionStatus connectionStatus;
|
|
final String? serverAddress;
|
|
final String? username;
|
|
final DateTime? connectedAt;
|
|
final bool isLoading;
|
|
final String? lastActionResult;
|
|
final bool lastActionSuccess;
|
|
final String? errorMessage;
|
|
final List<String> messageLog;
|
|
|
|
const GeViServerState({
|
|
this.connectionStatus = ConnectionStatus.disconnected,
|
|
this.serverAddress,
|
|
this.username,
|
|
this.connectedAt,
|
|
this.isLoading = false,
|
|
this.lastActionResult,
|
|
this.lastActionSuccess = false,
|
|
this.errorMessage,
|
|
this.messageLog = const [],
|
|
});
|
|
|
|
bool get isConnected => connectionStatus == ConnectionStatus.connected;
|
|
|
|
GeViServerState copyWith({
|
|
ConnectionStatus? connectionStatus,
|
|
String? serverAddress,
|
|
String? username,
|
|
DateTime? connectedAt,
|
|
bool? isLoading,
|
|
String? lastActionResult,
|
|
bool? lastActionSuccess,
|
|
String? errorMessage,
|
|
List<String>? messageLog,
|
|
bool clearServerAddress = false,
|
|
bool clearUsername = false,
|
|
bool clearConnectedAt = false,
|
|
bool clearErrorMessage = false,
|
|
bool clearLastActionResult = false,
|
|
}) {
|
|
return GeViServerState(
|
|
connectionStatus: connectionStatus ?? this.connectionStatus,
|
|
serverAddress: clearServerAddress ? null : (serverAddress ?? this.serverAddress),
|
|
username: clearUsername ? null : (username ?? this.username),
|
|
connectedAt: clearConnectedAt ? null : (connectedAt ?? this.connectedAt),
|
|
isLoading: isLoading ?? this.isLoading,
|
|
lastActionResult: clearLastActionResult ? null : (lastActionResult ?? this.lastActionResult),
|
|
lastActionSuccess: lastActionSuccess ?? this.lastActionSuccess,
|
|
errorMessage: clearErrorMessage ? null : (errorMessage ?? this.errorMessage),
|
|
messageLog: messageLog ?? this.messageLog,
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [
|
|
connectionStatus,
|
|
serverAddress,
|
|
username,
|
|
connectedAt,
|
|
isLoading,
|
|
lastActionResult,
|
|
lastActionSuccess,
|
|
errorMessage,
|
|
messageLog,
|
|
];
|
|
}
|