4G/LTE - LBS/GPS

 

 

 

A-GPS

 

This post is for LBS and GPS/A-GPS. But I am not an expert on this subject and this is purely my personal study note at the very initial learning curve.

The current stage is just to create a coarse cognitive mesh and as time goes it this mesh will get finer until I get the full understanding on this subject.

The main focus will be on the technical details on A-GPS testing as a part of mobile phone testing and this initial post will be centered around A-GPS and its testing in UMTS (WCDMA). (For now, I haven't found any detailed material on A-GPS with LTE technology). The 3GPP specification for framing this post is 34.171 and I got many of cross reference specification from 34.171.

What is GPS and How it works ?

To this question, I think you would have better answers from many sources on the internet than my own explanation. As mentioned above, I don't have much experties on this subject to explain it in plain term but fortunately I found many resources as linked below to give you intuitive idea on GPS and its operation mechanism.

If you want to understand on GPS more in depth, refer to the following sites.

Let me still put the core idea in one place, because the rest of this page depends on it.

A GPS receiver does not measure direction. It measures time. Every satellite transmits a signal stamped with the moment it left the satellite, and the receiver compares that stamp against its own clock. The difference is the travel time. Multiply that travel time by the speed of light and you have the distance to that satellite.

One distance puts you somewhere on a sphere around the satellite. Two distances narrow that to a circle, and three narrow it to a pair of points, only one of which sits on the Earth's surface. So three satellites would be enough if the receiver's clock were perfect.

The receiver's clock is not perfect. A cheap crystal drifts by far more than this measurement can tolerate, and an error of one microsecond is already an error of about 300 m in position. That is what the fourth satellite is for. The fourth measurement adds one more equation, and the receiver solves for its own clock error alongside latitude, longitude and altitude.

This is why the page keeps saying four satellites rather than three, and it is also why the assistance data matters so much.

  • GPS is a timing measurement, not a direction measurement : the receiver turns travel time into distance, and it never has to point an antenna at anything.
  • Four satellites, not three : three of them fix the position, and the fourth solves the receiver's own clock error.
  • A microsecond of clock error is about 300 m of position error : that ratio is why the timing requirements in GPS look so severe.

GPS Signal Frame Structure

As you may noticed throughout my sites, my approach to understand a specific mobile/wireless technology in detail is always start with understanding the detailed frame structure of the signal being transmitted/recieved in the technology.

Following is the overal frame structure of the GPS signal (I will put further details as I get more understanding of this frame structure).

 

GPS navigation message frame structure, five subframes of 300 bits each

Figure 1. One GPS navigation frame, 1500 bits split into five subframes of 300 bits. At 50 bits per second a subframe boundary comes round every 6 seconds, and that is what makes a cold start so slow.

  • Words 1 and 2 of every subframe are overhead : each subframe opens with the telemetry and handover words, marked TLM and HOW. Only words 3 to 10 carry payload.
  • Subframe 1 carries the satellite clock : the label reads satellite clock and GPS time relationship. Without it the range measurement has no time reference.
  • Subframes 2 and 3 carry the ephemeris : the label calls it the precise satellite orbit. This is the data that has to be fresh.
  • Subframes 4 and 5 carry the almanac : these two are spread across 25 successive frames, which is exactly why the full almanac takes 12.5 minutes to collect.

One of the problems in GPS is that the data transmission rate is very low (only 50 bits per second). So it would take long time to receive the whole set of information to find a location. Following shows the time to download the whole data set to figure out a specific location.

GPS Message Frame Transmission speed = 50 bits/sec

It takes 6 seconds to transmit one subframe (300 bits) and takes 30 seconds to transmit a frame (1500 bits).

One complete Almanac information is worth 15,000 bits which needs 25 frames. So it takes 750 seconds (=25 x 30 sec = 12.5 min) to receive the whole Almanac.

As you see, it would take 12.5 minutes to download the whole Almanac and it would take even longer if the signal quality gets poor and the reciever fails to decode any portions of this data.

There is another problem with GPS in addition to the extremly slow data rate described above. As you may experienced, GPS can work only at out doors which can have direct visibility (line of sight) to GPS satellites.

To overcome these major problems described above, a technology called A-GPS was invented.

Three Critical Information - Almanac, Ephemeris and Clock

To determine the location of the GPS satellites two types of data are required by the GPS receiver: the almanac and the ephemeris. This data is continuously transmitted by the GPS satellites and your GPS receiver collects and stores this data.

 

Almanac data is data that describes the orbital courses of the satellites. Every satellite will broadcast almanac data for EVERY satellite. Your GPS receiver uses this data to determine which satellites it expects to see in the local sky. It can then determine which satellites it should track. With Almanac data the receiver can concentrate on those satellites it can see and forget about those that would be over the horizon and out of view. Almanac data is not precise and can be valid for many months.

 

Following is the Almanac data for one GPS satellite. A GPS satellite transmits this information for Every GPS satellite.

Almanac Data Field

Description

PRN number for data

Identifies the satellite this almanac record describes. It appears as satID in the SysInfoType15-3 tile, with dataID beside it naming the navigation data structure the record follows.

Health of SV

Satellite health, 8 bits. A receiver checks this before it uses anything else in the record, because an unhealthy satellite has to be excluded from the fix. Sent as satHealth.

Reference Week of Almanac

The GPS week that the almanac reference time is counted from, modulo 256 weeks. It is sent once for the whole almanac as wn-a rather than once per satellite.

Eccentricity

Shape of the orbit, dimensionless, 16 bits with a scale factor of 2^-21. Zero would be a perfect circle, and GPS orbits sit very close to that. Sent as e.

Corr: inclination angle (rad)

Correction to the orbit inclination, 16 bits with a scale factor of 2^-19 semi-circles. GPS sends only this offset from a fixed nominal inclination rather than the angle itself, which is why the last row of this table also exists. Sent as deltaI.

Mean Anomaly @ ref time (rad)

Where the satellite sits along its orbit at the reference time, 24 bits with a scale factor of 2^-23 semi-circles. This is the element that advances as time passes. Sent as m0.

Argument of Perigee (rad)

Angle from the ascending node to the point of closest approach, 24 bits with a scale factor of 2^-23 semi-circles. It rotates the ellipse within its own orbital plane. Sent as omega.

Rate right ascension (rad/sec)

How fast the ascending node drifts, 16 bits with a scale factor of 2^-38 semi-circles per second. Without it the orbit plane would have to be treated as fixed in space. Sent as omegaDot.

Right ascension @ ref time (rad)

Longitude of the ascending node of the orbit plane at the weekly epoch, 24 bits with a scale factor of 2^-23 semi-circles. Sent as omega0.

Sqrt semi-major axis (m^1/2)

Square root of the semi-major axis, 24 bits with a scale factor of 2^-11 metres^1/2. The square root is what travels over the air, and the axis itself appears further down this table. Sent as a-Sqrt.

Clock correction term 1

af0, the constant part of this satellite's clock offset, 11 bits with a scale factor of 2^-20 seconds.

Clock correction term 2

af1, the rate at which that clock offset drifts, 11 bits with a scale factor of 2^-38 seconds per second.

Reference time almanac

t_oa, the instant inside the GPS week that every parameter above is stated at, 8 bits with a scale factor of 2^12 seconds. Read it together with the reference week.

Semi-Major Axis (meters)

Derived rather than transmitted. It is the square of the transmitted square root above, and it fixes the size of the orbit.

Corrected Mean Motion (rad/sec)

Derived rather than transmitted. The mean angular rate the satellite sweeps out, computed from the semi-major axis and the Earth's gravitational parameter. An almanac carries no delta-n term, so nothing corrects this value further.

Inclination angle (rad)

Derived rather than transmitted. It is the nominal GPS inclination plus the correction in the fifth row. The nominal value is fixed in the GPS interface specification and never sent over the air.

 

Following is an illustration to help you understand each parameters contained in Almanac data (Some parameters in Almanac should be derived by a couple of formula which is not shown in this figure).

 

Keplerian orbit diagram and the six elements that define a satellite orbit

Figure 2. The six Keplerian elements. Two of them fix the size and shape of the orbit, three fix how that orbit is oriented in space, and the last one fixes where the satellite sits along it.

  • a and e describe the ellipse itself : the semi-major axis sets the size and the eccentricity sets the shape. Neither says anything about where that ellipse lies.
  • Omega, omega and i orient the plane : three elements place the ellipse in the inertial frame. They are the right ascension of the ascending node, the argument of perigee and the inclination, and the table groups all three under one description.
  • T0 puts the satellite on the curve : the epoch of perigee is the element that moves with time, and it turns a fixed orbit into an actual position.

Ephemeris data is data that tells the GPS receiver where each GPS satellite should be at any time throughout the day. Each satellite will broadcast its OWN ephemeris data showing the orbital information for that satellite only. Because ephemeris data is very precise orbital and clock correction data necessary for precise positioning, its validity is much shorter. It is broadcast in three six second blocks repeated every 30 seconds. The data is considered valid for up to 4 hours but different manufacturers consider it valid for different periods with some treating it as stale after only 2 hours.

Ephemeris Data Field

Description

PRN number for data

Identifies the satellite this ephemeris record describes. It sits beside ephemerisParameter as satID in the SysInfoType15-2 tile.

Issue of ephemeris data

Issue of Data, Ephemeris. The number changes each time the satellite starts broadcasting a fresh orbit data set, so a receiver compares it against the copy it already holds and only re-reads when it moves. Its companion is Issue of clock data in the clock table.

Semi-Major Axis (meters)

Derived rather than transmitted. It is the square of the transmitted square root further down this table, and it sets the size of the orbit.

C(ic) (rad)

Amplitude of the cosine harmonic correction term to the angle of inclination, in radians, 16 bits with a scale factor of 2^-29. These six C terms work as cosine and sine pairs on three quantities: the inclination, the orbit radius and the argument of latitude. Sent as c-ic.

C(is) (rad)

Amplitude of the sine harmonic correction term to the angle of inclination, in radians, 16 bits with a scale factor of 2^-29. Sent as c-is.

C(rc) (meters)

Amplitude of the cosine harmonic correction term to the orbit radius, in metres, 16 bits with a scale factor of 2^-5. Sent as c-rc.

C(rs) (meters)

Amplitude of the sine harmonic correction term to the orbit radius, in metres, 16 bits with a scale factor of 2^-5. Sent as c-rs.

C(uc) (rad)

Amplitude of the cosine harmonic correction term to the argument of latitude, in radians, 16 bits with a scale factor of 2^-29. Sent as c-uc.

C(us) (rad)

Amplitude of the sine harmonic correction term to the argument of latitude, in radians, 16 bits with a scale factor of 2^-29. Sent as c-us.

Mean motion difference (rad/sec)

Delta n, the difference between the satellite's actual mean motion and the value computed from the semi-major axis, 16 bits with a scale factor of 2^-43 semi-circles per second. An almanac carries no equivalent of this. Sent as delta-n.

Eccentricity (dimensionless)

Shape of the orbit, 32 bits with a scale factor of 2^-33. The almanac sends the same quantity in 16 bits, and that difference in resolution is much of what separates the two data sets. Sent as e.

Rate of inclination angle (rad/sec)

IDOT, how fast the inclination changes, 14 bits with a scale factor of 2^-43 semi-circles per second. Sent as iDot.

Inclination angle @ ref. time (rad)

i0, the inclination at the reference time, 32 bits with a scale factor of 2^-31 semi-circles. The ephemeris sends the angle itself, where the almanac sends only a correction to a nominal value. Sent as i0.

Mean Anomaly at reference time (rad)

M0, where the satellite sits along its orbit at the reference time, 32 bits with a scale factor of 2^-31 semi-circles. Sent as m0.

Corrected Mean Motion (rad/sec)

Derived rather than transmitted. It is the computed mean motion in the row below plus the mean motion difference above, and it is the rate the receiver actually propagates the orbit with.

Computed Mean Motion (rad/sec)

Derived rather than transmitted. The mean angular rate implied by the semi-major axis on its own, before delta n is applied to it.

Argument of perigee (rad)

Angle from the ascending node to the point of closest approach, 32 bits with a scale factor of 2^-31 semi-circles. Sent as omega.

Rate of right ascension (rad/sec)

How fast the ascending node drifts, 24 bits with a scale factor of 2^-43 semi-circles per second. Sent as omegaDot.

Right ascension @ ref time (rad)

Longitude of the ascending node of the orbit plane at the weekly epoch, 32 bits with a scale factor of 2^-31 semi-circles. Sent as omega0.

Sqrt (1 - e^2)

Derived rather than transmitted. It follows from the eccentricity above, and it appears in the step that turns eccentric anomaly into true anomaly, so a decoder usually shows it alongside.

Sqr root semi-major axis, (m^1/2)

Square root of the semi-major axis, 32 bits with a scale factor of 2^-19 metres^1/2. The almanac sends the same quantity in 24 bits. Sent as a-Sqrt.

Reference time ephemeris (sec)

t_oe, the instant inside the GPS week that every parameter above is stated at, 16 bits with a scale factor of 2^4 seconds. An ephemeris stays usable only for hours either side of it, which is why it is re-sent so often. Sent as t-oe.

Following is an illustration to help you understand each parameters contained in Ephemeris data

GPS ephemeris parameters drawn against the orbit and the equatorial plane

Figure 3. The ephemeris parameter set. It describes the same orbit as Figure 2, but more precisely and with correction terms, because a plain six element model drifts too fast to navigate with.

  • The first six are the Keplerian elements again : square root of the semi-major axis, eccentricity, inclination at the reference time, longitude of the ascending node, argument of perigee and mean anomaly. Figure 2 is the picture of these.
  • Delta n, i-dot and Omega-dot are rates of change : they say how the mean motion, the inclination and the right ascension move with time, so the model stays usable away from the reference instant.
  • The C terms are harmonic corrections : Cuc and Cus correct the computed argument of latitude, Crc and Crs correct the orbit radius, and Cic and Cis correct the inclination angle.
  • t_oe is the reference time the whole set is stated against : every parameter above is given at that one instant. This is why the ephemeris expires in hours while the almanac stays usable for months.
  • You will meet these names again further down this page : you will find a-Sqrt, e, i0, omega0, omega, m0, delta-n, iDot, omegaDot and all six c- terms under ephemerisParameter in the SysInfoType15-2 tile.

Clock Data Field

Description

PRN number for data

Identifies the satellite whose clock this record corrects. Sent as satID.

Week number

The GPS week that the time of clock and the time of ephemeris are counted from. Without it the reference times inside the week are ambiguous.

Predicted user range accuracy

URA index, 4 bits and dimensionless. It is an index into a table of accuracy bands rather than a distance in metres, and it tells the receiver how far to trust this satellite's ranging. Sent as uraIndex.

Health of satellite

Satellite health, 6 bits in this record. A receiver checks it before it uses either the clock or the orbit data. Sent as satHealth.

L1 - L2 Correction term

TGD, the group delay difference between the L1 and L2 signal paths inside the satellite, 8 bits with a scale factor of 2^-31 seconds. A single frequency receiver applies it to the clock correction, while a dual frequency receiver cancels the same effect by combining the two frequencies. Sent as t-GD.

Issue of clock data

Issue of Data, Clock, 10 bits. It marks which clock data set these coefficients belong to, and it changes when that set is replaced. Sent as iodc.

Time of clock data

t_oc, the reference instant that the three coefficients below are stated at, 16 bits with a scale factor of 2^4 seconds. Sent as t-oc.

Clock offset

af0, the constant term of the clock correction polynomial, 22 bits with a scale factor of 2^-31 seconds. Sent as af0.

Clock drift

af1, the linear term of the same polynomial, 16 bits with a scale factor of 2^-43 seconds per second. Sent as af1.

Rate of clock drift

af2, the quadratic term, 8 bits with a scale factor of 2^-55 seconds per second squared. The three terms together give the satellite clock offset as af0 + af1 (t - t_oc) + af2 (t - t_oc)^2. Sent as af2.

What is A-GPS and Why A-GPS ?

A-GPS stands for Assisted GPS. So if you just interprete this literally, A-GPS is a kind of GPS which gets assistance from other technology. I would say A-GPS is a kind of 'Evolved' version of existing (conventional) GPS.

Why the existing GPS needs any assistance ? what kind of assistance is it getting ?

Many different types of assistance it can get from various other technologies, but major assisstances are as follows.

  • Assistance to overcome the low data rate of the conventional GPS
  • Assistance to extend GPS coverage into in-door area

Then, what kind of technologies can provide the conventional GPS with these kind of assistance ? Again, there can be many different kind of technology which can provide these assistance, but the most widely used technology for A-GPS is the one from the mobile phone and mobile network which enables the operation of mobile phone .

 

This post will be also centered around A-GPS on mobile phone.

The way in which the mobile phone technology can 'Assist' the conventional GPS is simple in concept. As you know, all the mobile phone technology that we currently using has much higher data rate than the GPS data rate. At least, much higher than 50 bits/sec -:).  So if a GPS reciever can receive Almanac data from the mobile phone network than from the GPS satellite, it would take much shorter to get the whole set of data for the calculation of the location.

