HAL EXTI use cases

User application initializing and configuring an EXTI line

@startuml

hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

scale 800 Width

!pragma teoz true



|||

|||

== Initialization ==

|||

|||



"User Application" -> "System Driver":  **     HAL_Init();**

note right: **   Configure System Clock**

"System Driver" --> "User Application": hal status: HAL_OK

note left:  **return**



"User Application" -> "HAL EXTI Driver":  **     HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_7);**

note right: **   Initialize the EXTI**\n**Store Line into Handle**

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left:  **return**



|||

|||

== Configuration ==

|||

|||

note over "User Application": "**p_exti_config->gpio_port = HAL_EXTI_GPIOC**"

"User Application" -> "HAL EXTI Driver":  **     HAL_EXTI_SetConfig(&hexti, &p_exti_config);**

note right: **   Configure the EXTI Line**\n**      stored in the handle**

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left:  **return**



|||

|||

hnote across:**<size:28><color:GREEN>In case the EXTI is used to trigger other peripherals, \

the above sequence is adequate</size>**

@enduml

Called functions:

User application managing an interrupt with an Interrupt Service Routine

@startuml



hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

scale 1600 Width

!pragma teoz true



== Initialization ==



"User Application" -> "System Driver": HAL_Init()

note right: Configure System Clock

"System Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL GPIO Driver": HAL_GPIO_Init(HAL_GPIOG, HAL_GPIO_PIN_2, &p_gpio_config)

note right: Initialize the GPIO Pin to use

"HAL GPIO Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_2)

note right: Initialize the EXTI\nStore Line into Handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Configuration ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_SetConfig(&hexti, &p_exti_config)

note right: Configure the EXTI Line\nstored in the handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== NVIC Settings ==



"User Application" -> "System Driver": HAL_CORTEX_NVIC_SetPriority()

note right: Configure IRQ priority for the EXTI line 2

"System Driver" --> "User Application": Priority set

"User Application" -> "System Driver": HAL_CORTEX_NVIC_EnableIRQ()

note right: Enable interrupt in the NVIC for the EXTI line 2

"System Driver" --> "User Application": Interrupt enabled



== Register Callback ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_RegisterTriggerCallback(&hexti, &user_cb)

note right: Register the user defined callback

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Enable the EXTI ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_INTERRUPT)

note right: Activate interrupt mode for\nthe current EXTI

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Interrupt Service Routine ==



"EXTI_IRQHandler" <- : Interrupt

note left: Receive an interrupt signal

"EXTI_IRQHandler" --> "HAL EXTI Driver": HAL_EXTI_IRQHandler(&hexti)

note left: Call the IRQ Handler to manage upcoming interrupts

"HAL EXTI Driver" -> "User Application": p_trigger_cb()



alt GENERATOR_EXTI_MERGE_RISING_FALLING_FLAG_AVAILABLE



note left: This function takes the trigger as parameter to report\nthe pending request: rising_falling trigger



else



note left: This function takes the trigger as parameter to report\nthe pending request: rising, falling or rising_falling



end



@enduml

Called functions:

User application managing consecutive interrupts with Interrupt Service Routine

@startuml



hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

skinparam SequenceGroupBorderThickness 5

scale 1600 Width

!pragma teoz true



== Initialization ==



"User Application" -> "System Driver": HAL_Init()

note right: Configure System Clock

"System Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL GPIO Driver": HAL_GPIO_Init(HAL_GPIOC, HAL_GPIO_PIN_13, &p_gpio_config)

note right: Initialize the GPIO\nPin to use

"HAL GPIO Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_13)

note right: Initialize the EXTI\nStore Line into Handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Configuration ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_SetConfig(&hexti, &p_exti_config)

note right: Configure the EXTI Line\nstored in the handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== NVIC Settings ==



"User Application" -> "System Driver": HAL_CORTEX_NVIC_SetPriority()

note right: Configure IRQ priority for the EXTI line 13

"System Driver" --> "User Application": Priority set

"User Application" -> "System Driver": HAL_CORTEX_NVIC_EnableIRQ()

note right: Enable interrupt in the NVIC for the EXTI line 13

"System Driver" --> "User Application": Interrupt enabled



== Register Callback ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_RegisterTriggerCallback(&hexti, &user_cb)

note right: Register the user defined callback

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Enable the EXTI ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_INTERRUPT)

note right: Activate interrupt mode for\nthe current EXTI

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Interrupt Service Routine ==



