module NotificationModule use SimulationVariables implicit none contains subroutine Set_UnlatchLed(v) use CDrillingConsoleVariables use SimulationVariables !use CLatchLedNotification implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%UnlatchLed == v) return #endif data%State%notifications%UnlatchLed = v if(data%State%notifications%UnlatchLed) then data%Equipments%DrillingConsole%UnlatchPipeLED = 1 !call Set_LatchLed(.false.) else data%Equipments%DrillingConsole%UnlatchPipeLED = 0 endif !**call data%State%notifications%OnUnlatchLedChange%RunAll() end subroutine logical function Get_UnlatchLed() implicit none Get_UnlatchLed = data%State%notifications%UnlatchLed end function subroutine Set_TongNotification(v) implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%TongNotification == v) return #endif data%State%notifications%TongNotification = v ! if(associated(data%State%notifications%TongNotificationPtr)) !**call data%State%notifications%TongNotificationPtr(data%State%notifications%TongNotification) #ifdef deb if(print_log) print*, 'data%State%notifications%TongNotification=', data%State%notifications%TongNotification #endif !**call data%State%notifications%OnTongNotificationChange%RunAll() end subroutine logical function Get_TongNotification() implicit none Get_TongNotification = data%State%notifications%TongNotification end function subroutine Set_TorqueWrenchLed(v) use CTopDrivePanelVariables use SimulationVariables!, only: data%Equipments%TopDrivePanel%TopDriveTorqueWrenchLed implicit none integer , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%TorqueWrenchLed == v) return #endif data%State%notifications%TorqueWrenchLed = v data%Equipments%TopDrivePanel%TopDriveTorqueWrenchLed = v !**call data%State%notifications%OnTorqueWrenchLedChange%RunAll() end subroutine logical function Get_TorqueWrenchLed() implicit none Get_TorqueWrenchLed = data%State%notifications%TorqueWrenchLed end function subroutine Set_PowerLed(v) use CTopDrivePanelVariables use SimulationVariables!, only: data%Equipments%TopDrivePanel%TopDriveTdsPowerLed !use CLatchLedNotification implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%PowerLed == v) return #endif data%State%notifications%PowerLed = v if(data%State%notifications%PowerLed) then data%Equipments%TopDrivePanel%TopDriveTdsPowerLed = 1 !call Set_LatchLed(.false.) else data%Equipments%TopDrivePanel%TopDriveTdsPowerLed = 0 endif !**call data%State%notifications%OnPowerLedChange%RunAll() end subroutine logical function Get_PowerLed() implicit none Get_PowerLed = data%State%notifications%PowerLed end function subroutine Set_IbopLed(v) use CTopDrivePanelVariables use SimulationVariables!, only: data%Equipments%TopDrivePanel%TopDriveIbopLed use CManifolds, Only: OpenTopDriveIBop, CloseTopDriveIBop !use CLatchLedNotification implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%IbopLed == v) return #endif data%State%notifications%IbopLed = v if(data%State%notifications%IbopLed) then data%Equipments%TopDrivePanel%TopDriveIbopLed = 1 call CloseTopDriveIBop() else data%Equipments%TopDrivePanel%TopDriveIbopLed = 0 call OpenTopDriveIBop() endif !**call data%State%notifications%OnIbopLedChange%RunAll() end subroutine logical function Get_IbopLed() implicit none Get_IbopLed = data%State%notifications%IbopLed end function subroutine Set_SwingLed(v) use CDrillingConsoleVariables use SimulationVariables use SimulationVariables!, only: SwingLedHw => SwingLed implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%SwingLed == v) return #endif data%State%notifications%SwingLed = v if(data%State%notifications%SwingLed) then data%Equipments%DrillingConsole%SwingLed = 1 else data%Equipments%DrillingConsole%SwingLed = 0 endif !**call data%State%notifications%OnSwingLedChange%RunAll() end subroutine logical function Get_SwingLed() implicit none Get_SwingLed = data%State%notifications%SwingLed end function subroutine Set_SlipsNotification(v) implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%SlipsNotification == v) return #endif data%State%notifications%SlipsNotification = v ! if(associated(data%State%notifications%SlipsNotificationPtr)) !**call data%State%notifications%SlipsNotificationPtr(data%State%notifications%SlipsNotification) #ifdef deb if(print_log) print*, 'data%State%notifications%SlipsNotification=', data%State%notifications%SlipsNotification #endif !**call data%State%notifications%OnSlipsNotificationChange%RunAll() end subroutine logical function Get_SlipsNotification() implicit none Get_SlipsNotification = data%State%notifications%SlipsNotification end function subroutine Set_OpenSafetyValveLed(v) use CDrillingConsoleVariables use SimulationVariables use SimulationVariables!, only: OpenSafetyValveLedHw => OpenSafetyValveLed use CManifolds, only: OpenSafetyValve_TopDrive, OpenSafetyValve_KellyMode, OpenSafetyValve_TripMode use CHoistingVariables use SimulationVariables!, only: data%Configuration%Hoisting%DriveType, TopDrive_DriveType, Kelly_DriveType implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%OpenSafetyValveLed == v) return #endif data%State%notifications%OpenSafetyValveLed = v if(data%State%notifications%OpenSafetyValveLed) then !!call OpenSafetyValve() if(data%Configuration%Hoisting%DriveType == TopDrive_DriveType) call OpenSafetyValve_TopDrive() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_OpenSafetyValveLed == 0) call OpenSafetyValve_KellyMode() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_OpenSafetyValveLed == 1) call OpenSafetyValve_TripMode() endif !**call data%State%notifications%OnOpenSafetyValveLedChange%RunAll() end subroutine logical function Get_OpenSafetyValveLed() implicit none Get_OpenSafetyValveLed = data%State%notifications%OpenSafetyValveLed end function subroutine Set_OpenKellyCockLed(v) ! use CDrillingConsoleVariables use SimulationVariables use SimulationVariables!, only: OpenKellyCockLedHw => OpenKellyCockLed use CManifolds, only: OpenKellyCock implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%OpenKellyCockLed == v) return #endif data%State%notifications%OpenKellyCockLed = v if(data%State%notifications%OpenKellyCockLed) then call OpenKellyCock() endif ! HAS BEEN IMPLEMENTED IN CMANIFOLD !if(OpenKellyCockLed) then ! OpenKellyCockLedHw = 1 !else ! OpenKellyCockLedHw = 0 !endif !**call data%State%notifications%OnOpenKellyCockLedChange%RunAll() end subroutine logical function Get_OpenKellyCockLed() implicit none Get_OpenKellyCockLed = data%State%notifications%OpenKellyCockLed end function subroutine Set_LatchLed(v) use CDrillingConsoleVariables use SimulationVariables use SimulationVariables!, only: data%Equipments%DrillingConsole%LatchPipeLED !use CUnlatchLedNotification implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%LatchLed == v) return #endif data%State%notifications%LatchLed = v if(data%State%notifications%LatchLed) then data%Equipments%DrillingConsole%LatchPipeLED = 1 !call Set_UnlatchLed(.false.) else data%Equipments%DrillingConsole%LatchPipeLED = 0 endif !**call data%State%notifications%OnLatchLedChange%RunAll() end subroutine logical function Get_LatchLed() implicit none Get_LatchLed = data%State%notifications%LatchLed end function subroutine Set_IrSafetyValveLed(v) use CDrillingConsoleVariables use SimulationVariables use UnitySignalsModule use CManifolds, only: & InstallSafetyValve_TopDrive, & InstallSafetyValve_KellyMode, & InstallSafetyValve_TripMode, & RemoveSafetyValve_TopDrive, & RemoveSafetyValve_KellyMode, & RemoveSafetyValve_TripMode use UnitySignalVariables use CHoistingVariables implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%IrSafetyValveLed == v) return #endif data%State%notifications%IrSafetyValveLed = v if(data%State%notifications%IrSafetyValveLed) then data%Equipments%DrillingConsole%IRSafetyValveLed = 1 if(data%Configuration%Hoisting%DriveType == TopDrive_DriveType) call InstallSafetyValve_TopDrive() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_IrSafetyValveLed == 0) call InstallSafetyValve_KellyMode() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_IrSafetyValveLed == 1) call InstallSafetyValve_TripMode() call Set_SafetyValve_Install() else data%Equipments%DrillingConsole%IRSafetyValveLed = 0 if(data%Configuration%Hoisting%DriveType == TopDrive_DriveType) call RemoveSafetyValve_TopDrive() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_IrSafetyValveLed == 0) call RemoveSafetyValve_KellyMode() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_IrSafetyValveLed == 1) call RemoveSafetyValve_TripMode() call Set_SafetyValve_Remove() endif !**call data%State%notifications%OnIrSafetyValveLedChange%RunAll() end subroutine logical function Get_IrSafetyValveLed() implicit none Get_IrSafetyValveLed = data%State%notifications%IrSafetyValveLed end function subroutine Set_IrIBopLed(v) use CDrillingConsoleVariables use SimulationVariables use SimulationVariables!, only: IRIBopLedHw => IRIBopLed use CManifolds, only: InstallIBop, RemoveIBop use UnitySignalVariables use UnitySignalsModule, only: Set_Ibop_Install, Set_Ibop_Remove implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%IrIBopLed == v) return #endif data%State%notifications%IrIBopLed = v if(data%State%notifications%IrIBopLed) then data%Equipments%DrillingConsole%IRIBopLed = 1 call InstallIBop() call Set_Ibop_Install() else data%Equipments%DrillingConsole%IRIBopLed = 0 call RemoveIBop() call Set_Ibop_Remove() endif !**call data%State%notifications%OnIrIBopLedChange%RunAll() end subroutine logical function Get_IrIBopLed() implicit none Get_IrIBopLed = data%State%notifications%IrIBopLed end function subroutine Set_FillMouseHoleLed(v) use CDrillingConsoleVariables use SimulationVariables ! use CMouseHoleEnumVariables use UnitySignalVariables use UnitySignalsModule implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%FillMouseHoleLed == v) return #endif data%State%notifications%FillMouseHoleLed = v if(data%State%notifications%FillMouseHoleLed) then data%Equipments%DrillingConsole%FillMouseHoleLed = 1 !call Set_MouseHole(MOUSE_HOLE_FILL) else data%Equipments%DrillingConsole%FillMouseHoleLed = 0 !call Set_MouseHole(MOUSE_HOLE_EMPTY) endif !**call data%State%notifications%OnFillMouseHoleLedChange%RunAll() end subroutine logical function Get_FillMouseHoleLed() implicit none Get_FillMouseHoleLed = data%State%notifications%FillMouseHoleLed end function subroutine Set_CloseKellyCockLed(v) use CDrillingConsoleVariables use SimulationVariables use SimulationVariables!, only: CloseKellyCockLedHw => CloseKellyCockLed use CManifolds, only: CloseKellyCock implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%CloseKellyCockLed == v) return #endif data%State%notifications%CloseKellyCockLed = v if(data%State%notifications%CloseKellyCockLed) then call CloseKellyCock() endif !**call data%State%notifications%OnCloseKellyCockLedChange%RunAll() end subroutine logical function Get_CloseKellyCockLed() implicit none Get_CloseKellyCockLed = data%State%notifications%CloseKellyCockLed end function subroutine Set_CloseSafetyValveLed(v) ! use CDrillingConsoleVariables use SimulationVariables !@use ConfigurationVariables, only: CloseSafetyValveLedHw => CloseSafetyValveLed use CManifolds, only: CloseSafetyValve_TopDrive, CloseSafetyValve_KellyMode, CloseSafetyValve_TripMode use CHoistingVariables use SimulationVariables!, only: data%Configuration%Hoisting%DriveType, TopDrive_DriveType, Kelly_DriveType implicit none logical , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%notifications%CloseSafetyValveLed == v) return #endif data%State%notifications%CloseSafetyValveLed = v if(data%State%notifications%CloseSafetyValveLed) then !!call CloseSafetyValve() if(data%Configuration%Hoisting%DriveType == TopDrive_DriveType) call CloseSafetyValve_TopDrive() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_CloseSafetyValveLed == 0) call CloseSafetyValve_KellyMode() if(data%Configuration%Hoisting%DriveType == Kelly_DriveType .and. data%State%notifications%operation_CloseSafetyValveLed == 1) call CloseSafetyValve_TripMode() endif !**call data%State%notifications%OnCloseSafetyValveLedChange%RunAll() end subroutine logical function Get_CloseSafetyValveLed() implicit none Get_CloseSafetyValveLed = data%State%notifications%CloseSafetyValveLed end function end module NotificationModule