| /////////////////////////////////////////////////////////////////////////////// |
| // // |
| // Copyright (c) 2000-2019 Ericsson Telecom AB // |
| // // |
| // All rights reserved. This program and the accompanying materials // |
| // are made available under the terms of the Eclipse Public License v2.0 // |
| // which accompanies this distribution, and is available at // |
| // https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html // |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // Module: EPTF_CLL_StatHandlerUI_Functions |
| // |
| // Purpose: |
| // This module contains the implementation of the StatHandlerUI. |
| // |
| // Module depends on: |
| // <EPTF_CLL_Base_Functions> |
| // <EPTF_CLL_Common_Definitions> |
| // <EPTF_CLL_LoggingUI_Definitions> |
| // <EPTF_CLL_LoggingUIClient_Functions> |
| // <EPTF_CLL_Semaphore_Functions> |
| // <EPTF_CLL_StatHandler_Definitions> |
| // <EPTF_CLL_StatHandler_Functions> |
| // <EPTF_CLL_StatHandlerClient_Definitions> |
| // <EPTF_CLL_StatHandlerClient_Functions> |
| // <EPTF_CLL_StatHandlerLogging_Functions> |
| // <EPTF_CLL_StatHandlerUI_Definitions> |
| // <EPTF_CLL_UIHandler_Definitions> |
| // <EPTF_CLL_UIHandlerClient_Definitions> |
| // <EPTF_CLL_UIHandlerClient_Functions> |
| // <EPTF_CLL_Variable_Definitions> |
| // <EPTF_CLL_Variable_Functions> |
| // <XTDP_PDU_Defs> |
| // |
| // Module Parameters: |
| // - |
| // |
| // Current Owner: |
| // Gabor Tatarka (EGBOTAT) |
| // |
| // Last Review Date: |
| // - |
| // |
| // Detailed Comments: |
| // This module contains the implementation of the StatHandlerUI. |
| // Public API: |
| // - f_EPTF_StatHandlerUI_init_CT |
| // - f_EPTF_StatHandlerClientUI_init_CT |
| // - f_EPTF_StatHandlerClientUI_bindStatToWidget |
| // |
| /////////////////////////////////////////////////////////////// |
| |
| module EPTF_CLL_StatHandlerUI_Functions { |
| |
| import from EPTF_CLL_Base_Functions all; |
| import from EPTF_CLL_Common_Definitions all; |
| import from EPTF_CLL_LoggingUI_Definitions all; |
| import from EPTF_CLL_LoggingUIClient_Functions all; |
| import from EPTF_CLL_StatHandler_Definitions all; |
| import from EPTF_CLL_StatHandler_Functions all; |
| import from EPTF_CLL_StatHandlerClient_Functions all; |
| import from EPTF_CLL_StatHandlerLogging_Functions all; |
| import from EPTF_CLL_StatHandlerUI_Definitions all; |
| import from EPTF_CLL_UIHandler_Definitions all; |
| import from EPTF_CLL_UIHandlerClient_Functions all; |
| import from EPTF_CLL_Variable_Definitions all; |
| import from EPTF_CLL_Variable_Functions all; |
| |
| group StatHandlerUI { |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_EPTF_StatHandlerUI_init_CT |
| // |
| // Purpose: |
| // Init function for component type <EPTF_StatHandlerUI_CT> |
| // |
| // Parameters: |
| // pl_selfName - *in* *charstring* - EPTF self name |
| // pl_uiParentWidgetId - *in* *charstring* - ID of the parent widget where StatHandlerUI shall create the GUI |
| // pl_uiHandler_compRef - *in* <EPTF_UIHandler_CT> - component reference to the UIHandler |
| // pl_loggingUi_compRef - *in* <EPTF_LoggingUI_CT> - component reference to the LoggingUI, optional |
| // pl_localResetButtonUIVarName - *in* *charstring* - variable name of the local reset button, optional |
| // |
| // Return Value: |
| // - |
| // |
| // Errors & assertions: |
| // - |
| // |
| // Detailed Comments: |
| // Only one instnace will actually create the tabpanel, etc. on the GUI, |
| // subsequently initialized instances will only subscribe to the global reset button. |
| // The local reset button is added to the appropriate tree by each instance if |
| // pl_localResetButtonUIVarName is an empty string (default). If pl_localResetButtonUIVarName is |
| // specified, the StatHandlerUI will subscribe to that variable. This variable must be |
| // on the GUI component, refered by pl_uiHandler_compRef. |
| // |
| /////////////////////////////////////////////////////////// |
| public function f_EPTF_StatHandlerUI_init_CT( |
| in charstring pl_selfName, |
| in charstring pl_uiParentWidgetId, //TODO not used any more, remove |
| in EPTF_UIHandler_CT pl_uiHandler_compRef, |
| in EPTF_LoggingUI_CT pl_loggingUi_compRef := null, |
| in charstring pl_localResetButtonUIVarName := "") |
| runs on EPTF_StatHandlerUI_CT |
| { |
| if(v_EPTF_StatHandlerUI_initialized) { return; } |
| v_EPTF_StatHandlerUI_initialized := true; |
| |
| if(pl_loggingUi_compRef != null) { |
| f_EPTF_LoggingUIClient_init_CT(pl_selfName, pl_loggingUi_compRef, pl_uiHandler_compRef); |
| } else { |
| f_EPTF_UIHandlerClient_init_CT(pl_selfName, pl_uiHandler_compRef); |
| } |
| f_EPTF_StatHandlerLogging_init_CT( |
| pl_selfName, |
| c_EPTF_StatHandler_loggingComponentMask, |
| tsp_debug_EPTF_StatHandler); |
| |
| f_EPTF_StatHandler_registerBindStatToWidgetCallbackFn(refers(f_EPTF_StatHandlerUI_bindStatToWidget)); |
| |
| f_EPTF_StatHandler_init_CT(pl_selfName); |
| |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_StatHandlerUI_cleanup_CT)); |
| } |
| |
| } // group StatHandlerUI |
| |
| group StatHandlerClientUI { |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_EPTF_StatHandlerClientUI_init_CT |
| // |
| // Purpose: |
| // Init function for component type <EPTF_StatHandlerClientUI_CT> |
| // |
| // Parameters: |
| // pl_selfName - *in* *charstring* - EPTF self name |
| // pl_statHandler_compRef - *in* <EPTF_StatHandler_CT> - default StatHandler master component reference, optional |
| // pl_uiHandler_compRef - *in* <EPTF_UIHandler_CT> - component reference to the UIHandler, optional |
| // pl_loggingUi_compRef - *in* <EPTF_LoggingUI_CT> - component reference to the LoggingUI, optional |
| // |
| // Return Value: |
| // - |
| // |
| // Errors & assertions: |
| // - |
| // |
| // Detailed Comments: |
| // - |
| // |
| /////////////////////////////////////////////////////////// |
| public function f_EPTF_StatHandlerClientUI_init_CT( |
| in charstring pl_selfName, |
| in EPTF_StatHandler_CT pl_statHandler_compRef := null, |
| in EPTF_UIHandler_CT pl_uiHandler_compRef:= null, |
| in EPTF_LoggingUI_CT pl_loggingUi_compRef := null) |
| runs on EPTF_StatHandlerClientUI_CT |
| { |
| if(v_EPTF_StatHandlerClientUI_initialized) { return; } |
| v_EPTF_StatHandlerClientUI_initialized := true; |
| |
| if(pl_uiHandler_compRef != null and pl_loggingUi_compRef != null) { |
| f_EPTF_LoggingUIClient_init_CT(pl_selfName, pl_loggingUi_compRef, pl_uiHandler_compRef); |
| } else if(pl_uiHandler_compRef != null) { |
| f_EPTF_UIHandlerClient_init_CT(pl_selfName, pl_uiHandler_compRef); |
| } |
| |
| f_EPTF_StatHandlerClient_init_CT(pl_selfName, pl_statHandler_compRef); |
| |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_StatHandlerClientUI_cleanup_CT)); |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_EPTF_StatHandlerClientUI_bindStatToWidget |
| // |
| // Purpose: |
| // Function for requesting a master component to bind a stat to a widget on the GUI |
| // |
| // Parameters: |
| // pl_statName - *in* *charstring* - name of the stat |
| // pl_widgetId - *in* *charstring* - widget ID |
| // pl_statHandler_compRef - *in* <EPTF_StatHandler_CT> - StatHandler master component reference, optional |
| // pl_wait4response - *in* *boolean* - whether the client shall wait for the response |
| // pl_additionalWidget - *in* *boolean* - if widget is an additional widget |
| // pl_subscriptionMode - *in* <EPTF_Var_SubscriptionMode> - the Var subscription mode to use |
| // pl_refreshRate - *in integer* - the refresh rate to use for the subscription (default: 0 == default syncInterval) |
| // |
| // Return Value: |
| // *boolean* - true on success |
| // |
| // Errors & assertions: |
| // - |
| // |
| // Detailed Comments: |
| // - |
| // |
| /////////////////////////////////////////////////////////// |
| public function f_EPTF_StatHandlerClientUI_bindStatToWidget( |
| in charstring pl_statName, |
| in charstring pl_widgetId, |
| in EPTF_StatHandler_CT pl_statHandler_compRef := null, |
| in boolean pl_wait4response := true, |
| in boolean pl_additionalWidget := false, |
| in EPTF_Var_SubscriptionMode pl_subscriptionMode := sampledAtSync, |
| in integer pl_refreshRate := 0) |
| runs on EPTF_StatHandlerClientUI_CT |
| return boolean |
| { |
| var EPTF_StatHandler_CT vl_master := f_EPTF_StatHandlerClient_getDefaultMasterCompRef(); |
| if(pl_statHandler_compRef != null) { vl_master := pl_statHandler_compRef; } |
| var EPTF_StatHandler_MgmtMsg_Request vl_request := { |
| sIdx := -1, |
| request := { |
| bindStatToWidget := { |
| statName := pl_statName, |
| widgetId := pl_widgetId, |
| additionalWidget := pl_additionalWidget, |
| subscriptionMode := pl_subscriptionMode, |
| refreshRate := pl_refreshRate |
| } |
| } |
| } |
| |
| if(not pl_wait4response) { |
| f_EPTF_StatHandlerClient_sendRequest(vl_request, vl_master); |
| return true; |
| } else { |
| var EPTF_StatHandler_MgmtMsg_Response vl_response; |
| f_EPTF_StatHandlerClient_sendReqRecvResp( |
| vl_master, |
| vl_request, |
| vl_response |
| ); |
| return vl_response.response.statusResp.result; |
| } |
| } |
| |
| } // group StatHandlerClientUI |
| |
| |
| /////////////////////////////////////////////////////////// |
| // Group: Private |
| // |
| // Purpose: |
| // Private functions used by StatHandlerUI. |
| // |
| // Detailed Comments: |
| // Do not call the functions within this group form outside of StatHandlerUI. |
| // |
| /////////////////////////////////////////////////////////// |
| group Private { |
| // TODO: add naturaldocs comments for private functions |
| |
| private function f_EPTF_StatHandlerUI_cleanup_CT() |
| runs on EPTF_StatHandlerUI_CT |
| { |
| if(not v_EPTF_StatHandlerUI_initialized) { |
| f_EPTF_StatHandlerLogging_debug(%definitionId&": not yet initialized"); |
| return; |
| } |
| v_EPTF_StatHandlerUI_resetButtonContent := 0; |
| v_EPTF_StatHandlerUI_initialized := false; |
| } |
| |
| private function f_EPTF_StatHandlerClientUI_cleanup_CT() |
| runs on EPTF_StatHandlerClientUI_CT |
| { |
| if(not v_EPTF_StatHandlerClientUI_initialized) { |
| f_EPTF_StatHandlerLogging_debug(%definitionId&": not yet initialized"); |
| return; |
| } |
| v_EPTF_StatHandlerClientUI_initialized := false; |
| } |
| |
| private function f_EPTF_StatHandlerUI_resetButtonPressed(in integer pl_idx, in EPTF_IntegerList pl_argList) |
| runs on EPTF_StatHandlerUI_CT |
| { |
| // f_EPTF_StatHandlerLogging_debug(%definitionId&": "&log2str(pl_idx)); |
| var integer vl_resetButtonVarIdx := f_EPTF_Var_getId(f_EPTF_StatHandler_genUniqueName(c_EPTF_StatHandler_ResetVarName)); |
| if(vl_resetButtonVarIdx >= 0) { |
| v_EPTF_StatHandlerUI_resetButtonContent := v_EPTF_StatHandlerUI_resetButtonContent + 1; |
| f_EPTF_Var_adjustContent(vl_resetButtonVarIdx, |
| {intVal := v_EPTF_StatHandlerUI_resetButtonContent}); |
| } |
| } |
| |
| private function f_EPTF_StatHandlerUI_bindStatToWidget( |
| in charstring pl_statName, |
| in charstring pl_widgetId, |
| in boolean pl_additionalWidget, |
| in EPTF_Var_SubscriptionMode pl_subscriptionMode, |
| in integer pl_refreshRate) |
| runs on EPTF_StatHandlerUI_CT |
| return boolean |
| { |
| var charstring vl_varName; |
| if (not f_EPTF_StatHandler_getVarNameByStatName(pl_statName, vl_varName)){ |
| return false; |
| } |
| |
| var charstring vl_guiVarName; |
| |
| if (pl_additionalWidget) { |
| vl_guiVarName := ""; |
| } else { |
| vl_guiVarName := f_EPTF_StatHandlerUI_genGuiVarName(vl_varName) |
| } |
| |
| f_EPTF_UIHandlerClient_subscribeMe( |
| vl_varName, |
| vl_guiVarName, |
| pl_widgetId, |
| pl_subscriptionMode, |
| pl_refreshRate); |
| return true; |
| } |
| |
| private function f_EPTF_StatHandlerUI_genGuiVarName(in charstring pl_name) |
| runs on EPTF_StatHandlerUI_CT |
| return charstring |
| { |
| return c_EPTF_StatHandlerUI_guiVarNamePrefix & |
| f_EPTF_StatHandler_getNameSeparator() & |
| pl_name; |
| } |
| |
| } // group Private |
| |
| } // end of module |