Another advantage of having the mobile phone technology would be that now the GPS can have a certain degree of penetration to in-door area.

Is GPS enough for positioning ?

The simple answer is "NO". For use GPS as a location system, you should be in such an open space where you can see at least four satellite. If you are in a very narrow path between very high buildings tightly closed to each other or if you are inside of a building, positioning based on GPS would not work.

On the contrary, most of mobile communication system can penetrate into this kind of narrow/closed space. Is there any way to utilize these mobile communication system (e.g, BTS, NodeB, eNodeB) as a positioning system ? The answer is "Yes" and a lot of technique are already being used and followings are the list of technology.

  • CID (Cell ID) Proximity Location
  • E-CID (Enhanced Cell ID)
  • E-CID/AoA (Angle of Arrival)
  • RF Finger Printing
  • AECID
  • UTDOA
  • OTDOA(Observed Time Difference of Arrival)
  • A-GNSS(Assisted Global Navigation Satellite System)

For the overview of each of these technology, refer to Erricson Whitepaper : Positioning with LTE (If this link does not work, try this)

That list runs roughly from the crudest method to the most precise, and the ordering is worth keeping in mind. The names on their own do not make the differences obvious, so the table below says what each one actually measures.

Technique

What it actually measures

What that gives you

CID Proximity Location

Which cell the UE is camped on, and nothing else.

A position as accurate as the cell is small. It costs nothing and is always available.

E-CID

Cell identity plus timing advance and measured signal levels.

Narrows the cell down to a ring at a known range from the base station.

E-CID/AoA

Adds the direction the uplink arrives from, measured at the base station antenna.

Cuts the ring down to an arc.

RF Finger Printing

The pattern of signal levels from several cells at once, matched against a survey database.

Works where geometry fails, which is mostly dense urban areas.

AECID

The same fingerprints, tagged with whatever more precise position happens to be available at the time.

Builds the database out of live traffic instead of a dedicated survey.

UTDOA

The difference in arrival time of one uplink signal at several base stations.

Needs no support in the UE, but needs receivers deployed in the network.

OTDOA

The difference in arrival time of downlink signals from several cells, measured by the UE.

The downlink counterpart of UTDOA. The measurement moves into the handset.

A-GNSS

Satellite ranging, with the assistance data delivered over the mobile network.

The subject of the rest of this page.

  • Cell ID needs nothing and delivers almost nothing : it is free and always available, and its accuracy is simply the size of the cell.
  • UTDOA and OTDOA differ in who does the measuring : UTDOA measures the uplink inside the network, and OTDOA measures the downlink inside the UE.
  • None of these replaces A-GNSS outdoors : they are the ones that work indoors and between tall buildings, where the satellite signal never arrives.

Two Types of A-GPS on Mobile Phone Technology

We have two major type of A-GPS by mobile phone technology depending on the way it transfer the information to the reciever. One is by using the signaling message (radio message, control message) and the other one is by using the dedicated data transfer channel.  The one using the signaling message is called 'C-Plane A-GPS' and the one using the data channel is called 'U-Plane A-GPS'.

The most commonly used technology for 'U-Plane A-GPS' is what we call 'SUPL' (Secure User Plan Location). I will add a separate sections for SUPL later.

C-Plane and U-Plane answer the question of how the assistance data travels. There is a second question, and it is easy to confuse with the first : who actually computes the position.

In UE based A-GPS the network sends a navigation model, and the UE works out its own latitude and longitude. What comes back is a position estimate.

In UE assisted A-GPS the network sends much less, and the UE reports the raw satellite measurements it made. The network turns those into a position. What comes back is a set of measured results, not a location.

The two axes are independent of each other. A UE based session can run over C-Plane or over U-Plane, and so can a UE assisted one. The protocol sequences further down this page show the difference plainly, because each case gives a different name to the message that closes the sequence.

UE based

UE assisted

Who computes the fix

The UE.

The network.

What the network sends

A navigation model, an ionospheric model, reference time and reference position.

Reference time first, then whatever assistance data the UE asks for.

What the UE reports

Position Estimate.

GPS Measured Results.

Where it appears on this page

Figure 6 and Figure 7.

Figure 8.

  • C-Plane against U-Plane is about the pipe : signalling messages, or a data connection carrying SUPL.
  • UE based against UE assisted is about the calculation : either the UE computes the fix, or the network does.
  • In a log the report name settles it : Position Estimate means UE based, and GPS Measured Results means UE assisted.

A-GPS Test Specification

Testing A-GPS splits into two questions, and different specifications answer them. One asks whether the UE handles the signalling correctly. The other asks whether the receiver inside it actually meets its sensitivity and accuracy numbers. The table below sorts the specifications by radio technology and by which of the two questions each one answers.

 

 

Protocol Conformance

GPS Performance Test

3G(WCDMA)

3GPP TS34.123

(GCF WI-015)

3GPP TS34.171

GCF WI-030

2G(GSM)

3GPP TS51.010 3GPP TS51.010

(GCF WI-016)

3GPP TS51.010

SUPL

OMA ETS-SUPL-V1

(GCF WI-058)

None

 

