module CSwingOffPermission
    use OperationScenariosModule
    implicit none
    
    contains
    
    subroutine Evaluate_SwingOffPermission()
        implicit none
        
        
        if (data%State%Hoisting%DriveType == TopDrive_DriveType) then
#ifdef OST
            print*, 'Evaluate_SwingOffPermission=TopDrive'
#endif



            !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%EquipmentControl%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%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= TdsPower_OFF) then
            
                call Set_SwingOffPermission(.true.)
                return
            end if
                
                
                
            call Set_SwingOffPermission(.false.)

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