
[
  // *********************************************************************************
  {  "name"    : "PDS",
     "type"    : "Service" },

  // *********************************************************************************
  {  "name"    : "QMI Client PDS",
     "type"    : "Client" },

  // *********************************************************************************
  {  "name"    : "QMI Message PDS",
     "type"    : "Message-ID-Enum" },

  // *********************************************************************************
  {  "name"    : "QMI Indication PDS",
     "type"    : "Indication-ID-Enum" },

  // *********************************************************************************
  {  "name"    : "Reset",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x0000",
     "version" : "1.0",
     "output"  : [ { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Set Event Report",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x0001",
     "version" : "1.0",
     "input"   : [ { "name"          : "NMEA Position Reporting",
                     "id"            : "0x10",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Extended NMEA Position Reporting",
                     "id"            : "0x11",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Parsed Position Reporting",
                     "id"            : "0x12",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "External XTRA Data Request Reporting",
                     "id"            : "0x13",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "External Time Injection Request Reporting",
                     "id"            : "0x14",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "External WIFI Position Request Reporting",
                     "id"            : "0x15",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Satellite Information Reporting",
                     "id"            : "0x16",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "VX Network Initiated Request Reporting",
                     "id"            : "0x17",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "SUPL Network Initiated Prompt Reporting",
                     "id"            : "0x18",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "UMTS CP Network Initiated Prompt Reporting",
                     "id"            : "0x19",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "PDS Comm Event Reporting",
                     "id"            : "0x1A",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Accelerometer Data Streaming Ready Reporting",
                     "id"            : "0x1B",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Gyro Data Streaming Ready Reporting",
                     "id"            : "0x1C",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Time Sync Request Reporting",
                     "id"            : "0x1D",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Position Reliability Indicator Reporting",
                     "id"            : "0x1E",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Sensor Data Usage Indicator Reporting",
                     "id"            : "0x1F",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Time Source Information Reporting",
                     "id"            : "0x20",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Heading Uncertainty Reporting",
                     "id"            : "0x21",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "NMEA Debug Strings Reporting",
                     "id"            : "0x22",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" },
                   { "name"          : "Extended External XTRA Data Request Reporting",
                     "id"            : "0x23",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "gboolean" } ],
     "output"  : [ { "common-ref" : "Operation Result" } ] },

  {  "name"    : "Event Report",
     "type"    : "Indication",
     "service" : "PDS",
     "id"      : "0x0001",
     "output"  : [ { "name"      : "NMEA Position",
                     "id"        : "0x10",
                     "mandatory" : "no",
                     "type"      : "TLV",
                     "format"    : "string",
                     "max-size"  : "200" },
                   { "name"      : "Extended NMEA Position",
                     "id"        : "0x11",
                     "mandatory" : "no",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "Operation Mode",
                                       "format"        : "gint8",
                                       "public-format" : "QmiPdsOperationMode" },
                                     { "name"     : "NMEA",
                                       "format"   : "string",
                                       // This was supposed to be only 1 byte for length, but it seems it's not
                                       "size-prefix-format" : "guint16",
                                       "max-size" : "200" } ] },
                   { "name"          : "Position Session Status",
                     "id"            : "0x12",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiPdsPositionSessionStatus" } ] },

                   // TODO: parse all TLVs of this indication
                   // Reading gfloat/gdouble is still missing
                   //{ "name"         : "Parsed Position",
                   //  "id"           : "0x13",
                   //  "mandatory"    : "no",
                   //  "type"         : "TLV",
                   //  "format"       : "sequence",
                   //  "contents"     : [ { "name"   : "Valid Mask",
                   //                       "format" : "gint8" },
                   //                     { "name"     : "Timestamp Calendar",
                   //                       "format"   : "struct",
                   //                       "contents" : [ { "name"   : "Year",
                   //                                        "format" : "guint16" },
                   //                                      { "name"   : "Month",
                   //                                        "format" : "guint8" },
                   //                                      { "name"   : "Day Of Week",
                   //                                        "format" : "guint8" },
                   //                                      { "name"   : "Day of Month",
                   //                                        "format" : "guint8" },
                   //                                      { "name"   : "Hour",
                   //                                        "format" : "guint8" },
                   //                                      { "name"   : "Minute",
                   //                                        "format" : "guint8" },
                   //                                      { "name"   : "Second",
                   //                                        "format" : "guint8" },
                   //                                      { "name"   : "Millisecond",
                   //                                        "format" : "guint16" } ] },
                   //                     { "name"   : "Leap Seconds",
                   //                       "format" : "guint8" },
                   //                     { "name"   : "Timestamp UTC",
                   //                       "format" : "guint64" },
                   //                     { "name"   : "Time Uncertainty",
                   //                       "format" : "guint32" },
                   //                     { "name"   : "Latitude",
                   //                       "format" : "gdouble" },
                   //                     { "name"   : "Longitude",
                   //                       "format" : "gdouble" },
                   //                     { "name"   : "Altitude Ellipsoid",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Altitude Sea Level",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal Speed",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Vertical Speed",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Heading",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal Uncertainty Circular",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal Uncertainty Ellipse Semi Major",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal Uncertainty Ellipse Semi Minor",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal Uncertainty Ellipse Orient Azimuth",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Vertical Uncertainty",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal Velocity Uncertainty",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Vertical Velocity Uncertainty",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal confidence",
                   //                       "format" : "guint8" },
                   //                     { "name"   : "Position DOP",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Horizontal DOP",
                   //                       "format" : "gfloat" },
                   //                     { "name"   : "Vertical DOP",
                   //                       "format" : "gfloat" },
                   //                     { "name"          : "Operation Mode",
                   //                       "format"        : "gint8",
                   //                       "public-format" : "QmiPdsOperationMode" } ],
                   //  "prerequisites": [ { "field"     : "Position Session Status",
                   //                       "operation" : "<=",
                   //                       "value"     : "QMI_PDS_POSITION_SESSION_STATUS_IN_PROGRESS" } ] } ] }

  // *********************************************************************************
  {  "name"    : "Get GPS Service State",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x0020",
     "version" : "1.0",
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"      : "State",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "GPS Service State",
                                       "format"        : "guint8",
                                       "public-format" : "gboolean" },
                                     { "name"          : "Tracking Session State",
                                       "format"        : "guint8",
                                       "public-format" : "QmiPdsTrackingSessionState" } ],
                     "prerequisites" : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Set GPS Service State",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x0021",
     "version" : "1.0",
     "input"   : [ { "name"      : "State",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "GPS Service State",
                                       "format"        : "guint8",
                                       "public-format" : "gboolean" } ] } ],
     "output"  : [ { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Get Default Tracking Session",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x0029",
     "version" : "1.0",
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"      : "Info",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "Session Operation",
                                       "format"        : "guint8",
                                       "public-format" : "QmiPdsOperatingMode" },
                                     { "name"          : "Position Data Timeout",
                                       "format"        : "guint8" },
                                     { "name"          : "Interval",
                                       "format"        : "guint32" },
                                     { "name"          : "Accuracy Threshold",
                                       "format"        : "guint32" } ],
                     "prerequisites" : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Set Default Tracking Session",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x002A",
     "version" : "1.0",
     "input"   : [ { "name"      : "Info",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "Session Operation",
                                       "format"        : "guint8",
                                       "public-format" : "QmiPdsOperatingMode" },
                                     { "name"          : "Position Data Timeout",
                                       "format"        : "guint8" },
                                     { "name"          : "Interval",
                                       "format"        : "guint32" },
                                     { "name"          : "Accuracy Threshold",
                                       "format"        : "guint32" } ] } ],
     "output"  : [ { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Get AGPS Config",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x002E",
     "version" : "1.0",
     "input"   : [ { "name"          : "Network Mode",
                     "id"            : "0x12",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiPdsNetworkMode" } ],
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"      : "Location Server Address",
                     "id"        : "0x10",
                     "mandatory" : "no",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"   : "IP",
                                       "format" : "guint32",
                                       "endian" : "little" },
                                     { "name"   : "Port",
                                       "format" : "guint32" } ],
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"               : "Location Server URL",
                     "id"                 : "0x11",
                     "mandatory"          : "no",
                     "type"               : "TLV",
                     "format"             : "array",
                     "size-prefix-format" : "guint8",
                     "array-element"      : { "format" : "guint8" },
                     "prerequisites"      : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Set AGPS Config",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x002F",
     "version" : "1.0",
     "input"   : [ { "name"      : "Location Server Address",
                     "id"        : "0x10",
                     "mandatory" : "no",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"   : "IP",
                                       "format" : "guint32",
                                       "format" : "guint32" },
                                     { "name"   : "Port",
                                       "format" : "guint32" } ] },
                   { "name"               : "Location Server URL",
                     "id"                 : "0x11",
                     "mandatory"          : "no",
                     "type"               : "TLV",
                     "format"             : "array",
                     "size-prefix-format" : "guint8",
                     "array-element"      : { "format" : "guint8" } },
                   { "name"          : "Network Mode",
                     "id"            : "0x14",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiPdsNetworkMode" } ],
     "output"  : [ { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Get Auto Tracking State",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x0030",
     "version" : "1.0",
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"      : "State",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "Auto Tracking State",
                                       "format"        : "guint8",
                                       "public-format" : "gboolean" } ],
                     "prerequisites" : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Set Auto Tracking State",
     "type"    : "Message",
     "service" : "PDS",
     "id"      : "0x0031",
     "version" : "1.0",
     "input"   : [ { "name"      : "State",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "Auto Tracking State",
                                       "format"        : "guint8",
                                       "public-format" : "gboolean" } ] } ],
     "output"  : [ { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "GPS Ready",
     "type"    : "Indication",
     "service" : "PDS",
     "id"      : "0x0060",
     "version" : "1.14" }

]