Two things in that table are worth noticing. The first is that protocol conformance and performance are never the same document. 34.123 checks that a WCDMA UE sends and receives the right RRC messages, while 34.171 checks how well its GPS receiver performs. A UE can pass one and fail the other.

The second is the GCF work item in brackets. An operator usually asks for the work item rather than for the specification, so WI-030 is the string you will hear in a certification discussion even though 34.171 is where the requirements are actually written.

Note also the empty cell in the SUPL row. SUPL has a protocol conformance specification from OMA, and the performance column says None. A SUPL capable UE therefore takes its accuracy and sensitivity from the 3GPP performance specification for its radio technology, because SUPL defines none of its own.

  • Protocol and performance are separate certifications : 34.123 and 34.171 test different things on the same UE, and passing one says nothing about the other.
  • The GCF work item is the number people quote : WI-030 for A-GPS performance on WCDMA and WI-015 for protocol. The specification number is where the requirement lives.
  • SUPL has no performance specification of its own : the performance column reads None, so accuracy and sensitivity come from the specification for the radio technology underneath.

A-GPS Related SIB

There are two main RRC information for C-Plan A-GPS. One is with SIB and the other is with Measurement Control/Measurement Report. Both carry the same kind of assistance data, but they take different routes to the UE. A SIB is broadcast to every UE in the cell, while a Measurement Control message is sent to one UE on a dedicated channel.

This section is to show all the information elements on SIB15, SIB15bis which broadcast A-GPS related information. I will just shows all the information elements for now since I don't have any detailed knowledge on each of these information elements. (This is my next step to study on A-GPS).

Following is the 3GPP specification which you can find detailed information on these information elements.

25.331 - 10.2.48.8.18 System Information Block type 15

34.108 - 10.2 Information elements required for normal UE based testing

Two conventions in the tiles are worth knowing before you read them. The +- characters draw the nesting, so a field indented under another field belongs to it. The value in square brackets is what the decoder chose to display for that field, and OPTIONAL:Exist or OPTIONAL:Omit tells you whether an optional field is present at all.

Decoder view of SysInfoType15. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15 ::= SEQUENCE [111]
  +-ue-positioning-GPS-CipherParameters ::= SEQUENCE OPTIONAL:Exist
  | +-cipheringKeyFlag ::= BIT STRING SIZE(1) [0]
  | +-cipheringSerialNumber ::= INTEGER (0..65535) [0]
  +-ue-positioning-GPS-ReferenceLocation ::= SEQUENCE
  | +-ellipsoidPointAltitudeEllipsoide ::= SEQUENCE
  |   +-latitudeSign ::= ENUMERATED [north]
  |   +-latitude ::= INTEGER (0..8388607) [0]
  |   +-longitude ::= INTEGER (-8388608..8388607) [-8388608]
  |   +-altitudeDirection ::= ENUMERATED [height]
  |   +-altitude ::= INTEGER (0..32767) [0]
  |   +-uncertaintySemiMajor ::= INTEGER (0..127) [0]
  |   +-uncertaintySemiMinor ::= INTEGER (0..127) [0]
  |   +-orientationMajorAxis ::= INTEGER (0..89) [0]
  |   +-uncertaintyAltitude ::= INTEGER (0..127) [0]
  |   +-confidence ::= INTEGER (0..100) [0]
  +-ue-positioning-GPS-ReferenceTime ::= SEQUENCE [1111]
  | +-gps-Week ::= INTEGER (0..1023) [0]
  | +-gps-tow-1msec ::= INTEGER (0..604799999) [0]
  | +-utran-GPSReferenceTime ::= SEQUENCE [0] OPTIONAL:Exist
  | | +-utran-GPSTimingOfCell ::= SEQUENCE
  | | | +-ms-part ::= INTEGER (0..1023) [0]
  | | | +-ls-part ::= INTEGER (0..4294967295) [0]
  | | +-modeSpecificInfo ::= CHOICE OPTIONAL:Omit
  | | +-sfn ::= INTEGER (0..4095) [0]
  | +-sfn-tow-Uncertainty ::= ENUMERATED [lessThan10] OPTIONAL:Exist
  | +-utran-GPS-DriftRate ::= ENUMERATED [utran-GPSDrift0] OPTIONAL:Exist
  | +-gps-TOW-AssistList ::= SEQUENCE OF SIZE(1..maxSat[16]) [1] OPTIONAL:Exist
  |   +-GPS-TOW-Assist ::= SEQUENCE
  |     +-satID ::= INTEGER (0..63) [0]
  |     +-tlm-Message ::= BIT STRING SIZE(14) [00000000000000]
  |     +-tlm-Reserved ::= BIT STRING SIZE(2) [00]
  |     +-alert ::= BOOLEAN [FALSE]
  |     +-antiSpoof ::= BOOLEAN [FALSE]
  +-ue-positioning-GPS-Real-timeIntegrity ::= SEQUENCE OF SIZE(1..maxSat[16]) [1] OPTIONAL:Exist
  | +- ::= INTEGER (0..63) [0]
  +-v4b0NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
    +-sysInfoType15-v4b0ext ::= SEQUENCE [0]
    | +-up-Ipdl-Parameters-TDD ::= SEQUENCE OPTIONAL:Omit
    +-v770NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
      +-sysInfoType15-v770ext ::= SEQUENCE
      | +-ue-Positioning-GPS-ReferenceTime ::= SEQUENCE [1]
      |   +-ue-Positioning-GPS-ReferenceTimeUncertainty ::= INTEGER (0..127) [0] OPTIONAL:Exist
      +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-1. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-1 ::= SEQUENCE [1]
  +-ue-positioning-GPS-DGPS-Corrections ::= SEQUENCE
  | +-gps-TOW ::= INTEGER (0..604799) [0]
  | +-statusHealth ::= ENUMERATED [udre-1-0]
  | +-dgps-CorrectionSatInfoList ::= SEQUENCE OF SIZE(1..maxSat[16]) [1]
  |   +-DGPS-CorrectionSatInfo ::= SEQUENCE [00]
  |     +-satID ::= INTEGER (0..63) [0]
  |     +-iode ::= INTEGER (0..255) [0]
  |     +-udre ::= ENUMERATED [lessThan1]
  |     +-prc ::= INTEGER (-2047..2047) [-2047]
  |     +-rrc ::= INTEGER (-127..127) [-127]
  |     +-dummy1 ::= INTEGER (-127..127) [-127]
  |     +-dummy2 ::= INTEGER (-7..7) [-7]
  |     +-dummy3 ::= INTEGER OPTIONAL:Omit
  |     +-dummy4 ::= INTEGER OPTIONAL:Omit
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist


SysInfoType15-2 ::= SEQUENCE [1]
  +-transmissionTOW ::= INTEGER (0..604799) [0]
  +-satID ::= INTEGER (0..63) [0]
  +-ephemerisParameter ::= SEQUENCE
  | +-codeOnL2 ::= BIT STRING SIZE(2) [00]
  | +-uraIndex ::= BIT STRING SIZE(4) [0000]
  | +-satHealth ::= BIT STRING SIZE(6) [000000]
  | +-iodc ::= BIT STRING SIZE(10) [0000000000]
  | +-l2Pflag ::= BIT STRING SIZE(1) [0]
  | +-sf1Revd ::= SEQUENCE
  | | +-reserved1 ::= BIT STRING SIZE(23) [00000000000000000000000]
  | | +-reserved2 ::= BIT STRING SIZE(24) [000000000000000000000000]
  | | +-reserved3 ::= BIT STRING SIZE(24) [000000000000000000000000]
  | | +-reserved4 ::= BIT STRING SIZE(16) [0000000000000000]
  | +-t-GD ::= BIT STRING SIZE(8) [00000000]
  | +-t-oc ::= BIT STRING SIZE(16) [0000000000000000]
  | +-af2 ::= BIT STRING SIZE(8) [00000000]
  | +-af1 ::= BIT STRING SIZE(16) [0000000000000000]
  | +-af0 ::= BIT STRING SIZE(22) [0000000000000000000000]
  | +-c-rs ::= BIT STRING SIZE(16) [0000000000000000]
  | +-delta-n ::= BIT STRING SIZE(16) [0000000000000000]
  | +-m0 ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-c-uc ::= BIT STRING SIZE(16) [0000000000000000]
  | +-e ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-c-us ::= BIT STRING SIZE(16) [0000000000000000]
  | +-a-Sqrt ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-t-oe ::= BIT STRING SIZE(16) [0000000000000000]
  | +-fitInterval ::= BIT STRING SIZE(1) [0]
  | +-aodo ::= BIT STRING SIZE(5) [00000]
  | +-c-ic ::= BIT STRING SIZE(16) [0000000000000000]
  | +-omega0 ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-c-is ::= BIT STRING SIZE(16) [0000000000000000]
  | +-i0 ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-c-rc ::= BIT STRING SIZE(16) [0000000000000000]
  | +-omega ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-omegaDot ::= BIT STRING SIZE(24) [000000000000000000000000]
  | +-iDot ::= BIT STRING SIZE(14) [00000000000000]
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-3. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-3 ::= SEQUENCE [111111]
  +-transmissionTOW ::= INTEGER (0..604799) [0]
  +-ue-positioning-GPS-Almanac ::= SEQUENCE [0] OPTIONAL:Exist
  | +-wn-a ::= BIT STRING SIZE(8) [00000000]
  | +-almanacSatInfoList ::= SEQUENCE OF SIZE(1..maxSat[16]) [1]
  | | +-AlmanacSatInfo ::= SEQUENCE
  | |   +-dataID ::= INTEGER (0..3) [0]
  | |   +-satID ::= INTEGER (0..63) [0]
  | |   +-e ::= BIT STRING SIZE(16) [0000000000000000]
  | |   +-t-oa ::= BIT STRING SIZE(8) [00000000]
  | |   +-deltaI ::= BIT STRING SIZE(16) [0000000000000000]
  | |   +-omegaDot ::= BIT STRING SIZE(16) [0000000000000000]
  | |   +-satHealth ::= BIT STRING SIZE(8) [00000000]
  | |   +-a-Sqrt ::= BIT STRING SIZE(24) [000000000000000000000000]
  | |   +-omega0 ::= BIT STRING SIZE(24) [000000000000000000000000]
  | |   +-m0 ::= BIT STRING SIZE(24) [000000000000000000000000]
  | |   +-omega ::= BIT STRING SIZE(24) [000000000000000000000000]
  | |   +-af0 ::= BIT STRING SIZE(11) [00000000000]
  | |   +-af1 ::= BIT STRING SIZE(11) [00000000000]
  | +-sv-GlobalHealth ::= BIT STRING OPTIONAL:Omit
  +-ue-positioning-GPS-IonosphericModel ::= SEQUENCE OPTIONAL:Exist
  | +-alpha0 ::= BIT STRING SIZE(8) [00000000]
  | +-alpha1 ::= BIT STRING SIZE(8) [00000000]
  | +-alpha2 ::= BIT STRING SIZE(8) [00000000]
  | +-alpha3 ::= BIT STRING SIZE(8) [00000000]
  | +-beta0 ::= BIT STRING SIZE(8) [00000000]
  | +-beta1 ::= BIT STRING SIZE(8) [00000000]
  | +-beta2 ::= BIT STRING SIZE(8) [00000000]
  | +-beta3 ::= BIT STRING SIZE(8) [00000000]
  +-ue-positioning-GPS-UTC-Model ::= SEQUENCE OPTIONAL:Exist
  | +-a1 ::= BIT STRING SIZE(24) [000000000000000000000000]
  | +-a0 ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-t-ot ::= BIT STRING SIZE(8) [00000000]
  | +-wn-t ::= BIT STRING SIZE(8) [00000000]
  | +-delta-t-LS ::= BIT STRING SIZE(8) [00000000]
  | +-wn-lsf ::= BIT STRING SIZE(8) [00000000]
  | +-dn ::= BIT STRING SIZE(8) [00000000]
  | +-delta-t-LSF ::= BIT STRING SIZE(8) [00000000]
  +-satMask ::= BIT STRING SIZE(1..32) [0] OPTIONAL:Exist
  +-lsbTOW ::= BIT STRING SIZE(8) [00000000] OPTIONAL:Exist
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-4. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-4 ::= SEQUENCE [11]
  +-ue-positioning-OTDOA-CipherParameters ::= SEQUENCE OPTIONAL:Exist
  | +-cipheringKeyFlag ::= BIT STRING SIZE(1) [0]
  | +-cipheringSerialNumber ::= INTEGER (0..65535) [0]
  +-ue-positioning-OTDOA-AssistanceData ::= SEQUENCE [11]
  | +-ue-positioning-OTDOA-ReferenceCellInfo ::= SEQUENCE [000] OPTIONAL:Exist
  | | +-sfn ::= INTEGER OPTIONAL:Omit
  | | +-modeSpecificInfo ::= CHOICE [fdd]
  | | | +-fdd ::= SEQUENCE
  | | |   +-primaryCPICH-Info ::= SEQUENCE
  | | |     +-primaryScramblingCode ::= INTEGER (0..511) [0]
  | | +-frequencyInfo ::= SEQUENCE OPTIONAL:Omit
  | | +-positioningMode ::= CHOICE [ueBased]
  | | | +-ueBased ::= SEQUENCE
  | | +-ue-positioning-IPDL-Paremeters ::= SEQUENCE OPTIONAL:Omit
  | +-ue-positioning-OTDOA-NeighbourCellList ::= SEQUENCE OF SIZE(1..maxCellMeas[32]) [1] OPTIONAL:Exist
  |   +-UE-Positioning-OTDOA-NeighbourCellInfo ::= SEQUENCE [111]
  |     +-modeSpecificInfo ::= CHOICE [fdd]
  |     | +-fdd ::= SEQUENCE
  |     |   +-primaryCPICH-Info ::= SEQUENCE
  |     |     +-primaryScramblingCode ::= INTEGER (0..511) [0]
  |     +-frequencyInfo ::= SEQUENCE OPTIONAL:Exist
  |     | +-modeSpecificInfo ::= CHOICE [fdd]
  |     |   +-fdd ::= SEQUENCE [0]
  |     |     +-uarfcn-UL ::= INTEGER OPTIONAL:Omit
  |     |     +-uarfcn-DL ::= INTEGER (0..16383) [0]
  |     +-ue-positioning-IPDL-Paremeters ::= SEQUENCE [0] OPTIONAL:Exist
  |     | +-ip-Spacing ::= ENUMERATED [e5]
  |     | +-ip-Length ::= ENUMERATED [ipl5]
  |     | +-ip-Offset ::= INTEGER (0..9) [0]
  |     | +-seed ::= INTEGER (0..63) [0]
  |     | +-burstModeParameters ::= SEQUENCE OPTIONAL:Omit
  |     +-sfn-SFN-RelTimeDifference ::= SEQUENCE
  |     | +-sfn-Offset ::= INTEGER (0..4095) [0]
  |     | +-sfn-sfn-Reltimedifference ::= INTEGER (0..38399) [0]
  |     +-sfn-SFN-Drift ::= ENUMERATED [sfnsfndrift0] OPTIONAL:Exist
  |     +-searchWindowSize ::= ENUMERATED [c20]
  |     +-positioningMode ::= CHOICE [ueBased]
  |       +-ueBased ::= SEQUENCE
  +-v3a0NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
    +-sysInfoType15-4-v3a0ext ::= SEQUENCE [1]
    | +-sfn-Offset-Validity ::= ENUMERATED [false] OPTIONAL:Exist
    +-v4b0NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
      +-sysInfoType15-4-v4b0ext ::= SEQUENCE [1]
      | +-ue-Positioning-OTDOA-AssistanceData-r4ext ::= SEQUENCE [00] OPTIONAL:Exist
      |   +-ue-Positioning-IPDL-Parameters-TDD-r4-ext ::= SEQUENCE OPTIONAL:Omit
      |   +-ue-Positioning-IPDL-Parameters-TDDList-r4-ext ::= SEQUENCE OF OPTIONAL:Omit
      +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-5. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-5 ::= SEQUENCE [1]
  +-ue-positioning-OTDOA-AssistanceData-UEB ::= SEQUENCE [11]
  | +-ue-positioning-OTDOA-ReferenceCellInfo-UEB ::= SEQUENCE [11111] OPTIONAL:Exist
  | | +-sfn ::= INTEGER (0..4095) [0] OPTIONAL:Exist
  | | +-modeSpecificInfo ::= CHOICE [fdd]
  | | | +-fdd ::= SEQUENCE
  | | |   +-primaryCPICH-Info ::= SEQUENCE
  | | |     +-primaryScramblingCode ::= INTEGER (0..511) [0]
  | | +-frequencyInfo ::= SEQUENCE OPTIONAL:Exist
  | | | +-modeSpecificInfo ::= CHOICE [fdd]
  | | |   +-fdd ::= SEQUENCE [0]
  | | |     +-uarfcn-UL ::= INTEGER OPTIONAL:Omit
  | | |     +-uarfcn-DL ::= INTEGER (0..16383) [0]
  | | +-cellPosition ::= CHOICE [ellipsoidPoint] OPTIONAL:Exist
  | | | +-ellipsoidPoint ::= SEQUENCE
  | | |   +-latitudeSign ::= ENUMERATED [north]
  | | |   +-latitude ::= INTEGER (0..8388607) [0]
  | | |   +-longitude ::= INTEGER (-8388608..8388607) [-8388608]
  | | +-roundTripTime ::= INTEGER (0..32766) [0] OPTIONAL:Exist
  | | +-ue-positioning-IPDL-Paremeters ::= SEQUENCE [0] OPTIONAL:Exist
  | |   +-ip-Spacing ::= ENUMERATED [e5]
  | |   +-ip-Length ::= ENUMERATED [ipl5]
  | |   +-ip-Offset ::= INTEGER (0..9) [0]
  | |   +-seed ::= INTEGER (0..63) [0]
  | |   +-burstModeParameters ::= SEQUENCE OPTIONAL:Omit
  | +-ue-positioning-OTDOA-NeighbourCellList-UEB ::= SEQUENCE OF SIZE(1..maxCellMeas[32]) [1] OPTIONAL:Exist
  |   +-UE-Positioning-OTDOA-NeighbourCellInfo-UEB ::= SEQUENCE [0000000]
  |     +-modeSpecificInfo ::= CHOICE [fdd]
  |     | +-fdd ::= SEQUENCE
  |     |   +-primaryCPICH-Info ::= SEQUENCE
  |     |     +-primaryScramblingCode ::= INTEGER (0..511) [0]
  |     +-frequencyInfo ::= SEQUENCE OPTIONAL:Omit
  |     +-ue-positioning-IPDL-Paremeters ::= SEQUENCE OPTIONAL:Omit
  |     +-sfn-SFN-RelTimeDifference ::= SEQUENCE
  |     | +-sfn-Offset ::= INTEGER (0..4095) [0]
  |     | +-sfn-sfn-Reltimedifference ::= INTEGER (0..38399) [0]
  |     +-sfn-SFN-Drift ::= ENUMERATED OPTIONAL:Omit
  |     +-searchWindowSize ::= ENUMERATED [c20]
  |     +-relativeNorth ::= INTEGER OPTIONAL:Omit
  |     +-relativeEast ::= INTEGER OPTIONAL:Omit
  |     +-relativeAltitude ::= INTEGER OPTIONAL:Omit
  |     +-fineSFN-SFN ::= INTEGER (0..15) [0]
  |     +-roundTripTime ::= INTEGER OPTIONAL:Omit
  +-v3a0NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
    +-sysInfoType15-5-v3a0ext ::= SEQUENCE [1]
    | +-sfn-Offset-Validity ::= ENUMERATED [false] OPTIONAL:Exist
    +-v770NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
      +-sysInfoType15-5-v770ext ::= SEQUENCE [1]
      | +-ue-Positioning-OTDOA-AssistanceData-UEB-ext ::= SEQUENCE [11] OPTIONAL:Exist
      |   +-ue-positioning-OTDOA-ReferenceCellInfo-UEB-ext ::= SEQUENCE [1] OPTIONAL:Exist
      |   | +-roundTripTimeExtension ::= INTEGER (0..70274) [0] OPTIONAL:Exist
      |   +-ue-positioning-OTDOA-NeighbourCellList-UEB-ext ::= SEQUENCE OF SIZE(1..maxCellMeas[32]) [1] OPTIONAL:Exist
      |     +-UE-Positioning-OTDOA-NeighbourCellInfo-UEB-ext ::= SEQUENCE [1]
      |       +-roundTripTimeExtension ::= INTEGER (0..70274) [0] OPTIONAL:Exist
      +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-6. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-6 ::= SEQUENCE [1]
  +-ue-positioning-GANSS-TOD ::= INTEGER (0..86399) [0]
  +-ue-positioning-GANSS-ReferenceMeasurementInformation ::= SEQUENCE [1]
  | +-ganssSignalId ::= INTEGER (0..7) [0] OPTIONAL:Exist
  | +-satelliteInformationList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
  |   +-GANSSSatelliteInformation ::= SEQUENCE [11]
  |     +-ganssSatId ::= INTEGER (0..63) [0]
  |     +-dopplerZeroOrder ::= INTEGER (-2048..2047) [-2048]
  |     +-extraDoppler ::= SEQUENCE OPTIONAL:Exist
  |     | +-dopplerFirstOrder ::= INTEGER (-42..21) [-42]
  |     | +-dopplerUncertainty ::= ENUMERATED [dopU40]
  |     +-codePhase ::= INTEGER (0..1023) [0]
  |     +-integerCodePhase ::= INTEGER (0..127) [0]
  |     +-codePhaseSearchWindow ::= BIT STRING SIZE(5) [00000]
  |     +-azimuthandElevation ::= SEQUENCE OPTIONAL:Exist
  |       +-azimuth ::= INTEGER (0..31) [0]
  |       +-elevation ::= INTEGER (0..7) [0]
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-7. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-7 ::= SEQUENCE [1]
  +-ue-positioning-GANSS-DataBitAssistance ::= SEQUENCE
  | +-ganss-tod ::= INTEGER (0..59) [0]
  | +-dataBitAssistanceList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
  |   +-DataBitAssistanceSat ::= SEQUENCE
  |     +-satID ::= INTEGER (0..63) [0]
  |     +-dataBitAssistanceSgnList ::= SEQUENCE OF SIZE(1..maxSgnType[8]) [1]
  |       +-DataBitAssistance ::= SEQUENCE
  |         +-ganss-signal-id ::= INTEGER (0..7) [0]
  |         +-data-bits ::= BIT STRING SIZE(1..1024) [0]
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-8. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-8 ::= SEQUENCE [111]
  +-ue-positioning-GANSS-DataCipheringInfo ::= SEQUENCE OPTIONAL:Exist
  | +-cipheringKeyFlag ::= BIT STRING SIZE(1) [0]
  | +-cipheringSerialNumber ::= INTEGER (0..65535) [0]
  +-ue-positioning-GANSS-realTimeIntegrity ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1] OPTIONAL:Exist
  | +- ::= SEQUENCE [0]
  |   +-bad-ganss-satId ::= INTEGER (0..63) [0]
  |   +-bad-ganss-signalId ::= BIT STRING OPTIONAL:Omit
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15bis. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15bis ::= SEQUENCE [11]
  +-ue-positioning-GANSS-ReferencePosition ::= SEQUENCE
  | +-ellipsoidPointAltitudeEllipsoide ::= SEQUENCE
  |   +-latitudeSign ::= ENUMERATED [north]
  |   +-latitude ::= INTEGER (0..8388607) [0]
  |   +-longitude ::= INTEGER (-8388608..8388607) [-8388608]
  |   +-altitudeDirection ::= ENUMERATED [height]
  |   +-altitude ::= INTEGER (0..32767) [0]
  |   +-uncertaintySemiMajor ::= INTEGER (0..127) [0]
  |   +-uncertaintySemiMinor ::= INTEGER (0..127) [0]
  |   +-orientationMajorAxis ::= INTEGER (0..89) [0]
  |   +-uncertaintyAltitude ::= INTEGER (0..127) [0]
  |   +-confidence ::= INTEGER (0..100) [0]
  +-ue-positioning-GANSS-ReferenceTime ::= SEQUENCE [11111]
  | +-ganssDay ::= INTEGER (0..8191) [0] OPTIONAL:Exist
  | +-ganssTod ::= INTEGER (0..86399) [0]
  | +-ganssTodUncertainty ::= INTEGER (0..127) [0] OPTIONAL:Exist
  | +-ganssTimeId ::= INTEGER (0..7) [0] OPTIONAL:Exist
  | +-utran-ganssreferenceTime ::= SEQUENCE OPTIONAL:Exist
  | | +-timingOfCellFrames ::= INTEGER (0..3999999) [0]
  | | +-mode ::= CHOICE [fdd]
  | | | +-fdd ::= SEQUENCE
  | | |   +-primary-CPICH-Info ::= SEQUENCE
  | | |     +-primaryScramblingCode ::= INTEGER (0..511) [0]
  | | +-referenceSfn ::= INTEGER (0..4095) [0]
  | +-tutran-ganss-driftRate ::= ENUMERATED [ugdr0] OPTIONAL:Exist
  +-ue-positioning-GANSS-IonosphericModel ::= SEQUENCE [0] OPTIONAL:Exist
  | +-alpha-zero-ionos ::= BIT STRING SIZE(12) [000000000000]
  | +-alpha-one-ionos ::= BIT STRING SIZE(12) [000000000000]
  | +-alpha-two-ionos ::= BIT STRING SIZE(12) [000000000000]
  | +-gANSS-storm-flags ::= SEQUENCE OPTIONAL:Omit
  +-v860NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
    +-sysInfoType15bis-v860ext ::= SEQUENCE [11]
    | +-ue-Positioning-GANSS-AddIonoModel ::= SEQUENCE OPTIONAL:Exist
    | | +-dataID ::= BIT STRING SIZE(2) [00]
    | | +-alpha-beta-parameters ::= SEQUENCE
    | |   +-alpha0 ::= BIT STRING SIZE(8) [00000000]
    | |   +-alpha1 ::= BIT STRING SIZE(8) [00000000]
    | |   +-alpha2 ::= BIT STRING SIZE(8) [00000000]
    | |   +-alpha3 ::= BIT STRING SIZE(8) [00000000]
    | |   +-beta0 ::= BIT STRING SIZE(8) [00000000]
    | |   +-beta1 ::= BIT STRING SIZE(8) [00000000]
    | |   +-beta2 ::= BIT STRING SIZE(8) [00000000]
    | |   +-beta3 ::= BIT STRING SIZE(8) [00000000]
    | +-ue-Positioning-GANSS-EarthOrientationPara ::= SEQUENCE OPTIONAL:Exist
    |   +-teop ::= BIT STRING SIZE(16) [0000000000000000]
    |   +-pmX ::= BIT STRING SIZE(21) [000000000000000000000]
    |   +-pmXdot ::= BIT STRING SIZE(15) [000000000000000]
    |   +-pmY ::= BIT STRING SIZE(21) [000000000000000000000]
    |   +-pmYdot ::= BIT STRING SIZE(15) [000000000000000]
    |   +-deltaUT1 ::= BIT STRING SIZE(31) [0000000000000000000000000000000]
    |   +-deltaUT1dot ::= BIT STRING SIZE(19) [0000000000000000000]
    +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-1bis. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

