diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn index dad32616c3f7422906e0d8a999f5f30843e1268a..c35eb5eed9101dd86459166386184a7d6c956404 100644 --- a/LibOneM2M/OneM2M_Ports.ttcn +++ b/LibOneM2M/OneM2M_Ports.ttcn @@ -14,6 +14,7 @@ module OneM2M_Ports { import from OneM2M_Types all; import from OneM2M_TypesAndValues all; + import from OneM2M_Types_3GPP_T8 all; import from XSD all; /* *************************************** @@ -35,6 +36,20 @@ module OneM2M_Ports { map param (in PortDesc p_portDesc); }; + /** + * @desc Port to transport different underlying network primitives + * @desc Output MsgOut + * @desc Input MsgIn + * @desc this port is allowed to extend for futher usage + */ + type port OneM2M_McnPort message { + in + T8Primitive; + out + T8Primitive; + map param (in McnPortDesc p_mcnPortDesc); + }; + /** * @desc Port to transport Adaptor Control primitives */ diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn index d424b02698fcd000e488be86965c2faa1bd6854f..208384cce3b915c156bb68fe64720e0cc6210bec 100644 --- a/LibOneM2M/OneM2M_TestSystem.ttcn +++ b/LibOneM2M/OneM2M_TestSystem.ttcn @@ -11,6 +11,7 @@ */ module OneM2M_TestSystem { + import from OneM2M_Types_3GPP_T8 all; import from OneM2M_Types all; import from OneM2M_TypesAndValues all; import from LibCommon_Time all; @@ -111,6 +112,21 @@ module OneM2M_TestSystem { var boolean vc_auxiliaryCse2Up := false; }; + type component ScefSimu extends Tester { + //Attached components depending on config + //Ports + port OneM2M_McnPort mcnPort; + port OneM2M_McnPort mcnPortIn; + //global variables + //About configuration of the component + var ScefSimuComponentDesc vc_scefSimuDesc; + //Resources list + //NIDD API + var NiddConfigurations vc_configurations := {}; + //Resource index + //Status of attached component + }; + type component InCseSimu extends CseSimu { } @@ -132,6 +148,13 @@ module OneM2M_TestSystem { port AdapterControlPort acPort; port UpperTesterPort utPort; } + + type component ScefSystem { + port OneM2M_McnPort mcnPort; + port OneM2M_McnPort mcnPortIn; + port AdapterControlPort acPort; + port UpperTesterPort utPort; + } }// end of module with { diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn index 2346c5fcdd6b888671a7af21af806e1f7d348e18..fd024f32c64d1dfc50831098de366bbab62569ec 100644 --- a/LibOneM2M/OneM2M_TypesAndValues.ttcn +++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn @@ -4384,7 +4384,11 @@ group OtherTypes { MqttBindingDesc mqttBindingDesc, WSBindingDesc wsBindingDesc } - + + template BindingProtocolsSelect m_httpBindingDesc := { + httpBindingDesc := ? + } + /** * @desc * @member binding @@ -4393,6 +4397,31 @@ group OtherTypes { type record PortDesc { BindingProtocolsSelect binding, SerializationRepresentations serialization + } + + /** + * @desc + * @member binding + * @member serialization + */ + type record T8PortDesc { + BindingProtocolsSelect binding ({httpBindingDesc := ?}), + SerializationRepresentations serialization ("json") + } + + type BindingProtocolsSelect MyInterface ({httpBindingDesc:=?}, {coapBindingDesc := ?}); + + /** + * @desc + * @member binding + * @member serialization + */ + type union McnPortDesc { + T8PortDesc t8PortDesc + } + + template McnPortDesc m_t8PortDesc := { + t8PortDesc := ? } /** @@ -4456,6 +4485,32 @@ group OtherTypes { PortDesc mccPortIn } + /** + * @desc ScefSimu component settings + * @member mcnPort TTCN-3 'mcn' protocol for sending to the SUT + * @member mcnPortIn TTCN-3 'mcn' protocol for receiving from the SUT + */ + type record ScefSimuComponentDesc { + /** + * @desc Test System CSE Name + */ + XSD.ID cseName, + /** + * @desc Test System CSE-ID with SP-relative-CSE-ID format (relative) according to TS-0001-7.2-1 + */ + XSD.ID cseId, + /** + * @desc Test System CSE resource ID with Unstructured-CSE-relative-Resource-ID (relative) format according to TS-0001-7.2-1 + */ + XSD.ID cseResourceId, + /** + * @desc Test System M2M-SP-ID with M2M-SP-ID format (absolute) according to TS-0001-7.2-1 Unstructured-CSE-relative -Resource-ID + */ + XSD.ID spId, + McnPortDesc mcnPort ({t8PortDesc := ?}), + McnPortDesc mcnPortIn ({t8PortDesc := ?}) + } + } with { encode "adapter"; diff --git a/LibOneM2M/OneM2M_Types_3GPP_T8.ttcn b/LibOneM2M/OneM2M_Types_3GPP_T8.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..fcd698aaf7b3c8fe77eb6ce52f750ebb1ee49f92 --- /dev/null +++ b/LibOneM2M/OneM2M_Types_3GPP_T8.ttcn @@ -0,0 +1,339 @@ +/** + * Copyright Notification + * No part of this document may be reproduced, in an electronic retrieval system or otherwise, except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC). + * All rights reserved. + * + * @author oneM2M + * @version $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Types.ttcn $ + * $Id: OneM2M_Types.ttcn 356 2017-08-21 12:25:14Z reinaortega $ + * @desc OneM2M data types module + * + */ +module OneM2M_Types_3GPP_T8 { + + +import from XSD all; +import from OneM2M_Types all; +import from OneM2M_TypesAndValues {type Resource_2; type ResourceTypeList_1; type PrimitiveContent}; + +/* ************************************************** + * ************************************************** + * 3GPP T8 Types + * ************************************************** + * ************************************************** +*/ + + /** + * @desc Type for the oneM2M primitives exchange + * @member primitive oneM2M primitive + */ + type union T8Primitive { + T8Request t8Request, + T8Response t8Response + } + + /** + * @desc Type for the oneM2M primitives exchange + * @member primitive oneM2M primitive + */ + type record T8Request { + ResourceMethod resourceMethod, + URI resourceUri, + RequestHeaders requestheaders optional, + RequestBody requestBody optional + } + + /** + * @desc Type for the oneM2M primitives exchange + * @member primitive oneM2M primitive + */ + type record T8Response { + ResponseCode responseCode, + ResponseHeaders responseHeaders optional, + ResponseBody body optional + } + + type enumerated ResourceMethod { + GET (0), + PUT (1), + POST (2), + DELETE (3), + PATCH (4) + } + + type record of Header RequestHeaders; + + type record of Header ResponseHeaders; + + type record Header { + charstring header_name, + charstring header_value optional + } + + type Body RequestBody ( {individualNiddConfiguration:=?}, + {individualNiddDownlinkDataDelivery:=?}, + {individualDeviceTriggeringTransaction:=?}, + {deviceTriggeringDeliveryReportNotification:=?}); + + type Body ResponseBody; + + type union Body { + Acknowledgement acknowledgement, + //NIDD group + //NiddConfiguration + //NiddDownlinkDataTransfer + //NiddUplinkDataNotification + NiddConfigurations niddConfigurations, + NiddConfiguration individualNiddConfiguration, + NiddDownlinkDataTransfers niddDownlinkDataDeliveries, + NiddDownlinkDataTransfer individualNiddDownlinkDataDelivery, + NiddDownlinkDataDeliveryFailure niddDownlinkDataDeliveryFailure, + //DeviceTrigger + DeviceTriggerings deviceTriggeringTransactions, + DeviceTriggering individualDeviceTriggeringTransaction, + DeviceTriggeringDeliveryReportNotification deviceTriggeringDeliveryReportNotification + } + + type integer ResponseCode (200,201,204,400,401,403,404,406,411,413,415,429,500,503); + + group NIDD_API { + + type record of NiddConfiguration NiddConfigurations; + + type record NiddConfiguration { + charstring self_ optional, + SupportedFeaturesNiddApi supportedFeatures optional, + charstring mtcProviderId optional, + ExternalId externalId optional, + Msisdn msisdn optional, + ExternalGroupId externalGroupId optional, + DateTime duration_ optional, + boolean reliableDataService optional, + RdsPorts rdsPorts optional, + PdnEstablishmentOptions pdnEstablishmentOptions optional, + Link notificationDestination, + boolean requestTestNotification optional, + WebsockNotifConfig websockNotifConfig optional, + integer maximumPacketSize optional, + NiddDownlinkDataTransfers niddDownlinkDataTransfers optional, + NiddStatus status optional + } + with { + variant "name as uncapitalized"; + variant (self_) "name as 'self'"; + variant (duration_) "name as 'duration'"; + }; + + type record of NiddDownlinkDataTransfer NiddDownlinkDataTransfers; + + type record NiddDownlinkDataTransfer { + ExternalId externalId optional, + ExternalGroupId externalGroupId optional, + Msisdn msisdn optional, + Link self_ optional, + Bytes data, + boolean reliableDataService optional, + RdsPorts rdsPorts optional, + DurationSec maximumLatency optional, + integer priority, + PdnEstablishmentOptions pdnEstablishmentOptions optional, + DeliveryStatus deliveryStatus optional, + DateTime requestedRetransmissionTime optional + } + with { + variant "name as uncapitalized"; + variant (self_) "name as 'self'"; + }; + + type record NiddDownlinkDataDeliveryFailure { + ProblemDetails problemDetail, + DateTime requestedRetransmissionTime optional + } + }//end group NIDD_API + + group DeviceTriggering_API { + + type record of DeviceTriggering DeviceTriggerings; + + type record DeviceTriggering { + charstring self_ optional, + ExternalId externalId optional, + Msisdn msisdn optional, + SupportedFeaturesNiddApi supportedFeatures optional, + DurationSec validityPeriod, + Priority priority, + Port applicationPortId, + Port appSrcPortId optional, + Bytes triggerPayload, + Link notificationDestination, + boolean requestTestNotification optional, + WebsockNotifConfig websockNotifConfig optional, + DeliveryResult deliveryResult optional + } + with { + variant "name as uncapitalized"; + variant (self_) "name as 'self'"; + }; + + type record DeviceTriggeringDeliveryReportNotification { + Link transaction, + DeliveryResult Result + } + + }//end group of DeviceTriggering_API + + group Structured_data_types { + + //T8 API + type record Acknowledgement { + charstring details + } + + type record ProblemDetails { + URI type_ optional, + charstring title optional, + integer status optional, + charstring detail optional, + URI instance optional, + charstring cause optional, + InvalidParams invalidParams optional + } + with { + variant (type_) "name as 'type'" + } + + type record of InvalidParam InvalidParams; + + type record InvalidParam { + charstring param_, + charstring reason optional + } + with { + variant (param_) "name as 'param'" + } + + //NIDD API + type record WebsockNotifConfig { + Link websocketUri optional, + boolean requestWebsocketUri optional + } + + type record URI { + charstring apiRoot, + charstring apiName ("3gpp-nidd", "3gpp-device-triggering"), + charstring apiVersion ("v1"), + charstring apiSpecificSuffixes optional, + record of charstring queryParameters optional + } + + type record RdsPort { + Port portUE, + Port portSCEF + } + + type record of RdsPort RdsPorts; + }//end of Structured_data_types + + group Simple_data_types { + + type integer Bandwidth; + type charstring BdtReferenceId; + type charstring BdtReferenceIdRm; + type bitstring Binary; + type charstring Bytes; + type integer DayOfWeek (1..7); + type charstring DateTime; + type charstring DateTimeRm; + type charstring DateTimeRo; + type integer DurationSec; + type integer DurationSecRm; + type integer DurationSecRo; + type integer DurationMin; + type charstring ExternalId; + type charstring ExternalGroupId; + type charstring Link; + type charstring Mcc; + type charstring Mnc; + type charstring Msisdn; + type integer Port; + type integer PortRo; + type charstring ResourceId; + type charstring ScsAsId; + type charstring TimeOfDay; + type charstring Uri; + type integer Volume; + type integer VolumeRm; + + }//end of Simple_data_types + + group Enumerated_data_types { + + //NIDD API + type enumerated PdnEstablishmentOptions { + WAIT_FOR_UE (0), + INDICATE_ERROR (1), + SEND_TRIGGER (2) + } + + type enumerated DeliveryStatus { + SUCCESS, + SUCCESS_NEXT_HOP_ACKNOWLEDGED, + SUCCESS_NEXT_HOP_UNACKNOWLEDGED, + SUCCESS_ACKNOWLEDGED, + SUCCESS_UNACKNOWLEDGED, + TRIGGERED, + BUFFERING, + BUFFERING_TEMPORARILY_NOT_REACHABLE, + SENDING, + FAILURE, + FAILURE_RDS_DISABLE, + FAILURE_NEXT_HOP, + FAILURE_TIMEOUT, + FAILURE_TEMPORARILY_NOT_REACHABLE + } + + type enumerated NiddStatus { + ACTIVE, + TERMINATED_UE_NOT_AUTHORIZED, + TERMINATED, + RDS_PORT_UNKNOWN + } + type enumerated SupportedFeaturesNiddApi { + GroupMessageDelivery (1), + Notification_websocket (2), + Notification_test_event (3), + MT_NIDD_modification_cancellation (4), + Rds_port_verfication (5), + Rds_dynamic_port (6) + } + + type enumerated SupportedFeaturesDeviceTriggeringApi { + Notification_websocket (1), + Notification_test_event (2) + } + + //DeviceTriggering + type enumerated DeliveryResult { + SUCCESS, + UNKNOWN, + FAILURE, + TRIGGERED, + EXPIRED, + UNCONFIRMED, + REPLACED, + TERMINATE + } + + type enumerated Priority { + NO_PRIORITY, + PRIORITY + } + }//end of Enumerated_data_types + +} +with { + encode "JSON"; +} +