blob: 23b3c4b80e67084853b7cd8d8d8f0b56c6d91e0f [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2020 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
///////////////////////////////////////////////////////////////////////////////
// File: EPTF_MQTT_Transport_Definitions.ttcn
// Description:
// Rev: R1A
// Prodnr: CNL 113 860
// Updated: 2020-01-07
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Module: EPTF_MQTT_Transport_Definitions
//
// Purpose:
// This module contains the definitions of callback functions for the Applib user API
//
// Module depends on:
// - <MQTT_v3_1_1_Types>
// - <IPL4asp_Types>
//
// Component Diagram:
// (see EPTF_MQTT_Transport_Definitions.components.jpg)
//
// See also:
// - <EPTF_MQTT_LGen_Definitions>
// - <EPTF_MQTT_Transport_User_CT>
// - <EPTF_MQTT_Transport_Provider_CT>
//
// Type:
// EPTF_MQTT_PDU - <EPTF_MQTT_PDU> - Encapsulates a MQTT PDU with the corresponding entity (and FSM) indices and transport information
//
// Callback Function types:
// fcb_EPTF_MQTT_Transport_receiveMessage - <fcb_EPTF_MQTT_Transport_receiveMessage> - Call-back function type for reporting received <EPTF_MQTT_PDU> MQTT message
// fcb_EPTF_MQTT_Transport_receiveEvent - <fcb_EPTF_MQTT_Transport_receiveEvent> - Call-back function type for reporting received <ASP_Event> MQTT event
// fcb_EPTF_MQTT_Transport_sendMessage - <fcb_EPTF_MQTT_Transport_sendMessage> - Call-back function type for sending a <EPTF_MQTT_PDU> MQTT message
// fcb_EPTF_MQTT_Transport_apiRequest - <fcb_EPTF_MQTT_Transport_apiRequest> - Call-back function type for sending a <EPTF_MQTT_Transport_Request> MQTT transport request
// fcb_EPTF_MQTT_Transport_apiResponse - <fcb_EPTF_MQTT_Transport_apiResponse> - Call-back function type for reporting a <EPTF_MQTT_Transport_Response> MQTT transport response
//
///////////////////////////////////////////////////////////////
/*****************************************************************
@startuml EPTF_MQTT_Transport_Definitions.components.jpg
package "EPTF_MQTT_Transport_Definitions" {
class EPTF_MQTT_Transport_User_CT {
fcb_EPTF_MQTT_Transport_sendMessage vf_EPTF_MQTT_Transport_send
fcb_EPTF_MQTT_Transport_apiRequest vf_EPTF_MQTT_Transport_apiRequest
}
class EPTF_MQTT_Transport_Provider_CT {
fcb_EPTF_MQTT_Transport_receiveMessage vf_EPTF_MQTT_Transport_receiveMessage
fcb_EPTF_MQTT_Transport_receiveEvent fcb_EPTF_MQTT_Transport_receiveEvent
fcb_EPTF_MQTT_Transport_apiResponse vf_EPTF_MQTT_Transport_apiResponse
}
EPTF_MQTT_Transport_Provider_CT <-> EPTF_MQTT_Transport_User_CT
}
@enduml
******************************************************************/
module EPTF_MQTT_Transport_Definitions
{
import from MQTT_v3_1_1_Types all;
import from IPL4asp_Types all;
///////////////////////////////////////////////////////////
// Type: fcb_EPTF_MQTT_Transport_receiveMessage
//
// Purpose:
// Call-back function type for reporting received <EPTF_MQTT_PDU> MQTT message
//
// Parameters:
// pl_message - *in* <EPTF_MQTT_PDU> - received MQTT message
///////////////////////////////////////////////////////////
type function fcb_EPTF_MQTT_Transport_receiveMessage(in EPTF_MQTT_PDU pl_message) runs on self;
///////////////////////////////////////////////////////////
// Type: fcb_EPTF_MQTT_Transport_receiveEvent
//
// Purpose:
// Call-back function type for reporting received <ASP_Event> MQTT event
//
// Parameters:
// p_event - *in* <ASP_Event> - received MQTT event
///////////////////////////////////////////////////////////
type function fcb_EPTF_MQTT_Transport_receiveEvent(in ASP_Event p_event) runs on self;
///////////////////////////////////////////////////////////
// Type: fcb_EPTF_MQTT_Transport_sendMessage
//
// Purpose:
// Call-back function type for sending a <EPTF_MQTT_PDU> MQTT message
//
// Parameters:
// pl_msg - *in* <EPTF_MQTT_PDU> - MQTT message to be sent
///////////////////////////////////////////////////////////
type function fcb_EPTF_MQTT_Transport_sendMessage(in EPTF_MQTT_PDU pl_msg) runs on self;
///////////////////////////////////////////////////////////
// Type: fcb_EPTF_MQTT_Transport_apiRequest
//
// Purpose:
// Call-back function type for sending a <EPTF_MQTT_Transport_Request> MQTT transport request
//
// Parameters:
// pl_req - *in* <EPTF_MQTT_Transport_Request> - MQTT transport request to be sent
///////////////////////////////////////////////////////////
type function fcb_EPTF_MQTT_Transport_apiRequest(in EPTF_MQTT_Transport_Request pl_req) runs on self;
///////////////////////////////////////////////////////////
// Type: fcb_EPTF_MQTT_Transport_apiResponse
//
// Purpose:
// Call-back function type for reporting a <EPTF_MQTT_Transport_Response> MQTT transport response
//
// Parameters:
// pl_rsp - *in* <EPTF_MQTT_Transport_Response> - MQTT transport response to be reported
///////////////////////////////////////////////////////////
type function fcb_EPTF_MQTT_Transport_apiResponse(in EPTF_MQTT_Transport_Response pl_rsp) runs on self;
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_PDU
//
// Purpose:
// Encapsulates a MQTT PDU with the corresponding entity (and FSM) indices and transport information
//
// Parameters:
// pdu - <MQTT_ReqResp> - MQTT PDU
// transportParams - <EPTF_MQTT_TransportParameters> - transport protocol information
// sessionIdx - *integer* - session index
///////////////////////////////////////////////////////////
type record EPTF_MQTT_PDU
{
MQTT_v3_1_1_ReqResp pdu,
EPTF_MQTT_TransportParameters transportParams,
integer sessionIdx
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_TransportParameters
//
// Purpose:
// Transport parameters for MQTT
//
// Parameters:
// localAddress - <Socket> - local address
// remoteAddress - <Socket> - remote address
// proto - <ProtoTuple> - IP transport protocol
///////////////////////////////////////////////////////////
type record EPTF_MQTT_TransportParameters
{
Socket localAddress,
Socket remoteAddress,
ProtoTuple proto
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_Request
//
// Purpose:
// Type for transport request
//
// Elements:
// sessionIdx - *integer* - session index
// expectResponse - *boolean* - set to true if request execution result is expected to be reported back
// params - <EPTF_MQTT_Transport_RequestParams> *optional* - parameters of the request
///////////////////////////////////////////////////////////
type record EPTF_MQTT_Transport_Request
{
integer sessionIdx,
boolean expectResponse,
EPTF_MQTT_Transport_RequestParams params optional
}
const EPTF_MQTT_Transport_Request c_EPTF_MQTT_Transport_Request_init :=
{
sessionIdx := -1,
expectResponse := true,
params := omit
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_RequestParams
//
// Purpose:
// Union encapsulating the different transport requests
//
// Elements:
// startListening - <EPTF_MQTT_Transport_startListening> - starts a listening socket
// connect_ - <EPTF_MQTT_Transport_connect> - connects to the remote address
// close - <EPTF_MQTT_Transport_RequestParams> - closes the connection
///////////////////////////////////////////////////////////
type union EPTF_MQTT_Transport_RequestParams
{
EPTF_MQTT_Transport_startListening startListening,
EPTF_MQTT_Transport_connect connect_,
EPTF_MQTT_Transport_close close
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_startListening
//
// Purpose:
// Starts a listening socket
//
// Elements:
// localAddress - <Socket> - local address of the listning socket
///////////////////////////////////////////////////////////
type record EPTF_MQTT_Transport_startListening
{
Socket localAddress
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_connect
//
// Purpose:
// Establishes a connection between the local and remote sockets
//
// Elements:
// localAddress - <Socket> - local address of the connection
// remoteAddress - <Socket> - remote address of the connection
///////////////////////////////////////////////////////////
type record EPTF_MQTT_Transport_connect
{
Socket localAddress,
Socket remoteAddress
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_close
//
// Purpose:
// Closes the connection
//
// Elements:
// localAddress - <Socket> - local address of the connection
///////////////////////////////////////////////////////////
type record EPTF_MQTT_Transport_close
{
Socket localAddress
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_Response
//
// Purpose:
// Type for transport response
//
// Parameters:
// succ - *boolean* - result request's execution
// sessionIdx - *integer* - session index
// params - <EPTF_MQTT_Transport_ResponseParams> *optional* - parameters of the response
///////////////////////////////////////////////////////////
type record EPTF_MQTT_Transport_Response
{
boolean succ,
integer sessionIdx,
EPTF_MQTT_Transport_ResponseParams params optional
}
const EPTF_MQTT_Transport_Response c_EPTF_MQTT_Transport_Response_init :=
{
succ := false,
sessionIdx := -1,
params := omit
}
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_ResponseParams
//
// Purpose:
// Union encapsulating the responses
//
// Elements:
// listening - *boolean* - true if the listening socket was opened succesfully, false otherwise
// connectionClose - <Socket> - indication of a closed connection with its address
///////////////////////////////////////////////////////////
type union EPTF_MQTT_Transport_ResponseParams
{
boolean listening,
boolean tcpEstablished,
Socket connectionClosed
}
/*****************************************************************
@startuml EPTF_MQTT_Transport_Definitions.EPTF_MQTT_Transport_Provider_CT.jpg
class EPTF_MQTT_Transport_Provider_CT {
fcb_EPTF_MQTT_Transport_receiveMessage vf_EPTF_MQTT_Transport_receiveMessage
fcb_EPTF_MQTT_Transport_receiveEvent fcb_EPTF_MQTT_Transport_receiveEvent
fcb_EPTF_MQTT_Transport_apiResponse vf_EPTF_MQTT_Transport_apiResponse
}
@enduml
*****************************************************************/
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_Provider_CT
//
// Purpose:
// Base component type for a MQTT transport realization, declares variables to register the transport user functions
//
// Class:
// (see EPTF_MQTT_Transport_Definitions.EPTF_MQTT_Transport_Provider_CT.jpg)
//
// Variables:
// vf_EPTF_MQTT_Transport_receiveMessage - <fcb_EPTF_MQTT_Transport_receiveMessage> - Function hook for reporting received messages
// vf_EPTF_MQTT_Transport_receiveEvent - <fcb_EPTF_MQTT_Transport_receiveEvent> - Function hook for reporting received events
// vf_EPTF_MQTT_Transport_apiResponse - <fcb_EPTF_MQTT_Transport_apiResponse> - Function hook for reporting transport API responses
///////////////////////////////////////////////////////////
type component EPTF_MQTT_Transport_Provider_CT
{
var fcb_EPTF_MQTT_Transport_receiveMessage vf_EPTF_MQTT_Transport_receiveMessage := null;
var fcb_EPTF_MQTT_Transport_receiveEvent vf_EPTF_MQTT_Transport_receiveEvent := null;
var fcb_EPTF_MQTT_Transport_apiResponse vf_EPTF_MQTT_Transport_apiResponse := null;
}
/*****************************************************************
@startuml EPTF_MQTT_Transport_Definitions.EPTF_MQTT_Transport_User_CT.jpg
class EPTF_MQTT_Transport_User_CT {
fcb_EPTF_MQTT_Transport_sendMessage vf_EPTF_MQTT_Transport_send
fcb_EPTF_MQTT_Transport_apiRequest vf_EPTF_MQTT_Transport_apiRequest
}
@enduml
*****************************************************************/
///////////////////////////////////////////////////////////
// Type: EPTF_MQTT_Transport_User_CT
//
// Purpose:
// Base component type for a MQTT transport user realization
//
// Class:
// (see EPTF_MQTT_Transport_Definitions.EPTF_MQTT_Transport_User_CT.jpg)
//
// Variables:
// vf_EPTF_MQTT_Transport_send - <fcb_EPTF_MQTT_Transport_sendMessage> - Function hook for reporting received messages
// vf_EPTF_MQTT_Transport_apiRequest - <fcb_EPTF_MQTT_Transport_apiRequest> - Function hook for reporting received events
///////////////////////////////////////////////////////////
type component EPTF_MQTT_Transport_User_CT
{
var fcb_EPTF_MQTT_Transport_sendMessage vf_EPTF_MQTT_Transport_send := null;
var fcb_EPTF_MQTT_Transport_apiRequest vf_EPTF_MQTT_Transport_apiRequest := null;
}
}