RRC:SysInfoType15-1bis
SysInfoType15-1bis ::= SEQUENCE [1]
  +-ue-positioning-GANSS-DGANSS-Corrections ::= SEQUENCE
  | +-dganssreferencetime ::= INTEGER (0..119) [0]
  | +-dganssInfoList ::= SEQUENCE OF SIZE(1..maxSgnType[8]) [1]
  |   +-DGANSSInfo ::= SEQUENCE [11]
  |     +-ganssSignalId ::= INTEGER (0..7) [0] OPTIONAL:Exist
  |     +-ganssStatusHealth ::= ENUMERATED [udre-scale-1dot0]
  |     +-dgansssignalInformationList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1] OPTIONAL:Exist
  |       +-DGANSSSignalInformation ::= SEQUENCE
  |         +-satId ::= INTEGER (0..63) [0]
  |         +-iode-dganss ::= BIT STRING SIZE(10) [0000000000]
  |         +-udre ::= ENUMERATED [lessThan1]
  |         +-ganss-prc ::= INTEGER (-2047..2047) [-2047]
  |         +-ganss-rrc ::= INTEGER (-127..127) [-127]
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-2bis. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-2bis ::= SEQUENCE [1]
  +-ue-positioning-GANSS-navigationModel ::= SEQUENCE [1]
  | +-non-broadcastIndication ::= ENUMERATED [true] OPTIONAL:Exist
  | +-ganssSatInfoNavList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
  |   +-Ganss-Sat-Info-Nav ::= SEQUENCE
  |     +-satId ::= INTEGER (0..63) [0]
  |     +-svHealth ::= BIT STRING SIZE(5) [00000]
  |     +-iod ::= BIT STRING SIZE(10) [0000000000]
  |     +-ganssClockModel ::= SEQUENCE
  |     | +-satellite-clock-modelList ::= SEQUENCE OF SIZE(1..maxSatClockModels[4]) [1]
  |     |   +-Satellite-clock-model ::= SEQUENCE [11]
  |     |     +-t-oc ::= BIT STRING SIZE(14) [00000000000000]
  |     |     +-af2 ::= BIT STRING SIZE(12) [000000000000]
  |     |     +-af1 ::= BIT STRING SIZE(18) [000000000000000000]
  |     |     +-af0 ::= BIT STRING SIZE(28) [0000000000000000000000000000]
  |     |     +-tgd ::= BIT STRING SIZE(10) [0000000000] OPTIONAL:Exist
  |     |     +-model-id ::= INTEGER (0..1) [0] OPTIONAL:Exist
  |     +-ganssOrbitModel ::= SEQUENCE [0]
  |       +-keplerianParameters ::= SEQUENCE OPTIONAL:Omit
  +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

 

Decoder view of SysInfoType15-3bis. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

