| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // Copyright (c) 2000-2017 Ericsson Telecom AB |
| // |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // which accompanies this distribution, and is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| /////////////////////////////////////////////////////////////////////////////// |
| // File: EPTF_LwM2M_CoapApplibTransport_Functions.ttcn |
| // Description: |
| // Rev: R1A |
| // Prodnr: CNL 113 859 |
| // Updated: 2017-09-01 |
| // Contact: http://ttcn.ericsson.se |
| /////////////////////////////////////////////////////////////////////////////// |
| module EPTF_LwM2M_CoapApplibTransport_Functions |
| {
|
| import from EPTF_LwM2M_Transport_Definitions all;
|
| import from EPTF_LwM2M_CoapApplibTransport_Definitions all;
|
| import from LightweightM2M_CoAP_Binding all;
|
| import from EPTF_COAP_Transport_Definitions all;
|
| import from EPTF_COAP_LGen_Functions all;
|
| import from EPTF_CLL_Base_Functions all;
|
| import from EPTF_CLL_LGenBase_Definitions all;
|
| |
| import from LightweightM2M_CoAP_Binding all;
|
| |
| modulepar boolean tsp_EPTF_LwM2M_CoapApplibTransport_enabled := true;
|
| |
| function f_EPTF_LwM2M_CoapApplibTransport_init(in charstring pl_name)
|
| runs on EPTF_LwM2M_CoapApplibTransport_CT
|
| {
|
| if (v_EPTF_LwM2M_CoapApplibTransport_initialized) {return;}
|
| |
| f_EPTF_COAP_LGen_init(pl_name);
|
| |
| f_EPTF_Base_registerCleanup(refers(f_EPTF_LwM2M_CoapApplibTransport_cleanup));
|
|
|
| v_EPTF_LwM2M_CoapApplibTransport_initialized := true;
|
| }
|
|
|
| function f_EPTF_LwM2M_CoapApplibTransport_cleanup()
|
| runs on EPTF_LwM2M_CoapApplibTransport_CT
|
| {
|
| // Reset DBs, close connections
|
| v_EPTF_LwM2M_CoapApplibTransport_initialized := false;
|
|
|
| vf_EPTF_LwM2M_Transport_receiveMessage := null;
|
| }
|
| |
| function f_EPTF_LwM2M_CoapApplibTransport_send(in EPTF_LwM2M_PDU pl_msg)
|
| runs on EPTF_LwM2M_CoapApplibTransport_CT
|
| {
|
| f_EPTF_COAP_Logging_VERBOSE(log2str(%definitionId, " ", pl_msg));
|
| |
| if (not tsp_EPTF_LwM2M_CoapApplibTransport_enabled) { return }
|
| |
| var integer vl_eIdx := pl_msg.eIdx;
|
| var integer vl_fsmIdx := pl_msg.fsmIdx;
|
| var integer vl_newFsmCtxIdx := -1;
|
|
|
| if (not f_EPTF_COAP_isFsmInitialized(vl_eIdx, vl_fsmIdx, vl_newFsmCtxIdx)) |
| { |
| f_EPTF_COAP_Logging_WARNING(%definitionId & |
| ": FSM has not been initialized. The f_COAP_step_init function must be called as first step in the FSMs using COAP.");
|
| return; |
| }
|
| |
| if (tsp_EPTF_LwM2M_CoapApplibTransport_debug) { action("lwm2m sending:\n", pl_msg); }
|
| |
| f_enc_LWM2M_to_COAP(pl_msg.pdu, v_COAP_msgToSend.pdu);
|
| |
| var EPTF_LGenBase_TestStepArgs l_args := c_EPTF_LGenBase_emptyTestStepArgs;
|
| |
| l_args.eIdx := pl_msg.eIdx;
|
| l_args.refContext.fCtxIdx := pl_msg.fsmIdx;
|
| |
| if (ischosen(pl_msg.pdu.Response))
|
| {
|
| f_COAP_step_sendResponse(l_args);
|
| }
|
| else
|
| {
|
| f_COAP_step_send(l_args);
|
| }
|
| }
|
| |
| function f_EPTF_LwM2M_CoapApplibTransport_messageReceived(in EPTF_COAP_PDU pl_message, in boolean p_duplicate) |
| runs on EPTF_LwM2M_CoapApplibTransport_CT
|
| {
|
| f_EPTF_COAP_Logging_VERBOSE(log2str(%definitionId, " ", pl_message));
|
| |
| if (not tsp_EPTF_LwM2M_CoapApplibTransport_enabled) { return }
|
| |
| if (p_duplicate) { return }
|
| |
| var EPTF_LwM2M_PDU v_pdu;
|
| |
| f_dec_COAP_to_LWM2M(v_COAP_msgToProcess.pdu, v_pdu.pdu);
|
| v_pdu.eIdx := pl_message.eIdx;
|
| v_pdu.fsmIdx := pl_message.fsmIdx;
|
| |
| if (tsp_EPTF_LwM2M_CoapApplibTransport_debug) { action("lwm2m receiving: ", v_pdu); }
|
| |
| if (vf_EPTF_LwM2M_Transport_receiveMessage != null)
|
| {
|
| vf_EPTF_LwM2M_Transport_receiveMessage.apply(v_pdu);
|
| }
|
| }
|
| } |