[PATCH v2 5/5] loc: add definitions for more messages

Aleksander Morgado aleksander at aleksander.es
Sun Feb 11 20:06:32 UTC 2018


On Sun, Feb 11, 2018 at 7:03 PM, Thomas Weißschuh <thomas at t-8ch.de> wrote:
> Hi Aleksander,
>
> On Sun, 2018-02-11T15:28+0100, Aleksander Morgado wrote:
>> One comment regarding versions:
>>
>> The new methods in API should refer to the next stable version, i.e.
>> "Since: 1.22"
>
>> In the JSON database:
>>   * the "since" entries in the new messages and TLVs should say 1.22
>> (our version)
>>   * the "version" entries in the new messages should refer to the QMI
>> version where these were introduced. If unknown, ignore the field.
>>
>> More comments inline
>
> Will do.
>
> I was not aware of the rule that TLV < 0x10 should be mandatory.
> Maybe we could express the default logic in the code generator?
>

Not that I've seen that rule in written anywhere... I just got that
impression from all the other messages I've encoded myself :)

Maybe we could have a warning issued by the generator if it finds some
inconsitencies with that rule, but I wouldn't hardcode the logic to be
applied automatically... unless we see it in written somewhere! :)

>>
>> On Fri, Feb 9, 2018 at 10:07 PM, Thomas Weißschuh <thomas at t-8ch.de> wrote:
>> > ---
>> >  build-aux/qmi-codegen/utils.py                     |   4 +-
>> >  data/qmi-common.json                               |  20 +-
>> >  data/qmi-service-loc.json                          | 335 +++++++++++++++++-
>> >  .../libqmi-glib/libqmi-glib-common.sections        |  74 ++++
>> >  docs/reference/libqmi-glib/libqmi-glib-docs.xml    |   8 +
>> >  src/libqmi-glib/Makefile.am                        |   4 +-
>> >  src/libqmi-glib/generated/Makefile.am              |   4 +-
>> >  src/libqmi-glib/libqmi-glib.h                      |   1 +
>> >  src/libqmi-glib/qmi-enums-loc.h                    | 376 +++++++++++++++++++++
>> >  src/libqmi-glib/qmi-flags64-loc.h                  | 103 ++++++
>> >  10 files changed, 918 insertions(+), 11 deletions(-)
>> >  create mode 100644 src/libqmi-glib/qmi-flags64-loc.h
>> >
>> > diff --git a/build-aux/qmi-codegen/utils.py b/build-aux/qmi-codegen/utils.py
>> > index 5e6fee7..52cf615 100644
>> > --- a/build-aux/qmi-codegen/utils.py
>> > +++ b/build-aux/qmi-codegen/utils.py
>> > @@ -78,8 +78,8 @@ def add_header_start(f, output_name, service):
>> >      else:
>> >          template += (
>> >              "#include \"qmi-enums-private.h\"\n")
>> > -    # DMS and NAS have flags64
>> > -    if service == 'DMS' or service == 'NAS':
>> > +    # DMS, NAS and LOC have flags64
>> > +    if service in ('DMS', 'NAS', 'LOC'):
>> >          template += (
>> >              "#include \"qmi-flags64-${service}.h\"\n")
>> >      template += (
>> > diff --git a/data/qmi-common.json b/data/qmi-common.json
>> > index 7b81360..3f6079c 100644
>> > --- a/data/qmi-common.json
>> > +++ b/data/qmi-common.json
>> > @@ -503,6 +503,24 @@
>> >                                { "name"          : "Long Name",
>> >                                  "format"        : "string" },
>> >                                { "name"          : "Short Name",
>> > -                                "format"        : "string" } ] }
>> > +                                "format"        : "string" } ] },
>> > +
>> > +  { "common-ref"    : "LOC Indication Status",
>> > +    "name"          : "Indication Status",
>> > +    "fullname"      : "Qmi LOC Message Status",
>> > +    "id"            : "0x01",
>> > +    "mandatory"     : "yes",
>> > +    "type"          : "TLV",
>> > +    "format"        : "guint32",
>> > +    "public-format" : "QmiLocIndicationStatus"
>> > +  },
>> > +  { "common-ref"    : "LOC Fix Recurrence Type",
>> > +    "name"          : "Fix Recurrence Type",
>> > +    "id"            : "0x10",
>> > +    "mandatory"     : "no",
>> > +    "type"          : "TLV",
>> > +    "since"         : "1.0",
>> > +    "format"        : "guint32",
>> > +    "public-format" : "QmiLocFixRecurrenceType" }
>> >
>>
>> I see that LOC Indication Status is being used only in one message?
>> Don't think we should define it in the common file.
>
> LOC Indication type is used by all the indications triggered by dedicated
> requests.
>
> Docs in gobi-api:
>
>         Structure to describe TLV 0x01 for QMI LOC, the status
>         It is common for QMI LOC indications above 0x0032
>

Oh, so multiple indications will have it but we're only defining it
once for now?