SysInfoType15-3bis ::= SEQUENCE [1111]
  +-ue-positioning-GANSS-Almanac ::= SEQUENCE [1] OPTIONAL:Exist
  | +-ganss-wk-number ::= INTEGER (0..255) [0]
  | +-alm-keplerianParameters ::= SEQUENCE OPTIONAL:Exist
  |   +-t-oa ::= INTEGER (0..147) [0]
  |   +-iod-a ::= INTEGER (0..3) [0]
  |   +-sat-info-kpList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
  |     +-GANSS-SAT-Info-Almanac-Kp ::= SEQUENCE
  |       +-svId ::= INTEGER (0..63) [0]
  |       +-ganss-alm-e ::= BIT STRING SIZE(11) [00000000000]
  |       +-ganss-delta-I-alm ::= BIT STRING SIZE(11) [00000000000]
  |       +-ganss-omegadot-alm ::= BIT STRING SIZE(11) [00000000000]
  |       +-ganss-svhealth-alm ::= BIT STRING SIZE(4) [0000]
  |       +-ganss-delta-a-sqrt-alm ::= BIT STRING SIZE(17) [00000000000000000]
  |       +-ganss-omegazero-alm ::= BIT STRING SIZE(16) [0000000000000000]
  |       +-ganss-m-zero-alm ::= BIT STRING SIZE(16) [0000000000000000]
  |       +-ganss-omega-alm ::= BIT STRING SIZE(16) [0000000000000000]
  |       +-ganss-af-zero-alm ::= BIT STRING SIZE(14) [00000000000000]
  |       +-ganss-af-one-alm ::= BIT STRING SIZE(11) [00000000000]
  +-ue-positioning-GANSS-TimeModels ::= SEQUENCE OF SIZE(1..maxGANSS-1[7]) [1] OPTIONAL:Exist
  | +-UE-Positioning-GANSS-TimeModel ::= SEQUENCE [111]
  |   +-ganss-timeModelreferenceTime ::= INTEGER (0..37799) [0]
  |   +-ganss-t-a0 ::= INTEGER (-2147483648..2147483647) [-2147483648]
  |   +-ganss-t-a1 ::= INTEGER (-8388608..8388607) [-8388608] OPTIONAL:Exist
  |   +-ganss-t-a2 ::= INTEGER (-64..63) [-64] OPTIONAL:Exist
  |   +-gnss-to-id ::= ENUMERATED [gps]
  |   +-ganss-wk-number ::= INTEGER (0..8191) [0] OPTIONAL:Exist
  +-ue-positioning-GANSS-UTC-Model ::= SEQUENCE OPTIONAL:Exist
  | +-a-one-utc ::= BIT STRING SIZE(24) [000000000000000000000000]
  | +-a-zero-utc ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
  | +-t-ot-utc ::= BIT STRING SIZE(8) [00000000]
  | +-delta-t-ls-utc ::= BIT STRING SIZE(8) [00000000]
  | +-w-n-t-utc ::= BIT STRING SIZE(8) [00000000]
  | +-w-n-lsf-utc ::= BIT STRING SIZE(8) [00000000]
  | +-dn-utc ::= BIT STRING SIZE(8) [00000000]
  | +-delta-t-lsf-utc ::= BIT STRING SIZE(8) [00000000]
  +-v860NonCriticalExtensions ::= SEQUENCE [1] OPTIONAL:Exist
    +-sysInfoType15-3bis-v860ext ::= SEQUENCE [111]
    | +-ue-Positioning-GANSS-Almanac ::= SEQUENCE [11111] OPTIONAL:Exist
    | | +-alm-keplerianNAVAlmanac ::= SEQUENCE OPTIONAL:Exist
    | | | +-t-oa ::= INTEGER (0..147) [0]
    | | | +-sat-info-NAVkpList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
    | | |   +-GANSS-SAT-Info-Almanac-NAVkp ::= SEQUENCE
    | | |     +-svID ::= INTEGER (0..63) [0]
    | | |     +-navAlmE ::= BIT STRING SIZE(16) [0000000000000000]
    | | |     +-navAlmDeltaI ::= BIT STRING SIZE(16) [0000000000000000]
    | | |     +-navAlmOMEGADOT ::= BIT STRING SIZE(16) [0000000000000000]
    | | |     +-navAlmSVHealth ::= BIT STRING SIZE(8) [00000000]
    | | |     +-navAlmSqrtA ::= BIT STRING SIZE(24) [000000000000000000000000]
    | | |     +-navAlmOMEGAo ::= BIT STRING SIZE(24) [000000000000000000000000]
    | | |     +-navAlmOmega ::= BIT STRING SIZE(24) [000000000000000000000000]
    | | |     +-navAlmMo ::= BIT STRING SIZE(24) [000000000000000000000000]
    | | |     +-navAlmaf0 ::= BIT STRING SIZE(11) [00000000000]
    | | |     +-navAlmaf1 ::= BIT STRING SIZE(11) [00000000000]
    | | +-alm-keplerianReducedAlmanac ::= SEQUENCE OPTIONAL:Exist
    | | | +-t-oa ::= INTEGER (0..147) [0]
    | | | +-sat-info-REDkpList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
    | | |   +-GANSS-SAT-Info-Almanac-REDkp ::= SEQUENCE
    | | |     +-svID ::= INTEGER (0..63) [0]
    | | |     +-redAlmDeltaA ::= BIT STRING SIZE(8) [00000000]
    | | |     +-redAlmOmega0 ::= BIT STRING SIZE(7) [0000000]
    | | |     +-redAlmPhi0 ::= BIT STRING SIZE(7) [0000000]
    | | |     +-redAlmL1Health ::= BIT STRING SIZE(1) [0]
    | | |     +-redAlmL2Health ::= BIT STRING SIZE(1) [0]
    | | |     +-redAlmL5Health ::= BIT STRING SIZE(1) [0]
    | | +-alm-keplerianMidiAlmanac ::= SEQUENCE OPTIONAL:Exist
    | | | +-t-oa ::= INTEGER (0..147) [0]
    | | | +-sat-info-MIDIkpList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
    | | |   +-GANSS-SAT-Info-Almanac-MIDIkp ::= SEQUENCE
    | | |     +-svID ::= INTEGER (0..63) [0]
    | | |     +-midiAlmE ::= BIT STRING SIZE(11) [00000000000]
    | | |     +-midiAlmDeltaI ::= BIT STRING SIZE(11) [00000000000]
    | | |     +-midiAlmOmegaDot ::= BIT STRING SIZE(11) [00000000000]
    | | |     +-midiAlmSqrtA ::= BIT STRING SIZE(17) [00000000000000000]
    | | |     +-midiAlmOmega0 ::= BIT STRING SIZE(16) [0000000000000000]
    | | |     +-midiAlmOmega ::= BIT STRING SIZE(16) [0000000000000000]
    | | |     +-midiAlmMo ::= BIT STRING SIZE(16) [0000000000000000]
    | | |     +-midiAlmaf0 ::= BIT STRING SIZE(11) [00000000000]
    | | |     +-midiAlmaf1 ::= BIT STRING SIZE(10) [0000000000]
    | | |     +-midiAlmL1Health ::= BIT STRING SIZE(1) [0]
    | | |     +-midiAlmL2Health ::= BIT STRING SIZE(1) [0]
    | | |     +-midiAlmL5Health ::= BIT STRING SIZE(1) [0]
    | | +-alm-keplerianGLONASS ::= SEQUENCE OPTIONAL:Exist
    | | | +-sat-info-GLOkpList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
    | | |   +-GANSS-SAT-Info-Almanac-GLOkp ::= SEQUENCE [1]
    | | |     +-gloAlmNA ::= BIT STRING SIZE(11) [00000000000]
    | | |     +-gloAlmnA ::= BIT STRING SIZE(5) [00000]
    | | |     +-gloAlmHA ::= BIT STRING SIZE(5) [00000]
    | | |     +-gloAlmLambdaA ::= BIT STRING SIZE(21) [000000000000000000000]
    | | |     +-gloAlmTlambdaA ::= BIT STRING SIZE(21) [000000000000000000000]
    | | |     +-gloAlmDeltaIA ::= BIT STRING SIZE(18) [000000000000000000]
    | | |     +-gloAkmDeltaTA ::= BIT STRING SIZE(22) [0000000000000000000000]
    | | |     +-gloAlmDeltaTdotA ::= BIT STRING SIZE(7) [0000000]
    | | |     +-gloAlmEpsilonA ::= BIT STRING SIZE(15) [000000000000000]
    | | |     +-gloAlmOmegaA ::= BIT STRING SIZE(16) [0000000000000000]
    | | |     +-gloAlmTauA ::= BIT STRING SIZE(10) [0000000000]
    | | |     +-gloAlmCA ::= BIT STRING SIZE(1) [0]
    | | |     +-gloAlmMA ::= BIT STRING SIZE(2) [00] OPTIONAL:Exist
    | | +-alm-ecefSBASAlmanac ::= SEQUENCE OPTIONAL:Exist
    | |   +-sat-info-SBASecefList ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
    | |     +-GANSS-SAT-Info-Almanac-SBASecef ::= SEQUENCE
    | |       +-sbasAlmDataID ::= BIT STRING SIZE(2) [00]
    | |       +-svID ::= INTEGER (0..63) [0]
    | |       +-sbasAlmHealth ::= BIT STRING SIZE(8) [00000000]
    | |       +-sbasAlmXg ::= BIT STRING SIZE(15) [000000000000000]
    | |       +-sbasAlmYg ::= BIT STRING SIZE(15) [000000000000000]
    | |       +-sbasAlmZg ::= BIT STRING SIZE(9) [000000000]
    | |       +-sbasAlmXgdot ::= BIT STRING SIZE(3) [000]
    | |       +-sbasAlmYgDot ::= BIT STRING SIZE(3) [000]
    | |       +-sbasAlmZgDot ::= BIT STRING SIZE(4) [0000]
    | |       +-sbasAlmTo ::= BIT STRING SIZE(11) [00000000000]
    | +-ue-Positioning-GANSS-AddUTCModels ::= SEQUENCE [111] OPTIONAL:Exist
    | | +-utcModel1 ::= SEQUENCE OPTIONAL:Exist
    | | | +-utcA0 ::= BIT STRING SIZE(16) [0000000000000000]
    | | | +-utcA1 ::= BIT STRING SIZE(13) [0000000000000]
    | | | +-utcA2 ::= BIT STRING SIZE(7) [0000000]
    | | | +-utcDeltaTls ::= BIT STRING SIZE(8) [00000000]
    | | | +-utcTot ::= BIT STRING SIZE(16) [0000000000000000]
    | | | +-utcWNot ::= BIT STRING SIZE(13) [0000000000000]
    | | | +-utcWNlsf ::= BIT STRING SIZE(8) [00000000]
    | | | +-utcDN ::= BIT STRING SIZE(4) [0000]
    | | | +-utcDeltaTlsf ::= BIT STRING SIZE(8) [00000000]
    | | +-utcModel2 ::= SEQUENCE [00] OPTIONAL:Exist
    | | | +-nA ::= BIT STRING SIZE(11) [00000000000]
    | | | +-tauC ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
    | | | +-deltaUT1 ::= SEQUENCE OPTIONAL:Omit
    | | | +-kp ::= BIT STRING OPTIONAL:Omit
    | | +-utcModel3 ::= SEQUENCE OPTIONAL:Exist
    | |   +-utcA1wnt ::= BIT STRING SIZE(24) [000000000000000000000000]
    | |   +-utcA0wnt ::= BIT STRING SIZE(32) [00000000000000000000000000000000]
    | |   +-utcTot ::= BIT STRING SIZE(8) [00000000]
    | |   +-utcWNt ::= BIT STRING SIZE(8) [00000000]
    | |   +-utcDeltaTls ::= BIT STRING SIZE(8) [00000000]
    | |   +-utcWNlsf ::= BIT STRING SIZE(8) [00000000]
    | |   +-utcDN ::= BIT STRING SIZE(8) [00000000]
    | |   +-utcDeltaTlsf ::= BIT STRING SIZE(8) [00000000]
    | |   +-utcStandardID ::= BIT STRING SIZE(3) [000]
    | +-ue-Positioning-GANSS-AuxiliaryInfo ::= CHOICE [ganssID1] OPTIONAL:Exist
    |   +-ganssID1 ::= SEQUENCE OF SIZE(1..maxGANSSSat[64]) [1]
    |     +-AuxInfoGANSS-ID1-element ::= SEQUENCE
    |       +-svID ::= INTEGER (0..63) [0]
    |       +-signalsAvailable ::= BIT STRING SIZE(8) [00000000]
    +-nonCriticalExtensions ::= SEQUENCE OPTIONAL:Exist

GPS Related Measurement Control/Report -UMTS

This section shows all the information elements for A-GPS carried by Measurement Control/Measurement Report. Again, this does not have any details for now due to my lack of detailed knowledge.

 

Refer to the following specification for the specific settings for each test cases.

  • 34.108 - 7.5.1.3 Specific message contents
  • 34.108 - 7.5.4.3 Specific message contents
  • 34.108 - 7.5.5.3 Specific message contents

Decoder view of DL-DCCH-Message. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

