private/Functions/Axis/Invoke-AxisAutofocus.ps1

#https://$($ip)/stw-cgi/image.cgi?msubmenu=focus&action=control&Mode=SimpleFocus&Channel=$($channelnum)

Function Invoke-AxisAutofocus {
    [cmdletBinding()]
    Param(
        [Parameter()]
        [hashtable]$Object
    )
    
    <#
    Object Definition:
    @{
        IP = [String(Mandatory)]
        Credential = [PSCredential(Mandatory)]
        Channel = [int] as [String(Optional)]
    }
    #>


    $Channel = 0
    if($Object.ContainsKey('Channel')) {
        $Channel = $Object.Channel
    }

    #Set basic Paramters for Invoke-AxisCommand
    $CamCmd = @{
        Arguments = @{
            IP = $Object.IP
            Menu = 'image'
            SubMenu = 'focus'
            Action = 'control'
            Parameters = @(
                "Mode=SimpleFocus"
            )
        }
        Credential = $Object.Credential
    }

    #Check if SimpleFocus is supported
    $Param = @{
        IP = $Object.IP
        Credential = $Object.Credential
        Channel = $Channel
        Capability = "SimpleFocus"
    }
    $Capabilities = Get-AxisCapability @Param

    if($Capabilities) {
        if($Channel -ne 'All') {
            #Add Channel and run Command
            $CamCmd.Arguments.Parameters += "Channel=$Channel"
            return Invoke-AxisCommand @Camcmd
        }
        else {
            #Todo
            #LOL
        }
    }
    else {
        $Param = @{
            ExceptionName = "System.Management.Automation.CmdletInvocationException"
            ExceptionMessage = "Channel does not support AutoFocus"
            ErrorId = "000" 
            CallerPSCmdlet = $PSCmdlet
            ErrorCategory = 'DeviceError'
        }
        ThrowError @Param
    }
}