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

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

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

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

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

  // *********************************************************************************
  {  "name"    : "Abort",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0002",
     "version" : "1.0",
     // This magic tag allows us to avoid creating a method in the client
     "scope"   : "library-only",
     "input"   : [  { "name"      : "Transaction ID",
                      "id"        : "0x01",
                      "mandatory" : "yes",
                      "type"      : "TLV",
                      "format"    : "guint16" } ],
     "output"  : [  { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Get Supported Messages",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x001E",
     "version" : "1.38",
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"               : "List",
                     "id"                 : "0x10",
                     "mandatory"          : "no",
                     "type"               : "TLV",
                     "format"             : "array",
                     "size-prefix-format" : "guint16",
                     "array-element"      : { "format" : "guint8" },
                     "prerequisites"      : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Start Network",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0020",
     "version" : "1.0",
     // This method may be aborted
     "abort"   : "yes",
     "input"   : [  { "name"      : "Primary DNS Address Preference",
                      "id"        : "0x10",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint32" },
                    { "name"      : "Secondary DNS Address Preference",
                      "id"        : "0x11",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint32" },
                    { "name"      : "Primary NBNS Address Preference",
                      "id"        : "0x12",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint32" },
                    { "name"      : "Secondary NBNS Address Preference",
                      "id"        : "0x13",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint32" },
                    { "name"      : "APN",
                      "id"        : "0x14",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string" },
                    { "name"      : "IPv4 Address Preference",
                      "id"        : "0x15",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint32" },
                    { "name"          : "Authentication Preference",
                      "id"            : "0x16",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "QmiWdsAuthentication" },
                    { "name"      : "Username",
                      "id"        : "0x17",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string" },
                    { "name"      : "Password",
                      "id"        : "0x18",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string" },
                    { "name"          : "IP Family Preference",
                      "id"            : "0x19",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "QmiWdsIpFamily" },
                    { "name"          : "Technology Preference",
                      "id"            : "0x30",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "QmiWdsTechnologyPreference" },
                    { "name"      : "Profile Index 3GPP",
                      "id"        : "0x31",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8" },
                    { "name"      : "Profile Index 3GPP2",
                      "id"        : "0x32",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8" },
                    { "name"          : "Enable Autoconnect",
                      "id"            : "0x33",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean" },
                    { "name"          : "Extended Technology Preference",
                      "id"            : "0x34",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      // Note: docs give this as gint16 with negative enum values. Instead, we use
                      // guint16 with equivalent positive enum values.
                      "format"        : "guint16",
                      "public-format" : "QmiWdsExtendedTechnologyPreference" },
                    { "name"          : "Call Type",
                      "id"            : "0x35",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "QmiWdsCallType" } ],
     "output"  : [  { "common-ref" : "Operation Result" },
                    { "name"      : "Packet Data Handle",
                      "id"        : "0x01",
                      "mandatory" : "yes",
                      "type"      : "TLV",
                      "format"    : "guint32",
                      "prerequisites": [ { "common-ref" : "Success" } ] },
                    { "name"          : "Call End Reason",
                      "id"            : "0x10",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint16",
                      "public-format" : "QmiWdsCallEndReason",
                      "prerequisites" : [ { "field"     : "Result.Error Status",
                                            "operation" : "!=",
                                            "value"     : "QMI_STATUS_SUCCESS" },
                                          { "field"     : "Result.Error Code",
                                            "operation" : "==",
                                            "value"     : "QMI_PROTOCOL_ERROR_CALL_FAILED" } ] },
                    { "name"      : "Verbose Call End Reason",
                      "id"        : "0x11",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Type",
                                        "format"        : "guint16",
                                        "public-format" : "QmiWdsVerboseCallEndReasonType" },
                                      { "name"   : "Reason",
                                        "format" : "gint16" } ],
                      "prerequisites": [ { "field"     : "Result.Error Status",
                                           "operation" : "!=",
                                           "value"     : "QMI_STATUS_SUCCESS" },
                                         { "field"     : "Result.Error Code",
                                           "operation" : "==",
                                           "value"     : "QMI_PROTOCOL_ERROR_CALL_FAILED" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Stop Network",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0021",
     "version" : "1.0",
     "input"   : [  { "name"      : "Packet Data Handle",
                      "id"        : "0x01",
                      "mandatory" : "yes",
                      "type"      : "TLV",
                      "format"    : "guint32" },
                    { "name"          : "Disable Autoconnect",
                      "id"            : "0x10",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean" } ],
     "output"  : [  { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Get Packet Service Status",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0022",
     "version" : "1.0",
     "output"  : [  { "common-ref" : "Operation Result" },
                    { "name"          : "Connection Status",
                      "id"            : "0x01",
                      "mandatory"     : "yes",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "QmiWdsConnectionStatus",
                      "prerequisites" : [ { "common-ref" : "Success" } ] } ] },

  {  "name"    : "Packet Service Status",
     "type"    : "Indication",
     "service" : "WDS",
     "id"      : "0x0022",
     "version" : "1.0",
     "output"  : [ { "name"          : "Connection Status",
                     "id"            : "0x01",
                     "mandatory"     : "yes",
                     "type"          : "TLV",
                     "format"        : "sequence",
                     "contents"      : [ { "name"          : "Status",
                                           "format"        : "guint8",
                                           "public-format" : "QmiWdsConnectionStatus" },
                                         { "name"          : "Reconfiguration Required",
                                           "format"        : "guint8",
                                           "public-format" : "gboolean" } ] },
                   { "name"          : "Call End Reason",
                     "id"            : "0x10",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint16",
                     "public-format" : "QmiWdsCallEndReason" },
                   { "name"      : "Verbose Call End Reason",
                     "id"        : "0x11",
                     "mandatory" : "no",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "Type",
                                       "format"        : "guint16",
                                       "public-format" : "QmiWdsVerboseCallEndReasonType" },
                                     { "name"   : "Reason",
                                       "format" : "gint16" } ] },
                    { "name"          : "IP Family",
                      "id"            : "0x12",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "QmiWdsIpFamily" },
                    { "name"          : "Extended Technology Preference",
                      "id"            : "0x34",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      // Note: docs give this as gint16 with negative enum values. Instead, we use
                      // guint16 with equivalent positive enum values.
                      "format"        : "guint16",
                      "public-format" : "QmiWdsExtendedTechnologyPreference" } ] },

  // *********************************************************************************
  {  "name"    : "Get Packet Statistics",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0024",
     "version" : "1.0",
     "input"   : [ { "name"          : "Mask",
                     "id"            : "0x01",
                     "mandatory"     : "yes",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "public-format" : "QmiWdsPacketStatisticsMaskFlag" } ],
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"          : "Tx Packets Ok",
                     "id"            : "0x10",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Rx Packets Ok",
                     "id"            : "0x11",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Tx Packets Error",
                     "id"            : "0x12",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Rx Packets Error",
                     "id"            : "0x13",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Tx Overflows",
                     "id"            : "0x14",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Rx Overflows",
                     "id"            : "0x15",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Tx Bytes Ok",
                     "id"            : "0x19",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint64",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Rx Bytes Ok",
                     "id"            : "0x1A",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint64",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   // Note: last call TX/RX given along with QMI Error 'out of call'
                   { "name"          : "Last Call Tx Bytes Ok",
                     "id"            : "0x1B",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint64" },
                   { "name"          : "Last Call Rx Bytes Ok",
                     "id"            : "0x1C",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint64" },
                   { "name"          : "Tx Packets Dropped",
                     "id"            : "0x1D",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Rx Packets Dropped",
                     "id"            : "0x1E",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint32",
                     "prerequisites" : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Get Profile List",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x002A",
     "version" : "1.1",
     "input"   : [ { "name"          : "Profile Type",
                     "id"            : "0x10",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiWdsProfileType" } ],
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"          : "Profile List",
                     "id"            : "0x01",
                     "mandatory"     : "yes",
                     "type"          : "TLV",
                     "format"        : "array",
                     "array-element" : { "name"     : "Profile",
                                         "format"   : "struct",
                                         "contents" : [ { "name"          : "Profile Type",
                                                          "format"        : "guint8",
                                                          "public-format" : "QmiWdsProfileType" },
                                                        { "name"   : "Profile Index",
                                                          "format" : "guint8" },
                                                        { "name"   : "Profile Name",
                                                          "format" : "string" } ] },
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Extended Error Code",
                     "id"            : "0xE0",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint16",
                     "public-format" : "QmiWdsDsProfileError",
                     "prerequisites" : [ { "field"     : "Result.Error Status",
                                           "operation" : "!=",
                                           "value"     : "QMI_STATUS_SUCCESS" },
                                         { "field"     : "Result.Error Code",
                                           "operation" : "==",
                                           "value"     : "QMI_PROTOCOL_ERROR_EXTENDED_INTERNAL" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Get Profile Settings",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x002B",
     "version" : "1.1",
     "input"   : [ { "name"      : "Profile ID",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    : "sequence",
                     "contents"  : [ { "name"          : "Profile Type",
                                       "format"        : "guint8",
                                       "public-format" : "QmiWdsProfileType" },
                                     { "name"          : "Profile Index",
                                       "format"        : "guint8" } ] } ],
     "output"  : [  { "common-ref" : "Operation Result" },
                    { "name"      : "Profile Name",
                      "id"        : "0x10",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "PDP Type",
                      "id"        : "0x11",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "public-format" : "QmiWdsPdpType",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "APN Name",
                      "id"        : "0x14",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Primary IPv4 DNS Address",
                      "id"        : "0x15",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Secondary IPv4 DNS Address",
                      "id"        : "0x16",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x17 UMTS Requested QoS
                    // 0x18 UMTS Minimum QoS
                    { "name"      : "GPRS Requested QoS",
                      "id"        : "0x19",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"   : "Precedence Class",
                                        "format" : "guint32" },
                                      { "name"   : "Delay Class",
                                        "format" : "guint32" },
                                      { "name"   : "Reliability Class",
                                        "format" : "guint32" },
                                      { "name"   : "Peak Throughput Class",
                                        "format" : "guint32" },
                                      { "name"   : "Mean Throughput Class",
                                        "format" : "guint32" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "GPRS Minimum QoS",
                      "id"        : "0x1A",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"   : "Precedence Class",
                                        "format" : "guint32" },
                                      { "name"   : "Delay Class",
                                        "format" : "guint32" },
                                      { "name"   : "Reliability Class",
                                        "format" : "guint32" },
                                      { "name"   : "Peak Throughput Class",
                                        "format" : "guint32" },
                                      { "name"   : "Mean Throughput Class",
                                        "format" : "guint32" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Username",
                      "id"        : "0x1B",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Password",
                      "id"        : "0x1C",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Authentication",
                      "id"        : "0x1D",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "public-format" : "QmiWdsAuthentication",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv4 Address Preference",
                      "id"        : "0x1E",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"          : "PCSCF Address Using PCO",
                      "id"            : "0x1F",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x20, PDP access control flag
                    { "name"          : "PCSCF Address Using DHCP",
                      "id"            : "0x21",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"          : "IMCN Flag",
                      "id"            : "0x22",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x23, TFT ID1 Parameters
                    // 0x24, TFT ID2 Parameters
                    // 0x25, PDP context number
                    // 0x26, PDP context secondary flag
                    // 0x27, PDP context primary id
                    { "name"      : "IPv6 Address Preference",
                      "id"        : "0x28",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Address",
                                        "format"        : "array",
                                        "fixed-size"    : "8",
                                        "array-element" : { "format": "guint16", "endian": "network" } } ] },
                    // 0x29, UMTS requested QoS with Signaling Indication Flag
                    // 0x2A, UMTS minimum QoS with Signaling Indication Flag
                    { "name"      : "IPv6 Primary DNS Address Preference",
                      "id"        : "0x2B",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "array",
                      "fixed-size": "8",
                      "array-element" : { "format": "guint16", "endian": "network" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv6 Secondary DNS Address Preference",
                      "id"        : "0x2C",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "array",
                      "fixed-size": "8",
                      "array-element" : { "format": "guint16", "endian": "network" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x2D, DHCP/NAS Preference
                    // 0x2E, 3GPP LTE QoS Parameters
                    // 0x2F, APN disabled flag
                    // 0x30, PDN inactivity timeout
                    // 0x31, APN class
                    // 0x90, Negotiate DNS server preference
                    // 0x91, PPP session close timer for DO
                    // 0x92, PPP session close timer for 1X
                    // 0x93, Allow/disallow lingering of interface
                    // 0x94, LCP ACK timeout
                    // 0x95, IPCP ACK timeout
                    // 0x96, AUTH timeout
                    // 0x97, LCP configuration request retry count value
                    // 0x98, IPCP configuration request retry count value
                    // 0x99, Authentication retry
                    // 0x9A, Authentication protocol,
                    // 0x9B, User ID
                    // 0x9C, Authentication password
                    // 0x9D, Data rate
                    // 0x9E, Application type
                    // 0x9F, Data mode
                    // 0xA0, Application priority
                    // 0xA1, APN string
                    // 0xA2, PDN type
                    // 0xA3, Is PCSCF address needed
                    // 0xA4, IPv4 Primary DNS address
                    // 0xA5, IPv4 Secondary DNS address
                    // 0xA6, IPv6 Primary DNS address
                    // 0xA7, IPv6 Secondary DNS address
                    // 0xA8, RAT type
                    // 0xA9, APN enabled
                    // 0xAA, PDN inactivity timeout
                    // 0xAB, APN class
                    { "name"          : "Extended Error Code",
                      "id"            : "0xE0",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint16",
                      "public-format" : "QmiWdsDsProfileError",
                      "prerequisites" : [ { "field"     : "Result.Error Status",
                                            "operation" : "!=",
                                            "value"     : "QMI_STATUS_SUCCESS" },
                                          { "field"     : "Result.Error Code",
                                            "operation" : "==",
                                            "value"     : "QMI_PROTOCOL_ERROR_EXTENDED_INTERNAL" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Get Default Settings",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x002C",
     "version" : "1.1",
     "input"   : [ { "name"      : "Profile Type",
                     "id"        : "0x01",
                     "mandatory" : "yes",
                     "type"      : "TLV",
                     "format"    :  "guint8",
                     "public-format" : "QmiWdsProfileType" } ],
     "output"  : [  { "common-ref" : "Operation Result" },
                    { "name"      : "Profile Name",
                      "id"        : "0x10",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "PDP Type",
                      "id"        : "0x11",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "public-format" : "QmiWdsPdpType",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "APN Name",
                      "id"        : "0x14",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Primary IPv4 DNS Address",
                      "id"        : "0x15",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Secondary IPv4 DNS Address",
                      "id"        : "0x16",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x17 UMTS Requested QoS
                    // 0x18 UMTS Minimum QoS
                    { "name"      : "GPRS Requested QoS",
                      "id"        : "0x19",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"   : "Precedence Class",
                                        "format" : "guint32" },
                                      { "name"   : "Delay Class",
                                        "format" : "guint32" },
                                      { "name"   : "Reliability Class",
                                        "format" : "guint32" },
                                      { "name"   : "Peak Throughput Class",
                                        "format" : "guint32" },
                                      { "name"   : "Mean Throughput Class",
                                        "format" : "guint32" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "GPRS Minimum QoS",
                      "id"        : "0x1A",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"   : "Precedence Class",
                                        "format" : "guint32" },
                                      { "name"   : "Delay Class",
                                        "format" : "guint32" },
                                      { "name"   : "Reliability Class",
                                        "format" : "guint32" },
                                      { "name"   : "Peak Throughput Class",
                                        "format" : "guint32" },
                                      { "name"   : "Mean Throughput Class",
                                        "format" : "guint32" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Username",
                      "id"        : "0x1B",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Password",
                      "id"        : "0x1C",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Authentication",
                      "id"        : "0x1D",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "public-format" : "QmiWdsAuthentication",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv4 Address Preference",
                      "id"        : "0x1E",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"          : "PCSCF Address Using PCO",
                      "id"            : "0x1F",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x20, PDP access control flag
                    { "name"          : "PCSCF Address Using DHCP",
                      "id"            : "0x21",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"          : "IMCN Flag",
                      "id"            : "0x22",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "gboolean",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x23, TFT ID1 Parameters
                    // 0x24, TFT ID2 Parameters
                    // 0x25, PDP context number
                    // 0x26, PDP context secondary flag
                    // 0x27, PDP context primary id
                    { "name"      : "IPv6 Address Preference",
                      "id"        : "0x28",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Address",
                                        "format"        : "array",
                                        "fixed-size"    : "8",
                                        "array-element" : { "format": "guint16", "endian": "network" } } ] },
                    // 0x29, UMTS requested QoS with Signaling Indication Flag
                    // 0x2A, UMTS minimum QoS with Signaling Indication Flag
                    { "name"      : "IPv6 Primary DNS Address Preference",
                      "id"        : "0x2B",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "array",
                      "fixed-size": "8",
                      "array-element" : { "format": "guint16", "endian": "network" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv6 Secondary DNS Address Preference",
                      "id"        : "0x2C",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "array",
                      "fixed-size": "8",
                      "array-element" : { "format": "guint16", "endian": "network" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    // 0x2D, DHCP/NAS Preference
                    // 0x2E, 3GPP LTE QoS Parameters
                    // 0x2F, APN disabled flag
                    // 0x30, PDN inactivity timeout
                    // 0x31, APN class
                    // 0x90, Negotiate DNS server preference
                    // 0x91, PPP session close timer for DO
                    // 0x92, PPP session close timer for 1X
                    // 0x93, Allow/disallow lingering of interface
                    // 0x94, LCP ACK timeout
                    // 0x95, IPCP ACK timeout
                    // 0x96, AUTH timeout
                    // 0x97, LCP configuration request retry count value
                    // 0x98, IPCP configuration request retry count value
                    // 0x99, Authentication retry
                    // 0x9A, Authentication protocol,
                    // 0x9B, User ID
                    // 0x9C, Authentication password
                    // 0x9D, Data rate
                    // 0x9E, Application type
                    // 0x9F, Data mode
                    // 0xA0, Application priority
                    // 0xA1, APN string
                    // 0xA2, PDN type
                    // 0xA3, Is PCSCF address needed
                    // 0xA4, IPv4 Primary DNS address
                    // 0xA5, IPv4 Secondary DNS address
                    // 0xA6, IPv6 Primary DNS address
                    // 0xA7, IPv6 Secondary DNS address
                    // 0xA8, RAT type
                    // 0xA9, APN enabled
                    // 0xAA, PDN inactivity timeout
                    // 0xAB, APN class
                    { "name"          : "Extended Error Code",
                      "id"            : "0xE0",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "guint16",
                      "public-format" : "QmiWdsDsProfileError",
                      "prerequisites" : [ { "field"     : "Result.Error Status",
                                            "operation" : "!=",
                                            "value"     : "QMI_STATUS_SUCCESS" },
                                          { "field"     : "Result.Error Code",
                                            "operation" : "==",
                                            "value"     : "QMI_PROTOCOL_ERROR_EXTENDED_INTERNAL" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Get Current Settings",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x002D",
     "version" : "1.2",
     "input"   : [  { "name"          : "Requested Settings",
                      "id"            : "0x10",
                      "mandatory"     : "yes",
                      "type"          : "TLV",
                      "format"        : "guint32",
                      "public-format" : "QmiWdsGetCurrentSettingsRequestedSettings" } ],
     "output"  : [  { "common-ref" : "Operation Result" },
                    { "name"      : "Profile Name",
                      "id"        : "0x10",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "PDP Type",
                      "id"        : "0x11",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "public-format" : "QmiWdsPdpType",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "APN Name",
                      "id"        : "0x14",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Primary IPv4 DNS Address",
                      "id"        : "0x15",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Secondary IPv4 DNS Address",
                      "id"        : "0x16",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "UMTS Granted QoS",
                      "id"        : "0x17",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Traffic Class",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsTrafficClass" },
                                      { "name"   : "Max uplink bitrate",
                                        "format" : "guint32" },
                                      { "name"   : "Max downlink bitrate",
                                        "format" : "guint32" },
                                      { "name"   : "Guaranteed uplink bitrate",
                                        "format" : "guint32" },
                                      { "name"   : "Guaranteed downlink bitrate",
                                        "format" : "guint32" },
                                      { "name"          : "QoS Delivery Order",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsDeliveryOrder" },
                                      { "name"   : "Maximum SDU Size",
                                        "format" : "guint32" },
                                      { "name"          : "SDU Error Ratio",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsSduErrorRatio" },
                                      { "name"          : "Residual Bit Error Ratio",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsSduResidualBitErrorRatio" },
                                      { "name"          : "Delivery Erroneous SDU",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsSduErroneousDelivery" },
                                      { "name"   : "Transfer Delay",
                                        "format" : "guint32" },
                                      { "name"   : "Traffic Handling Priority",
                                        "format" : "guint32" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "GPRS Granted QoS",
                      "id"        : "0x19",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"   : "Precedence Class",
                                        "format" : "guint32" },
                                      { "name"   : "Delay Class",
                                        "format" : "guint32" },
                                      { "name"   : "Reliability Class",
                                        "format" : "guint32" },
                                      { "name"   : "Peak Throughput Class",
                                        "format" : "guint32" },
                                      { "name"   : "Mean Throughput Class",
                                        "format" : "guint32" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Username",
                      "id"        : "0x1B",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "string",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Authentication",
                      "id"        : "0x1D",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "public-format" : "QmiWdsAuthentication",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv4 Address",
                      "id"        : "0x1E",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Profile ID",
                      "id"        : "0x1F",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Profile Type",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsProfileType" },
                                      { "name"   : "Profile Index",
                                        "format" : "guint8" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv4 Gateway Address",
                      "id"        : "0x20",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv4 Gateway Subnet Mask",
                      "id"        : "0x21",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "endian"    : "little",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "PCSCF Address Using PCO",
                      "id"        : "0x22",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "PCSCF Server Address List",
                      "id"        : "0x23",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"        : "array",
                      "array-element" : { "name"     : "IPv4 Address",
                                          "endian"   : "little",
                                          "format"   : "guint32" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "PCSCF Domain Name List",
                      "id"        : "0x24",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"        : "array",
                      "array-element" : { "name"               : "FQDN",
                                          "format"             : "string",
                                          "size-prefix-format" : "guint16" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv6 Address",
                      "id"        : "0x25",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Address",
                                        "format"        : "array",
                                        "fixed-size"    : "8",
                                        "array-element" : { "format": "guint16", "endian": "network" } },
                                      { "name"       : "Prefix Length",
                                        "format"     : "guint8" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv6 Gateway Address",
                      "id"        : "0x26",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Address",
                                        "format"        : "array",
                                        "fixed-size"    : "8",
                                        "array-element" : { "format": "guint16", "endian": "network" } },
                                      { "name"       : "Prefix Length",
                                        "format"     : "guint8" } ],
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv6 Primary DNS Address",
                      "id"        : "0x27",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "array",
                      "fixed-size": "8",
                      "array-element" : { "format": "guint16", "endian": "network" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IPv6 Secondary DNS Address",
                      "id"        : "0x28",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "array",
                      "fixed-size": "8",
                      "array-element" : { "format": "guint16", "endian": "network" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "MTU",
                      "id"        : "0x29",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint32",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Domain Name List",
                      "id"        : "0x2A",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"        : "array",
                      "array-element" : { "name"               : "Domain Name",
                                          "format"             : "string",
                                          "size-prefix-format" : "guint16" },
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IP Family",
                      "id"        : "0x2B",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "guint8",
                      "public-format" : "QmiWdsIpFamily",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "IMCN Flag",
                      "id"        : "0x2C",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "gint8",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"      : "Extended Technology Preference",
                      "id"        : "0x2D",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      // Note: docs give this as gint16 with negative enum values. Instead, we use
                      // guint16 with equivalent positive enum values.
                      "format"    : "guint16",
                      "public-format" : "QmiWdsExtendedTechnologyPreference",
                      "prerequisites" : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Get Autoconnect Settings",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0034",
     "version" : "1.12",
     "output"  : [ { "common-ref" : "Operation Result" },
                   { "name"          : "Status",
                     "id"            : "0x01",
                     "mandatory"     : "yes",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiWdsAutoconnectSetting",
                     "prerequisites" : [ { "common-ref" : "Success" } ] },
                   { "name"          : "Roaming",
                     "id"            : "0x10",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiWdsAutoconnectSettingRoaming",
                     "prerequisites" : [ { "common-ref" : "Success" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Get Data Bearer Technology",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0037",
     "version" : "1.12",
     "output"  : [  { "common-ref" : "Operation Result" },
                    { "name"          : "Current",
                      "id"            : "0x01",
                      "mandatory"     : "yes",
                      "type"          : "TLV",
                      "format"        : "gint8",
                      "public-format" : "QmiWdsDataBearerTechnology",
                      "prerequisites" : [ { "common-ref" : "Success" } ] },
                    { "name"          : "Last",
                      "id"            : "0x10",
                      "mandatory"     : "no",
                      "type"          : "TLV",
                      "format"        : "gint8",
                      "public-format" : "QmiWdsDataBearerTechnology",
                      "prerequisites" : [ { "field"     : "Result.Error Status",
                                           "operation" : "!=",
                                           "value"     : "QMI_STATUS_SUCCESS" },
                                         { "field"     : "Result.Error Code",
                                           "operation" : "==",
                                           "value"     : "QMI_PROTOCOL_ERROR_OUT_OF_CALL" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Get Current Data Bearer Technology",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0044",
     "version" : "1.4",
     "output"  : [  { "common-ref" : "Operation Result" },
                    { "name"      : "Current",
                      "id"        : "0x01",
                      "mandatory" : "yes",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Network Type",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsNetworkType" },
                                      { "name"   : "RAT Mask",
                                        "format" : "guint32" },
                                      { "name"   : "SO Mask",
                                        "format" : "guint32" } ],
                      "prerequisites": [ { "common-ref" : "Success" } ] },
                    { "name"      : "Last",
                      "id"        : "0x10",
                      "mandatory" : "no",
                      "type"      : "TLV",
                      "format"    : "sequence",
                      "contents"  : [ { "name"          : "Network Type",
                                        "format"        : "guint8",
                                        "public-format" : "QmiWdsNetworkType" },
                                      { "name"   : "RAT Mask",
                                        "format" : "guint32" },
                                      { "name"   : "SO Mask",
                                        "format" : "guint32" } ] } ] },

  // *********************************************************************************
  {  "name"    : "Set IP Family",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x004D",
     "version" : "1.9",
     "input"   : [  { "name"          : "Preference",
                      "id"            : "0x01",
                      "mandatory"     : "yes",
                      "type"          : "TLV",
                      "format"        : "guint8",
                      "public-format" : "QmiWdsIpFamily" } ],
     "output"  : [  { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Set Autoconnect Settings",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x0051",
     "version" : "1.12",
     "input"   : [ { "name"          : "Status",
                     "id"            : "0x01",
                     "mandatory"     : "yes",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiWdsAutoconnectSetting" },
                   { "name"          : "Roaming",
                     "id"            : "0x10",
                     "mandatory"     : "no",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiWdsAutoconnectSettingRoaming" } ],
     "output"  : [ { "common-ref" : "Operation Result" } ] },

  // *********************************************************************************
  {  "name"    : "Get PDN Throttle Info",
     "type"    : "Message",
     "service" : "WDS",
     "id"      : "0x006C",
     "version" : "1.12",
     "input"   : [ { "name"          : "Network Type",
                     "id"            : "0x01",
                     "mandatory"     : "yes",
                     "type"          : "TLV",
                     "format"        : "guint8",
                     "public-format" : "QmiWdsDataSystemNetworkType" } ],
     "output"  : [ { "common-ref"   : "Operation Result" },
                   { "name"         : "Info",
                     "id"           : "0x10",
                     "mandatory"    : "no",
                     "type"         : "TLV",
                     "format"        : "array",
                     "array-element" : { "name"     : "Element",
                                         "format"   : "struct",
                                         "contents" : [ { "name"          : "IPv4 Throttled",
                                                          "format"        : "gint8",
                                                          "public-format" : "gboolean" },
                                                        { "name"          : "IPv6 Throttled",
                                                          "format"        : "gint8",
                                                          "public-format" : "gboolean" },
                                                        { "name"          : "IPv4 Throttle Time Left MS",
                                                          "format"        : "guint32" },
                                                        { "name"          : "IPv6 Throttle Time Left MS",
                                                          "format"        : "guint32" },
                                                        { "name"          : "APN",
                                                          "format"        : "string" } ] },
                     "prerequisites": [ { "common-ref" : "Success" } ] } ] }

]
