Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreantwuh2019-04-30 10:30:35 -0400
committereantwuh2019-04-30 10:30:35 -0400
commit8d3ffa94faba59a2fc0e0878667d03b547d40856 (patch)
tree63a7a14bc4913c7bf2544736ce0c7e3be8e13073
parent7782fd049b72ef777c51441754ce127372c1d148 (diff)
downloadtitan.ApplicationLibraries.CoAP-8d3ffa94faba59a2fc0e0878667d03b547d40856.tar.gz
titan.ApplicationLibraries.CoAP-8d3ffa94faba59a2fc0e0878667d03b547d40856.tar.xz
titan.ApplicationLibraries.CoAP-8d3ffa94faba59a2fc0e0878667d03b547d40856.zip
RTT calculation added
Signed-off-by: eantwuh <antal.wu-hen-chang@ericsson.com>
-rw-r--r--COAP_Stack.tpd41
-rw-r--r--src/EPTF_COAP_LGen_Definitions.ttcn59
-rw-r--r--src/EPTF_COAP_LGen_Functions.ttcn107
3 files changed, 190 insertions, 17 deletions
diff --git a/COAP_Stack.tpd b/COAP_Stack.tpd
new file mode 100644
index 0000000..3400fd8
--- /dev/null
+++ b/COAP_Stack.tpd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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
+
+ File: COAP_Stack.tpd
+ Description: tpd project file
+ Rev: R1B
+ Prodnr: CNL 113 858
+ Updated: 2019-04-24
+ Contact: http://ttcn.ericsson.se
+-->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>COAP_Stack</ProjectName>
+ <Files>
+ <FileResource projectRelativePath="EPTF_COAP_LGen_Definitions.ttcn" relativeURI="src/EPTF_COAP_LGen_Definitions.ttcn"/>
+ <FileResource projectRelativePath="EPTF_COAP_LGen_Functions.ttcn" relativeURI="src/EPTF_COAP_LGen_Functions.ttcn"/>
+ <FileResource projectRelativePath="EPTF_COAP_Transport_Definitions.ttcn" relativeURI="src/EPTF_COAP_Transport_Definitions.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/COAP_Stack</targetExecutable>
+ <buildLevel>Level3-Creatingobjectfileswithdependencyupdate</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/src/EPTF_COAP_LGen_Definitions.ttcn b/src/EPTF_COAP_LGen_Definitions.ttcn
index 9baf168..c97fe18 100644
--- a/src/EPTF_COAP_LGen_Definitions.ttcn
+++ b/src/EPTF_COAP_LGen_Definitions.ttcn
@@ -75,6 +75,7 @@
// COAP send accept - <f_COAP_step_sendAccept>, <c_COAP_stepIdx_sendAccept>, <c_COAP_stepName_sendAccept>
// COAP start listening - <f_COAP_step_startListening>, <c_COAP_stepIdx_startListening>, <c_COAP_stepName_startListening>
// COAP report COAP event for entity enable/disable - <f_COAP_step_reportCoapEventForEntity>, <c_COAP_stepIdx_reportCoapEventForEntity>, <c_COAP_stepName_reportCoapEventForEntity>
+// COAP set CON/NON notifications for entity - <f_COAP_step_confirmableNotificationForEntity>, <c_COAP_stepIdx_confirmableNotificationForEntity>, <c_COAP_stepName_confirmableNotificationForEntity>
// COAP send notification - <f_COAP_step_sendNotification_byIntIdx>, <c_COAP_stepIdx_sendNotification_byIntIdx>, <c_COAP_stepName_sendNotification_byIntIdx>
// <f_COAP_step_sendNotification_byStringId>, <c_COAP_stepIdx_sendNotification_byStringId>, <c_COAP_stepName_sendNotification_byStringId>
// COAP remove resource observations - <f_COAP_step_removeResourceObservations_byIntIdx>, <c_COAP_stepIdx_removeResourceObservations_byIntIdx>, <c_COAP_stepName_removeResourceObservations_byIntIdx>
@@ -233,6 +234,7 @@ module EPTF_COAP_LGen_Definitions
EPTF_COAP_PDU v_COAP_msgToSend;
fcb_EPTF_COAP_messageReceived vf_COAP_msgReceived
fcb_EPTF_COAP_eventIndication vf_COAP_eventIndication
+ fcb_EPTF_COAP_rttIndication vf_COAP_rttIndication
f_EPTF_COAP_LGen_init(in charstring pl_name)
f_COAP_cleanUp()
f_COAP_eCtxBind(in integer pl_eIdx)
@@ -266,6 +268,7 @@ module EPTF_COAP_LGen_Definitions
integer nextMID
integer nextToken
boolean reportCoapEvent
+ boolean confirmableNotification
COAP_ObservedResourceIdx_List observedResourceIndices
f_EPTF_COAP_getNextMID(in COAP_StepCtx p_ctx)
f_EPTF_COAP_getNextToken(in COAP_StepCtx p_ctx)
@@ -314,6 +317,7 @@ module EPTF_COAP_LGen_Definitions
integer retransmitTimer
float retransmitTimerValue
integer lifetimeTimer
+ float rtt
EPTF_COAP_PDU cache optional
COAP_Transaction_State state
COAP_Transaction_Direction direction
@@ -468,6 +472,7 @@ module EPTF_COAP_LGen_Definitions
integer nextMID
integer nextToken
boolean reportCoapEvent
+ boolean confirmableNotification
COAP_ObservedResourceIdx_List observedResourceIndices
f_EPTF_COAP_getNextMID(in COAP_StepCtx p_ctx)
f_EPTF_COAP_getNextToken(in COAP_StepCtx p_ctx)
@@ -493,6 +498,7 @@ module EPTF_COAP_LGen_Definitions
// nextMID - *integer* - used for MID generation
// nextToken - *integer* - used for token generation
// reportCoapEvent - *boolean* - COAP events (e.g. COAP GET, COAP 200 will be reported for this entity), should be false when using LwM2M applib
+ // confirmableNotification - *boolean* - CON transactions will be used for sending nitifications when this field is set to true
// observedResourceIndices - <COAP_ObservedResourceIdx_List> - pointers to all observed resources in *v_COAP_observedResourceDB*
//
// Related Functions:
@@ -510,6 +516,7 @@ module EPTF_COAP_LGen_Definitions
integer nextMID,
integer nextToken,
boolean reportCoapEvent,
+ boolean confirmableNotification,
COAP_ObservedResourceIdx_List observedResourceIndices // FIXME: Can be slow to update in case of larger nums
}
@@ -520,6 +527,7 @@ module EPTF_COAP_LGen_Definitions
nextMID := -1,
nextToken := -1,
reportCoapEvent := true,
+ confirmableNotification := false,
observedResourceIndices := {}
}
@@ -722,6 +730,7 @@ module EPTF_COAP_LGen_Definitions
integer retransmitTimer
float retransmitTimerValue
integer lifetimeTimer
+ float rtt
EPTF_COAP_PDU cache optional
COAP_Transaction_State state
COAP_Transaction_Direction direction
@@ -757,6 +766,7 @@ module EPTF_COAP_LGen_Definitions
// obsIdx - *integer* - index of <COAP_Observation_Server>
// retransmitTimer - *integer* - timer id of T_retransmit
// retransmitTimerValue - *integer* - initial timer value of T_retransmit
+ // rtt - *float* - round trip time for initiated CON transactions
// cache - <EPTF_COAP_PDU> - cache for retransmission
// state - <COAP_Transaction_State> - state of the transaction FSM
// direction - <COAP_Transaction_Direction> - direction of the transaction FSM
@@ -786,8 +796,9 @@ module EPTF_COAP_LGen_Definitions
integer rrIdx,
integer obsIdx,
integer retransmitTimer,
- float retransmitTimerValue,
+ float retransmitTimerValue,
integer lifetimeTimer,
+ float rtt optional,
EPTF_COAP_PDU cache optional,
COAP_Transaction_State state,
COAP_Transaction_Direction direction
@@ -803,6 +814,7 @@ module EPTF_COAP_LGen_Definitions
retransmitTimer := -1,
retransmitTimerValue := 1.0,
lifetimeTimer := -1,
+ rtt := omit,
cache := omit,
state := CLOSED,
direction := OUTGOING
@@ -1488,6 +1500,17 @@ module EPTF_COAP_LGen_Definitions
// pl_event - *in* <EPTF_COAP_EventDescriptor> - received COAP event
///////////////////////////////////////////////////////////
type function fcb_EPTF_COAP_eventIndication(in EPTF_COAP_EventDescriptor pl_event) runs on self;
+
+ ///////////////////////////////////////////////////////////
+ // Type: fcb_EPTF_COAP_rttIndication
+ //
+ // Purpose:
+ // Call-back function type for reporting Round trip time measurements
+ //
+ // Elements:
+ // pl_rtt - *in* *float* - received round-trip time measurements
+ ///////////////////////////////////////////////////////////
+ type function fcb_EPTF_COAP_rttIndication(in float pl_rtt) runs on self;
///////////////////////////////////////////////////////////
// Type: EPTF_COAP_EventDescriptor
@@ -1539,19 +1562,22 @@ module EPTF_COAP_LGen_Definitions
// Elements:
// noRetransmissions - *integer* - number of COAP message retransmissions
// noTransactionTimeouts - *integer* - number of timed out COAP transactions
+ // noDuplicates - *integer* - number of duplicated messages received
///////////////////////////////////////////////////////////
type record EPTF_COAP_LGen_Statistics
{
integer noRetransmissions,
- integer noTransactionTimeouts
+ integer noTransactionTimeouts,
+ integer noDuplicates
}
const EPTF_COAP_LGen_Statistics c_EPTF_COAP_LGen_Statistics_empty :=
{
noRetransmissions := 0,
- noTransactionTimeouts := 0
+ noTransactionTimeouts := 0,
+ noDuplicates := 0
}
-
+
/*****************************************************************
@startuml EPTF_COAP_LGen_Definitions.EPTF_COAP_LGen_CT.jpg
class EPTF_COAP_LGen_CT {
@@ -1572,6 +1598,7 @@ module EPTF_COAP_LGen_Definitions
EPTF_COAP_PDU v_COAP_msgToSend;
fcb_EPTF_COAP_messageReceived vf_COAP_msgReceived
fcb_EPTF_COAP_eventIndication vf_COAP_eventIndication
+ fcb_EPTF_COAP_rttIndication vf_COAP_rttIndication
f_EPTF_COAP_LGen_init(in charstring pl_name)
f_COAP_cleanUp()
f_COAP_eCtxBind(in integer pl_eIdx)
@@ -1627,6 +1654,7 @@ module EPTF_COAP_LGen_Definitions
//
// vf_COAP_msgReceived - <fcb_EPTF_COAP_messageReceived> - Function hook for reporting received messages
// vf_COAP_eventIndication - <fcb_EPTF_COAP_eventIndication> - Function hook for reporting events
+ // vf_COAP_rttIndication - <fcb_EPTF_COAP_rttIndication> - Function hook for reporting round-trip time indications
//
// Instance databases:
// v_COAP_FsmCtxDB - <COAP_FsmCtx_DB> - FSM context database <COAP_FsmCtx>
@@ -1681,6 +1709,7 @@ module EPTF_COAP_LGen_Definitions
var fcb_EPTF_COAP_messageReceived vf_COAP_msgReceived := null;
var fcb_EPTF_COAP_eventIndication vf_COAP_eventIndication := null;
+ var fcb_EPTF_COAP_rttIndication vf_COAP_rttIndication := null;
var EPTF_COAP_LGen_Statistics v_COAP_stats := c_EPTF_COAP_LGen_Statistics_empty;
}
@@ -2455,6 +2484,28 @@ module EPTF_COAP_LGen_Definitions
///////////////////////////////////////////////////////////
const charstring c_COAP_stepName_startDTLS_byIntIdx := "COAP Applib: startDTLS_byIntIdx";
+ ///////////////////////////////////////////////////////////
+ // const: c_COAP_stepIdx_confirmableNotificationForEntity
+ //
+ // Purpose:
+ // Integer constant for the COAP confirmableNotificationForEntity test step
+ //
+ // Related Function:
+ // - <f_COAP_step_confirmableNotificationForEntity>
+ ///////////////////////////////////////////////////////////
+ const integer c_COAP_stepIdx_confirmableNotificationForEntity := 20;
+
+ ///////////////////////////////////////////////////////////
+ // const: c_COAP_stepName_confirmableNotificationForEntity
+ //
+ // Purpose:
+ // Charstring constant for the COAP confirmableNotificationForEntity step
+ //
+ // Related Function:
+ // - <f_COAP_step_confirmableNotificationForEntity>
+ ///////////////////////////////////////////////////////////
+ const charstring c_COAP_stepName_confirmableNotificationForEntity := "COAP Applib: confirmableNotificationForEntity";
+
// Step parameters:
const integer c_COAP_stepParam_true := 1;
diff --git a/src/EPTF_COAP_LGen_Functions.ttcn b/src/EPTF_COAP_LGen_Functions.ttcn
index 4d016d8..29db6a7 100644
--- a/src/EPTF_COAP_LGen_Functions.ttcn
+++ b/src/EPTF_COAP_LGen_Functions.ttcn
@@ -28,7 +28,7 @@ module EPTF_COAP_LGen_Functions
{
import from EPTF_COAP_LGen_Definitions all;
import from EPTF_COAP_Transport_Definitions all;
-
+ import from EPTF_CLL_Base_Definitions all;
import from EPTF_CLL_Base_Functions all;
import from EPTF_CLL_Common_Definitions all;
import from EPTF_CLL_Variable_Definitions all;
@@ -76,11 +76,7 @@ module EPTF_COAP_LGen_Functions
refers(f_COAP_eCtxUnbind)
);
- v_COAP_loggingMaskId :=
- f_EPTF_Logging_registerComponentMasks(
- "COAP_Logging",
- {"WARNING", "DEBUG", "DEBUGV", "ERROR" },
- EPTF_Logging_CLL);
+ f_EPTF_COAP_LGen_initLogging();
f_EPTF_COAP_Logging_DEBUG(log2str(%definitionId,": my behavior idx is ", v_COAP_bIdx));
@@ -1325,6 +1321,10 @@ module EPTF_COAP_LGen_Functions
var boolean v_duplicate := not f_EPTF_COAP_stack_fromEnv(v_COAP_msgToProcess);
+ if (v_duplicate) {
+ v_COAP_stats.noDuplicates := v_COAP_stats.noDuplicates + 1;
+ }
+
if (vf_COAP_msgReceived != null)
{
vf_COAP_msgReceived.apply(v_COAP_msgToProcess, v_duplicate);
@@ -2104,7 +2104,7 @@ module EPTF_COAP_LGen_Functions
runs on EPTF_COAP_LGen_CT
{
if (p_trIdx < 0 or p_trIdx >= sizeof(v_COAP_trDB.data)) { return }
-
+
f_EPTF_COAP_Logging_DEBUG(log2str("current state: ", v_COAP_trDB.data[p_trIdx].state));
// State: CLOSED
if (v_COAP_trDB.data[p_trIdx].state == CLOSED)
@@ -2115,6 +2115,7 @@ module EPTF_COAP_LGen_Functions
f_EPTF_COAP_tr_startT_retransmit(p_trIdx);
// start EXCHANGE_LIFETIME
f_EPTF_COAP_tr_startT_lifetime(p_trIdx, tsp_EPTF_COAP_EXCHANGE_LIFETIME);
+ f_EPTF_COAP_tr_startT_rtt(p_trIdx);
// send to env
f_EPTF_COAP_tr_send(p_msg, p_trIdx);
// next state: RELIABLE_TX
@@ -2200,7 +2201,7 @@ module EPTF_COAP_LGen_Functions
runs on EPTF_COAP_LGen_CT
{
if (p_trIdx < 0 or p_trIdx >= sizeof(v_COAP_trDB.data)) { return }
-
+
f_EPTF_COAP_Logging_VERBOSE(log2str(%definitionId, "current state: ", v_COAP_trDB.data[p_trIdx].state));
// State: CLOSED
if (v_COAP_trDB.data[p_trIdx].state == CLOSED)
@@ -2297,6 +2298,7 @@ module EPTF_COAP_LGen_Functions
{
// cancel T retransmission
f_EPTF_COAP_tr_cancelT_retransmit(p_trIdx);
+ f_EPTF_COAP_tr_stopT_rtt(p_trIdx);
if (not f_EPTF_COAP_isEmpty(p_msg.pdu) and v_COAP_trDB.data[p_trIdx].rrIdx != -1)
{
f_EPTF_COAP_rr_handleMsg(p_msg, v_COAP_trDB.data[p_trIdx].rrIdx);
@@ -2554,6 +2556,50 @@ module EPTF_COAP_LGen_Functions
}
///////////////////////////////////////////////////////////
+ // Function: f_EPTF_COAP_tr_startT_rtt
+ //
+ // Purpose:
+ // This function starts the *T_rtt* timer to measure the round-trip time of the transaction
+ //
+ // Parameters:
+ // p_trIdx - *in* *integer* - index of the <COAP_Transaction> in the <COAP_Transaction_DB> that will start the timer
+ //
+ // Related Types:
+ // <COAP_Transaction>
+ ///////////////////////////////////////////////////////////
+ function f_EPTF_COAP_tr_startT_rtt(in integer pl_trIdx)
+ runs on EPTF_COAP_LGen_CT
+ {
+ v_COAP_trDB.data[pl_trIdx].rtt := T_EPTF_componentClock.read;
+ }
+
+ ///////////////////////////////////////////////////////////
+ // Function: f_EPTF_COAP_tr_stopT_rtt
+ //
+ // Purpose:
+ // This function stops the *T_rtt* timer and reports the measure round-trip time
+ // via the <vf_COAP_rttIndication> <fcb_EPTF_COAP_rttIndication> call-back function
+ //
+ // Parameters:
+ // p_trIdx - *in* *integer* - index of the <COAP_Transaction> in the <COAP_Transaction_DB> that will measure RTT
+ //
+ // Related Types:
+ // <COAP_Transaction>
+ ///////////////////////////////////////////////////////////
+ function f_EPTF_COAP_tr_stopT_rtt(in integer pl_trIdx)
+ runs on EPTF_COAP_LGen_CT
+ {
+ if (ispresent(v_COAP_trDB.data[pl_trIdx].rtt))
+ {
+ v_COAP_trDB.data[pl_trIdx].rtt := T_EPTF_componentClock.read - v_COAP_trDB.data[pl_trIdx].rtt;
+
+ if (vf_COAP_rttIndication != null) {
+ vf_COAP_rttIndication.apply(v_COAP_trDB.data[pl_trIdx].rtt);
+ }
+ }
+ }
+
+ ///////////////////////////////////////////////////////////
// Function: f_EPTF_COAP_tr_send
//
// Purpose:
@@ -2753,7 +2799,7 @@ module EPTF_COAP_LGen_Functions
}
// Let's add the observer to the observed resource
- f_EPTF_COAP_ObservedResource_addObserver(v_observedResourceIdx, p_msg);
+ f_EPTF_COAP_ObservedResource_addObserver(v_observedResourceIdx, p_msg, v_COAP_EntityCtxDB.data[p_eCtxIdx].confirmableNotification);
}
///////////////////////////////////////////////////////////
@@ -2873,7 +2919,7 @@ module EPTF_COAP_LGen_Functions
f_EPTF_COAP_observedResourceDB_remove(vl_obsResIdx);
}
}
-
+
///////////////////////////////////////////////////////////
// Function: f_EPTF_COAP_ObservedResource_addObserver
//
@@ -2883,11 +2929,12 @@ module EPTF_COAP_LGen_Functions
// Parameters:
// p_obsResIdx - *in* *integer* - The index of the <COAP_ObservedResource> instance in the <COAP_ObservedResource_DB>
// p_msg - *in* <EPTF_COAP_PDU> - The OBSERVE message that the observer sent to observe a resource
+ // p_confirmable - *in* *boolean* - when true CON transaction is used else NON is used for notifications
//
// Related Types:
// <COAP_ObservedResource>
///////////////////////////////////////////////////////////
- function f_EPTF_COAP_ObservedResource_addObserver(in integer p_obsResIdx, in EPTF_COAP_PDU p_msg)
+ function f_EPTF_COAP_ObservedResource_addObserver(in integer p_obsResIdx, in EPTF_COAP_PDU p_msg, in boolean p_confirmable)
runs on EPTF_COAP_LGen_CT
{
if (p_obsResIdx < 0 or p_obsResIdx >= sizeof(v_COAP_observedResourceDB.data)) { return }
@@ -2908,7 +2955,7 @@ module EPTF_COAP_LGen_Functions
v_observationServer.protocol := p_msg.transportParams.proto;
v_observationServer.resourceId := v_COAP_observedResourceDB.data[p_obsResIdx].resourceId;
v_observationServer.token := p_msg.pdu.token;
- v_observationServer.confirmable := false;
+ v_observationServer.confirmable := p_confirmable;
v_observationServer.observedResourceIdx := p_obsResIdx;
v_observationServer.trIdx := -1;
@@ -3188,7 +3235,8 @@ module EPTF_COAP_LGen_Functions
c_COAP_stepIdx_removeResourceObservations_byStringId != f_EPTF_LGenBase_declareStep(c_COAP_behaviorType,{c_COAP_stepName_removeResourceObservations_byStringId, refers(f_COAP_step_removeResourceObservations_byStringId)}) or
c_COAP_stepIdx_startDTLS != f_EPTF_LGenBase_declareStep(c_COAP_behaviorType,{c_COAP_stepName_startDTLS, refers(f_COAP_step_startDTLS)}) or
c_COAP_stepIdx_startDTLS_byVarIds != f_EPTF_LGenBase_declareStep(c_COAP_behaviorType,{c_COAP_stepName_startDTLS_byVarIds, refers(f_COAP_step_startDTLS_byVarIds)}) or
- c_COAP_stepIdx_startDTLS_byIntIdx != f_EPTF_LGenBase_declareStep(c_COAP_behaviorType,{c_COAP_stepName_startDTLS_byIntIdx, refers(f_COAP_step_startDTLS_byIntIdx)})
+ c_COAP_stepIdx_startDTLS_byIntIdx != f_EPTF_LGenBase_declareStep(c_COAP_behaviorType,{c_COAP_stepName_startDTLS_byIntIdx, refers(f_COAP_step_startDTLS_byIntIdx)}) or
+ c_COAP_stepIdx_confirmableNotificationForEntity != f_EPTF_LGenBase_declareStep(c_COAP_behaviorType,{c_COAP_stepName_confirmableNotificationForEntity, refers(f_COAP_step_confirmableNotificationForEntity)})
)
{
f_EPTF_LGenBase_log();
@@ -3937,6 +3985,39 @@ module EPTF_COAP_LGen_Functions
}
///////////////////////////////////////////////////////////
+ // Function: f_COAP_step_confirmableNotificationForEntity
+ //
+ // Purpose:
+ // The test step will turn on/off the COAP CON notifications for the entity in the entity context <COAP_EntityCtx>
+ //
+ // Parameters:
+ // pl_ptr - *in* <EPTF_LGenBase_TestStepArgs> - test step args
+ // pl_ptr.refContext.fRefArgs[0] - 0: NON notifications, 1: CON notifications
+ //
+ // Related Constants:
+ // - <c_COAP_stepIdx_confirmableNotificationForEntity>
+ // - <c_COAP_stepName_confirmableNotificationForEntity>
+ ///////////////////////////////////////////////////////////
+ function f_COAP_step_confirmableNotificationForEntity(in EPTF_LGenBase_TestStepArgs pl_ptr)
+ runs on EPTF_COAP_LGen_CT
+ {
+ f_EPTF_COAP_Logging_DEBUG(log2str(%definitionId));
+
+ if (not f_EPTF_COAP_setStepCtx(pl_ptr, v_COAP_ctx)) { return; }
+
+ var integer vl_paramValue := -1;
+ if (f_EPTF_COAP_getIntValue(pl_ptr.refContext.fRefArgs, 0, vl_paramValue))
+ {
+ if (vl_paramValue == c_COAP_stepParam_true) {
+ v_COAP_EntityCtxDB.data[v_COAP_ctx.eCtxIdx].confirmableNotification := true;
+ }
+ else {
+ v_COAP_EntityCtxDB.data[v_COAP_ctx.eCtxIdx].confirmableNotification := false;
+ }
+ }
+ }
+
+ ///////////////////////////////////////////////////////////
// Function: f_COAP_step_sendNotification_byIntIdx
//
// Purpose:

Back to the top