DL-DCCH-Message ::= SEQUENCE [0]
  +-integrityCheckInfo ::= SEQUENCE OPTIONAL:Omit
  +-message ::= CHOICE [measurementControl]
    +-measurementControl ::= CHOICE [r3]
      +-r3 ::= SEQUENCE [0]
        +-measurementControl-r3 ::= SEQUENCE [000]
        | +-rrc-TransactionIdentifier ::= INTEGER (0..3) [0]
        | +-measurementIdentity ::= INTEGER (1..16) [1]
        | +-measurementCommand ::= CHOICE [setup]
        | | +-setup ::= CHOICE [ue-positioning-Measurement]
        | |   +-ue-positioning-Measurement ::= SEQUENCE [11]
        | |     +-ue-positioning-ReportingQuantity ::= SEQUENCE [11]
        | |     | +-methodType ::= ENUMERATED [ue-Assisted]
        | |     | +-positioningMethod ::= ENUMERATED [otdoa]
        | |     | +-dummy1 ::= ENUMERATED [s1]
        | |     | +-horizontal-Accuracy ::= BIT STRING SIZE(7) [0000000] OPTIONAL:Exist
        | |     | +-gps-TimingOfCellWanted ::= BOOLEAN [FALSE]
        | |     | +-dummy2 ::= BOOLEAN [FALSE]
        | |     | +-additionalAssistanceDataRequest ::= BOOLEAN [FALSE]
        | |     | +-environmentCharacterisation ::= ENUMERATED [possibleHeavyMultipathNLOS] OPTIONAL:Exist
        | |     +-reportCriteria ::= CHOICE [ue-positioning-ReportingCriteria]
        | |     | +-ue-positioning-ReportingCriteria ::= SEQUENCE OF SIZE(1..maxMeasEvent[8]) [1]
        | |     |   +-UE-Positioning-EventParam ::= SEQUENCE
        | |     |     +-reportingAmount ::= ENUMERATED [ra1]
        | |     |     +-reportFirstFix ::= BOOLEAN [FALSE]
        | |     |     +-measurementInterval ::= ENUMERATED [e5]
        | |     |     +-eventSpecificInfo ::= CHOICE [e7a]
        | |     |       +-e7a ::= ENUMERATED [pc10]
        | |     +-ue-positioning-OTDOA-AssistanceData ::= SEQUENCE [00] OPTIONAL:Exist
        | |     | +-ue-positioning-OTDOA-ReferenceCellInfo ::= SEQUENCE OPTIONAL:Omit
        | |     | +-ue-positioning-OTDOA-NeighbourCellList ::= SEQUENCE OF OPTIONAL:Omit
        | |     +-ue-positioning-GPS-AssistanceData ::= SEQUENCE [0000000000] OPTIONAL:Exist
        | |       +-ue-positioning-GPS-ReferenceTime ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-ReferenceLocation ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-DGPS-Corrections ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-NavigationModel ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-IonosphericModel ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-UTC-Model ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-Almanac ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-AcquisitionAssistance ::= SEQUENCE OPTIONAL:Omit
        | |       +-ue-positioning-GPS-Real-timeIntegrity ::= SEQUENCE OF OPTIONAL:Omit
        | |       +-dummy ::= SEQUENCE OPTIONAL:Omit
        | +-measurementReportingMode ::= SEQUENCE OPTIONAL:Omit
        | +-additionalMeasurementList ::= SEQUENCE OF OPTIONAL:Omit
        | +-dpch-CompressedModeStatusInfo ::= SEQUENCE OPTIONAL:Omit
        +-v390nonCriticalExtensions ::= SEQUENCE OPTIONAL:Omit

 

Decoder view of UL-DCCH-Message. The message is defined in 25.331, latest published version v19.0.1 (Release 19). The bracketed value after each field is what the decoder displayed, not a value fixed by the specification.

UL-DCCH-Message ::= SEQUENCE [0]
  +-integrityCheckInfo ::= SEQUENCE OPTIONAL:Omit
  +-message ::= CHOICE [measurementReport]
    +-measurementReport ::= SEQUENCE [00100]
      +-measurementIdentity ::= INTEGER (1..16) [1]
      +-measuredResults ::= CHOICE OPTIONAL:Omit
      +-measuredResultsOnRACH ::= SEQUENCE OPTIONAL:Omit
      +-additionalMeasuredResults ::= SEQUENCE OF SIZE(1..maxAdditionalMeas[4]) [1] OPTIONAL:Exist
      | +-MeasuredResults ::= CHOICE [ue-positioning-MeasuredResults]
      |   +-ue-positioning-MeasuredResults ::= SEQUENCE [1111]
      |     +-ue-positioning-OTDOA-Measurement ::= SEQUENCE [0] OPTIONAL:Exist
      |     | +-sfn ::= INTEGER (0..4095) [0]
      |     | +-modeSpecificInfo ::= CHOICE [fdd]
      |     | | +-fdd ::= SEQUENCE
      |     | |   +-referenceCellIDentity ::= SEQUENCE
      |     | |   | +-primaryScramblingCode ::= INTEGER (0..511) [0]
      |     | |   +-ue-RX-TX-TimeDifferenceType2Info ::= SEQUENCE
      |     | |     +-ue-RX-TX-TimeDifferenceType2 ::= INTEGER (0..8191) [0]
      |     | |     +-neighbourQuality ::= SEQUENCE
      |     | |       +-ue-Positioning-OTDOA-Quality ::= SEQUENCE
      |     | |         +-stdResolution ::= BIT STRING SIZE(2) [00]
      |     | |         +-numberOfOTDOA-Measurements ::= BIT STRING SIZE(3) [000]
      |     | |         +-stdOfOTDOA-Measurements ::= BIT STRING SIZE(5) [00000]
      |     | +-neighbourList ::= SEQUENCE OF OPTIONAL:Omit
      |     +-ue-positioning-PositionEstimateInfo ::= SEQUENCE OPTIONAL:Exist
      |     | +-referenceTime ::= CHOICE [utran-GPSReferenceTimeResult]
      |     | | +-utran-GPSReferenceTimeResult ::= SEQUENCE
      |     | |   +-ue-GPSTimingOfCell ::= SEQUENCE
      |     | |   | +-ms-part ::= INTEGER (0..16383) [0]
      |     | |   | +-ls-part ::= INTEGER (0..4294967295) [0]
      |     | |   +-modeSpecificInfo ::= CHOICE [fdd]
      |     | |   | +-fdd ::= SEQUENCE
      |     | |   |   +-referenceIdentity ::= SEQUENCE
      |     | |   |     +-primaryScramblingCode ::= INTEGER (0..511) [0]
      |     | |   +-sfn ::= INTEGER (0..4095) [0]
      |     | +-positionEstimate ::= CHOICE [ellipsoidPoint]
      |     |   +-ellipsoidPoint ::= SEQUENCE
      |     |     +-latitudeSign ::= ENUMERATED [north]
      |     |     +-latitude ::= INTEGER (0..8388607) [0]
      |     |     +-longitude ::= INTEGER (-8388608..8388607) [-8388608]
      |     +-ue-positioning-GPS-Measurement ::= SEQUENCE OPTIONAL:Exist
      |     | +-referenceTime ::= CHOICE [utran-GPSReferenceTimeResult]
      |     | | +-utran-GPSReferenceTimeResult ::= SEQUENCE
      |     | |   +-ue-GPSTimingOfCell ::= SEQUENCE
      |     | |   | +-ms-part ::= INTEGER (0..16383) [0]
      |     | |   | +-ls-part ::= INTEGER (0..4294967295) [0]
      |     | |   +-modeSpecificInfo ::= CHOICE [fdd]
      |     | |   | +-fdd ::= SEQUENCE
      |     | |   |   +-referenceIdentity ::= SEQUENCE
      |     | |   |     +-primaryScramblingCode ::= INTEGER (0..511) [0]
      |     | |   +-sfn ::= INTEGER (0..4095) [0]
      |     | +-gps-MeasurementParamList ::= SEQUENCE OF SIZE(1..maxSat[16]) [1]
      |     |   +-GPS-MeasurementParam ::= SEQUENCE
      |     |     +-satelliteID ::= INTEGER (0..63) [0]
      |     |     +-c-N0 ::= INTEGER (0..63) [0]
      |     |     +-doppler ::= INTEGER (-32768..32768) [-32768]
      |     |     +-wholeGPS-Chips ::= INTEGER (0..1022) [0]
      |     |     +-fractionalGPS-Chips ::= INTEGER (0..1023) [0]
      |     |     +-multipathIndicator ::= ENUMERATED [nm]
      |     |     +-pseudorangeRMS-Error ::= INTEGER (0..63) [0]
      |     +-ue-positioning-Error ::= SEQUENCE [0] OPTIONAL:Exist
      |       +-errorReason ::= ENUMERATED [notEnoughOTDOA-Cells]
      |       +-ue-positioning-GPS-additionalAssistanceDataRequest ::= SEQUENCE OPTIONAL:Omit
      +-eventResults ::= CHOICE OPTIONAL:Omit
      +-v390nonCriticalExtensions ::= SEQUENCE OPTIONAL:Omit

A-GPS Test Setup

Following is the A-GPS test equipment configuration defined by 3GPP. Overall structure is very similar to typical protocol/RF conformance test except that one additional component (GSS) is added.

 

The GSS is the GPS System Simulator, and it produces the satellite signals a real receiver would otherwise pick up from the sky. Everything else is the ordinary conformance setup : the SS drives the UTRAN link on TX and RX, and the UE under test sits at the far end.

 

What changes between the two drawings is where the GSS signal is injected, and that follows from how many antenna ports the UE has. 34.171 Figure A.1 covers a UE with one combined antenna, and 34.171 Figure A.2 covers a UE with separate ports.

 

34.171 Figure A.1, A-GPS test connection for a UE with a combined UTRAN and GPS antenna

Figure 4. 34.171 Figure A.1, the connection for a UE with a combined UTRAN and GPS antenna. The GSS output is summed with the SS downlink before the circulator, so both signals reach the UE on a single port.

 

34.171 Figure A.2, A-GPS test connection for a UE with separate UTRAN and GPS antennas

Figure 5. 34.171 Figure A.2, the connection for a UE with separate UTRAN and GPS antennas. The GSS feeds the GPS receive port directly, and the UTRAN path never carries it.

 

  • The summing element is the whole difference : in Figure 4 a summing junction combines Ior from the SS with the GSS output, and the combined signal passes through the circulator to one UE antenna.
  • Figure 5 has no summing element : the SS path runs through its own circulator to the UTRAN RX/TX port, and a separate line takes the GSS straight to the GPS RX port.
  • The level labels sit at three different points : Ior on the SS transmit line, the hat Ior after the point where the GSS signal joins, and Io at the UE antenna connector. They are not interchangeable when you set levels.
  • Which drawing applies is a property of the UE : a UE with a single antenna port has to be tested with the summing configuration, because there is nowhere else to inject the GSS signal.

Generic Protocol Sequence for A-GPS Test

There are three major types of protocol sequence defined in 34.108 7.5 Test procedures for A-GPS Performance requirements testing. The each of A-GPS test cases defined by 34.171 uses one of these protocol sequence. My recommendation is always to understand the overal protocol sequence with a certain level of details for any test cases. It will help you not only understand the test purpose/method but also troubleshooting those test cases.

 

<< Normal UE based A-GPS procedure >>

 

Read the Direction column first. An arrow pointing left is a message from the SS to the UE, and an arrow pointing right is the UE answering.

 

34.108 step table for the normal UE based A-GPS test procedure

Figure 6. The normal UE based sequence from 34.108. Three MEASUREMENT CONTROL messages build the assistance up in stages, the UE answers with a position estimate, and the whole block then repeats from a clean state for the next test instance.

  • Step 1 resets the UE before every instance : RESET UE POSITIONING STORED INFORMATION clears anything cached, so each measurement starts cold. Steps 6 and 11 repeat it.
  • The assistance arrives in three messages rather than one : Setup carries the navigation model for satellites 1 to 5. Modify then adds satellites 6 to 9 and the ionospheric model. A second Modify carries the reporting criterion, the GPS reference time and the reference position.
  • Only the third message asks for anything back : the first two are marked No Reporting, so the UE stays silent until the periodical reporting criterion arrives.
  • The answer is a position estimate : step 5 is a MEASUREMENT REPORT carrying Position Estimate, and that is what makes this the UE based case.

 

