# Critical Structure Differences ## Working Mapping Structure (from TestMKS.set) ### Mapping Level (ID: "1"): ``` 1. .SwitchMode (bool): false ← FILTER FLAG - WE'RE MISSING THIS 2. .VideoInput (bool): true ← FILTER FLAG - WE'RE MISSING THIS 3. .VideoOutput (bool): false ← FILTER FLAG - WE'RE MISSING THIS 4. @ (string): "Mapping Name" 5. @! (int32): 0 6. @@ (int32): 100 7. Rules (folder) 8. SwitchMode (int32): 0 ← ACTUAL VALUE - WE'RE MISSING THIS 9. VideoInput (int32): 101027 ← ACTUAL VALUE - WE'RE MISSING THIS 10. VideoOutput (int32): 0 ← ACTUAL VALUE - WE'RE MISSING THIS ``` ### Output Action Structure (ID: "1", "2", etc.): ``` 1. @ (string): "Action Caption" 2. @! (int32): 0 3. @@ (int32): 4296, 9392, etc. ← VARIES - WE USE 100 4. GscAction or GCoreAction (string): "@ ActionName (...)" 5. GscServer or GCoreServer (string): "server-alias" ``` ## What Our C# Code Is Missing ### 1. Filter Flags At the mapping level, we need to write boolean filter flags BEFORE the @ field: - `.SwitchMode` (bool) - `.VideoInput` (bool) - `.VideoOutput` (bool) These control which fields are visible/filterable in GeViSet. ### 2. Actual Field Values AFTER the Rules folder, we need to write the actual field values: - `SwitchMode` (int32) - `VideoInput` (int32) - This is the camera/input ID - `VideoOutput` (int32) ### 3. Field Order The order is CRITICAL: 1. Filter flags (`.FieldName`) 2. Metadata (@, @!, @@) 3. Rules folder 4. Actual field values (FieldName) ### 4. Output Action IDs Working file uses "1", "2", etc. Need to verify if we're using "0", "1", etc. ### 5. Output Action @@ Flag Working file uses varying values (4296, 9392), not 100. This might be a state/flags field. ## Impact Without filter flags and actual field values, GeViSet: - Cannot properly identify the mapping type - Shows actions as "CrossSwitch" (default) - Breaks the configuration display ## Fix Required Update `ActionMappingManager.cs` to: 1. Write filter flags before metadata 2. Write actual field values after Rules folder 3. Match the exact field order from working mappings