Files
geutebruck/geutebruck-api/docs/chm-extracted/functions_vars.html
Administrator 14893e62a5 feat: Geutebruck GeViScope/GeViSoft Action Mapping System - MVP
This MVP release provides a complete full-stack solution for managing action mappings
in Geutebruck's GeViScope and GeViSoft video surveillance systems.

## Features

### Flutter Web Application (Port 8081)
- Modern, responsive UI for managing action mappings
- Action picker dialog with full parameter configuration
- Support for both GSC (GeViScope) and G-Core server actions
- Consistent UI for input and output actions with edit/delete capabilities
- Real-time action mapping creation, editing, and deletion
- Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers)

### FastAPI REST Backend (Port 8000)
- RESTful API for action mapping CRUD operations
- Action template service with comprehensive action catalog (247 actions)
- Server management (G-Core and GeViScope servers)
- Configuration tree reading and writing
- JWT authentication with role-based access control
- PostgreSQL database integration

### C# SDK Bridge (gRPC, Port 50051)
- Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll)
- Action mapping creation with correct binary format
- Support for GSC and G-Core action types
- Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug)
- Action ID lookup table with server-specific action IDs
- Configuration reading/writing via SetupClient

## Bug Fixes
- **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet
- Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)`
- Proper filter flags and VideoInput=0 for action mappings
- Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft)

## Technical Stack
- **Frontend**: Flutter Web, Dart, Dio HTTP client
- **Backend**: Python FastAPI, PostgreSQL, Redis
- **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK
- **Authentication**: JWT tokens
- **Configuration**: GeViSoft .set files (binary format)

## Credentials
- GeViSoft/GeViScope: username=sysadmin, password=masterkey
- Default admin: username=admin, password=admin123

## Deployment
All services run on localhost:
- Flutter Web: http://localhost:8081
- FastAPI: http://localhost:8000
- SDK Bridge gRPC: localhost:50051
- GeViServer: localhost (default port)

Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 18:10:54 +01:00

210 lines
12 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Geutebrueck GeViSoftSDK .NET Wrapper: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="label_geutebrueck_sdk_small.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Geutebrueck GeViSoftSDK .NET Wrapper
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.5.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
<li><a href="functions_prop.html"><span>Properties</span></a></li>
<li><a href="functions_evnt.html"><span>Events</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index__"><span>_</span></a></li>
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&#160;
<h3><a class="anchor" id="index__"></a>- _ -</h3><ul>
<li>_ActionCode
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_action.html#a651927b5acbdd595341523364705e0d1">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViAction</a>
</li>
<li>_ActionData
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_action_data.html#a87a84f87fd60701d9496b5d8c359c54e">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViActionData</a>
</li>
<li>_ActionKind
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_action.html#ab5912a1ac29256839154094daa77a1a3">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViAction</a>
</li>
<li>_DBAnswerKind
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_d_b_answer.html#acf84fd6223aab42344510bc35721b22f">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViDBAnswer</a>
</li>
<li>_DBQueryKind
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_d_b_query.html#a09f69456f6ac297adbdfb0af2fd6e2ec">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViDBQuery</a>
, <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_d_b_filter.html#a24ec436df69b6d702a581bb79327584e">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViDBFilter</a>
</li>
<li>_DelegateInstance
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_databcc77fc62fa6591146e55882982c0bc6b.html#a6534d9bb359e5b9ca8aba9797d1fa412">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftDatabaseNotificationCallbackWrapper</a>
, <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_connect_progress_callback_wrapper.html#acdffb423c98d6551d405f808764deda5">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftConnectProgressCallbackWrapper</a>
</li>
<li>_MessageKind
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_message.html#a19a6c58418198e49e084f75b99105a68">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViMessage</a>
</li>
<li>_NativeCallback
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_connect_progress_callback_wrapper.html#ab736a4dc5ce8e5a1366d4c443c7e5244">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftConnectProgressCallbackWrapper</a>
, <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_databcc77fc62fa6591146e55882982c0bc6b.html#afe322390afeba5b63766dcc0c215d718">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftDatabaseNotificationCallbackWrapper</a>
</li>
<li>_NativeInstance
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_databcc77fc62fa6591146e55882982c0bc6b.html#a995c764eda8eb55352f5e6267e80902d">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftDatabaseNotificationCallbackWrapper</a>
, <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_connect_progress_callback_wrapper.html#aaeec29297a1ba37660b938d72f3b2643">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftConnectProgressCallbackWrapper</a>
</li>
<li>_RecipientId
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_message.html#af6b8d953a841d8a6994f45ad1d3e3fe8">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViMessage</a>
</li>
<li>_SenderId
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_message.html#abdcd111769c2766c59edbf58037eb473">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViMessage</a>
</li>
<li>_StateAnswerKind
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_state_answer.html#a58a1c36fd1aea4896e66efff58476963">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViStateAnswer</a>
</li>
<li>_StateQueryKind
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_state_query.html#a7a524ce9112577b69a19196adefbf3ee">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViStateQuery</a>
</li>
</ul>
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>aDateAndTime
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_system_actions_1_9b14850d44c61d30853b7ea3086dc928.html#a7b69aa9e58e59b53ec454cd5429330e4">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::SystemActions::GeViAct_SyncTimeSetTime</a>
, <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_action_dispatcher351b9397a39afac73daa895107fe4783.html#ae62a06b968dab82b0091ed2dc8668b4e">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::ActionDispatcher::GeViAct_SyncTimeSetTimeEventArgs</a>
</li>
</ul>
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>Data1
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_g_u_i_d.html#a0eb8bbfe735bc3edfec286147316b8b9">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViGUID</a>
</li>
<li>Data2
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_g_u_i_d.html#a58ff97f1a4a7f2c0e876fae256435d28">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViGUID</a>
</li>
<li>Data3
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_g_u_i_d.html#ae2ddb90178cb8cc8139f802bc956be50">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViGUID</a>
</li>
<li>Data4
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_g_u_i_d.html#a85604944fdf6b08045182adbdf985d8d">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViGUID</a>
</li>
<li>DatePart
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_t_ge_vi_date_time.html#ae74e6cc344f7c6071797b8d435de4083">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViTGeViDateTime</a>
</li>
<li>dipsosed
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_database.html#a6c00f4f6df8b10a2dafc42fcf4850672">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViDatabase</a>
</li>
</ul>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>m_DBNotificationCallbackWrapper
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_database.html#a48ad86645e0a945f16b4608e6b841c27">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViDatabase</a>
</li>
<li>m_Effort
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_connect_progress_event_args.html#a41f497f13c4e320ea3230d5d76b933e0">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftConnectProgressEventArgs</a>
</li>
<li>m_GscAction
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_action_dispatcher84a4786ba7d54e7e9ed8593f9f78a03f.html#ae6b79fbf6f72682577f51bbdcca229fd">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::ActionDispatcher::GeViAct_GscActionEventArgs</a>
</li>
<li>m_NativeDatabaseHandle
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_database.html#aad0b5ac2c7a972c9e5e06ddcf17b840e">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViDatabase</a>
</li>
<li>m_NativeMessage
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_message.html#acebb7f67776339a37db27ce086b35487">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViMessage</a>
</li>
<li>m_params
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_database_notification_event_args.html#a4e68cbdf84e4069b47cd7754aaa2d60e">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftDatabaseNotificationEventArgs</a>
</li>
<li>m_Progress
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_connect_progress_event_args.html#a057784e5426d701476c62704af05fc62">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftConnectProgressEventArgs</a>
</li>
<li>m_sendQueryTimeout
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_database.html#a16a8cac40b8b6eb4faab91c2c9161f0a">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViDatabase</a>
</li>
<li>m_ServerNotification
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_soft_database_notification_event_args.html#ab80df478a630761109688af0fd15efda">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViSoftDatabaseNotificationEventArgs</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>sStartTime
: <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_state_answers_1_1ec07d193bafa50cb65270d9824f88750.html#a9411dd1120d0ef756aafc85e99ecb6a5">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::StateAnswers::GeViSA_InfoDatabaseCreationTime</a>
, <a class="el" href="class_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_state_answers_1_162e32cd66a8689a457308770e56a01fe.html#a57c25559d6d511f6f847e5578e7cde98">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::StateAnswers::GeViSA_InfoServerStartTime</a>
</li>
</ul>
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
<li>TimePart
: <a class="el" href="struct_g_e_u_t_e_b_r_u_e_c_k_1_1_ge_vi_soft_s_d_k_n_e_t_1_1_actions_wrapper_1_1_ge_vi_t_ge_vi_date_time.html#a7a99c50957c408b5adcffe0428adf5d0">GEUTEBRUECK::GeViSoftSDKNET::ActionsWrapper::GeViTGeViDateTime</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>
Generated on Fri Dec 9 2011 11:15:59 for Geutebrueck GeViSoftSDK .NET Wrapper by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>
</body>
</html>