geocom_class Derived Type

type, public :: geocom_class

GeoCOM class for TTY access and GeoCOM API handling through the public methods. Objects of this class are not thread-safe.


Inherits

type~~geocom_class~~InheritsGraph type~geocom_class geocom_class type~request_type request_type type~geocom_class->type~request_type request type~tty_type tty_type type~geocom_class->type~tty_type tty type~response_type response_type type~request_type->type~response_type responses

Type-Bound Procedures

procedure, public :: baud_rate => geocom_baud_rate

Returns current baud rate.

  • private subroutine geocom_baud_rate(this, baud_rate)

    Returns current baud rate enumerator (GEOCOM_COM_BAUD_RATE) of TTY in baud_rate.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: baud_rate

    Baud rate enumerator (GEOCOM_COM_BAUD_RATE).

procedure, public :: close => geocom_close

Closes TTY.

  • private subroutine geocom_close(this)

    Closes TTY connection.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

procedure, public :: code => geocom_code

Returns last GeoCOM code.

  • private function geocom_code(this) result(grc)

    Returns last GeoCOM return code.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    Return Value integer

procedure, public :: error => geocom_error

Returns last DMPACK error.

  • private function geocom_error(this) result(rc)

    Returns last DMPACK return code.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    Return Value integer

procedure, public :: last_request => geocom_last_request

Returns last request sent to sensor.

  • private subroutine geocom_last_request(this, request)

    Returns the last request sent to the sensor in request. If no request has been sent, the derived type is uninitialised and the time stamp has the default value.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    type(request_type), intent(out) :: request

    Last request sent to sensor.

procedure, public :: message => geocom_message

Returns message associated with GeoCOM code.

  • private function geocom_message(this, grc) result(message)

    Returns message associated with given GeoCOM return code grc as allocatable string. If no return code is passed, the one in the GeoCOM object is used instead.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: grc

    GeoCOM return code.

    Return Value character(len=:), allocatable

    Message associated with last GeoCOM return code.

procedure, public :: open => geocom_open

Opens TTY.

  • private subroutine geocom_open(this, path, baud_rate, retries, verbose, error)

    Opens TTY connection to robotic total station.

    The argument baud_rate must be one of the following GEOCOM_COM_BAUD_RATE enumerators:

    • GEOCOM_COM_BAUD_2400 – 2400 baud.
    • GEOCOM_COM_BAUD_4800 – 4800 baud.
    • GEOCOM_COM_BAUD_9600 – 9600 baud.
    • GEOCOM_COM_BAUD_19200 – 19200 baud (instrument default).
    • GEOCOM_COM_BAUD_38400 – 38400 baud.
    • GEOCOM_COM_BAUD_57600 – 57600 baud.
    • GEOCOM_COM_BAUD_115200 – 115200 baud.

    Argument retries specifies the number of attempts to make to connect to the sensor. If verbose is .true., error messages are printed to standard error.

    The procedure returns the following error codes:

    • E_EXIST if TTY is already connected.
    • E_INVALID if baud rate is invalid.
    • E_IO if opening the TTY failed.
    • E_NOT_FOUND if TTY at path does no exist.
    • E_SYSTEM if setting the TTY attributes failed.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    character(len=*), intent(in) :: path

    Path of TTY (for example, /dev/ttyUSB0).

    integer, intent(in) :: baud_rate

    GeoCOM baud rate enumerator (GEOCOM_COM_BAUD_RATE).

    integer, intent(in), optional :: retries

    Number of retries.

    logical, intent(in), optional :: verbose

    Print errors to standard error.

    integer, intent(out), optional :: error

    DMPACK error code

procedure, public :: path => geocom_path

Returns TTY path.

  • private subroutine geocom_path(this, path)

    Returns TTY device path in allocatable character string path.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    character(len=:), intent(out), allocatable :: path

    TTY device path.

procedure, public :: send => geocom_send

Sends raw request to sensor.

  • private subroutine geocom_send(this, request, delay, error)

    Sends request to configured TTY.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    type(request_type), intent(inout) :: request

    Request to send.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

    integer, intent(out), optional :: error

    DMPACK error code

