blob: 5e71ce8009433a351e5398f8a996b54e8f038915 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
// //
// 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_CLI_Definitions
//
// Purpose:
// This module contains common type definitions for the EPTF Commandline Interface Components.
//
// Module Parameters:
// -
//
// Module depends on:
// <EPTF_CLL_Base_Definitions>
// <EPTF_CLL_Semaphore_Definitions>
// <EPTF_CLL_Variable_Definitions>
// <TELNETasp_PortType>
// <EPTF_CLL_Common_Definitions>
// <EPTF_CLL_Logging_Definitions>
//
// Current Owner:
// Jozsef Gyurusi (ETHJGI)
//
// Last Review Date:
// 2010-03-22
//
// Detailed Comments:
// This module contains type definitions of the EPTF CLI and EPTF CLI Client.
//
///////////////////////////////////////////////////////////////
module EPTF_CLL_CLI_Definitions {
import from EPTF_CLL_Base_Definitions all;
import from EPTF_CLL_Semaphore_Definitions all;
import from EPTF_CLL_Variable_Definitions all;
import from TELNETasp_PortType all;
import from EPTF_CLL_Common_Definitions all;
import from EPTF_CLL_Logging_Definitions all;
import from EPTF_CLL_HashMap_Definitions all;
// CLI:
group CLI {
// useful regexp expressions:
const charstring c_EPTF_CLI_whitespace := c_EPTF_Var_whitespace; // whitespace
const charstring c_EPTF_CLI_anyWord := c_EPTF_Var_anyWord; // pattern: " any_word "
const charstring c_EPTF_CLI_everything := c_EPTF_Var_everything; // everything
const charstring c_EPTF_CLI_integerNumber := c_EPTF_Var_integerNumber; // integer number: "01230102", "+1122", "-0121"
const charstring c_EPTF_CLI_floatNumber := c_EPTF_Var_floatNumber; // float number: "12.354", "-1.23", "+1.254"
type record EPTF_CLI_Msg_RegisterCommand {
integer id,
charstring commandName,
charstring commandHelp,
charstring ownerCompName,
boolean caseInsensitive
}
type enumerated EPTF_CLI_RegisterCommandResult {
registerOK,
registerFailed
}
type record EPTF_CLI_Msg_RegisterCommandResp {
integer id,
EPTF_CLI_RegisterCommandResult result
}
type union EPTF_CLI_MgmtMsg {
EPTF_CLI_Msg_RegisterCommand registerCommand,
EPTF_CLI_Msg_RegisterCommandResp registerCommandResp
}
type port EPTF_CLI_Mgmt_PT message {
inout EPTF_CLI_MgmtMsg;
} with {extension "internal"}
type record EPTF_CLI_RegisteredCommand {
charstring commandName,
charstring commandHelp,
EPTF_CLI_Client_CT ownerCompRef,
charstring ownerCompName,
boolean caseInsensitive
}
const EPTF_CLI_RegisteredCommand c_EPTF_CLI_RegisteredCommand_init := {
commandName := "",
commandHelp := "",
ownerCompRef := null,
ownerCompName := "",
caseInsensitive := true
}
type record of EPTF_CLI_RegisteredCommand EPTF_CLI_RegisteredCommandList;
// consts:
const charstring c_EPTF_CLI_loggingComponentMask := "EPTF_CLI";
const EPTF_Logging_EventClassPrefixList c_EPTF_CLI_loggingEventClasses := { "Debug" };
const integer c_EPTF_CLI_loggingClassIdx_Debug := 0;
type component EPTF_CLI_CT extends EPTF_Base_CT, EPTF_Var_CT, EPTF_Semaphore_CT, EPTF_Logging_CT, EPTF_HashMap_CT {
private port EPTF_CLI_Mgmt_PT EPTF_CLI_MgmtIf;
private var boolean v_EPTF_CLI_initialized := false;
private var EPTF_CLI_RegisteredCommandList v_EPTF_CLI_RegisteredCommandList := {};
private var default v_CLI_mainHandler := null;
private var EPTF_CharstringList v_EPTF_CLI_commandResults := {};
// the ports of the terminal:
private port TELNETasp_PT EPTF_CLI_TELNET_PCO;
private port TELNETasp_PT EPTF_CLI_displayTELNET_PCO;
private var boolean v_EPTF_CLI_clientConnected := false;
private var boolean v_EPTF_CLI_displayConnected := false;
private var boolean v_EPTF_CLI_terminalDisabled := true;
private var boolean v_EPTF_CLI_displayTerminalDisabled := true;
// logging
private var integer v_EPTF_CLI_loggingMaskId := c_EPTF_Logging_invalidMaskId;
private var integer v_EPTF_CLI_commandAlias_HashMap := -1;
private var EPTF_CharstringList v_EPTF_CLI_commandAliases := {}
private var charstring v_EPTF_CLI_aliasTag := "$";
}
} //~group CLI
// CLI_Client
group CLI_Client {
type record of EPTF_CLI_RegisterCommandResult EPTF_CLI_RegisterCommandResultList;
type record EPTF_CLI_Client_RegisteredCommand {
charstring commandName,
f_EPTF_CLI_Client_commandHandler_FT commandHandler,
integer commandDisplayIdx,
boolean caseInsensitive
}
const EPTF_CLI_Client_RegisteredCommand c_EPTF_CLI_Client_RegisteredCommand_init := {
commandName := "",
commandHandler := null,
commandDisplayIdx:=-1,
caseInsensitive := true
}
type record of EPTF_CLI_Client_RegisteredCommand EPTF_CLI_Client_RegisteredCommandList;
// consts:
const charstring c_EPTF_CLI_Client_loggingComponentMask := "EPTF_CLI_Client";
const EPTF_Logging_EventClassPrefixList c_EPTF_CLI_Client_loggingEventClasses := { "Debug" };
const integer c_EPTF_CLI_Client_loggingClassIdx_Debug := 0;
type component EPTF_CLI_Client_CT extends EPTF_Base_CT, EPTF_Semaphore_CT, EPTF_Var_CT, EPTF_Logging_CT {
private port EPTF_CLI_Mgmt_PT EPTF_CLI_Client_MgmtIf;
private var boolean v_EPTF_CLI_Client_initialized := false;
private var EPTF_CLI_RegisterCommandResultList v_CLI_Client_registerCommandResults := {}; // database for the results of the registerCommand functions
private var EPTF_CLI_Client_RegisteredCommandList v_EPTF_CLI_Client_RegisteredCommandList := {}; //database for registered command handlers
private var default v_CLI_Client_handler := null;
private var EPTF_CLI_CT v_CLI_compRef := null;
// logging
private var integer v_EPTF_CLI_Client_loggingMaskId := c_EPTF_Logging_invalidMaskId;
}
// should run on a component that extends EPTF_CLI_Client_CT
// pl_result : the result of the command (when called contains the name of the command to be executed)
// return value is the exit code, 0: OK, nonzero: error
// positive error codes will appear in the result
type function f_EPTF_CLI_Client_commandHandler_FT(in charstring pl_commandArgs, inout charstring pl_result) runs on self return integer;
} //~group CLI_Client
} //~module EPTF_CLL_CLI_Definitions