# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Permissions/CSwingOffPermission.f90"
module CSwingOffPermission
    use OperationScenariosModule
    implicit none
    
    contains
    
    subroutine Evaluate_SwingOffPermission()
        implicit none
        
        if (data%Configuration%Hoisting%DriveType == TopDrive_DriveType) then
            if(print_log) print*, 'Evaluate_SwingOffPermission=TopDrive'

!TOPDRIVE-CODE=35
            if (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.&
                    Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.&
                    Get_TdsSwing() == TDS_SWING_TILT_END .and.&
                    Get_Slips() == SLIPS_SET_END .and.&
                data%Equipments%TopDrivePanel%TopDriveTdsPowerState /= TdsPower_OFF) then            
                call Set_SwingOffPermission(.true.)
                return
            end if
                
!TOPDRIVE-CODE=36
            if (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.&
                    Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.&
                    Get_TdsSwing() == TDS_SWING_DRILL_END .and.&
                    data%Equipments%TopDrivePanel%TopDriveTdsPowerState /= TdsPower_OFF) then            
                call Set_SwingOffPermission(.true.)
                return
            end if
                
            call Set_SwingOffPermission(.false.)

        endif
        
!        if (DriveType == Kelly_DriveType) then
!            if(print_log) print*, 'Evaluate_SwingOffPermission=Kelly'
!        endif
        
    end subroutine
    
    subroutine Subscribe_SwingOffPermission()
        implicit none
    end subroutine
    
end module CSwingOffPermission