<< UE based A-GPS procedure for moving scenario and periodic update test case >>

 

The moving scenario needs a different shape, because the UE has to keep reporting while it travels rather than answer once and stop.

 

34.108 step table for the UE based A-GPS moving scenario and periodic update procedure

Figure 7. The moving scenario variant. The setup is the same as Figure 6, but it happens only once, and the UE then reports repeatedly as it moves along the trajectory.

  • One reset, one setup, many reports : steps 1 to 4 match the normal sequence, and steps 5 to n are then a continuous run of MEASUREMENT REPORT messages.
  • The satellite sets lose their instance number : the normal sequence tags each navigation model with a test instance index, and here there is only one instance to tag.
  • The note at the bottom matters when you debug this : it says the UE may report error messages at step 5 until it has managed to acquire a position estimate. Early error reports are expected rather than a failure.

 

<< Normal UE assisted GPS procedure >>

 

The third sequence is the UE assisted one, and it is worth comparing step by step against Figure 6. The message names are nearly the same, and what they carry is not.

 

34.108 step table for the normal UE assisted GPS test procedure

Figure 8. The UE assisted sequence. The UE asks for assistance data before it is given any, and it returns raw measurements instead of a position.

  • Here the UE speaks first : step 2 sets up periodical reporting with only the GPS reference time, and step 3 is a MEASUREMENT REPORT carrying an Additional Assistance Data Request.
  • The assistance arrives after the request : step 4 carries assistance data for satellites 1 to 9 in a single message, and step 5 re-applies the reporting criterion.
  • The report carries GPS Measured Results : step 6 returns measurements rather than a position estimate. The network computes the fix, and that is the whole difference from Figure 6.
  • One test instance costs six steps here against five in Figure 6 : the extra step is the request and response round trip for the assistance data.
  • Every sequence opens by resetting stored information : without that the UE could answer out of cached assistance, and the measurement would prove nothing.
  • The closing message tells you which mode you are in : Position Estimate for UE based, GPS Measured Results for UE assisted.
  • Assistance is built up with Setup and then Modify : the first message creates the measurement, and the later ones change it without tearing it down.

GPS/A-GPS Test Cases

Following is the test case list from 3GPP TS 34.171. Each row is a separate certification test, and each one stresses a different property of the receiver. Two of them check sensitivity, one checks accuracy under ideal conditions, and the rest push the receiver with unequal signal levels, with reflections and with motion.

 

Section

Test Case Name

5.2.1

Sensitivity Coarse Time Assistance

5.2.2

Sensitivity Fine Time Assistance

5.3

Nominal Accuracy

5.4

Dynamic Range

5.5

Multi-path Performance

5.6

Moving Scenario and Periodic Update Performance

 

5.2.1 Sensitivity Coarse Time Assistance

: This test case is to check how low GPS signal a UE can detect and come up with the correct location estimate. UE should detect at least GPS signal with -147 dBm.

 

5.2.2 Sensitivity Fine Time Assistance

: This is almost same as 5.2.1 except that Network send one additional information "GPS Fine Time assistance error range".

 

5.3 Nominal Accuracy

: This test is to check how much the location estimate accuracy can be when UE is getting ideal (very high quality) GPS signal. Protocol side setup is almost the same as 5.2.1 but GPS signal is -130 dBm (almost 17 dB higher than 5.2.1 case). So the location estimate tolerance is much narrower than 5.2.1 (In 5.2.1, the required location estimate tolerance 100 m, but in this test case the estimate tolerance is only 30 m)

 

5.4 Dynamic Range

: GPS reciever has to receive signals from multiple satellite (4 satellite for normal operation). In many cases, the signal strength (quality) from each of those satellite are not same for various reasons. So the reciever has to be able to tolerate those signal strength differences from multiple satellite. This test cases is to check how well the reciever can detect the signals with wide strength differences. In the test, the strongest signal is -129 dBm and the weakest signal is -147 dBm.

 

5.5 Multi path Performance

: This test case is to test how well UE can detect the signal under the condition that some of the satellite signal get reflected in the path.

 

5.6 Moving Scenario and Periodic Update Performance

: This test case is to test how much accurately a UE can estimate the location in the moving condition where the UE is moving along the path as defined below.

 

34.171 Table 5.6.3 and Figure 5.6.1, the rectangular trajectory for the moving scenario test case

Figure 9. 34.171 Table 5.6.3 and Figure 5.6.1, the trajectory for test case 5.6. The UE is driven round a 1440 m by 940 m rectangle with rounded corners, and the speed changes on every straight.

  • The corners are rounded to a 20 m radius : a square corner would demand an instant change of direction, which no vehicle performs and no simulator should have to model.
  • Segments l11, l15, l21 and l25 are the slow ones : 20 m each at 25 km/h, per Table 5.6.3. These are the corner approaches.
  • Segments l12, l14, l22 and l24 are the ramps : 250 m each, taken at 25 to 100 km/h going one way and 100 to 25 km/h coming back.
  • Segments l13 and l23 are the constant speed straights : 400 m and 900 m, both at 100 km/h. They are the two long sides of the rectangle.

What is LBS ?

If you read this page from the beginning up to this point, you would think the technology for locating your position is much more complicated than you may think. Yes.. it is complicated. As a matter of fact, it is even more complicated than described in this page. But the outcome of all the technology is disappointingly simple. It is just the two numbers (coordinate on Earth) as shown below. This is the outcome of 'Global Positioning System'.

 

Handheld GPS receiver displaying a latitude and longitude coordinate

Figure 10. The entire output of the positioning system : one latitude and one longitude. The receiver here reads N 25° 07.450' and W 080° 17.000', and on its own that pair means nothing to a person.

 

Even though these two numbers are obtained by such a super high technology, the number itself does not mean much to you.

To make these numbers meaningful for you, you need specail SERVICEs. For example, if you combine the number (your position coordinates) on to a map service as follows, then those number become much more meaningful to you.

 

Phone map application showing the current position marked on a street map

Figure 11. The same two numbers placed on a street map. Nothing about the position became more accurate. What changed is that a person can now act on it.

  • The red ring marks the reported position : it is drawn over the blue dot and the accuracy circle around it, near W 14th Avenue and Santa Fe Drive.

 

This (GPS location data + Geographical Map) would be the simplest service you can get. There can be more useful service you can implement. What if my device can automatically locate my position and display all the nearby Starbucks as shown below ? (The map below is captured from GoogleMap and this is not combined with GPS. I manually typed in a location. I put this map just to show you a possible result of "GPS location data + some service").

 

Google Maps showing lettered markers for nearby search results around a typed location

Figure 12. Location combined with a search. The lettered markers are nearby results around the point the red arrow indicates, and this is the shape that almost every location based service takes.

  • The markers A to J are the service, not the positioning : this map was captured from a typed location rather than a GPS fix, which is exactly the point. The service layer does not care where the two numbers came from.

 

As I described here, you can combine your location data (the two numbers provided by GPS system) with some other information (we call this a 'service') to provide you more useful (meaningful) information. This kind of service is called 'LBS(Location Based Service)'.

 

So my definition of LBS is 'LBS is any additional information service to make your location data (THE two number) more meaningful to you'.

 

Here goes a couple of other definitions for LBS that I captured from internet. Of course, you can have your own definition and I encourage you to make your own definition for anything. It would be one of the best way to learn new things.

 

LBS definition from Wikipedia

A Location-Based Service (LBS) is an information or entertainment service, accessible with mobile devices through the mobile network and utilizing the ability to make use of the geographical position of the mobile device

LBS can be used in a variety of contexts, such as health, indoor object search, entertainment, work, personal life, etc.

LBS include services to identify a location of a person or object, such as discovering the nearest banking cash machine or the whereabouts of a friend or employee. LBS include parcel tracking and vehicle tracking services. LBS can include mobile commerce when taking the form of coupons or advertising directed at customers based on their current location. They include personalized weather services and even location-based games.

 

LBS definition from technowiz

A service provided to a subscriber based on the current geographic location of the MS. Location-based services (LBS) provides service providers the means to deliver personalized services to its subscribers

YouTube

[1] Understanding GPS Links and Codes (Rohde Schwarz)

[2] Special Topics - GPS (1 of 100) The GPS Constellation

[3] Special Topics - GPS (2 of 100) Sub-Geosynchronous Orbit

[4] Special Topics - GPS (4 of 100) Satellite Transmission Channels L1 and L2

[5] Special Topics - GPS (5 of 100) Satellite Transmission Signals on L1 and L2

[6] Special Topics - GPS (6 of 100) Triangulation With Satellites

[7] Special Topics - GPS (7 of 100) The C/A Code (Coarse Acquisition Code)

[8] Special Topics - GPS (8 of 100) C/A PRN Code Generation

[9] Special Topics - GPS (9 of 100) C/A PRN Code Generation: Polynomial 1

[10] Special Topics - GPS (10 of 100) C/A PRN Code Generation: Polynomial 2   

[11] Special Topics - GPS (11 of 100) C/A PRN Code Generation: Polynomials 1&2 Combined

[12] Special Topics - GPS (12 of 100) What is the Navigation Message?

[13] Special Topics - GPS (13 of 100) The Navigation Message is Added to the C/A Code

[14] Special Topics - GPS (14 of 100) The BPSK Modulation (C/A Code + NAV Code) for L1

[15] Special Topics - GPS (15 of 100) The Navigation Message Frame Structure

[16] Special Topics - GPS (16 of 100) The Navigation Message Subframe Structure

[17] Special Topics - GPS (18 of 100) The Navigation Message Subframe Data Structure

[18] GPS Animation Video

[19] Adventures in Science: How GPS Works

[20] 1.8 - Navigation Signals   

[21] 1.7 - Navigation Messages

 

Reference

These are the documents this page is built on. Each entry names the clause that matters, so you can go straight to it. The figures above also carry their own document and figure numbers, and those are the fastest strings to search for.

  • 34.171 - UE conformance specification; Assisted Global Positioning System (A-GPS). The test case list comes from clause 5, the trajectory of Figure 9 from clause 5.6, and the connection diagrams of Figure 4 and Figure 5 from Annex A.
  • 34.108 - Common test environments for UE conformance testing. Clause 7.5 carries the three protocol sequences shown in Figure 6, Figure 7 and Figure 8, and clause 10.2 the information elements required for normal UE based testing.
  • 25.331 - UTRAN Radio Resource Control protocol specification, latest published version v19.0.1. Clause 10.2.48.8.18 defines System Information Block type 15, which is the message the decoder tiles above show.
  • 34.123 - UE conformance specification for protocol, named in the protocol conformance column of the test specification table.
  • 51.010 - Mobile station conformance specification for GSM, named in the 2G row of the same table.
  • OMA ETS-SUPL-V1 - the SUPL enabler test specification named in the SUPL row of that table. This one is published by OMA rather than 3GPP.