<ServerManagerConfiguration>

<!-- Begin PacketInterpreter -->
<ProxyGroup name="base_PacketInterpreter_g">
  <SourceProxy name="base_PacketInterpreter"
         class="vtkInterpreter"
         label="vtkInterpreter">

  <IntVectorProperty
      name="ApplyTransform"
      animateable="0"
      command="SetApplyTransform"
      default_values="0"
      number_of_elements="1"
      panel_visibility="advanced">
    <BooleanDomain name="bool" />
    <Documentation>
      Apply geolocation data
    </Documentation>
  </IntVectorProperty>

  <ProxyProperty command="SetSensorTransform"
                  name="Sensor Transform"
                  panel_visibility="advanced">
    <ProxyListDomain name="proxy_list">
      <Proxy group="extended_sources"
             name="Transform2" />
    </ProxyListDomain>
  </ProxyProperty>

  <PropertyGroup label="Sensor Transform">
    <Property name="ApplyTransform" />
    <Property name="Sensor Transform" />
  </PropertyGroup>

  </SourceProxy>
</ProxyGroup>
<!-- End PacketInterpreter -->


<!-- Begin LidarPacketInterpreter -->
<ProxyGroup name="base_LidarPacketInterpreter_g">
  <SourceProxy name="base_LidarPacketInterpreter"
         class="vtkLidarPacketInterpreter"
         label="vtkLidarPacketInterpreter"
         base_proxygroup="base_PacketInterpreter_g"
         base_proxyname="base_PacketInterpreter">

  <StringVectorProperty
    name="CalibrationFileName"
    label="Calibration File"
    command="GetCalibrationFileName"
    panel_visibility="advanced"
    information_only="1">
    <SimpleStringInformationHelper />
  </StringVectorProperty>

  <IntVectorProperty
    name="CropMode"
    animateable="0"
    command="SetCropMode"
    default_values="0"
    number_of_elements="1"
    panel_visibility="advanced">
    <EnumerationDomain name="enum">
      <Entry value="0" text="None"/>
      <Entry value="1" text="Cartesian"/>
      <Entry value="2" text="Spherical"/>
    </EnumerationDomain>
  </IntVectorProperty>

  <IntVectorProperty
    name="CropOutside"
    animateable="0"
    command="SetCropOutside"
    default_values="0"
    number_of_elements="1"
    panel_visibility="advanced">
    <BooleanDomain name="bool" />
     <Documentation>
       Crop outside (instead of inside) the 3D volume defined by the boudaries specified below
       i.e. keep the points that lay outside the volume below.
     </Documentation>
  </IntVectorProperty>

  <DoubleVectorProperty
    name="CropRegion"
    animateable="0"
    command="SetCropRegion"
    default_values="0 0 0 0 0 0"
    number_of_elements="6"
    panel_visibility="advanced">
    <Documentation>
      Defines the 3D cropping volume (the volume where points should be kept) by providing two boundaries.

      If CropMode == None, this feature is not used and all points are kept

      If CropMode == Cartesian, the format is: Xmin, Xmax, Ymin, Ymax, Zmin, Zmax (all in meters)

      If CropMode == Spherical, the format is: AzimuthMin, AzimuthMax, VerticalAngleMin, VerticalAngleMax, DistanceMin, DistanceMax (Azimuth in [0;360] mod 360, VerticalAngle in [-90, 90] increasing with z, with 0 in plane z = 0, distance >= 0 in meters)
    </Documentation>
  </DoubleVectorProperty>

  <PropertyGroup label="Cropping Option">
    <Property name="CropMode" />
    <Property name="CropOutside" />
    <Property name="CropRegion" />
  </PropertyGroup>

  <IntVectorProperty
    name="IgnoreZeroDistances"
    animateable="0"
    command="SetIgnoreZeroDistances"
    default_values="1"
    number_of_elements="1">
    <BooleanDomain name="bool" />
  </IntVectorProperty>

  <IntVectorProperty
    name="IgnoreEmptyFrames"
    animateable="0"
    command="SetIgnoreEmptyFrames"
    default_values="1"
    number_of_elements="1">
    <BooleanDomain name="bool" />
  </IntVectorProperty>

  <IntVectorProperty
    command="GetNumberOfChannels"
    information_only="1"
    name="NumberOfChannelsInformation">
  </IntVectorProperty>

  <DoubleVectorProperty
    name="Time Offset"
    command="SetTimeOffset"
    default_values="0"
    number_of_elements="1">
    <Documentation>
        TimeOffset (in seconds) relative to the system clock.
    </Documentation>
  </DoubleVectorProperty>

  <IntVectorProperty
    name="EnableAdvancedArrays"
    animateable="0"
    command="SetEnableAdvancedArrays"
    default_values="0"
    number_of_elements="1">
    <BooleanDomain name="bool" />
  </IntVectorProperty>

  <StringVectorProperty
    name="DefaultRecordFileName"
    command="GetDefaultRecordFileName"
    panel_visibility="never"
    information_only="1">
  </StringVectorProperty>


  <IntVectorProperty
    name="FramingMethod"
    command="SetFramingMethod"
    number_of_elements="1"
    default_values="0">
    <EnumerationDomain name="enum">
      <Entry value="0" text="Interpreter provided (default)"/>
      <Entry value="1" text="Time (Network Packet Time)"/>
    </EnumerationDomain>
    <Documentation>
      Method to use to compute frames (frames are not intrinsic to the data).
      *Interpreter provided* method: the limit between frames is when azimuth crosses angle 0.
      Historically this is the first method that was implemented.
      *Time* method: the limit between frames is when network packet time
      is equal to 0.0 seconds modulo FrameDuration seconds.
    </Documentation>
  </IntVectorProperty>

<DoubleVectorProperty
  name="FrameDuration"
  animateable="0"
  command="SetFrameDuration_s"
  default_values="0.1"
  number_of_elements="1">
  <Hints>
    <PropertyWidgetDecorator type="GenericDecorator"
                             mode="visibility"
                             property="FramingMethod"
                             value="1" />
  </Hints>
  <Documentation>
    Only used if FramingMethod is set to "Time".
    The limit between frames is when network packet time
          is equal to 0.0 seconds modulo FrameDuration seconds.
  </Documentation>
</DoubleVectorProperty>

  <IntVectorProperty name="LaserSelection"
                     command="SetLaserSelection"
                     information_property="LaserSelectionInfo"
                     number_of_elements_per_command="1"
                     repeat_command="1"
                     use_index="1">
  </IntVectorProperty>
  <IntVectorProperty command="GetLaserSelection"
                     information_only="1"
                     name="LaserSelectionInformation"
                     si_class="vtkSIDataArrayProperty">
                     <!-- setting si_class to vtkSIDataArrayProperty is mandatory
                     To read the value of LaserSelectionInformation, use:
                     interpreter.UpdatePipelineInformation()
                     interpreter.GetProperty("LaserSelectionInformation") -->
  </IntVectorProperty>

  </SourceProxy>
</ProxyGroup>
<!-- End LidarPacketInterpreter -->


<!-- Begin PositionOrientationPacketInterpreter -->
<ProxyGroup name="base_PositionOrientationPacketInterpreter_g">
  <SourceProxy name="base_PositionOrientationPacketInterpreter"
         class="vtkPositionOrientationPacketInterpreter"
         label="vtkPositionOrientationPacketInterpreter"
         base_proxygroup="base_PacketInterpreter_g"
         base_proxyname="base_PacketInterpreter">

  </SourceProxy>
</ProxyGroup>
<!-- End PositionOrientationPacketInterpreter -->

</ServerManagerConfiguration>