group Several interrupts occurring consecutively

"EXTI_IRQHandler" <- : Interrupt

note left: Receive an interrupt signal

"EXTI_IRQHandler" -> "HAL EXTI Driver": HAL_EXTI_IRQHandler(&hexti)

note left: Call the IRQ Handler to manage interrupts

"EXTI_IRQHandler" --> "HAL EXTI Driver": pending flag cleared

"HAL EXTI Driver" -> "User Application": p_trigger_cb()



alt GENERATOR_EXTI_MERGE_RISING_FALLING_FLAG_AVAILABLE



note left: This function takes the trigger as parameter to report\nthe pending request: rising_falling trigger



else



note left: This function takes the trigger as parameter to report\nthe pending request: rising, falling or rising_falling



end



note over "User Application": Callback functions can be user defined\notherwise default callback functions can be used



"User Application" --> "HAL EXTI Driver": No pending flag



end



@enduml

Called functions:

User application changing the EXTI configuration

@startuml



hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

scale 1600 Width

!pragma teoz true



== Initialization ==



"User Application" -> "System Driver": HAL_Init()

note right: Configure System Clock

"System Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_17)

note right: Initialize the EXTI:\nStore Line into Handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Configuration ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_SetConfig(&hexti, &p_exti_config)

note right: Configure the EXTI Line\nstored in the handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== NVIC Settings ==



"User Application" -> "System Driver": HAL_CORTEX_NVIC_SetPriority()

note right: Configure IRQ priority for the EXTI line 17

"System Driver" --> "User Application": Priority set

"User Application" -> "System Driver": HAL_CORTEX_NVIC_EnableIRQ()

note right: Enable interrupt in the NVIC for the EXTI line 17

"System Driver" --> "User Application": Interrupt enabled



== Register Callback ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_RegisterTriggerCallback(&hexti, &user_cb)

note right: Register the user defined callback

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Enable the EXTI ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_INTERRUPT_EVENT)

note right: Activate interrupt/event mode for\nthe current EXTI line

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Interrupt Service Routine ==



"EXTI_IRQHandler" <- : Interrupt

note left: Receive an interrupt signal

"EXTI_IRQHandler" --> "HAL EXTI Driver": HAL_EXTI_IRQHandler(&hexti)

note left: Call the IRQ Handler to manage upcoming interrupts

"HAL EXTI Driver" -> "User Application": p_trigger_cb()



alt GENERATOR_EXTI_MERGE_RISING_FALLING_FLAG_AVAILABLE



note left: This function takes the trigger as parameter to report\nthe pending request: rising_falling trigger



else



note left: This function takes the trigger as parameter to report\nthe pending request: rising, falling or rising_falling



end



== Disable the EXTI ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Disable(&hexti)

note right: Deactivate a mode for\nthe current EXTI line

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "System Driver": HAL_CORTEX_NVIC_DisableIRQ(COMP_IRQn)

note right: Disable EXTI line\ninterrupt in the NVIC

"System Driver" --> "User Application": Interrupt disabled



== New Configuration ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_SetConfig(&hexti, &p_exti_config)

note right: Configure the EXTI Line\nstored in the handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Enable the EXTI with new mode ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_EVENT)

note right: Activate event mode for\nthe current EXTI line

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



@enduml

Called functions:

User application deinitializing EXTI

@startuml



hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

skinparam SequenceGroupBorderThickness 5

scale 1600 Width

!pragma teoz true



== Initialization ==



"User Application" -> "System Driver": HAL_Init()

note right: Configure System Clock

"System Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_20)

note right: Initialize the EXTI:\nStore Line into Handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Configuration ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_SetConfig(&hexti, &p_exti_config)

note right: Configure the EXTI Line\nstored in the handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== NVIC Settings ==



"User Application" -> "System Driver": HAL_CORTEX_NVIC_SetPriority()

note right: Configure IRQ priority for the EXTI line 20

"System Driver" --> "User Application": Priority set

"User Application" -> "System Driver": HAL_CORTEX_NVIC_EnableIRQ()

note right: Enable interrupt in the NVIC for the EXTI line 20

"System Driver" --> "User Application": Interrupt enabled



== Register Callback ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_RegisterTriggerCallback(&hexti, &user_cb)

note right: Register the user defined callback

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Enable the EXTI ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_INTERRUPT_EVENT)