procedure, public :: abort_download => geocom_abort_download

  • private subroutine geocom_abort_download(this, delay)

    Sends FTR_AbortDownload request to sensor. Aborts or ends the file download command.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: abort_list => geocom_abort_list

  • private subroutine geocom_abort_list(this, delay)

    Sends FTR_AbortList request to sensor. Aborts or ends the file list command.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: beep_alarm => geocom_beep_alarm

  • private subroutine geocom_beep_alarm(this, delay)

    Sends BMM_BeepAlarm request to sensor. Outputs an alarm signal (triple beep).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: beep_normal => geocom_beep_normal

  • private subroutine geocom_beep_normal(this, delay)

    Sends BMM_BeepNormal request to sensor. Outputs an alarm signal (single beep).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: beep_off => geocom_beep_off

  • private subroutine geocom_beep_off(this, delay)

    Sends IOS_BeepOff request to sensor. Stops an active beep signal.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: beep_on => geocom_beep_on

  • private subroutine geocom_beep_on(this, intensity, delay)

    Sends IOS_BeepOn request to sensor. Outputs continuous beep signal of given intensity (between 0 and 100). If no intensity is given, the default GEOCOM_IOS_BEEP_STDINTENS is used.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: intensity

    Intensity of beep, from 0 to 100.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: change_face => geocom_change_face

  • private subroutine geocom_change_face(this, pos_mode, atr_mode, delay)

    Sends AUT_ChangeFace request to sensor. Turns the telescope to the other face.

    If pos_mode is GEOCOM_AUT_NORMAL, uses the current value of the compensator. For positioning distances > 25 gon, this mode might tend to inaccuracy. If set to GEOCOM_AUT_PRECISE, it tries to measure the exact inclination of the target (tends to long positioning time).

    If atr_mode is GEOCOM_AUT_POSITION, uses conventional position to other face. If set to GEOCOM_AUT_TARGET, tries to position into a target in the destination area. This mode requires activated ATR.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: pos_mode

    Position mode (GEOCOM_AUT_POSMODE).

    integer, intent(in) :: atr_mode

    ATR mode (GEOCOM_AUT_ATRMODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: delete => geocom_delete

  • private subroutine geocom_delete(this, device_type, file_type, day, month, year, file_name, nfiles, delay)

    Sends FTR_Delete request to sensor. Deletes one or more files.

    Wildcards may be used to delete multiple files. If the deletion date is valid, only files older than the date are deleted. The number of files deleted is returned in nfiles.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: device_type

    Internal memory or memory card (GEOCOM_FTR_DEVICETYPE).

    integer, intent(in) :: file_type

    Type of file (GEOCOM_FTR_FILETYPE).

    integer, intent(in) :: day

    Day of month (DD).

    integer, intent(in) :: month

    Month (MM).

    integer, intent(in) :: year

    Year (YY).

    character(len=*), intent(in) :: file_name

    Name of file to delete.

    integer, intent(out), optional :: nfiles

    Number of files deleted.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: do_measure => geocom_do_measure

  • private subroutine geocom_do_measure(this, tmc_prog, inc_mode, delay)

    Sends TMC_DoMeasure request to sensor. The API procedure tries a distance measurement. This command does not return any values.

    The argument tmc_prog must be one of the following TMC measurement modes:

    • GEOCOM_TMC_STOP
    • GEOCOM_TMC_DEF_DIST
    • GEOCOM_TMC_CLEAR
    • GEOCOM_TMC_SIGNAL
    • GEOCOM_TMC_DO_MEASURE
    • GEOCOM_TMC_RTRK_DIST
    • GEOCOM_TMC_RED_TRK_DIST
    • GEOCOM_TMC_FREQUENCY

    The argument inc_mode must be one of the following inclination measurement modes:

    • GEOCOM_TMC_MEA_INC
    • GEOCOM_TMC_AUTO_INC
    • GEOCOM_TMC_PLANE_INC

    If a distance measurement is performed in measurement program GEOCOM_TMC_DEF_DIST, the distance sensor will work with the set EDM mode.

    This function sets measurement program GEOCOM_TMC_DEF_DIST and inclination mode GEOCOM_TMC_MEA_INC by default.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: tmc_prog

    TMC measurement program (GEOCOM_TMC_MEASURE_PRG).

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: download => geocom_download

  • private subroutine geocom_download(this, block_number, block_value, block_length, delay)

    Sends FTR_Download request to sensor. Reads a single block of data. The setup_download() method has to be called first.

    The block sequence starts with 1. The download process will be aborted if the block number is 0.

    The maximum block number is 65535. The file size is therefore limited to 28 MiB.

    On error, block_value is NULL, and block_length is 0.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: block_number

    Block number, from 0 to 65535.

    character(len=1), intent(out) :: block_value

    Block value [byte].

    integer, intent(out) :: block_length

    Block length.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: fine_adjust => geocom_fine_adjust

  • private subroutine geocom_fine_adjust(this, search_hz, search_v, delay)

    Sends AUT_FineAdjust request to sensor to perform automatic target positioning.

    The procedure positions the telescope onto the target prosm and measures the ATR Hz and V deviations. If the target is not within the visible area of the ATR sensor (field of view), a target search will be executed. The target search range is limited by the parameter search_v in V direction, and by parameter search_hz in Hz direction. If no target was found, the instrument turns back to the initial start position.

    The Fine Adjust Lock-in towards a target is terminated by this procedure call. After positioning, the Lock mode will be active. The timeout of the operation is set to 5 seconds, regardless of the general position timeout settings. The position tolerance depends on the previously selected find adjust mode.

    The tolerance settings have no influence to this operation. The tolerance settings and the ATR precision depend on the instrument class and the used EDM mode.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: search_hz

    Search range, Hz axis [rad].

    real(kind=r8), intent(in) :: search_v

    Search range, V axis [rad].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_angle => geocom_get_angle

  • private subroutine geocom_get_angle(this, hz, v, inc_mode, delay)

    Sends TMC_GetAngle5 request to sensor. Starts an angle measurement and returns the results. This function sets inclination mode GEOCOM_TMC_MEA_INC by default.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: hz

    Horizontal angle [rad].

    real(kind=r8), intent(out) :: v

    Vertical angle [rad].

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_angle_complete => geocom_get_angle_complete

  • private subroutine geocom_get_angle_complete(this, hz, v, angle_accuracy, angle_time, cross_inc, length_inc, inc_accuracy, inc_time, face, inc_mode, delay)

    Sends TMC_GetAngle1 request to sensor. Performs a complete angle measurement. The procedure starts an angle and, depending on the configuration, an inclination measurement, and returns the results. This function sets inclination mode GEOCOM_TMC_MEA_INC by default.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: hz

    Horizontal angle [rad].

    real(kind=r8), intent(out) :: v

    Vertical angle [rad].

    real(kind=r8), intent(out), optional :: angle_accuracy

    Accuracy of angles [rad].

    integer(kind=i8), intent(out), optional :: angle_time

    Moment of measurement [msec].

    real(kind=r8), intent(out), optional :: cross_inc

    Transverse axis inclination [rad].

    real(kind=r8), intent(out), optional :: length_inc

    Longitude axis inclidation [rad].

    real(kind=r8), intent(out), optional :: inc_accuracy

    Inclination accuracy [rad].

    integer(kind=i8), intent(out), optional :: inc_time

    Moment of measurement [msec].

    integer, intent(out), optional :: face

    Face position of telescope (GEOCOM_TMC_FACE).

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_angle_correction => geocom_get_angle_correction

  • private subroutine geocom_get_angle_correction(this, incline, stand_axis, collimation, tilt_axis, delay)

    Sends TMC_GetAngSwitch request to sensor. The procedure returns the angular correction status.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out), optional :: incline

    Inclination correction enabled.

    logical, intent(out), optional :: stand_axis

    Standing axis correction enabled.

    logical, intent(out), optional :: collimation

    Collimation error correction enabled.

    logical, intent(out), optional :: tilt_axis

    Tilting axis correction enabled.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_atmospheric_correction => geocom_get_atmospheric_correction

  • private subroutine geocom_get_atmospheric_correction(this, lambda, pressure, dry_temp, wet_temp, delay)

    Sends TMC_GetAtmCorr request to sensor. The procedure returns the atmospheric correction parameters.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out), optional :: lambda

    Wave length of the EDM transmitter [m].

    real(kind=r8), intent(out), optional :: pressure

    Atmospheric pressure [mbar].

    real(kind=r8), intent(out), optional :: dry_temp

    Dry temperature [°C].

    real(kind=r8), intent(out), optional :: wet_temp

    Wet temperature [°C].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_atmospheric_ppm => geocom_get_atmospheric_ppm

  • private subroutine geocom_get_atmospheric_ppm(this, ppm, delay)

    Sends TMC_GetAtmPpm request to sensor. The procedure returns the atmospheric ppm correction factor in ppm.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: ppm

    Atmospheric ppm correction factor [ppm].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_atr_error => geocom_get_atr_error

  • private subroutine geocom_get_atr_error(this, error, delay)

    Sends TMC_IfDataAzeCorrError request to sensor. The procedure returns the ATR error status in error.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out) :: error

    ATR correction error occured.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_atr_setting => geocom_get_atr_setting

  • private subroutine geocom_get_atr_setting(this, setting, delay)

    Sends BAP_GetATRSetting request to sensor. The procedure returns the current ATR Low-Vis mode in setting.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: setting

    ATR setting (GEOCOM_BAP_ATRSETTING).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_binary_mode => geocom_get_binary_mode

  • private subroutine geocom_get_binary_mode(this, enabled, delay)

    Sends COM_GetBinaryAvailable request to sensor. The procedure returns the binary attribute of the server in enabled.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out) :: enabled

    Binary operation is enabled.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_config => geocom_get_config

  • private subroutine geocom_get_config(this, auto_power, timeout, delay)

    Send SUP_GetConfig request to sensor. The procedure returns the power management configuration status. The power timeout timeout specifies the time after which the device switches into the mode indicated by auto_power.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: auto_power

    Currently activated shut-down mode (GEOCOM_SUP_AUTO_POWER).

    integer, intent(out) :: timeout

    Power timeout [msec].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_coordinate => geocom_get_coordinate

  • private subroutine geocom_get_coordinate(this, easting, northing, height, time, cont_easting, cont_northing, cont_height, cont_time, wait_time, inc_mode, delay)

    Sends TMC_GetCoordinate request to sensor. The procedure returns the coordinates of a measured point.

    The API call conducts an angle and, in dependence of the selected inc_mode, an inclination measurement, and then calculates the coordinates of the measured point with the last distance.

    The argument wait_time specifies the delay to wait for the distance measurement to finish. Single and tracking measurements are supported. The quality of the result is returned in the GeoCOM return code.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out), optional :: easting

    E coordinate [m].

    real(kind=r8), intent(out), optional :: northing

    N coordinate [m]

    real(kind=r8), intent(out), optional :: height

    H coordinate [m].

    integer(kind=i8), intent(out), optional :: time

    Timestamp of distance measurement [msec].

    real(kind=r8), intent(out), optional :: cont_easting

    E coordinate (continuously) [m].

    real(kind=r8), intent(out), optional :: cont_northing

    N coordinate (continuously) [m].

    real(kind=r8), intent(out), optional :: cont_height

    H coordinate (continuously) [m].

    integer(kind=i8), intent(out), optional :: cont_time

    Timestamp of continuous measurement [msec].

    integer, intent(in), optional :: wait_time

    Delay to wait for the distance measurement to finish [msec].

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_date_time => geocom_get_date_time

  • private subroutine geocom_get_date_time(this, year, month, day, hour, minute, second, delay)

    Sends CSV_GetDateTime request to sensor. The procedure returns current date and time of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out), optional :: year

    Year.

    integer, intent(out), optional :: month

    Month.

    integer, intent(out), optional :: day

    Day of month.

    integer, intent(out), optional :: hour

    Hours.

    integer, intent(out), optional :: minute

    Minutes.

    integer, intent(out), optional :: second

    Seconds.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_date_time_centi => geocom_get_date_time_centi

  • private subroutine geocom_get_date_time_centi(this, year, month, day, hour, minute, second, csecond, delay)

    Sends CSV_GetDateTimeCentiSec request to sensor. The procedure returns the current date and time of the instrument, including centiseconds.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out), optional :: year

    Year.

    integer, intent(out), optional :: month

    Month.

    integer, intent(out), optional :: day

    Day of month.

    integer, intent(out), optional :: hour

    Hours.

    integer, intent(out), optional :: minute

    Minutes.

    integer, intent(out), optional :: second

    Seconds.

    integer, intent(out), optional :: csecond

    Centiseconds.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_device_config => geocom_get_device_config

  • private subroutine geocom_get_device_config(this, device_class, device_type, delay)

    Sends CSV_GetDeviceConfig request to sensor. The procedure returns the instrument configuration.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: device_class

    Device precision class (GEOCOM_TPS_DEVICE_CLASS).

    integer, intent(out) :: device_type

    Device configuration type (GEOCOM_TPS_DEVICE_TYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_double_precision => geocom_get_double_precision

  • private subroutine geocom_get_double_precision(this, ndigits, delay)

    Sends COM_GetDoublePrecision request to sensor. The procedure returns the double precision setting – the number of digits to the right of the decimal point – when double floating-point values are transmitted in ndigits.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: ndigits

    Number of digits to the right of the decimal point.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_edm_mode => geocom_get_edm_mode

  • private subroutine geocom_get_edm_mode(this, edm_mode, delay)

    Sends TMC_GetEdmMode request to sensor. The procedure returns the EDM measurement mode in edm_mode.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: edm_mode

    EDM mode (GEOCOM_EDM_MODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_egl_intensity => geocom_get_egl_intensity

  • private subroutine geocom_get_egl_intensity(this, intensity, delay)

    Sends EDM_GetEglIntensity request to sensor. The procedure returns the value of the intensity of the electronic guide light (EGL) in intensity.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: intensity

    EDM EGL intensity (GEOCOM_EDM_EGLINTENSITY_TYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_face => geocom_get_face

  • private subroutine geocom_get_face(this, face, delay)

    Sends TMC_GetFace request to sensor. The procedure returns the face of the current telescope position in face.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: face

    Telescope face (GEOCOM_TMC_FACE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_fine_adjust_mode => geocom_get_fine_adjust_mode

  • private subroutine geocom_get_fine_adjust_mode(this, adjust_mode, delay)

    Sends AUT_GetFineAdjustMode to sensor. The procedure returns the fine adjustment positioning mode in adjust_mode.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: adjust_mode

    Fine adjustment positioning mode (GEOCOM_AUT_ADJMODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_full_measurement => geocom_get_full_measurement

  • private subroutine geocom_get_full_measurement(this, hz, v, angle_accuracy, cross_inc, length_inc, inc_accuracy, slope_dist, dist_time, wait_time, inc_mode, delay)

    Sends TMC_GetFullMeas request to sensor. The procedure returns angle, inclination, and distance measurement data, including accuracy and measurement time.

    This command does not issue a new distance measurement. A distance measurement has to be started in advance. If the distance is valid, the function ignores wait_time and returns the results immediately. If no valid distance is available, and the measurement unit is not activated, the angle measurement result is retuned after the waiting time.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out), optional :: hz

    Horizontal angle [rad].

    real(kind=r8), intent(out), optional :: v

    Vertical angle [rad].

    real(kind=r8), intent(out), optional :: angle_accuracy

    Accuracy of angles [rad].

    real(kind=r8), intent(out), optional :: cross_inc

    Cross inclination [rad].

    real(kind=r8), intent(out), optional :: length_inc

    Length inclination [rad].

    real(kind=r8), intent(out), optional :: inc_accuracy

    Inclination accuracy [rad].

    real(kind=r8), intent(out), optional :: slope_dist

    Distance measurement [m].

    real(kind=r8), intent(out), optional :: dist_time

    Time of distance measurement [msec].

    integer, intent(in), optional :: wait_time

    Delay to wait for the distance measurement to finish [msec].

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_geocom_version => geocom_get_geocom_version

  • private subroutine geocom_get_geocom_version(this, release, version, subversion, delay)

    Sends COM_GetSWVersion request to sensor. The procedure returns the GeoCOM server software version of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out), optional :: release

    GeoCOM software release.

    integer, intent(out), optional :: version

    GeoCOM software version.

    integer, intent(out), optional :: subversion

    GeoCOM software sub-version.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_geometric_ppm => geocom_get_geometric_ppm

  • private subroutine geocom_get_geometric_ppm(this, enabled, scale_factor, offset, height_ppm, individual_ppm, delay)

    Sends TMC_GeoPpm request to sensor. The procedure returns the geometric ppm correction factor.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out), optional :: enabled

    State of geometric ppm calculation.

    real(kind=r8), intent(out), optional :: scale_factor

    Scale factor on central meridian.

    real(kind=r8), intent(out), optional :: offset

    Offset from central meridian [m].

    real(kind=r8), intent(out), optional :: height_ppm

    Height above reference ppm value [ppm].

    real(kind=r8), intent(out), optional :: individual_ppm

    Individual ppm value [ppm].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_height => geocom_get_height

  • private subroutine geocom_get_height(this, height, delay)

    Sends TMC_GetHeight request to sensor. The procedure returns the current reflector height.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: height

    Reflector height [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_image_config => geocom_get_image_config

  • private subroutine geocom_get_image_config(this, mem_type, image_number, quality, sub_func, file_prefix, delay)

    Sends IMG_GetTccConfig request to sensor. The procedure reads the current image configuration. The response sub_func is a binary combination of the following settings:

    • 1 – Test image.
    • 2 – Automatic exposure time selection.
    • 4 – Two-times sub-sampling.
    • 8 – Four-times sub-sampling.

    If no memory device type is passed, GEOCOM_IMG_INTERNAL_MEMORY is selected. On error, the file prefix string is allocated but empty. The maximum string length is 20 characters (GEOCOM_IMG_MAX_FILE_PREFIX_LEN).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: mem_type

    Memory device type (GEOCOM_IMG_MEM_TYPE).

    integer, intent(out) :: image_number

    Actual image number.

    integer, intent(out) :: quality

    JPEG compression quality factor (0 to 100).

    integer, intent(out) :: sub_func

    Binary combination of sub-function number.

    character(len=:), intent(out), allocatable :: file_prefix

    File name prefix.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_inclination_correction => geocom_get_inclination_correction

  • private subroutine geocom_get_inclination_correction(this, enabled, delay)

    Sends TMC_GetInclineSwitch request to sensor. The procedure returns the dual-axis compensator status.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out) :: enabled

    Compensator is enabled.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_inclination_error => geocom_get_inclination_error

  • private subroutine geocom_get_inclination_error(this, error, delay)

    Sends TMC_IfDataIncCorrError request to sensor. The procedure returns the inclination error status. If error is .true., the last measurement is not incline-corrected.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out) :: error

    Last measurement not incline-corrected.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_instrument_name => geocom_get_instrument_name

  • private subroutine geocom_get_instrument_name(this, name, delay)

    Sends CSV_GetInstrumentName request to sensor. The procedure returns the Leica-specific instrument name. On error, the name is allocated but empty.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    character(len=:), intent(out), allocatable :: name

    Instrument name

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_instrument_number => geocom_get_instrument_number

  • private subroutine geocom_get_instrument_number(this, number, delay)

    Sends CSV_GetInstrumentNo request to sensor. The procedure returns the factory defined instrument number.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: number

    Serial number of the instrument.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_internal_temperature => geocom_get_internal_temperature

  • private subroutine geocom_get_internal_temperature(this, temp, delay)

    Sends CSV_GetIntTemp request to sensor. The procedure returns the internal temperature of the instrument, measured on the mainboard side.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: temp

    Instrument temperature [°C].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_lock_status => geocom_get_lock_status

  • private subroutine geocom_get_lock_status(this, status, delay)

    Sends MOT_ReadLockStatus request to sensor. The procedure returns the condition of the Lock-in control.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: status

    Lock status (GEOCOM_MOT_LOCK_STATUS).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_measurement_program => geocom_get_measurement_program

  • private subroutine geocom_get_measurement_program(this, prg, delay)

    Sends BAP_GetMeasPrg request to sensor. The procedure returns the distance measurement program of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: prg

    Measurement program (GEOCOM_BAP_USER_MEASPRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_power => geocom_get_power

  • private subroutine geocom_get_power(this, battery_life, power_source, power_suggest, delay)

    Sends CSV_CheckPower request to sensor. The procedure returns the available power.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out), optional :: battery_life

    Battery capacity [%].

    integer, intent(out), optional :: power_source

    Power source (GEOCOM_CSV_POWER_PATH).

    integer, intent(out), optional :: power_suggest

    Not supported (GEOCOM_CSV_POWER_PATH).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_prism_constant => geocom_get_prism_constant

  • private subroutine geocom_get_prism_constant(this, prism_const, delay)

    Sends TMC_GetPrismCorr request to sensor. The procedure returns the prism constant.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: prism_const

    Prism correction constant [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_prism_definition => geocom_get_prism_definition

  • private subroutine geocom_get_prism_definition(this, prism_type, prism_name, prism_const, delay)

    Sends BAP_GetPrismDef request to sensor. The procedure returns the default prism definition. The maximum prism name length is 16 characters (GEOCOM_BAP_PRISMNAME_LEN). On error, the string is allocated but empty.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: prism_type

    Prism type (GEOCOM_BAP_PRISMTYPE).

    character(len=:), intent(out), allocatable :: prism_name

    Prism name.

    real(kind=r8), intent(out) :: prism_const

    Prism correction constant [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_prism_type => geocom_get_prism_type

  • private subroutine geocom_get_prism_type(this, prism_type, delay)

    Sends TMC_GetPrismType request to sensor. The procedure returns the default prism type.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: prism_type

    Prism type (GEOCOM_BAP_PRISMTYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_prism_type_v2 => geocom_get_prism_type_v2

  • private subroutine geocom_get_prism_type_v2(this, prism_type, delay)

    Sends TMC_GetPrismType2 request to sensor. The procedure returns the default or user prism type.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: prism_type

    Prism type (GEOCOM_BAP_PRISMTYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_quick_distance => geocom_get_quick_distance

  • private subroutine geocom_get_quick_distance(this, hz, v, slope_dist, delay)

    Sends TMC_QuickDist request to sensor. The procedure returns the slope distance and both angles.

    The procedure starts an EDM tracking measurement, and waits until a distance has been measured. Then, it returns the angles and the slope distance, but no coordinates. If no distance could be measured, only angles and an error code are returned. A measurement may be aborted by calling method do_measure().

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out), optional :: hz

    Horizontal angle [rad].

    real(kind=r8), intent(out), optional :: v

    Vertical angle [rad].

    real(kind=r8), intent(out), optional :: slope_dist

    Slope distance [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_reduced_atr_fov => geocom_get_reduced_atr_fov

  • private subroutine geocom_get_reduced_atr_fov(this, enabled, delay)

    Sends BAP_GetRedATRFov request to sensor. The procedure returns whether or not reduced field of view is used by ATR.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out) :: enabled

    ATR uses reduced field of view (about 1/9)

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_reflectorless_class => geocom_get_reflectorless_class

  • private subroutine geocom_get_reflectorless_class(this, class, delay)

    Sends CSV_GetReflectorlessClass request to sensor. The procedure returns the class of the reflectorless and long-range distance measurement of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: class

    Reflectorless class (GEOCOM_TPS_REFLESS_CLASS).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_refraction_mode => geocom_get_refraction_mode

  • private subroutine geocom_get_refraction_mode(this, mode, delay)

    Sends TMC_GetRefractiveMethod request to sensor. The procedure returns the refraction model. Changing the method is not indicated on the interface of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: mode

    Refraction mode (1 for world, 2 for Australia).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_search_area => geocom_get_search_area

  • private subroutine geocom_get_search_area(this, center_hz, center_v, range_hz, range_v, user_area, delay)

    Sends AUT_GetSearchArea request to sensor. The procedure returns the dimensions of the PowerSearch window.

    This command is valid for all instruments, but has only effects for instruments equipped with PowerSearch.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out), optional :: center_hz

    Hz angle of search area (center) [rad].

    real(kind=r8), intent(out), optional :: center_v

    V angle of search area (center) [rad].

    real(kind=r8), intent(out), optional :: range_hz

    Width of search area [rad].

    real(kind=r8), intent(out), optional :: range_v

    Max. height of search area [rad].

    logical, intent(out), optional :: user_area

    User-defined search area is active.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_signal => geocom_get_signal

  • private subroutine geocom_get_signal(this, intensity, time, delay)

    Sends TMC_GetSignal request to sensor. The procedure returns the EDM signal intensity.

    The procedure can only perform a measurement if the signal measurement program is activated. Start the signal measurement program with method do_measure() in program GEOCOM_TMC_SIGNAL. After the measurement, the EDM must be switched off with program GEOCOM_TMC_CLEAR. While measuring, there is no angle data available.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: intensity

    Signal intensity of EDM [%].

    integer, intent(out), optional :: time

    Timestamp [msec].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_simple_coordinates => geocom_get_simple_coordinates

  • private subroutine geocom_get_simple_coordinates(this, easting, northing, height, wait_time, inc_mode, delay)

    Sends TMC_GetSimpleCoord request to sensor. The procedure returns the cartesian coordinates if a valid distance is set. The argument wait_time sets the maximum time to wait for a valid distance. Without a valid distance, the coordinates are set to 0.0, and an error is returned. The coordinate calculation requires inclination results. The argument inc_mode sets the inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: easting

    Easting [m].

    real(kind=r8), intent(out) :: northing

    Northing [m].

    real(kind=r8), intent(out) :: height

    Orthometric height [m].

    integer, intent(in), optional :: wait_time

    Delay to wait for the distance measurement to finish [msec].

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_simple_measurement => geocom_get_simple_measurement

  • private subroutine geocom_get_simple_measurement(this, hz, v, slope_dist, wait_time, inc_mode, delay)

    Sends TMC_GetSimpleMea request to sensor. The procedure returns the values of the angle and distance measurement. The argument wait_time sets the maximum time to wait for a valid distance. If a distance is available, the wait time is ignored.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: hz

    Horizontal angle [rad].

    real(kind=r8), intent(out) :: v

    Vertical angle [rad].

    real(kind=r8), intent(out) :: slope_dist

    Slope distance [m].

    integer, intent(in), optional :: wait_time

    Delay to wait for the distance measurement to finish [msec].

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_slope_distance_correction => geocom_get_slope_distance_correction

  • private subroutine geocom_get_slope_distance_correction(this, dist_ppm, prism_const, delay)

    Sends TMC_GetSlopeDistCorr request to sensor. The procedure returns the total ppm (atmospheric ppm + geometric ppm) and prism correction constant.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: dist_ppm

    Total correction of distance [ppm].

    real(kind=r8), intent(out) :: prism_const

    Correction of the reflector [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_software_version => geocom_get_software_version

  • private subroutine geocom_get_software_version(this, release, version, subversion, delay)

    Sends CSV_GetSWVersion request to sensor. The procedure returns the system software version of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: release

    Software release.

    integer, intent(out) :: version

    Software version.

    integer, intent(out) :: subversion

    Software sub-version.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_station => geocom_get_station

  • private subroutine geocom_get_station(this, easting, northing, height, instr_height, delay)

    Sends TMC_GetStation request to sensor. The procedure returns the station coordinates of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: easting

    Station easting coordinate [m].

    real(kind=r8), intent(out) :: northing

    Station northing coordinate [m].

    real(kind=r8), intent(out) :: height

    Station height coordinate [m].

    real(kind=r8), intent(out) :: instr_height

    Instrument height [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_target_type => geocom_get_target_type

  • private subroutine geocom_get_target_type(this, target_type, delay)

    Sends BAP_GetTargetType request to sensor. The procedure returns the EDM type for distance measurements: reflector (IR) or reflectorless (RL).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(out) :: target_type

    Target type (GEOCOM_BAP_TARGET_TYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_timeout => geocom_get_timeout

  • private subroutine geocom_get_timeout(this, time_hz, time_v, delay)

    Sends AUT_ReadTimeout request to sensor. The procedure returns the maximum time to perform positioning.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer(kind=i8), intent(out) :: time_hz

    Positioning timeout in Hz [sec].

    integer(kind=i8), intent(out) :: time_v

    Positioning timeout in V [sec].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_tolerance => geocom_get_tolerance

  • private subroutine geocom_get_tolerance(this, tolerance_hz, tolerance_v, delay)

    Sends AUT_ReadTol request to sensor. The procedure returns the positioning tolerances of the Hz and V instrument axis.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: tolerance_hz

    Positioning tolerance in Hz [rad].

    real(kind=r8), intent(out) :: tolerance_v

    Positioning tolerance in V [rad].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_user_atr_mode => geocom_get_user_atr_mode

  • private subroutine geocom_get_user_atr_mode(this, enabled, delay)

    Sends AUS_GetUserAtrState request to sensor. The procedure returns the status of the ATR mode.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out) :: enabled

    ATR mode is enabled.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_user_lock_mode => geocom_get_user_lock_mode

  • private subroutine geocom_get_user_lock_mode(this, enabled, delay)

    Sends AUS_GetUserLockState request to sensor. The procedure returns the status of the Lock mode

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(out) :: enabled

    Lock mode is enabled.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_user_prism_definition => geocom_get_user_prism_definition

  • private subroutine geocom_get_user_prism_definition(this, name, prism_const, prism_type, prism_user, delay)

    Sends BAP_GetUserPrismDef request to sensor. The procedure returns the user prism definition (prism constant, prism type, and name of creator).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    character(len=*), intent(in) :: name

    Prism definition name.

    real(kind=r8), intent(out), optional :: prism_const

    Prism correction constant [m].

    integer, intent(out), optional :: prism_type

    Prism type (GEOCOM_BAP_PRISMTYPE).

    character(len=:), intent(out), optional, allocatable :: prism_user

    Name of creator.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: get_user_spiral => geocom_get_user_spiral

  • private subroutine geocom_get_user_spiral(this, range_hz, range_v, delay)

    Sends AUT_GetUserSpiral request to sensor. The procedure returns the current dimensions of the searching spiral. Requires at least a TCA instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: range_hz

    Horizontal angle [rad].

    real(kind=r8), intent(out) :: range_v

    Vertical angle [rad].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: list => geocom_list

  • private subroutine geocom_list(this, next, last, name, size, year, month, day, hour, minute, second, delay)

    Sends FTR_List request to sensor. The procedure returns file information. If next is .false., the first file entry is returned, else the next. On error, the file name name is allocated, but may be empty.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: next

    First or next entry.

    logical, intent(out), optional :: last

    File is last entry.

    character(len=:), intent(out), optional, allocatable :: name

    File name, max. 80 characters long.

    integer(kind=i8), intent(out), optional :: size

    File size [bytes].

    integer, intent(out), optional :: year

    UTC modification year.

    integer, intent(out), optional :: month

    UTC modification month.

    integer, intent(out), optional :: day

    UTC modification day.

    integer, intent(out), optional :: hour

    UTC modification hour.

    integer, intent(out), optional :: minute

    UTC modification minute

    integer, intent(out), optional :: second

    UTC modification second.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: lock_in => geocom_lock_in

  • private subroutine geocom_lock_in(this, delay)

    Sends AUT_LockIn request to sensor. The procedure will start the target tracking if the Lock mode is activated (method set_user_lock_mode()). The fine_adjust() method call must have finished successfully before executing this procedure.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: measure_distance_angle => geocom_measure_distance_angle

  • private subroutine geocom_measure_distance_angle(this, hz, v, slope_dist, dist_mode, delay)

    Sends BAP_MeasDistanceAngle request to sensor. The procedure measures Hz, V angles and a single distance.

    The API function measures angles and a single distance depending on the distance measurement mode dist_mode. It is not suited for continuous measurements (Lock mode and TRK mode), and uses the current automation settings.

    Distance measurement mode GEOCOM_BAP_DEF_DIST is used by default.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(out) :: hz

    Horizontal angle [rad].

    real(kind=r8), intent(out) :: v

    Vertical angle [rad].

    real(kind=r8), intent(out) :: slope_dist

    Slope distance [m].

    integer, intent(in), optional :: dist_mode

    Distance measurement mode (GEOCOM_BAP_MEASURE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: null => geocom_null

  • private subroutine geocom_null(this, delay)

    Sends COM_NullProc request to sensor. API call for checking the communication.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: ps_enable_range => geocom_ps_enable_range

  • private subroutine geocom_ps_enable_range(this, enabled, delay)

    Sends AUT_PS_EnableRange request to sensor. The procedure enabled or disables the predefined PowerSearch window including the PowerSearch range limits set by method ps_set_range() (requires GeoCOM robotic licence). If enabled is .false., the default range is set to ≤ 400 m.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Enable PowerSearch.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: ps_search_next => geocom_ps_search_next

  • private subroutine geocom_ps_search_next(this, direction, swing, delay)

    Sends AUT_PS_SearchNext request to sensor. The procedure searches for the next target.

    The procedure executes the 360° default PowerSearch and searches for the next targets. A previously defined PowerSearch window (method set_search_area()) is not taken into account. Use method ps_search_window() first.

    The argument direction may be one of the following enumerators:

    • GEOCOM_AUT_CLOCKWISE – Direction close-wise (1).
    • GEOCOM_AUT_ANTICLOCKWISE – Direction counter clock-wise (-1).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: direction

    Searching direction (1 for clockwise, -1 for counter-clockwise).

    logical, intent(in) :: swing

    Searching starts –10 gon to the given direction.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: ps_search_window => geocom_ps_search_window

  • private subroutine geocom_ps_search_window(this, delay)

    Sends AUT_PS_SearchWindow request to sensor. The procedure starts PowerSearch in the window defined by method calls set_search_area() and ps_set_range() (requires GeoCOM robotic licence).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: ps_set_range => geocom_ps_set_range

  • private subroutine geocom_ps_set_range(this, min_dist, max_dist, delay)

    Sends AUT_PS_SetRange request to sensor. Creates request for setting the PowerSearch range.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: min_dist

    Min. distance to prism (≥ 0) [m].

    integer, intent(in) :: max_dist

    Max. distance to prism (≤ 400, ≥ min_dist + 10) [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: search => geocom_search

  • private subroutine geocom_search(this, search_hz, search_v, delay)

    Sends AUT_Search request to sensor. The function performs an automatic target search within the given search area (requires GeoCOM robotic licence).

    The search is terminated once the prism appears in the field of view of the ATR sensor. If no prism is found in the specified area, the instrument turns back into the initial position. For an exact positioning onto the prism centre, use the fine-adjust API call afterwards (method fine_adjust()).

    If the search range of method fine_adjust() is expanded, target search and fine positioning are done in one step.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: search_hz

    Horizontal search region [rad].

    real(kind=r8), intent(in) :: search_v

    Vertical search region [rad].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: search_target => geocom_search_target

  • private subroutine geocom_search_target(this, delay)

    Sends BAP_SearchTarget request to sensor. The procedure searches for a target in the ATR search window.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_angle_correction => geocom_set_angle_correction

  • private subroutine geocom_set_angle_correction(this, incline, stand_axis, collimation, tilt_axis, delay)

    Sends TMC_SetAngSwitch request to sensor. The procedure turns angle corrections on or off.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: incline

    Enable inclination correction.

    logical, intent(in) :: stand_axis

    Enable standard axis correction.

    logical, intent(in) :: collimation

    Enable collimation correction.

    logical, intent(in) :: tilt_axis

    Enable tilt axis correction.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_atmospheric_correction => geocom_set_atmospheric_correction

  • private subroutine geocom_set_atmospheric_correction(this, lambda, pressure, dry_temp, wet_temp, delay)

    Sends BAP_SetAtmCorr request to sensor. The procedure sets the atmospheric correction parameters. The argument lambda should be queried with method get_atmospheric_correction().

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: lambda

    Wave-length of EDM transmitter [m].

    real(kind=r8), intent(in) :: pressure

    Atmospheric pressure [mbar].

    real(kind=r8), intent(in) :: dry_temp

    Dry temperature [°C].

    real(kind=r8), intent(in) :: wet_temp

    Wet temperature [°C].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_atmospheric_ppm => geocom_set_atmospheric_ppm

  • private subroutine geocom_set_atmospheric_ppm(this, atm_ppm, delay)

    Sends BAP_SetAtmPpm request to sensor. The procedure sets the atmospheric ppm correction factor.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: atm_ppm

    Atmospheric ppm correction factor [ppm].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_atr_mode => geocom_set_atr_mode

  • private subroutine geocom_set_atr_mode(this, atr_mode, delay)

    Sends BAP_SetATRSetting request to sensor. The procedure sets the ATR low-vis mode.

    The argument atr_mode must be one of the following enumerators:

    • GEOCOM_BAP_ATRSET_NORMAL – No special flags or modes.
    • GEOCOM_BAP_ATRSET_LOWVIS_ON – ATR low-vis mode on.
    • GEOCOM_BAP_ATRSET_LOWVIS_AON – ATR low-vis mode always on.
    • GEOCOM_BAP_ATRSET_SRANGE_ON – ATR high-reflectivity mode on.
    • GEOCOM_BAP_ATRSET_SRANGE_AON – ATR high-reflectivity mode always on.

    An invalid mode is replaced with GEOCOM_BAP_ATRSET_NORMAL.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: atr_mode

    ATR low-vis mode (GEOCOM_BAP_ATRSETTING).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_binary_mode => geocom_set_binary_mode

  • private subroutine geocom_set_binary_mode(this, enabled, delay)

    Sends COM_SetBinaryAvailable request to sensor. The procedure sets the ability of the GeoCOM server to handle binary communication (not supported by DMPACK).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Enable binary communication.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_config => geocom_set_config

  • private subroutine geocom_set_config(this, auto_power, timeout, delay)

    Sends SUP_SetConfig request to sensor. The procedure sets the power management configuration.

    The argument timeout sets the duration after which the instrument switches into the mode auto_power (GEOCOM_SUP_AUTO_POWER) when no user activity occured (key press, GeoCOM communication). The value must be between 60,000 m/s (1 min) and 6,000,000 m/s (100 min).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: auto_power

    Power-off mode (GEOCOM_SUP_AUTO_POWER).

    integer, intent(in) :: timeout

    Timeout [msec].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_date_time => geocom_set_date_time

  • private subroutine geocom_set_date_time(this, year, month, day, hour, minute, second, delay)

    Sends CSV_SetDateTime request to sensor. The procedure sets the date and time of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: year

    Year (YYYY).

    integer, intent(in) :: month

    Month (MM).

    integer, intent(in) :: day

    Day of month (DD).

    integer, intent(in) :: hour

    Hour (hh).

    integer, intent(in) :: minute

    Minute (mm).

    integer, intent(in) :: second

    Second (ss).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_distance => geocom_set_distance

  • private subroutine geocom_set_distance(this, slope_dist, height_offset, inc_mode, delay)

    Sends TMC_SetHandDist request to sensor. The procedure sets the slope distance and height offset.

    The API function is used to set the manually measured slope distance and height offset for a following measurement. Additionally, an inclination and an angle measurement are started to determine the coordinates of the target. The vertical angle is corrected to π/2 or 3π/2, depending on the face of the instrument. The previously measured distance is cleared.

    The argument inc_mode must be one of the following enumerators:

    • GEOCOM_TMC_MEA_INC – Use sensor (a priori sigma).
    • GEOCOM_TMC_AUTO_INC – Automatic mode (sensor/plane).
    • GEOCOM_TMC_PLANE_INC – Use plane (a priori sigma).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: slope_dist

    Slope distance [m].

    real(kind=r8), intent(in) :: height_offset

    Height offset [m].

    integer, intent(in), optional :: inc_mode

    Inclination measurement mode (GEOCOM_TMC_INCLINE_PRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_double_precision => geocom_set_double_precision

  • private subroutine geocom_set_double_precision(this, ndigits, delay)

    Sends COM_SetDoublePrecision request to sensor. The procedure sets the double precision.

    The API function sets the precision – the number of digits right of the decimal – when double floating-point values are transmitted. The default precision is 15 digits. The setting is only valid for the ASCII transmission mode. Trailing zeroes will not be sent by the instrument. For example, if ndigits is set to 3 and the exact value is 1.99975, the resulting value will be 2.0.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: ndigits

    Number of digits right to the comma.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_edm_mode => geocom_set_edm_mode

  • private subroutine geocom_set_edm_mode(this, edm_mode, delay)

    Sends TMC_SetEdmMode request to sensor. The procedure sets the EDM measurement mode. The EDM mode is used by method do_measure() in program GEOCOM_TMC_DEF_DIST.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: edm_mode

    EDM measurement mode (GEOCOM_EDM_MODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_egl_intensity => geocom_set_egl_intensity

  • private subroutine geocom_set_egl_intensity(this, intensity, delay)

    Sends EDM_SetEglIntensity request to sensor. The procedure sets the intensity of the electronic guide light.

    The argument intensity must be one of the following enumerators:

    • GEOCOM_EDM_EGLINTEN_OFF
    • GEOCOM_EDM_EGLINTEN_LOW
    • GEOCOM_EDM_EGLINTEN_MID
    • GEOCOM_EDM_EGLINTEN_HIGH

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: intensity

    EGL intensity (GEOCOM_EDM_EGLINTENSITY_TYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_fine_adjust_mode => geocom_set_fine_adjust_mode

  • private subroutine geocom_set_fine_adjust_mode(this, adj_mode, delay)

    Sends AUT_SetFineAdjustMode request to sensor. The procedure sets the fine adjust positioning mode.

    The API function sets the positioning tolerances relating to angle accuracy or point accuracy for the fine adjust (requires GeoCOM robotic licence). If a target is near or held by hand, it is recommended to set the adjust mode to GEOCOM_AUT_POINT_MODE.

    The argument adj_mode has to be either GEOCOM_AUT_NORM_MODE or GEOCOM_AUT_POINT_MODE.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: adj_mode

    Fine adjust positioning mode (GEOCOM_AUT_ADJMODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_geometric_ppm => geocom_set_geometric_ppm

  • private subroutine geocom_set_geometric_ppm(this, enabled, scale_factor, offset, height_ppm, individual_ppm, delay)

    Sends TMC_SetGeoPpm request to sensor. The procedure sets the geometric ppm correction factor.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Enable geometric ppm calculation.

    real(kind=r8), intent(in) :: scale_factor

    Scale factor on central meridian.

    real(kind=r8), intent(in) :: offset

    Offset from central meridian [m].

    real(kind=r8), intent(in) :: height_ppm

    Ppm value due to height above reference.

    real(kind=r8), intent(in) :: individual_ppm

    Individual ppm value.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_height => geocom_set_height

  • private subroutine geocom_set_height(this, height, delay)

    Sends TMC_SetHeight request to sensor. The procedure sets a new reflector height.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: height

    Reflector height [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_image_config => geocom_set_image_config

  • private subroutine geocom_set_image_config(this, mem_type, image_number, quality, sub_function, prefix, delay)

    Sends IMG_SetTccConfig request to sensor. The procedure sets the image configuration.

    The argument sub_function may be a binary combination of the following settings:

    • 1 – Test image.
    • 2 – Automatic exposure-time selection.
    • 3 – Two-times sub-sampling.
    • 4 – Four-times sub-sampling.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: mem_type

    Memory device type (GEOCOM_IMG_MEM_TYPE).

    integer, intent(in) :: image_number

    Actual image number.

    integer, intent(in) :: quality

    JPEG compression factor (0 – 100).

    integer, intent(in) :: sub_function

    Additional sub-functions to call.

    character(len=*), intent(in) :: prefix

    File name prefix.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_inclination_correction => geocom_set_inclination_correction

  • private subroutine geocom_set_inclination_correction(this, enabled, delay)

    Sends TMC_SetInclineSwitch request to sensor. The procedure turns the dual-axis compensator on or off.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Enable dual-axis compensator.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_laser_pointer => geocom_set_laser_pointer

  • private subroutine geocom_set_laser_pointer(this, enabled, delay)

    Sends EDM_Laserpointer request to sensor. The procedure turns the laser pointer on or off.

    The API function is only available on models which support reflectorless distance measurement.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Enable laser pointer.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_measurement_program => geocom_set_measurement_program

  • private subroutine geocom_set_measurement_program(this, bap_prog, delay)

    Sends BAP_SetMeasPrg request to sensor. The procedure sets the distance measurement program, for example, for method measure_distance_angle(). The RL EDM type programs are not available on all instruments. Changing the measurement program may change the EDM type as well (IR, RL).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: bap_prog

    Measurement program (GEOCOM_BAP_USER_MEASPRG).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_orientation => geocom_set_orientation

  • private subroutine geocom_set_orientation(this, hz, delay)

    Sends TMC_SetOrientation request to sensor. The procedure sets orientating the instrument in horizontal direction.

    The API function is a combination of an angle measurement to get the horizontal offset and setting the angle offset afterwards, in order to orientate to a target. Before the new orientation can be set, an existing distance must be cleared by calling method do_measure() with program GEOCOM_TMC_CLEAR.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: hz

    Horizontal orientation [rad].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_position => geocom_set_position

  • private subroutine geocom_set_position(this, hz, v, pos_mode, atr_mode, delay)

    Sends AUT_MakePositioning request to sensor. The procedure turns the telescope to a specified position.

    If pos_mode is GEOCOM_AUT_NORMAL, uses the current value of the compensator. For positioning distances > 25 gon, this mode might tend to inaccuracy. If set to GEOCOM_AUT_PRECISE, tries to measure the exact inclination of the target (tends to long position time).

    If atr_mode is GEOCOM_AUT_POSITION, uses conventional position to other face. If set to GEOCOM_AUT_TARGET, tries to position into a target in the destination area. This mode requires activated ATR.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: hz

    Horizontal angle [rad].

    real(kind=r8), intent(in) :: v

    Vertical angle [rad].

    integer, intent(in) :: pos_mode

    Position mode (GEOCOM_AUT_POSMODE).

    integer, intent(in) :: atr_mode

    ATR mode (GEOCOM_AUT_ATRMODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_positioning_timeout => geocom_set_positioning_timeout

  • private subroutine geocom_set_positioning_timeout(this, time_hz, time_v, delay)

    Sends AUT_SetTimeout request to sensor. The procedure sets the timeout for positioning.

    This function sets the maximum time to perform a positioning. The timeout is reset on 7 seconds after each power on. Valid value for time_hz and time_v are between 7.0 [sec] and 60.0 [sec].

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: time_hz

    Timeout in Hz direction [s].

    real(kind=r8), intent(in) :: time_v

    Timeout in V direction [s].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_prism_constant => geocom_set_prism_constant

  • private subroutine geocom_set_prism_constant(this, prism_const, delay)

    Sends TMC_SetPrismCorr request to sensor. The procedure sets the prism constant. The method set_prism_type() overwrites this setting.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: prism_const

    Prism constant [mm].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_prism_type => geocom_set_prism_type

  • private subroutine geocom_set_prism_type(this, prism_type, delay)

    Sends BAP_SetPrismType request to sensor. The procedure sets the default prism type for measurement with a reflector (GEOCOM_BAP_PRISMTYPE). It overwrites the prism constant set by method set_prism_constant().

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: prism_type

    Prism type (GEOCOM_BAP_PRISMTYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_prism_type_v2 => geocom_set_prism_type_v2

  • private subroutine geocom_set_prism_type_v2(this, prism_type, prism_name, delay)

    Sends BAP_SetPrismType2 request to sensor. The procedure sets the default or user prism type for measurements with a reflector. It overwrites the prism constant set by method set_prism_constant(). The user-defined prism must have been added with method set_user_prism_definition() beforehand.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: prism_type

    Prism type (GEOCOM_BAP_PRISMTYPE).

    character(len=*), intent(in) :: prism_name

    Prism name (required if prism type is GEOCOM_BAP_PRISM_USER).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_reduced_atr_fov => geocom_set_reduced_atr_fov

  • private subroutine geocom_set_reduced_atr_fov(this, enabled, delay)

    Sends BAP_SetRedATRFov request to sensor. The procedure sets the reduced ATR field of view. If enabled is .true., ATR uses reduced field of view (about 1/9), full field of view otherwise.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Use reduced field of view.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_refraction_mode => geocom_set_refraction_mode

  • private subroutine geocom_set_refraction_mode(this, mode, delay)

    Sends TMC_SetRefractiveMethod request to sensor. The procedure sets the refraction model. Mode 1 means method 1 for the rest of the world, mode 2 means method for Australia.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: mode

    Refraction data method (1 or 2).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_search_area => geocom_set_search_area

  • private subroutine geocom_set_search_area(this, center_hz, center_v, range_hz, range_v, enabled, delay)

    Sends AUT_SetSearchArea request to sensor. The procedure sets the PowerSearch window, and activates it. The API call is valid for all instruments, but has effects only for those equipped with PowerSearch (requires GeoCOM robotic licence).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: center_hz

    Search area center Hz angle [rad].

    real(kind=r8), intent(in) :: center_v

    Search area center V angle [rad].

    real(kind=r8), intent(in) :: range_hz

    Search area range Hz angle [rad].

    real(kind=r8), intent(in) :: range_v

    Search area range V angle [rad].

    logical, intent(in) :: enabled

    Enable search area.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_station => geocom_set_station

  • private subroutine geocom_set_station(this, easting, northing, height, instr_height, delay)

    Sends TMC_SetStation request to sensor. The procedure sets the station coordinates of the instrument.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: easting

    E coordinate [m].

    real(kind=r8), intent(in) :: northing

    N coordinate [m].

    real(kind=r8), intent(in) :: height

    H coordinate [m].

    real(kind=r8), intent(in) :: instr_height

    Instrument height [m].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_target_type => geocom_set_target_type

  • private subroutine geocom_set_target_type(this, target_type, delay)

    Sends BAP_SetTargetType request to sensor. The procedure sets the EDM type (GEOCOM_BAP_TARGET_TYPE) for distance measurements: reflector (IR) or reflectorless (RL).

    For each EDM type, the EDM mode used last is remembered and actived if the EDM type is changed. If EDM type IR is selected, the automation mode used last is activated automatically. The method set_measurement_program() can also change the target type. The EDM type RL is not available on all instruments.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: target_type

    Target type (GEOCOM_BAP_TARGET_TYPE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_tolerance => geocom_set_tolerance

  • private subroutine geocom_set_tolerance(this, hz, v, delay)

    Sends AUT_SetTol request to sensor. The procedure sets the positioning tolerances of the Hz and V instrument axes (GeoCOM robotic licence required). The tolerances must be in the range of 1 [cc] (1.57079E-06 [rad]) to 100 [cc] (1.57079E-04 [rad]).

    The maximum resolution of the angle measurement system depends on the instrument accuracy class. If smaller positioning tolerances are required, the positioning time can increase drastically.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: hz

    Positioning tolerance in Hz direction [rad].

    real(kind=r8), intent(in) :: v

    Positioning tolerance in V direction [rad].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_user_atr_mode => geocom_set_user_atr_mode

  • private subroutine geocom_set_user_atr_mode(this, enabled, delay)

    Sends AUS_SetUserAtrState request to sensor. The procedure activates or deactivates the ATR mode (requires GeoCOM robotic licence).

    If enabled is .true., ATR mode is activated, and if Lock mode is enabled while the API call is made, Lock mode will !! change to ATR mode. If enabled is .false., ATR mode is deactivated, and if Lock mode is enabled then it stays enabled.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Enable ATR mode.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_user_lock_mode => geocom_set_user_lock_mode

  • private subroutine geocom_set_user_lock_mode(this, enabled, delay)

    Sends AUS_SetUserLockState request to sensor. The procedure activates or deactivates the Lock mode (GeoCOM robotic licence required).

    If enabled is .true., Lock mode is activated. In order to lock and follow a moving target, call method lock_in(). If enabled is .false., Lock mode is deactivated. Tracking of a moving target will be aborted, and the manual drive wheel is activated.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    logical, intent(in) :: enabled

    Enable Lock mode.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_user_prism_definition => geocom_set_user_prism_definition

  • private subroutine geocom_set_user_prism_definition(this, prism_name, prism_const, refl_type, creator, delay)

    Sends BAP_SetUserPrismDef request to sensor. The procedure sets a user prism definition.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    character(len=*), intent(in) :: prism_name

    Prism name.

    real(kind=r8), intent(in) :: prism_const

    Prism correction constant [mm].

    integer, intent(in) :: refl_type

    Reflector type (GEOCOM_BAP_REFLTYPE).

    character(len=*), intent(in) :: creator

    Name of creator.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_user_spiral => geocom_set_user_spiral

  • private subroutine geocom_set_user_spiral(this, hz, v, delay)

    Sends AUT_SetUserSpiral request to sensor. The procedure sets the dimensions of the ATR search window (GeoCOM robotic licence required).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: hz

    ATR search window in Hz direction [rad].

    real(kind=r8), intent(in) :: v

    ATR search window in V direction [rad].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: set_velocity => geocom_set_velocity

  • private subroutine geocom_set_velocity(this, omega_hz, omega_v, delay)

    Sends MOT_SetVelocity request to sensor. The procedure drives the instrument with constant speed (GeoCOM robotic licence required).

    The API function is used to set up the velocity of the motorisation. The method start_controller() must have been called with argument GEOCOM_MOT_OCONST before.

    The velocity in horizontal and vertical direction are in [rad/s]. The maximum velocity is ±3.14 rad/s for TM30/TS30, and ±0.79 rad/s for TPS1100/TPS1200.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    real(kind=r8), intent(in) :: omega_hz

    Velocity in Hz direction [rad/s].

    real(kind=r8), intent(in) :: omega_v

    Velocity in V direction [rad/s].

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: setup_download => geocom_setup_download

  • private subroutine geocom_setup_download(this, device_type, file_type, file_name, block_size, nblocks, delay)

    Sends FTR_SetupDownload request to sensor. The procedure sets up a file download.

    This method must be called before download(). If the file type is GEOCOM_FTR_FILE_UNKNOWN, an additional file path is required.

    The argument device_type must be one of the following enumerators:

    • GEOCOM_FTR_DEVICE_INTERNAL – Internal memory (path /ata1a/).
    • GEOCOM_FTR_DEVICE_PCPARD – CF Card (path /ata0a/).

    The argument file_type is usually GEOCOM_FTR_FILE_IMAGES. The maximum value for block_size is GEOCOM_FTR_MAX_BLOCKSIZE.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: device_type

    Device type (GEOCOM_FTR_DEVICETYPE).

    integer, intent(in) :: file_type

    File type (GEOCOM_FTR_FILETYPE).

    character(len=*), intent(in) :: file_name

    File name with extension.

    integer, intent(in) :: block_size

    Block size.

    integer, intent(out) :: nblocks

    Number of blocks required to upload the file.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: setup_list => geocom_setup_list

  • private subroutine geocom_setup_list(this, delay, device_type, file_type, search_path)

    Sends FTR_SetupList request to sensor. The procedure sets up the device type, file type, and search path. It has to be called before list().

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in), optional :: delay

    Post-request delay [msec].

    integer, intent(in) :: device_type

    Device type (GEOCOM_FTR_DEVICETYPE).

    integer, intent(in) :: file_type

    File type (GEOCOM_FTR_FILETYPE).

    character(len=*), intent(in), optional :: search_path

    Optional search path, required for file type GEOCOM_FTR_FILE_UNKNOWN.

procedure, public :: start_controller => geocom_start_controller

  • private subroutine geocom_start_controller(this, start_mode, delay)

    Sends MOT_StartController request to sensor. The procedure starts the motor controller.

    If this function is used in combination with API call set_velocity(), the controller mode has to be GEOCOM_MOT_OCONST.

    The argument start_mode must be one of the following enumerators:

    • GEOCOM_MOT_POSIT – Relative positioning.
    • GEOCOM_MOT_OCONST – Constant speed.
    • GEOCOM_MOT_MANUPOS – Manual positioning (default setting).
    • GEOCOM_MOT_LOCK – “Lock-in” controller.
    • GEOCOM_MOT_BREAK – “Brake” controller.
    • GEOCOM_MOT_TERM – Terminates the controller task.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: start_mode

    Controller start mode (GEOCOM_MOT_MODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: stop_controller => geocom_stop_controller

  • private subroutine geocom_stop_controller(this, stop_mode, delay)

    Sends MOT_StartController request to sensor. The procedure stops the movement and the motor controller program.

    The argument stop_mode must be one of the following enumerators:

    • GEOCOM_MOT_NORMAL – Slow down with current acceleration.
    • GEOCOM_MOT_SHUTDOWN – Slow down by switching off power supply.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: stop_mode

    Controller stop mode (GEOCOM_MOT_STOPMODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: switch_off => geocom_switch_off

  • private subroutine geocom_switch_off(this, stop_mode, delay)

    Sends COM_SwitchOffTPS request to sensor. The procedure turns the instrument off.

    The argument stop_mode has to be one of the following enumerators:

    • GEOCOM_COM_TPS_STOP_SHUT_DOWN – Power down instrument.
    • GEOCOM_COM_TPS_STOP_SLEEP – Sleep mode (not supported by TPS1200).

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: stop_mode

    Switch-off mode (GEOCOM_COM_TPS_STOP_MODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: switch_on => geocom_switch_on

  • private subroutine geocom_switch_on(this, start_mode, delay)

    Sends COM_SwitchOnTPS request to sensor. The procedure turns the instrument on.

    The argument start_mode has to be one of the following enumerators:

    • GEOCOM_COM_TPS_STARTUP_LOCAL – Not supported by TPS1200.
    • GEOCOM_COM_TPS_STARTUP_REMOTE – Online mode (RPC is enabled).

    The response is not captured by the returned request.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: start_mode

    Switch-on mode (GEOCOM_COM_TPS_STARTUP_MODE).

    integer, intent(in), optional :: delay

    Post-request delay [msec].

procedure, public :: take_image => geocom_take_image

  • private subroutine geocom_take_image(this, mem_type, image_number, delay)

    Sends IMG_TakeTccImage request to sensor. The procedure captures a telescope image.

    The memory type mem_type has to be one of the following enumerators:

    • GEOCOM_IMG_INTERNAL_MEMORY – Internal memory module.
    • GEOCOM_IMG_PC_CARD – External PC card.

    Arguments

    Type IntentOptional Attributes Name
    class(geocom_class), intent(inout) :: this

    GeoCOM object.

    integer, intent(in) :: mem_type

    Memory type (GEOCOM_IMG_MEM_TYPE).

    integer(kind=i8), intent(out) :: image_number

    Number of the currently captured image.

    integer, intent(in), optional :: delay

    Post-request delay [msec].