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>
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
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,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user