note right: Activate interrupt/event mode for\nthe current EXTI line

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Interrupt Service Routine ==



group Several interrupts occurring consecutively

"EXTI_IRQHandler" <- : Interrupt

"EXTI_IRQHandler" -> "HAL EXTI Driver": HAL_EXTI_IRQHandler(&hexti)

"EXTI_IRQHandler" --> "HAL EXTI Driver": pending flag cleared

"HAL EXTI Driver" -> "User Application": p_trigger_cb()



alt GENERATOR_EXTI_MERGE_RISING_FALLING_FLAG_AVAILABLE



note left: This function takes the trigger as parameter to report\nthe pending request: rising_falling trigger



else



note left: This function takes the trigger as parameter to report\nthe pending request: rising, falling or rising_falling



end



"User Application" --> "HAL EXTI Driver": No pending flag



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Disable(&hexti)

note right: Deactivate a mode for\nthe current EXTI line

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



note over "User Application": EXTI mode disabled: No interrupts occurring



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_INTERRUPT_EVENT)

note right: Activate interrupt/event mode for\nthe current EXTI line

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



"EXTI_IRQHandler" <- : Interrupt

"EXTI_IRQHandler" -> "HAL EXTI Driver": HAL_EXTI_IRQHandler(&hexti)

"EXTI_IRQHandler" --> "HAL EXTI Driver": pending flag cleared

"HAL EXTI Driver" -> "User Application": p_trigger_cb()



alt GENERATOR_EXTI_MERGE_RISING_FALLING_FLAG_AVAILABLE



note left: This function takes the trigger as parameter to report\nthe pending request: rising_falling trigger



else



note left: This function takes the trigger as parameter to report\nthe pending request: rising, falling or rising_falling



end



"User Application" --> "HAL EXTI Driver": No pending flag



end



== De-initializing EXTI ==



"HAL EXTI Driver" <-- "User Application": HAL_EXTI_DeInit(&hexti)

note right: EXTI deinitialized, interrupt or event\nmode disabled and trigger edge\nconfiguration is reset\nand pending flags are cleared



@enduml

Called functions:

User application with Wake-up from Stop Mode via event

@startuml



hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

scale 1000 Width

!pragma teoz true



|||

|||

== Initialization ==

|||

|||



"User Application" -> "System Driver":  **     HAL_Init();**

note right: **   Configure System Clock**

"System Driver" --> "User Application": hal status: HAL_OK

note left:  **return**

"User Application" -> "HAL EXTI Driver":  **     HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_6);**

note right: **   Initialize the EXTI:**\n**Store Line into Handle**

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left:  **return**



|||

|||

== Configuration ==

|||

|||



"User Application" -> "HAL EXTI Driver":  **     HAL_EXTI_SetConfig(&hexti, &p_exti_config);**

note right: **   Configure the EXTI Line**\n**      stored in the handle**

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left:  **return**



|||

|||

== Enable the EXTI ==

|||

|||



"User Application" -> "HAL EXTI Driver":  **     HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_EVENT);**

note right:  **   Activate Event mode for**\n**    the current EXTI line **

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left:  **return**



|||

|||

== Enter STOP Mode ==

|||

|||



"User Application" -> "System Driver":  **HAL_PWR_EnterSTOPMode( PWR_STOPENTRY_WFE);**

"System Driver" --> "User Application": MCU enters Stop Mode

{start} "User Application" <- "User Application"

...

...

...

{end} "User Application" -> "User Application"

{start} <-> {end}: <i>MCU in Stop Mode



|||

|||

== Wake-up from Stop Mode ==

|||

|||



 "System Driver"<- :  **     Event occured**

note right:  **   An event occured **\n** on the current EXTI line **

"User Application" <- "System Driver": **Wake-up the CPU from Stop Mode**\n**Resume with user application treatment**

note left:  **- Restore clock configuration**\n**- Reinitialize needed peripherals**\n**- Run mode restored**



@enduml

Called functions:

Wake-up from Stop Mode through an interrupt

@startuml



hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

skinparam SequenceGroupBorderThickness 5

scale 1600 Width

!pragma teoz true



== Initialization ==



"User Application" -> "System Driver": HAL_Init()

note right: Configure System Clock

"System Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_1)

note right: Initialize the EXTI\nStore Line into Handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Configuration ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_SetConfig(&hexti, &p_exti_config)

note right: Configure the EXTI Line\nstored in the handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== NVIC Settings ==



