From 03b10153e4fbb5f3e317ef2eef96879590f42fad Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 25 May 2020 11:59:20 +0200 Subject: [PATCH] Review MEC0013-LocationAPI based on ETSI GS MEC 013 V2.1.1 (2019-09) --- etc/AtsMec/AtsMec_Lewis.cf_ | 20 ++-- ttcn/LibMec/LocationAPI/json/LocationAPI.json | 4 +- .../ttcn/LocationAPI_Templates.ttcn | 41 +++++++-- .../ttcn/LocationAPI_TypesAndValues.ttcn | 91 +++++++++++++++++-- 4 files changed, 128 insertions(+), 28 deletions(-) diff --git a/etc/AtsMec/AtsMec_Lewis.cf_ b/etc/AtsMec/AtsMec_Lewis.cf_ index 65f47f9..4046ef0 100644 --- a/etc/AtsMec/AtsMec_Lewis.cf_ +++ b/etc/AtsMec/AtsMec_Lewis.cf_ @@ -22,7 +22,16 @@ LibMec_Pics.PICS_RNIS_QUERY := true LibMec_Pics.PICS_RNIS_ALL_SUBSCRIPTIONS := true LibMec_Pics.PICS_RNIS_NOTIFICATIONS := true -LocationAPI_Pics.PICS_LOCATION_API_SUPPORTED := true + +LibMec_Pixits.PX_ME_APP_Q_ZONE_ID_URI := "/location/v1/zones" +LibMec_Pixits.PX_ME_APP_Q_USERS_LIST_URI := "/location/v1/users" + +# Mec-0013 LocationAPI +LocationAPI_Pics.PICS_LOCATION_API_SUPPORTED := true +LocationAPI_Pixits.PX_ZONE_ID := "zone1" +LocationAPI_Pixits.PX_USER := "ue1" +LocationAPI_Pixits.PX_CLIENT_ID := "0123" +LocationAPI_Pixits.PX_SUBSCRIPTION_ID := "subscription0123" UEidentityAPI_Pics.PICS_UE_IDENTITY_API_SUPPORTED := false @@ -31,16 +40,15 @@ BwManagementAPI_Pics.PICS_BWMANAGEMENT_API_SUPPORTED := false #AppEnablementAPI_Pics.PICS_APP_ENABLEMENT_API_SUPPORTED := true #AppEnablementAPI_Pics.PICS_ME_APP_SUPPORT_TIMING_CAPS_URI - [LOGGING] # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). LogFile := "../logs/%e.%h-%r.%s" -FileMask := LOG_ALL | USER | DEBUG | MATCHING -ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING -#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP -#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +#FileMask := LOG_ALL | USER | DEBUG | MATCHING +#ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT +ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT LogSourceInfo := Stack LogEntityName:= Yes LogEventTypes:= Yes diff --git a/ttcn/LibMec/LocationAPI/json/LocationAPI.json b/ttcn/LibMec/LocationAPI/json/LocationAPI.json index 4e87da0..253a585 100644 --- a/ttcn/LibMec/LocationAPI/json/LocationAPI.json +++ b/ttcn/LibMec/LocationAPI/json/LocationAPI.json @@ -5,8 +5,8 @@ "version": "1.1.1", "description": "The ETSI MEC ISG MEC012 Location API described using OpenAPI. The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence", "license": { - "name": "ETSI Forge copyright notice", - "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt" + "name": "BSD-3-Clause", + "url": "https://forge.etsi.org/legal-matters" } }, "externalDocs": { diff --git a/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Templates.ttcn b/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Templates.ttcn index 65e85a7..13a69ef 100644 --- a/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Templates.ttcn +++ b/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Templates.ttcn @@ -59,23 +59,44 @@ module LocationAPI_Templates { template (value) LocationInfo m_location_info( in JSON.Number p_latitude, in JSON.Number p_longitude, - in UInt32 p_accuracy + in Shape p_shape := POLYGON, + in VelocityType p_velocityType := HORIZONTAL_VERTICAL_UNCERT ) := { - latitude := p_latitude, - longitude := p_longitude, - altitude := omit, - accuracy := p_accuracy + latitude := p_latitude, + longitude := p_longitude, + altitude := omit, + accuracy := omit, + accuracySemiMinor := omit, + accuracyAltitude := omit, + orientationMajorAxis := omit, + confidence := omit, + innerRadius := omit, + uncertaintyRadius := omit, + offsetAngle := omit, + includedAngle := omit, + shape := p_shape, + velocity := omit } // End of template m_location_info template (present) LocationInfo mw_location_info( template (present) JSON.Number p_latitude := ?, template (present) JSON.Number p_longitude := ?, - template (present) UInt32 p_accuracy := ? + template (present) Shape p_shape := ? ) := { - latitude := p_latitude, - longitude := p_longitude, - altitude := *, - accuracy := p_accuracy + latitude := p_latitude, + longitude := p_longitude, + altitude := *, + accuracy := *, + accuracySemiMinor := *, + accuracyAltitude := *, + orientationMajorAxis := *, + confidence := *, + innerRadius := *, + uncertaintyRadius := *, + offsetAngle := *, + includedAngle := *, + shape := p_shape, + velocity := * } // End of template mw_location_info template (value) ZoneInfo m_zone_info( diff --git a/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_TypesAndValues.ttcn b/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_TypesAndValues.ttcn index c16b1f7..aded6f9 100644 --- a/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_TypesAndValues.ttcn +++ b/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_TypesAndValues.ttcn @@ -1,3 +1,13 @@ +/** + * @author ETSI / STF569 + * @version $Url$ + * $Id$ + * @desc Types ANd Values for ETSI GS MEC 013 V2.1.1 (2019-09) + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ module LocationAPI_TypesAndValues { // JSON @@ -20,6 +30,7 @@ module LocationAPI_TypesAndValues { * @desc * @member seconds The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC * @member nanoSeconds The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + * @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.5.2 Type: TimeStamp */ type record TimeStamp { Seconds seconds, @@ -30,25 +41,70 @@ module LocationAPI_TypesAndValues { * @desc A type containing list of users. * @member user Collection of the zone information list. * @member resourceURL Self referring URL. + * @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause */ type record of UserInfo UserInfos; type record UserList { UserInfos user optional, ResourceURL resourceURL } - + + /** + * @desc Shape information, as detailed in [14], associated with the reported location coordinate + * @see ETSI GS MEC 013 V2.1.1 (2019-09) Table 6.5.3-1: Definition of type LocationInfo + */ + type enumerated Shape { + ELLIPSOID_ARC (1), + ELLIPSOID_POINT (2), + ELLIPSOID_POINT_ALTITUDE (3), + ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID (4), + ELLIPSOID_POINT_UNCERT_CIRCLE (5), + ELLIPSOID_POINT_UNCERT_ELLIPSE (6), + POLYGON (7) + } + + /** + * @desc Velocity information, as detailed in [14], associated with the reported location coordinate + * @see ETSI GS MEC 013 V2.1.1 (2019-09) Table 6.5.3-1: Definition of type LocationInfo + */ + type enumerated VelocityType { + HORIZONTAL (1), + HORIZONTAL_VERTICAL (2), + HORIZONTAL_UNCERT (3), + HORIZONTAL_VERTICAL_UNCERT (4) + } + + type record Velocity { + VelocityType velocityType, + UInt32 bearing, + UInt32 horizontalSpeed, + Int32 verticalSpeed optional, + UInt32 verticalUncertainty optional + } + /** * @desc A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided. - * @member latitude - * @member longitude - * @member altitude - * @member accuracy + * @member latitude Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if "shape" equals 7. + * @member longitude Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if "shape" equals 7. + * @member altitude Location altitude relative to the WGS84 ellipsoid surface. + * @member accuracy Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if "shape" equals 4, 5 or 6 + * @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.5.3 Type: LocationInfo */ type record LocationInfo { JSON.Number latitude, JSON.Number longitude, JSON.Number altitude optional, - UInt32 accuracy + UInt32 accuracy optional, + UInt32 accuracySemiMinor optional, + UInt32 accuracyAltitude optional, + UInt32 orientationMajorAxis optional, + UInt32 confidence optional, + UInt32 innerRadius optional, + UInt32 uncertaintyRadius optional, + UInt32 offsetAngle optional, + UInt32 includedAngle optional, + Shape shape, + Velocity velocity optional } // End of type LocationInfo /** @@ -80,6 +136,7 @@ module LocationAPI_TypesAndValues { /** * @desc Identifier of access point, (reference ETSI TS 129 171). Where the E-CGI is made up of the PLMN and Cell Identity (28 bit string). Then the PLMN is made up of the 3 digit MCC & 2 or 3 digit MNC. The Cell Portion is an optional element + * @see ETSI GS MEC 013 V2.1.1 (2019-09) 6.6.1 accessPointId */ type JSON.String AccessPointId; @@ -117,7 +174,7 @@ module LocationAPI_TypesAndValues { /** * @desc Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI). */ - type JSON.String Address + type JSON.AnyURI Address /** * @desc Reserved for future use. @@ -279,8 +336,9 @@ REST_NetAPI_Common]. * @member zoneId Identifier of zone * @member resourceURL Self referring URL. * @member locationInfo A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided. - * @member contextLocationInfo - * @member ancillaryInfo + * @member contextLocationInfo Contextual information of a user location (e.g. aisle, floor, room number, etc.). + * @member ancillaryInfo Reserved for future use + * @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.2.2 Type: UserInfo */ type record UserInfo { Address address_, @@ -416,7 +474,20 @@ REST_NetAPI_Common]. } with { variant (address_) "name as 'address'"; } - + + /** + * @desc This type contains a list of subscriptions + * @ see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.3.3 Type: NotificationSubscriptionList + */ + type record NotificationSubscriptionList { + ZonalTrafficSubscription zonalTrafficSubscription optional, + UserTrackingSubscription userTrackingSubscription optional, + ZoneStatusSubscription zoneStatusSubscription optional, + CircleNotificationSubscription circleNotificationSubscription optional, + PeriodicNotificationSubscription periodicNotificationSubscription optional, + DistanceNotificationSubscription distanceNotificationSubscription optional, + ResourceURL resourceURL + } } with { encode "JSON" } -- GitLab