>> >  ]
>> > diff --git a/data/qmi-service-loc.json b/data/qmi-service-loc.json
>> > index 235e82f..c5b6cda 100644
>> > --- a/data/qmi-service-loc.json
>> > +++ b/data/qmi-service-loc.json
>> > @@ -17,6 +17,22 @@
>> >    {  "name"    : "QMI Indication LOC",
>> >       "type"    : "Indication-ID-Enum" },
>> >
>> > +  {  "name"    : "Register Events",
>> > +     "type"    : "Message",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x0021",
>> > +     "version" : "1.0",
>> > +     "since"   : "1.20",
>> > +     "input"   : [ { "name"          : "Event Registration Mask",
>> > +                     "id"            : "0x01",
>> > +                     "mandatory"     : "yes",
>> > +                     "type"          : "TLV",
>> > +                     "since"         : "1.20",
>> > +                     "format"        : "guint64",
>> > +                     "public-format" : "QmiLocEventRegistrationFlag"
>> > +     } ],
>> > +     "output"  : [ { "common-ref" : "Operation Result" } ] },
>> > +
>> >    // *********************************************************************************
>> >    {  "name"    : "Start",
>> >       "type"    : "Message",
>> > @@ -26,17 +42,24 @@
>> >       "since"   : "1.20",
>> >       "input"   : [ { "name"          : "Session ID",
>> >                       "id"            : "0x01",
>> > -                     "mandatory"     : "no",
>> > +                     "mandatory"     : "yes",
>> >                       "type"          : "TLV",
>> >                       "since"         : "1.20",
>> >                       "format"        : "guint8" },
>> > +                   { "common-ref"    : "LOC Fix Recurrence Type" },
>> >                     { "name"          : "Intermediate Report State",
>> >                       "id"            : "0x12",
>> >                       "mandatory"     : "no",
>> >                       "type"          : "TLV",
>> >                       "since"         : "1.0",
>> >                       "format"        : "guint32",
>> > -                     "public-format" : "QmiLocIntermediateReportState" } ],
>> > +                     "public-format" : "QmiLocIntermediateReportState" },
>> > +                   { "name"          : "Minimum Interval between Position Reports",
>> > +                     "id"            : "0x13",
>> > +                     "mandatory"     : "no",
>> > +                     "type"          : "TLV",
>> > +                     "since"         : "1.0",
>> > +                     "format"        : "guint32" } ],
>> >      "output"  : [ { "common-ref" : "Operation Result" } ] },
>> >
>> >    // *********************************************************************************
>> > @@ -62,11 +85,315 @@
>> >       "id"      : "0x0024",
>> >       "since"   : "1.0",
>> >       "version" : "1.20",
>> > -     "output"  : [ { "name"      : "Session ID",
>> > +     "output"  : [ { "name"          : "Session Status",
>> > +                     "id"            : "0x01",
>> > +                     "mandatory"     : "yes",
>> > +                     "type"          : "TLV",
>> > +                     "since"         : "1.0",
>> > +                     "format"        : "guint32",
>> > +                     "public-format" : "QmiLocSessionStatus" },
>> > +                   { "name"      : "Session ID",
>> >                       "id"        : "0x02",
>> >                       "mandatory" : "no",
>>
>> Oh, not part of the patch, but this one shouldn't be mandatory (<0x10)?
>>
>> >                       "type"      : "TLV",
>> >                       "since"     : "1.0",
>> > -                     "format"    : "guint8" } ] }
>> > +                     "format"    : "guint8" },
>> > +                   { "name"      : "Latitude",
>> > +                     "id"        : "0x10",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gdouble" },
>> > +                   { "name"      : "Longitude",
>> > +                     "id"        : "0x11",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gdouble" },
>> > +                   { "name"      : "Horizontal Uncertainty Circular",
>> > +                     "id"        : "0x12",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Horizontal Uncertainty Elliptical Minor",
>> > +                     "id"        : "0x13",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Horizontal Uncertainty Elliptical Major",
>> > +                     "id"        : "0x14",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Horizontal Uncertainty Elliptical Azimuth",
>> > +                     "id"        : "0x15",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Horizontal Confidence",
>> > +                     "id"        : "0x16",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint8" },
>> > +                   { "name"      : "Horizontal Reliability",
>> > +                     "id"        : "0x17",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint32",
>> > +                     "public-format" : "QmiLocReliability" },
>> > +                   { "name"      : "Horizontal Speed",
>> > +                     "id"        : "0x18",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Speed Uncertainty",
>> > +                     "id"        : "0x19",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Altitude from Ellipsoid",
>> > +                     "id"        : "0x1A",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Altitude from Sealevel",
>> > +                     "id"        : "0x1B",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Vertical Uncertainty",
>> > +                     "id"        : "0x1C",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Vertical Confidence",
>> > +                     "id"        : "0x1D",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint8" },
>> > +                   { "name"      : "Vertical Reliability",
>> > +                     "id"        : "0x1E",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint32" },
>> > +                   { "name"      : "Vertical Speed",
>> > +                     "id"        : "0x20",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Magnetic Deviation",
>> > +                     "id"        : "0x22",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gfloat" },
>> > +                   { "name"      : "Technology Used",
>> > +                     "id"        : "0x23",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint32",
>> > +                     "public-format" : "QmiLocTechnologyUsed" },
>> > +                   { "name"      : "Dilution of Precision",
>> > +                     "id"        : "0x24",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "struct",
>> > +                     "contents"  : [
>> > +                       { "name"   : "Position Dilution of Precision",
>> > +                         "format" : "gfloat" },
>> > +                       { "name"   : "Horizontal Dilution of Precision",
>> > +                         "format" : "gfloat" },
>> > +                       { "name"   : "Vertical Dilution of Precision",
>> > +                         "format" : "gfloat" } ] },
>> > +                   { "name"      : "UTC Timestamp",
>> > +                     "id"        : "0x25",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint64" },
>> > +                   { "name"      : "Leap Seconds",
>> > +                     "id"        : "0x26",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint8" },
>> > +                   { "name"      : "GPS Time",
>> > +                     "id"        : "0x27",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "struct",
>> > +                     "contents"  : [
>> > +                       { "name"   : "GPS Weeks",
>> > +                         "format" : "guint16" },
>> > +                       { "name"   : "GPS Time of Week Milliseconds",
>> > +                         "format" : "guint32" } ] },
>> > +                   { "name"      : "Time Source",
>> > +                     "id"        : "0x29",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint32",
>> > +                     "public-format" : "QmiLocTimeSource" },
>> > +                   { "name"      : "Sensor Data Usage",
>> > +                     "id"        : "0x2A",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint64",
>> > +                     "public-format" : "QmiLocSensorDataUsage" },
>> > +                   { "name"      : "Session Fix Count",
>> > +                     "id"        : "0x2B",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "guint32" },
>> > +                   { "name"      : "Satellites Used",
>> > +                     "id"        : "0x2C",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "struct",
>> > +                     "format" : "array",
>> > +                     "array-element": { "format" : "guint16" } },
>> > +                   { "name"      : "Altitude Assumed",
>> > +                     "id"        : "0x2D",
>> > +                     "mandatory" : "no",
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gint8" }
>> > +     ] },
>> > +  {  "name"    : "NMEA Indication",
>> > +     "type"    : "Indication",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x0026",
>> > +     "since"   : "1.0",
>> > +     "version" : "1.20",
>> > +     "output"  : [ { "name": "NMEA String",
>> > +                     "id"        : "0x01",
>> > +                     "mandatory" : "no",
>>
>> I believe this one should be mandatory (<0x10)
>>
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "string" } ] },
>> > +  {  "name"    : "Engine State",
>> > +     "type"    : "Indication",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x002B",
>> > +     "since"   : "1.0",
>> > +     "version" : "1.20",
>> > +     "output"  : [ { "name": "Engine State",
>> > +                     "id"        : "0x01",
>> > +                     "mandatory" : "no",
>>
>> I believe this one should be mandatory (<0x10)
>>
>>
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format"    : "gint32",
>> > +                     "public-format"    : "QmiLocEngineState" } ] },
>> > +  {  "name"    : "Fix Recurrence Type",
>> > +     "type"    : "Indication",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x002C",
>> > +     "since"   : "1.0",
>> > +     "version" : "1.20",
>> > +     "output"  : [{ "common-ref"    : "LOC Fix Recurrence Type" } ] },
>> > +  {  "name"    : "GNSS Satellite Info",
>> > +     "type"    : "Indication",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x0025",
>> > +     "since"   : "1.0",
>> > +     "version" : "1.20",
>> > +     "output"  : [ {
>> > +                     "name": "Altitude Source",
>> > +                     "id"        : "0x01",
>> > +                     "mandatory" : "no",
>>
>> I believe this one should be mandatory (<0x10)
>>
>>
>> > +                     "type"      : "TLV",
>> > +                     "since"     : "1.0",
>> > +                     "format": "guint8",
>> > +                     "public-format": "QmiLocAltitudeAssumed" },
>> > +             { "name"             : "Satellite Info",
>> > +               "id"               : "0x10",
>> > +               "mandatory"        : "no",
>> > +               "type"             : "TLV",
>> > +               "since"            : "1.0",
>> > +               "format"           : "array",
>> > +               "array-element"  : {
>> > +                       "name": "Element",
>> > +                       "format": "struct",
>> > +                       "contents": [
>> > +                               { "name"   : "Valid Information",
>> > +                                 "format" : "guint32",
>> > +                                 "public-format": "QmiLocSatelliteValidInformation" },
>> > +                               { "name"   : "System",
>> > +                                 "format" : "guint32",
>> > +                                 "public-format": "QmiLocSystem" },
>> > +                               { "name"   : "GNSS Satellite ID",
>> > +                                 "format" : "guint16" },
>> > +                               { "name"   : "Health Status",
>> > +                                 "format" : "guint8",
>> > +                                 "public-format" : "QmiLocHealthStatus" },
>> > +                               { "name"   : "Satellite Status",
>> > +                                 "format" : "guint32",
>> > +                                 "public-format" : "QmiLocSatelliteStatus" },
>> > +                               { "name"   : "Navigation Data",
>> > +                                 "format" : "guint8",
>> > +                                 "public-format": "QmiLocNavigationData"},
>> > +                               { "name"   : "Elevation Degrees",
>> > +                                 "format" : "gfloat" },
>> > +                               { "name"   : "Azimuth Degrees",
>> > +                                 "format" : "gfloat" },
>> > +                               { "name"   : "Signal to Noise Ratio BHz",
>> > +                                 "format" : "gfloat" } ] } } ] },
>> > +  {  "name"    : "Set Operation Mode",
>> > +     "type"    : "Message",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x004A",
>> > +     "version" : "1.0",
>> > +     "since"   : "1.20",
>> > +     "input"   : [ { "name"          : "Operation Mode",
>> > +                     "id"            : "0x01",
>> > +                     "mandatory"     : "yes",
>> > +                     "type"          : "TLV",
>> > +                     "since"         : "1.20",
>> > +                     "format"        : "guint32",
>> > +                     "public-format" : "QmiLocOperationMode"
>> > +     } ],
>> > +     "output"  : [ { "common-ref" : "Operation Result" } ] },
>> > +  {  "name"    : "Get Operation Mode",
>> > +     "type"    : "Message",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x004B",
>> > +     "version" : "1.0",
>> > +     "since"   : "1.20",
>> > +     "input"   : [],
>> > +     "output"  : [ { "common-ref" : "Operation Result" } ] },
>> >
>> > +  {  "name"    : "Get Operation Mode",
>> > +     "type"    : "Indication",
>> > +     "service" : "LOC",
>> > +     "id"      : "0x004B",
>> > +     "version" : "1.0",
>> > +     "since"   : "1.20",
>> > +     "output"  : [ { "common-ref" : "LOC Indication Status" },
>> > +                   { "name"          : "Operation Mode",
>> > +                     "id"            : "0x10",
>> > +                     "mandatory"     : "yes",
>>
>> I believe this one should be optional (>=0x10)
>>
>> > +                     "type"          : "TLV",
>> > +                     "since"         : "1.20",
>> > +                     "format"        : "guint32",
>> > +                     "public-format" : "QmiLocOperationMode" } ] }
>> >  ]
>> > diff --git a/docs/reference/libqmi-glib/libqmi-glib-common.sections b/docs/reference/libqmi-glib/libqmi-glib-common.sections
>> > index 56f8313..719ce82 100644
>> > --- a/docs/reference/libqmi-glib/libqmi-glib-common.sections
>> > +++ b/docs/reference/libqmi-glib/libqmi-glib-common.sections
>> > @@ -1070,13 +1070,87 @@ qmi_voice_wcdma_amr_status_get_type
>> >  <SECTION>
>> >  <FILE>qmi-enums-loc</FILE>
>> >  QmiLocIntermediateReportState
>> > +QmiLocEventRegistrationFlag
>> > +QmiLocFixRecurrenceType
>> > +QmiLocOperationMode
>> > +QmiLocEngineState
>> > +QmiLocAltitudeAssumed
>> > +QmiLocSatelliteValidInformation
>> > +QmiLocSystem
>> > +QmiLocHealthStatus
>> > +QmiLocSatelliteStatus
>> > +QmiLocNavigationData
>> > +QmiLocIndicationStatus
>> > +QmiLocSensorDataUsage
>> > +QmiLocTimeSource
>> > +QmiLocTechnologyUsed
>> > +QmiLocReliability
>> > +QmiLocSessionStatus
>> >  <SUBSECTION Methods>
>> >  qmi_loc_intermediate_report_state_get_string
>> > +qmi_loc_fix_recurrence_type_get_string
>> > +qmi_loc_operation_mode_get_string
>> > +qmi_loc_altitude_assumed_get_string
>> > +qmi_loc_engine_state_get_string
>> > +qmi_loc_health_status_get_string
>> > +qmi_loc_indication_status_get_string
>> > +qmi_loc_navigation_data_get_string
>> > +qmi_loc_reliability_get_string
>> > +qmi_loc_satellite_status_get_string
>> > +qmi_loc_satellite_valid_information_get_string
>> > +qmi_loc_session_status_get_string
>> > +qmi_loc_system_get_string
>> > +qmi_loc_technology_used_get_string
>> > +qmi_loc_time_source_get_string
>> >  <SUBSECTION Private>
>> >  qmi_loc_intermediate_report_state_build_string_from_mask
>> > +qmi_loc_operation_mode_build_string_from_mask
>> > +qmi_loc_fix_recurrence_type_build_string_from_mask
>> > +qmi_loc_event_registration_flag_build_string_from_mask
>> > +qmi_loc_altitude_assumed_build_string_from_mask
>> > +qmi_loc_engine_state_build_string_from_mask
>> > +qmi_loc_health_status_build_string_from_mask
>> > +qmi_loc_indication_status_build_string_from_mask
>> > +qmi_loc_navigation_data_build_string_from_mask
>> > +qmi_loc_reliability_build_string_from_mask
>> > +qmi_loc_satellite_status_build_string_from_mask
>> > +qmi_loc_satellite_valid_information_build_string_from_mask
>> > +qmi_loc_sensor_data_usage_build_string_from_mask
>> > +qmi_loc_session_status_build_string_from_mask
>> > +qmi_loc_system_build_string_from_mask
>> > +qmi_loc_technology_used_build_string_from_mask
>> > +qmi_loc_time_source_build_string_from_mask
>> >  <SUBSECTION Standard>
>> >  QMI_TYPE_LOC_INTERMEDIATE_REPORT_STATE
>> > +QMI_TYPE_LOC_FIX_RECURRENCE_TYPE
>> > +QMI_TYPE_LOC_OPERATION_MODE
>> > +QMI_TYPE_LOC_ALTITUDE_ASSUMED
>> > +QMI_TYPE_LOC_ENGINE_STATE
>> > +QMI_TYPE_LOC_HEALTH_STATUS
>> > +QMI_TYPE_LOC_INDICATION_STATUS
>> > +QMI_TYPE_LOC_NAVIGATION_DATA
>> > +QMI_TYPE_LOC_RELIABILITY
>> > +QMI_TYPE_LOC_SATELLITE_STATUS
>> > +QMI_TYPE_LOC_SATELLITE_VALID_INFORMATION
>> > +QMI_TYPE_LOC_SESSION_STATUS
>> > +QMI_TYPE_LOC_SYSTEM
>> > +QMI_TYPE_LOC_TECHNOLOGY_USED
>> > +QMI_TYPE_LOC_TIME_SOURCE
>> >  qmi_loc_intermediate_report_state_get_type
>> > +qmi_loc_fix_recurrence_type_get_type
>> > +qmi_loc_operation_mode_get_type
>> > +qmi_loc_altitude_assumed_get_type
>> > +qmi_loc_engine_state_get_type
>> > +qmi_loc_health_status_get_type
>> > +qmi_loc_indication_status_get_type
>> > +qmi_loc_navigation_data_get_type
>> > +qmi_loc_reliability_get_type
>> > +qmi_loc_satellite_status_get_type
>> > +qmi_loc_satellite_valid_information_get_type
>> > +qmi_loc_session_status_get_type
>> > +qmi_loc_system_get_type
>> > +qmi_loc_technology_used_get_type
>> > +qmi_loc_time_source_get_type
>> >  </SECTION>
>> >
>> >  <SECTION>
>> > diff --git a/docs/reference/libqmi-glib/libqmi-glib-docs.xml b/docs/reference/libqmi-glib/libqmi-glib-docs.xml
>> > index b6ee813..93187ea 100644
>> > --- a/docs/reference/libqmi-glib/libqmi-glib-docs.xml
>> > +++ b/docs/reference/libqmi-glib/libqmi-glib-docs.xml
>> > @@ -380,11 +380,19 @@
>> >      <section>
>> >        <title>LOC Indications</title>
>> >        <xi:include href="xml/qmi-indication-loc-position-report.xml"/>
>> > +      <xi:include href="xml/qmi-indication-loc-nmea-indication.xml"/>
>> > +      <xi:include href="xml/qmi-indication-loc-gnss-satellite-info.xml"/>
>> > +      <xi:include href="xml/qmi-indication-loc-engine-state.xml"/>
>> > +      <xi:include href="xml/qmi-indication-loc-fix-recurrence-type.xml"/>
>> > +      <xi:include href="xml/qmi-indication-loc-get-operation-mode.xml"/>
>> >      </section>
>> >      <section>
>> >        <title>LOC Requests</title>
>> >        <xi:include href="xml/qmi-message-loc-start.xml"/>
>> >        <xi:include href="xml/qmi-message-loc-stop.xml"/>
>> > +      <xi:include href="xml/qmi-message-loc-register-events.xml"/>
>> > +      <xi:include href="xml/qmi-message-loc-get-operation-mode.xml"/>
>> > +      <xi:include href="xml/qmi-message-loc-set-operation-mode.xml"/>
>> >      </section>
>> >    </chapter>
>> >
>> > diff --git a/src/libqmi-glib/Makefile.am b/src/libqmi-glib/Makefile.am
>> > index 63723b0..0678216 100644
>> > --- a/src/libqmi-glib/Makefile.am
>> > +++ b/src/libqmi-glib/Makefile.am
>> > @@ -31,7 +31,7 @@ libqmi_glib_la_SOURCES = \
>> >         qmi-enums-oma.h \
>> >         qmi-enums-wda.h \
>> >         qmi-enums-voice.h \
>> > -       qmi-enums-loc.h \
>> > +       qmi-enums-loc.h qmi-flags64-loc.h \
>> >         qmi-enums.h qmi-enums-private.h \
>> >         qmi-utils.h qmi-utils.c \
>> >         qmi-compat.h qmi-compat.c \
>> > @@ -68,7 +68,7 @@ include_HEADERS = \
>> >         qmi-enums-oma.h \
>> >         qmi-enums-wda.h \
>> >         qmi-enums-voice.h \
>> > -       qmi-enums-loc.h \
>> > +       qmi-enums-loc.h qmi-flags64-loc.h \
>> >         qmi-utils.h \
>> >         qmi-message.h \
>> >         qmi-message-context.h \
>> > diff --git a/src/libqmi-glib/generated/Makefile.am b/src/libqmi-glib/generated/Makefile.am
>> > index 5b4ca02..f9bd365 100644
>> > --- a/src/libqmi-glib/generated/Makefile.am
>> > +++ b/src/libqmi-glib/generated/Makefile.am
>> > @@ -121,10 +121,10 @@ qmi-enum-types-private.c: $(PRIVATE_ENUMS) qmi-enum-types-private.h $(top_srcdir
>> >                 $(PRIVATE_ENUMS) > $@
>> >
>> >  # 64bit flag types
>> > -FLAGS64 = $(top_srcdir)/src/libqmi-glib/qmi-flags64-dms.h $(top_srcdir)/src/libqmi-glib/qmi-flags64-nas.h
>> > +FLAGS64 = $(top_srcdir)/src/libqmi-glib/qmi-flags64-dms.h $(top_srcdir)/src/libqmi-glib/qmi-flags64-nas.h $(top_srcdir)/src/libqmi-glib/qmi-flags64-loc.h
>> >  qmi-flags64-types.h:  $(FLAGS64) $(top_srcdir)/build-aux/templates/qmi-flags64-types-template.h
>> >         $(AM_V_GEN) $(GLIB_MKENUMS) \
>> > -               --fhead "#ifndef __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#define __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#include \"qmi-flags64-dms.h\"\n#include \"qmi-flags64-nas.h\"\n" \
>> > +               --fhead "#ifndef __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#define __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#include \"qmi-flags64-dms.h\"\n#include \"qmi-flags64-nas.h\"\n#include \"qmi-flags64-loc.h\"\n" \
>> >                 --template $(top_srcdir)/build-aux/templates/qmi-flags64-types-template.h \
>> >                 --ftail "#endif /* __LIBQMI_GLIB_FLAGS64_TYPES_H__ */\n" \
>> >                 $(FLAGS64) > $@
>> > diff --git a/src/libqmi-glib/libqmi-glib.h b/src/libqmi-glib/libqmi-glib.h
>> > index 2ec1d3a..f28975a 100644
>> > --- a/src/libqmi-glib/libqmi-glib.h
>> > +++ b/src/libqmi-glib/libqmi-glib.h
>> > @@ -74,6 +74,7 @@
>> >  #include "qmi-enums-voice.h"
>> >  #include "qmi-voice.h"
>> >
>> > +#include "qmi-flags64-loc.h"
>> >  #include "qmi-enums-loc.h"
>> >  #include "qmi-loc.h"
>> >
>> > diff --git a/src/libqmi-glib/qmi-enums-loc.h b/src/libqmi-glib/qmi-enums-loc.h
>> > index d6e4f5a..0b5e7ac 100644
>> > --- a/src/libqmi-glib/qmi-enums-loc.h
>> > +++ b/src/libqmi-glib/qmi-enums-loc.h
>> > @@ -55,10 +55,386 @@ typedef enum {
>> >      QMI_LOC_INTERMEDIATE_REPORT_STATE_DISABLE = 2,
>> >  } QmiLocIntermediateReportState;
>> >
>> > +/**
>> > + * QmiLocIndicationStatus:
>> > + * @QMI_LOC_INDICATION_STATUS_SUCCESS: Success.
>> > + * @QMI_LOC_INDICATION_STATUS_GENERAL_FAILURE: General Failure.
>> > + * @QMI_LOC_INDICATION_STATUS_UNSUPPORTED: Unsupported.
>> > + * @QMI_LOC_INDICATION_STATUS_INVALID_PARAMETER: Invalid Parameter.
>> > + * @QMI_LOC_INDICATION_STATUS_ENGINE_BUSY: Engine is busy.
>> > + * @QMI_LOC_INDICATION_STATUS_PHONE_OFFLINE: Phone is offline.
>> > + * @QMI_LOC_INDICATION_STATUS_TIMEOUT: Timeout.
>> > + *
>> > + * General result of a received indication.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_INDICATION_STATUS_SUCCESS            = 0,
>> > +    QMI_LOC_INDICATION_STATUS_GENERAL_FAILURE    = 1,
>> > +    QMI_LOC_INDICATION_STATUS_UNSUPPORTED        = 2,
>> > +    QMI_LOC_INDICATION_STATUS_INVALID_PARAMETER  = 3,
>> > +    QMI_LOC_INDICATION_STATUS_ENGINE_BUSY        = 4,
>> > +    QMI_LOC_INDICATION_STATUS_PHONE_OFFLINE      = 5,
>> > +    QMI_LOC_INDICATION_STATUS_TIMEOUT            = 6,
>> > +} QmiLocIndicationStatus;
>> > +
>> > +/**
>> > + * QmiLocSessionStatus:
>> > + * @QMI_LOC_SESSION_STATUS_SUCCESS: Success
>> > + * @QMI_LOC_SESSION_STATUS_IN_PROGRESS: Operation in Progress.
>> > + * @QMI_LOC_SESSION_STATUS_GENERAL_FAILURE: General Failure.
>> > + * @QMI_LOC_SESSION_STATUS_TIMEOUT: Timeout.
>> > + * @QMI_LOC_SESSION_STATUS_USER_ENDED: User ended.
>> > + * @QMI_LOC_SESSION_STATUS_BAD_PARAMETER: Bad Parameter.
>> > + * @QMI_LOC_SESSION_STATUS_PHONE_OFFLINE: Phone is offline.
>> > + * @QMI_LOC_SESSION_STATUS_ENGINE_LOCKED: Engine is locked.
>> > + *
>> > + * Status of a received session indication.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_SESSION_STATUS_SUCCESS         = 0,
>> > +    QMI_LOC_SESSION_STATUS_IN_PROGRESS     = 1,
>> > +    QMI_LOC_SESSION_STATUS_GENERAL_FAILURE = 2,
>> > +    QMI_LOC_SESSION_STATUS_TIMEOUT         = 3,
>> > +    QMI_LOC_SESSION_STATUS_USER_ENDED      = 4,
>> > +    QMI_LOC_SESSION_STATUS_BAD_PARAMETER   = 5,
>> > +    QMI_LOC_SESSION_STATUS_PHONE_OFFLINE   = 6,
>> > +    QMI_LOC_SESSION_STATUS_ENGINE_LOCKED   = 6,
>> > +} QmiLocSessionStatus;
>> > +
>> > +/**
>> > + * QmiLocFixRecurrenceType:
>> > + * @QMI_LOC_FIX_RECURRENCE_TYPE_REQUEST_PERIODIC_FIXES: Periodic fixes.
>> > + * @QMI_LOC_FIX_RECURRENCE_TYPE_REQUEST_SINGLE_FIX: Single fix.
>> > + *
>> > + * Whether to request a single or periodic fixes.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_FIX_RECURRENCE_TYPE_REQUEST_PERIODIC_FIXES = 1,
>> > +    QMI_LOC_FIX_RECURRENCE_TYPE_REQUEST_SINGLE_FIX = 2,
>> > +} QmiLocFixRecurrenceType;
>> > +
>> > +/**
>> > + * QmiLocOperationMode:
>> > + * @QMI_LOC_OPERATION_MODE_DEFAULT: Default.
>> > + * @QMI_LOC_OPERATION_MODE_MSB: MSB (Mobile Station Based).
>> > + * @QMI_LOC_OPERATION_MODE_MSA: MSA (Mobile Station Assisted).
>> > + * @QMI_LOC_OPERATION_MODE_STANDALONE: Standalone.
>> > + * @QMI_LOC_OPERATION_MODE_CELLID: Cell ID.
>> > + * @QMI_LOC_OPERATION_MODE_WWAN: WWAN.
>> > + *
>> > + * Which operation mode to use.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_OPERATION_MODE_DEFAULT    = 1,
>> > +    QMI_LOC_OPERATION_MODE_MSB        = 2,
>> > +    QMI_LOC_OPERATION_MODE_MSA        = 3,
>> > +    QMI_LOC_OPERATION_MODE_STANDALONE = 4,
>> > +    QMI_LOC_OPERATION_MODE_CELLID     = 5,
>> > +    QMI_LOC_OPERATION_MODE_WWAN       = 6,
>> > +} QmiLocOperationMode;
>> > +
>> > +/**
>> > + * QmiLocEngineState:
>> > + * @QMI_LOC_ENGINE_STATE_ON: On.
>> > + * @QMI_LOC_ENGINE_STATE_OFF: Off.
>> > + *
>> > + * State of the engine.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_ENGINE_STATE_ON  = 1,
>> > +    QMI_LOC_ENGINE_STATE_OFF = 2,
>> > +} QmiLocEngineState;
>> > +
>> > +/**
>> > + * QmiLocTechnologyUsed:
>> > + * @QMI_LOC_TECHNOLOGY_USED_SATELLITE: Satellite.
>> > + * @QMI_LOC_TECHNOLOGY_USED_CELLULAR: Cellular.
>> > + * @QMI_LOC_TECHNOLOGY_USED_WIFI: Wifi.
>> > + * @QMI_LOC_TECHNOLOGY_USED_SENSORS: Sensors.
>> > + * @QMI_LOC_TECHNOLOGY_USED_REFERENCE_LOCATION: Reference Location.
>> > + * @QMI_LOC_TECHNOLOGY_USED_INJECTED_POSITION: Injected Position.
>> > + * @QMI_LOC_TECHNOLOGY_USED_AFLT: AFLT (Advanced Forward Link Trilateration).
>> > + * @QMI_LOC_TECHNOLOGY_USED_HYBRID: Hybrid.
>> > + *
>> > + * Which technology has been used.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_TECHNOLOGY_USED_SATELLITE          = 1 << 0,
>> > +    QMI_LOC_TECHNOLOGY_USED_CELLULAR           = 1 << 1,
>> > +    QMI_LOC_TECHNOLOGY_USED_WIFI               = 1 << 2,
>> > +    QMI_LOC_TECHNOLOGY_USED_SENSORS            = 1 << 3,
>> > +    QMI_LOC_TECHNOLOGY_USED_REFERENCE_LOCATION = 1 << 4,
>> > +    QMI_LOC_TECHNOLOGY_USED_INJECTED_POSITION  = 1 << 5,
>> > +    QMI_LOC_TECHNOLOGY_USED_AFLT               = 1 << 6,
>> > +    QMI_LOC_TECHNOLOGY_USED_HYBRID             = 1 << 7,
>> > +} QmiLocTechnologyUsed;
>> > +
>> > +/**
>> > + * QmiLocReliability:
>> > + * @QMI_LOC_RELIABILITY_NOT_SET: Not set.
>> > + * @QMI_LOC_RELIABILITY_VERY_LOW: Very low.
>> > + * @QMI_LOC_RELIABILITY_LOW: Low.
>> > + * @QMI_LOC_RELIABILITY_MEDIUM: Medium.
>> > + * @QMI_LOC_RELIABILITY_HIGH: High.
>> > + *
>> > + * Reliability of the provided information.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_RELIABILITY_NOT_SET  = 0,
>> > +    QMI_LOC_RELIABILITY_VERY_LOW = 1,
>> > +    QMI_LOC_RELIABILITY_LOW      = 2,
>> > +    QMI_LOC_RELIABILITY_MEDIUM   = 3,
>> > +    QMI_LOC_RELIABILITY_HIGH     = 4,
>> > +} QmiLocReliability;
>> > +
>> > +/**
>> > + * QmiLocTimeSource:
>> > + * @QMI_LOC_TIME_SOURCE_INVALID: Invalid.
>> > + * @QMI_LOC_TIME_SOURCE_NETWORK_TIME_TRANSFER: Network time transfer.
>> > + * @QMI_LOC_TIME_SOURCE_NETWORK_TIME_TAGGING: Network time tagging.
>> > + * @QMI_LOC_TIME_SOURCE_EXTERNAL_INPUT: External input.
>> > + * @QMI_LOC_TIME_SOURCE_TOW_DECODE: TOW decode
>> > + * @QMI_LOC_TIME_SOURCE_TOW_CONFIRMED: TOW confirmed
>> > + * @QMI_LOC_TIME_SOURCE_TOW_AND_WEEK_CONFIRMED: TOW and week confirmed.
>> > + * @QMI_LOC_TIME_SOURCE_NAVIGATION_SOLUTION: Navigation solution.
>> > + * @QMI_LOC_TIME_SOURCE_SOLVE_FOR_TIME: Solve for time.
>> > + * @QMI_LOC_TIME_SOURCE_GLTOW_DECODE: GLTOW decode.
>> > + * @QMI_LOC_TIME_SOURCE_TRANSFORM: Transform.
>> > + * @QMI_LOC_TIME_SOURCE_WCDMA_SLEEP_TIME_TAG: WCDMA sleep time tag.
>> > + * @QMI_LOC_TIME_SOURCE_GSM_SLEEP_TIME_TAG: GSM sleep time tag.
>> > + *
>> > + * Source of the used time.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_TIME_SOURCE_INVALID                =  0,
>> > +    QMI_LOC_TIME_SOURCE_NETWORK_TIME_TRANSFER  =  1,
>> > +    QMI_LOC_TIME_SOURCE_NETWORK_TIME_TAGGING   =  2,
>> > +    QMI_LOC_TIME_SOURCE_EXTERNAL_INPUT         =  3,
>> > +    QMI_LOC_TIME_SOURCE_TOW_DECODE             =  4,
>> > +    QMI_LOC_TIME_SOURCE_TOW_CONFIRMED          =  5,
>> > +    QMI_LOC_TIME_SOURCE_TOW_AND_WEEK_CONFIRMED =  6,
>> > +    QMI_LOC_TIME_SOURCE_NAVIGATION_SOLUTION    =  7,
>> > +    QMI_LOC_TIME_SOURCE_SOLVE_FOR_TIME         =  8,
>> > +    QMI_LOC_TIME_SOURCE_GLTOW_DECODE           =  9,
>> > +    QMI_LOC_TIME_SOURCE_TRANSFORM              = 10,
>> > +    QMI_LOC_TIME_SOURCE_WCDMA_SLEEP_TIME_TAG   = 11,
>> > +    QMI_LOC_TIME_SOURCE_GSM_SLEEP_TIME_TAG     = 12,
>> > +} QmiLocTimeSource;
>> > +
>> > +/**
>> > + * QmiLocAltitudeAssumed:
>> > + * @QMI_LOC_ALTITUDE_ASSUMED_ALTITUDE_IS_CALCULATED: Altitude is calculated.
>> > + * @QMI_LOC_ALTITUDE_ASSUMED_ALTITUDE_IS_ASSUMED: Altitude is assumed.
>> > + *
>> > + * Whether the altitude has been calculated or assumed.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_ALTITUDE_ASSUMED_ALTITUDE_IS_CALCULATED = 0,
>> > +    QMI_LOC_ALTITUDE_ASSUMED_ALTITUDE_IS_ASSUMED    = 1,
>> > +} QmiLocAltitudeAssumed;
>> > +
>> > +/**
>> > + * QmiLocSatelliteValidInformation:
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_SYSTEM: System,
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_GNSS_SATELLITE_ID: GNSS Satellite ID.
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_HEALTH_STATUS: Health status.
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_PROCESS_STATUS: Process status.
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_SATELLITE_INFO_MASK: Satellite info mask.
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_ELEVATION: Elevation.
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_AZIMUTH: Azimuth.
>> > + * @QMI_LOC_SATELLITE_VALID_INFORMATION_SIGNAL_TO_NOISE_RATIO: Signal to noise ration.
>> > + *
>> > + * Which information about the satellite is valid.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_SYSTEM                = 1 << 0,
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_GNSS_SATELLITE_ID     = 1 << 1,
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_HEALTH_STATUS         = 1 << 2,
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_PROCESS_STATUS        = 1 << 3,
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_SATELLITE_INFO_MASK   = 1 << 4,
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_ELEVATION             = 1 << 5,
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_AZIMUTH               = 1 << 6,
>> > +    QMI_LOC_SATELLITE_VALID_INFORMATION_SIGNAL_TO_NOISE_RATIO = 1 << 7,
>> > +} QmiLocSatelliteValidInformation;
>> > +
>> > +/**
>> > + * QmiLocSystem:
>> > + * @QMI_LOC_SYSTEM_GPS: GPS.
>> > + * @QMI_LOC_SYSTEM_GALILEO: Galileo.
>> > + * @QMI_LOC_SYSTEM_SBAS: SBAS.
>> > + * @QMI_LOC_SYSTEM_COMPASS: COMPASS (BeiDou).
>> > + * @QMI_LOC_SYSTEM_GLONASS: GLONASS.
>> > + *
>> > + * Which location system a satellite is part of.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_SYSTEM_GPS     = 1,
>> > +    QMI_LOC_SYSTEM_GALILEO = 2,
>> > +    QMI_LOC_SYSTEM_SBAS    = 3,
>> > +    QMI_LOC_SYSTEM_COMPASS = 4,
>> > +    QMI_LOC_SYSTEM_GLONASS = 5,
>> > +} QmiLocSystem;
>> > +
>> > +/**
>> > + * QmiLocHealthStatus:
>> > + * @QMI_LOC_HEALTH_STATUS_UNHEALTHY: Unhealthy.
>> > + * @QMI_LOC_HEALTH_STATUS_HEALTHY: Healthy.
>> > + *
>> > + * Whether a satellite is healthy or unhealthy.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_HEALTH_STATUS_UNHEALTHY = 0,
>> > +    QMI_LOC_HEALTH_STATUS_HEALTHY   = 1,
>> > +} QmiLocHealthStatus;
>> > +
>> > +/**
>> > + * QmiLocNavigationData:
>> > + * @QMI_LOC_NAVIGATION_DATA_HAS_EPHEMERIS: Has ephemeris.
>> > + * @QMI_LOC_NAVIGATION_DATA_HAS_ALMANAC: Has almanac.
>> > + *
>> > + * Whether the ephemeris or almanac exist for a satellite.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_NAVIGATION_DATA_HAS_EPHEMERIS = 0,
>> > +    QMI_LOC_NAVIGATION_DATA_HAS_ALMANAC   = 1,
>> > +} QmiLocNavigationData;
>> > +
>> > +/**
>> > + * QmiLocSatelliteStatus:
>> > + * @QMI_LOC_SATELLITE_STATUS_IDLE: Idle.
>> > + * @QMI_LOC_SATELLITE_STATUS_SEARCHING: Searching.
>> > + * @QMI_LOC_SATELLITE_STATUS_TRACKING: Tracking.
>> > + *
>> > + * Whether the engine searches or tracks a satellite.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_SATELLITE_STATUS_IDLE      = 0,
>> > +    QMI_LOC_SATELLITE_STATUS_SEARCHING = 1,
>> > +    QMI_LOC_SATELLITE_STATUS_TRACKING  = 2,
>> > +} QmiLocSatelliteStatus;
>> > +
>> >  /**
>> >   * qmi_loc_intermediate_report_state_get_string:
>> >   *
>> >   * Since: 1.20
>> >   */
>> >
>> > +/**
>> > + * qmi_loc_intermediate_report_state_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_fix_recurrence_type_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_operation_mode_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_altitude_assumed_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_engine_state_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_health_status_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_indication_status_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_navigation_data_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_reliability_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_satellite_status_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_satellite_valid_information_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_session_status_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_system_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_technology_used_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> > +/**
>> > + * qmi_loc_time_source_get_string
>> > + *
>> > + * Since: 1.20
>> > + */
>> > +
>> >  #endif /* _LIBQMI_GLIB_QMI_ENUMS_LOC_H_ */
>> > diff --git a/src/libqmi-glib/qmi-flags64-loc.h b/src/libqmi-glib/qmi-flags64-loc.h
>> > new file mode 100644
>> > index 0000000..ef7de21
>> > --- /dev/null
>> > +++ b/src/libqmi-glib/qmi-flags64-loc.h
>> > @@ -0,0 +1,103 @@
>> > +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
>> > +/*
>> > + * libqmi-glib -- GLib/GIO based library to control QMI devices
>> > + *
>> > + * This library is free software; you can redistribute it and/or
>> > + * modify it under the terms of the GNU Lesser General Public
>> > + * License as published by the Free Software Foundation; either
>> > + * version 2 of the License, or (at your option) any later version.
>> > + *
>> > + * This library is distributed in the hope that it will be useful,
>> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> > + * Lesser General Public License for more details.
>> > + *
>> > + * You should have received a copy of the GNU Lesser General Public
>> > + * License along with this library; if not, write to the
>> > + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
>> > + * Boston, MA 02110-1301 USA.
>> > + *
>> > + * Copyright (C) 2012 Google Inc.
>> > + * Copyright (C) 2012-2017 Aleksander Morgado <aleksander at aleksander.es>
>> > + */
>> > +
>> > +#ifndef _LIBQMI_GLIB_QMI_FLAGS64_LOC_H_
>> > +#define _LIBQMI_GLIB_QMI_FLAGS64_LOC_H_
>> > +
>> > +#if !defined (__LIBQMI_GLIB_H_INSIDE__) && !defined (LIBQMI_GLIB_COMPILATION)
>> > +#error "Only <libqmi-glib.h> can be included directly."
>> > +#endif
>> > +
>> > +#include <glib.h>
>> > +
>> > +/**
>> > + * QmiLocEventRegistrationFlag:
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_POSITION_REPORT: Position report.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_GNSS_SATELLITE_INFO: GNSS satellite info.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_NMEA: NMEA.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_NI_NOTIFY_VERIFY_REQUEST: NI Notify verify request.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_INJECT_TIME_REQUEST: Inject time request.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_INJECT_PREDICTED_ORBITS_REQUEST: Inject predicted orbits request.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_INJECT_POSITION_REQUEST: Inject position request.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_ENGINE_STATE: Engine state.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_FIX_SESSION_STATE: Fix session state.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_WIFI_REQUEST: WIFI request.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_SENSOR_STREAMING_READY_STATUS: Sensor streaming ready status.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_TIME_SYNC_REQUEST: Time sync request.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_SET_SPI_STREAMING_REPORT: Set SPI streaming report.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_LOCATION_SERVER_CONNECTION_REQUEST: Location server connection request.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_NI_GEOFENCE_NOTIFICATION: NI geofence notification.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_GEOFENCE_GENERAL_ALERT: Geofence general alert.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_GEOFENCE_BREACH_NOTIFICATION: Geofence breach notification.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_PEDOMETER_CONTROL: Pedometer control.
>> > + * @QMI_LOC_EVENT_REGISTRATION_FLAG_MOTION_DATA_CONTROL: Motion data control.
>> > + *
>> > + * For which events to register the subscription.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_POSITION_REPORT                    = 1 <<  0,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_GNSS_SATELLITE_INFO                = 1 <<  1,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_NMEA                               = 1 <<  2,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_NI_NOTIFY_VERIFY_REQUEST           = 1 <<  3,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_INJECT_TIME_REQUEST                = 1 <<  4,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_INJECT_PREDICTED_ORBITS_REQUEST    = 1 <<  5,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_INJECT_POSITION_REQUEST            = 1 <<  6,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_ENGINE_STATE                       = 1 <<  7,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_FIX_SESSION_STATE                  = 1 <<  8,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_WIFI_REQUEST                       = 1 <<  9,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_SENSOR_STREAMING_READY_STATUS      = 1 << 10,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_TIME_SYNC_REQUEST                  = 1 << 11,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_SET_SPI_STREAMING_REPORT           = 1 << 12,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_LOCATION_SERVER_CONNECTION_REQUEST = 1 << 13,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_NI_GEOFENCE_NOTIFICATION           = 1 << 14,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_GEOFENCE_GENERAL_ALERT             = 1 << 15,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_GEOFENCE_BREACH_NOTIFICATION       = 1 << 16,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_PEDOMETER_CONTROL                  = 1 << 17,
>> > +    QMI_LOC_EVENT_REGISTRATION_FLAG_MOTION_DATA_CONTROL                = 1 << 18,
>> > +} QmiLocEventRegistrationFlag;
>> > +
>> > +/**
>> > + * QmiLocSensorDataUsage:
>> > + * @QMI_LOC_SENSOR_DATA_USAGE_ACCELEROMETER_USED: Accelerometer used.
>> > + * @QMI_LOC_SENSOR_DATA_USAGE_GYRO_USED: Gyro used.
>> > + * @QMI_LOC_SENSOR_DATA_USAGE_AIDED_HEADING: Aided heading.
>> > + * @QMI_LOC_SENSOR_DATA_USAGE_AIDED_SPEED: Aided speed.
>> > + * @QMI_LOC_SENSOR_DATA_USAGE_AIDED_POSITION: Aided position.
>> > + * @QMI_LOC_SENSOR_DATA_USAGE_AIDED_VELOCITY: Aided velocity.
>> > + *
>> > + * Which sensors where used and for which measurements.
>> > + *
>> > + * Since 1.20
>> > + */
>> > +typedef enum {
>> > +    QMI_LOC_SENSOR_DATA_USAGE_ACCELEROMETER_USED = 1 <<  0,
>> > +    QMI_LOC_SENSOR_DATA_USAGE_GYRO_USED          = 1 <<  1,
>> > +    QMI_LOC_SENSOR_DATA_USAGE_AIDED_HEADING      = ((guint64) 1) << 32,
>> > +    QMI_LOC_SENSOR_DATA_USAGE_AIDED_SPEED        = ((guint64) 1) << 33,
>> > +    QMI_LOC_SENSOR_DATA_USAGE_AIDED_POSITION     = ((guint64) 1) << 34,
>> > +    QMI_LOC_SENSOR_DATA_USAGE_AIDED_VELOCITY     = ((guint64) 1) << 35,
>> > +} QmiLocSensorDataUsage;
>> > +
>> > +#endif /* _LIBQMI_GLIB_QMI_FLAGS64_LOC_H_ */
>> > --
>> > 2.16.1
>> >
>>
>>
>>
>> --
>> Aleksander
>> https://aleksander.es



-- 
Aleksander
https://aleksander.es


More information about the libqmi-devel mailing list