"User Application" -> "System Driver": HAL_CORTEX_NVIC_SetPriority()

note right: Configure IRQ priority for the EXTI line 1

"System Driver" --> "User Application": Priority set

"User Application" -> "System Driver": HAL_CORTEX_NVIC_EnableIRQ()

note right: Enable interrupt in the NVIC for the EXTI line 1

"System Driver" --> "User Application": Interrupt enabled



== Register Callback ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_RegisterTriggerCallback(&hexti, &user_cbfn)

note right: Register the user defined callback

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Enable the EXTI ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Enable(&hexti, HAL_EXTI_MODE_INTERRUPT)

note right: Activate interrupt mode for\nthe current EXTI

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Enter STOP Mode ==



"User Application" -> "System Driver": HAL_PWR_EnterSTOPMode(PWR_STOPENTRY_WFI)

"System Driver" --> "User Application": MCU enters Stop Mode



group MCU in Stop Mode

...

end



== System wake-up ==



"EXTI_IRQHandler" <- : Interrupt

note right: An interrupt occurred\non the current EXTI line

"EXTI_IRQHandler" --> "HAL EXTI Driver": HAL_EXTI_IRQHandler(&hexti)

note left: Call the IRQ Handler to manage upcoming interrupt

"HAL EXTI Driver" -> "System Driver": Wake-up the CPU from Stop Mode

note left: - Restore clock configuration\n- Reinitialize needed peripherals

"HAL EXTI Driver" -> "User Application": p_trigger_cb()



alt GENERATOR_EXTI_MERGE_RISING_FALLING_FLAG_AVAILABLE



note left: This function takes the trigger as parameter to report\nthe pending request: rising_falling trigger



else



note left: This function takes the trigger as parameter to report\nthe pending request: rising, falling or rising_falling



end



"System Driver" -> "User Application": Resume with user application treatment

note left: Run mode restored



@enduml

Called functions:

Generating a software interrupt

@startuml



hide footbox

skinparam ParticipantPadding 150

skinparam DefaultFontSize 26

skinparam ArrowFontSize 24

skinparam NoteFontSize 22

skinparam boxPadding 80

skinparam backgroundColor #FBFBFB

skinparam DiagramBorderColor #black

skinparam DiagramBorderThickness 2

skinparam Padding 6

scale 1600 Width

!pragma teoz true



== Initialization ==



"User Application" -> "System Driver": HAL_Init()

note right: Configure System Clock

"System Driver" --> "User Application": hal status: HAL_OK

note left: return



"User Application" -> "HAL EXTI Driver": HAL_EXTI_Init(&hexti, HAL_EXTI_LINE_10)

note right: Initialize the EXTI\nStore Line into Handle

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== NVIC Settings ==



"User Application" -> "System Driver": HAL_CORTEX_NVIC_SetPriority()

note right: Configure IRQ priority for the EXTI line 10

"System Driver" --> "User Application": Priority set

"User Application" -> "System Driver": HAL_CORTEX_NVIC_EnableIRQ()

note right: Enable interrupt in the NVIC for the EXTI line 10

"System Driver" --> "User Application": Interrupt enabled



== Register Callback ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_RegisterTriggerCallback(&hexti, &user_cbfn)

note right: Register the user defined callback

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Generate a Software Interrupt ==



"User Application" -> "HAL EXTI Driver": HAL_EXTI_GenerateSWI(&hexti)

note right: Generate a software interrupt signal on the dedicated line

"HAL EXTI Driver" --> "User Application": hal status: HAL_OK

note left: return



== Interrupt Service Routine ==



"EXTI_IRQHandler" <- "HAL EXTI Driver": Software Interrupt

note right: An interrupt occurred\non the current EXTI line

"EXTI_IRQHandler" --> "HAL EXTI Driver": HAL_EXTI_IRQHandler(&hexti)

note left: IRQ Handler called to manage pending interrupt



"EXTI_IRQHandler" --> "HAL EXTI Driver": Disable interrupt and clear pending flag

"HAL EXTI Driver" -> "User Application": p_trigger_cb()



alt GENERATOR_EXTI_MERGE_RISING_FALLING_FLAG_AVAILABLE



note left: This function takes the trigger as parameter to report\nthe pending request: rising_falling trigger



else



note left: This function takes the trigger as parameter to report\nthe pending request: rising, falling or rising_falling



end



@enduml

Called functions: