@startuml == Button pressed == participant unknown as uk participant main participant interrupt as it participant app_entry participant app_ble participant p2p_client_app participant stm32_seq it -> app_entry : HAL_GPIO_EXTI_Callback() app_entry -> app_ble : APP_BLE_Key_Button1_Action() app_ble -> p2p_client_app : P2PC_APP_SW1_Button_Action() p2p_client_app -> stm32_seq : UTIL_SEQ_SetTask(CFG_TASK_SW1_BUTTON_PUSHED_ID) ...waiting for task gets executed.... stm32_seq -> p2p_client_app : Button_Trigger_Received() p2p_client_app -> p2p_client_app : toggleButtonStatus() p2p_client_app -> p2p_client_app : Write_Char(P2P_WRITE_CHAR_UUID, 0, buttonStatus) activate p2p_client_app p2p_client_app -> "?b" : aci_gatt_write_without_resp() deactivate p2p_client_app == Event received == "?a" -> p2p_client_app : Event_Handler() activate p2p_client_app opt event == HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE opt event->core_event == ACI_GATT_PROC_COMPLETE_VSEVT_CODE opt aP2PClientContext[index].connHandle != pr->Connection_Handle p2p_client_app -> stm32_seq : UTIL_SEQ_SetTask(CFG_TASK_SEARCH_SERVICE_ID) end end end deactivate p2p_client_app ...waiting for task gets executed.... stm32_seq -> p2p_client_app : Update_Service() ...... uk -> app_entry : UTIL_SEQ_Idle() uk -> app_entry : shci_notify_asynch_evt() activate app_entry app_entry -> stm32_seq : UTIL_SEQ_SetTask(CFG_TASK_SYSTEM_HCI_ASYNCH_EVT_ID) deactivate app_entry uk -> app_entry : shci_cmd_resp_release() activate app_entry app_entry -> stm32_seq : UTIL_SEQ_SetEvt(CFG_IDLEEVT_SYSTEM_HCI_CMD_EVT_RSP_ID) deactivate app_entry uk -> app_entry : shci_cmd_resp_wait() activate app_entry app_entry -> stm32_seq : UTIL_SEQ_WaitEvt(CFG_IDLEEVT_SYSTEM_HCI_CMD_EVT_RSP_ID) deactivate app_entry == INIT == main -> stm32_seq : UTIL_SEQ_Run(UTIL_SEQ_DEFAULT) activate stm32_seq stm32_seq -> shci_tl : shci_user_evt_proc() activate shci_tl shci_tl -> app_entry : APPE_SysUserEvtRx() activate app_entry app_entry -> app_debug : APPD_EnableCPU2() app_entry -> app_ble : APP_BLE_Init() activate app_ble app_ble -> app_ble : Ble_Tl_Init() app_ble -> stm32_seq : UTIL_SEQ_RegTask(CFG_TASK_HCI_ASYNCH_EVT_ID, UTIL_SEQ_RFU, hci_user_evt_proc) app_ble -> shci : SHCI_C2_BLE_Init() app_ble -> app_ble : Ble_Hci_Gap_Gatt_Init() app_ble -> svc_ctl : SVCCTL_Init() app_ble -> stm32_seq : UTIL_SEQ_RegTask(CFG_TASK_START_SCAN_ID, UTIL_SEQ_RFU, Scan_Request) app_ble -> stm32_seq : UTIL_SEQ_RegTask(CFG_TASK_CONN_DEV_1_ID, UTIL_SEQ_RFU, Connect_Request) app_ble -> uk : aci_hal_set_radio_activity_mask() app_ble -> app_p2p_client : P2PC_APP_Init() activate app_p2p_client app_p2p_client -> svc_ctl : SVCCTL_RegisterCltHandler(Event_Handler) deactivate app_p2p_client app_ble -> hw_timeserver : HW_TS_Create(CFG_TIM_PROC_ID_ISR, &(BleApplicationContext.SwitchOffGPIO_timer_Id), hw_ts_SingleShot, Switch_OFF_GPIO) deactivate app_ble deactivate app_entry deactivate shci_tl stm32_seq -> stm32_seq : UTIL_SEQ_PreIdle() stm32_seq -> stm32_seq : UTIL_SEQ_Idle() stm32_seq -> stm32_seq : UTIL_SEQ_PostIdle() deactivate stm32_seq @enduml