@@ -20,9 +20,11 @@ syntax = "proto2";
2020package aalyria.spacetime.api.nbi.v1alpha.resources ;
2121
2222import "api/common/control.proto" ;
23+ import "api/common/coordinates.proto" ;
2324import "api/common/network.proto" ;
2425import "api/common/time.proto" ;
2526import "api/nbi/v1alpha/resources/network_link.proto" ;
27+ import "google/protobuf/duration.proto" ;
2628import "google/protobuf/timestamp.proto" ;
2729import "google/rpc/code.proto" ;
2830import "google/type/interval.proto" ;
@@ -71,6 +73,7 @@ message Intent {
7173 PathIntent route = 6 ;
7274 ModemIntent modem = 18 ;
7375 BearerIntent bearer = 19 ;
76+ MobilityIntent mobility = 21 ;
7477 }
7578 optional IntentState state = 7 [default = INSTALL_REQ ];
7679
@@ -121,7 +124,7 @@ message Intent {
121124 repeated aalyria.spacetime.api.common.ScheduledControlUpdate
122125 compiled_withdrawal_updates = 17;
123126
124- reserved 2 , 10 , 12 , 21 to max; // Next IDs.
127+ reserved 2 , 10 , 12 , 22 to max; // Next IDs.
125128}
126129
127130// Models an intent to configure steerable beams and/or radio resources.
@@ -352,3 +355,139 @@ message BearerIntent {
352355 optional int64 tx_center_frequency_hz = 8 ;
353356 optional int64 tx_bandwidth_hz = 9 ;
354357}
358+
359+ // A Mobility Intent carries information indicating that a user, a group of
360+ // users or an entire coverage region (with all constituent users) is to be
361+ // handed over from one network entity (source) to another (target) at a
362+ // given moment in time.
363+ message MobilityIntent {
364+ // Mobility signaling for networks adopting one of the Digital Video
365+ // Broadcasting (DVB) family of access networks, e.g. DVB-S, DVB-S2,
366+ // DVB-S2X, etc. There are no exact standards which define what mobility
367+ // procedures in DVB based networks requires as input information, so it is
368+ // for now being defined to include a source and target EK_NETWORK_NODE ID.
369+ message Dvb {
370+ optional string source_network_node_id = 1 ;
371+ optional string target_network_node_id = 2 ;
372+ }
373+
374+ // Mobility signaling for networks adopting the 5G New Radio (NR) Radio
375+ // Access Technology (RAT).
376+ message Nr {
377+ // Legacy, network-initiated L3 Handover
378+ message L3HO {
379+ }
380+
381+ // Time-based Conditional Handover (CHO).
382+ // See condEventT1-r17 in TS 38.331 Release 18.
383+ // Ref: https://www.etsi.org/deliver/etsi_ts/138300_138399/138331/18.02.00_60/ts_138331v180200p.pdf
384+ message T1CHO {
385+ // "The field counts the number of UTC seconds in 10 ms units since
386+ // 00:00:00 on Gregorian calendar date 1 January, 1900 (midnight between
387+ // Sunday, December 31, 1899 and Monday, January 1, 1900)."
388+ optional uint64 t1_threshold_10ms = 1 ;
389+
390+ // "This field is used for defining the leaving condition T1-2 for
391+ // conditional HO event condEventT1.
392+ // Each step represents 100ms"
393+ optional uint32 duration_100ms = 2 ;
394+ }
395+
396+ // Distance-based Conditional Handover (CHO).
397+ // See condEventD1-r17 in TS 38.331 Release 18
398+ // Ref: https://www.etsi.org/deliver/etsi_ts/138300_138399/138331/18.02.00_60/ts_138331v180200p.pdf
399+ message D1CHO {
400+ // As per 3GPP TS 38.331
401+ // "The IE TimeToTrigger specifies the value range used for time to
402+ // trigger parameter, which concerns the time during which specific
403+ // criteria for the event needs to be met in order to trigger a
404+ // measurement report. Value ms0 corresponds to 0 ms and behaviour
405+ // as specified in 7.1.2 applies, value ms40 corresponds to 40 ms,
406+ // and so on."
407+ enum TimeToTrigger {
408+ MS0 = 0 ;
409+ MS40 = 1 ;
410+ MS64 = 2 ;
411+ MS80 = 3 ;
412+ MS100 = 4 ;
413+ MS128 = 5 ;
414+ MS160 = 6 ;
415+ MS256 = 7 ;
416+ MS320 = 8 ;
417+ MS480 = 9 ;
418+ MS512 = 10 ;
419+ MS640 = 11 ;
420+ MS1024 = 12 ;
421+ MS1280 = 13 ;
422+ MS2560 = 14 ;
423+ MS5120 = 15 ;
424+ }
425+
426+ // As per 3GPP TS 38.331
427+ // Distance from a fixed reference location configured with
428+ // referenceLocation1 or referenceLocation2 or a moving reference location
429+ // determined by the UE based on the serving cell movingReferenceLocation
430+ // broadcast in SIB19 or referenceLocation2 and their corresponding
431+ // satellite ephemeris and epoch time. Each step represents 50m.
432+ optional uint32 distance_thresh_from_reference_1_50m = 1 ;
433+ optional uint32 distance_thresh_from_reference_2_50m = 2 ;
434+
435+ // Defined in TS 38.331 as a ReferenceLocation-r17 IE, of type OCTET
436+ // STRING. The OCTET STRING represents an ASN.1 APER encoded
437+ // representation of the Ellipsoid-Point from TS 37.355, which itself
438+ // has the following structure
439+ // -- ASN1START
440+ // Ellipsoid-Point ::= SEQUENCE {
441+ // latitudeSign ENUMERATED {north, south},
442+ // degreesLatitude INTEGER (0..8388607), -- 23 bit field
443+ // degreesLongitude INTEGER (-8388608..8388607) -- 24 bit field
444+ // }
445+ // -- ASN1STOP
446+ optional aalyria.spacetime.api.common.GeodeticWgs84 reference_location_1 = 3 ;
447+ optional aalyria.spacetime.api.common.GeodeticWgs84 reference_location_2 = 4 ;
448+ optional TimeToTrigger time_to_trigger = 5 ;
449+ }
450+
451+ // Satellite Switch with Resynchronization.
452+ // See SatSwitchWithReSync-r17 in TS 38.331 Release 18
453+ // Ref: https://www.etsi.org/deliver/etsi_ts/138300_138399/138331/18.02.00_60/ts_138331v180200p.pdf
454+ message SatSwitchWithReSync {
455+ optional uint64 t_service_start_10ms = 1 ;
456+ optional uint32 ssb_time_offset = 2 ;
457+ }
458+
459+
460+ // Source and Target NR Cell Global IDs.
461+ optional string source_nr_cgi = 1 ;
462+ optional string target_nr_cgi = 2 ;
463+
464+ oneof handoverType {
465+ L3HO l3_ho = 3 ;
466+ T1CHO t1_cho = 4 ;
467+ D1CHO d1_cho = 5 ;
468+ SatSwitchWithReSync sat_switch_with_re_sync = 6 ;
469+ }
470+ }
471+
472+ message EndpointList {
473+ repeated Endpoint endpoints = 1 ;
474+ }
475+
476+ oneof accessType {
477+ Dvb dvb = 1 ;
478+ Nr nr = 2 ;
479+ }
480+
481+ // Other subjects TBD.
482+ oneof subject {
483+ BeamTarget target = 3 ;
484+ EndpointList endpoint_list = 4 ;
485+ }
486+
487+ // The amount of time before the handover event at which the MobilityIntent
488+ // should be enacted to prepare the network. For example, if a handover will
489+ // occur at time T and the handover_lead_time is 2 seconds, the mobility
490+ // procedures should begin at T-2 seconds to ensure the network is ready
491+ // when the handover actually occurs.
492+ optional google.protobuf.Duration handover_lead_time = 5 ;
493+ }
0 commit comments