BT: Update to support WebSocket 57/9057/8
authoryidongmiao <yidong.miao@cn.alps.com>
Fri, 7 Apr 2017 09:01:42 +0000 (17:01 +0800)
committeryidongmiao <yidong.miao@cn.alps.com>
Wed, 19 Apr 2017 01:56:40 +0000 (09:56 +0800)
modified:   app/bluetooth/Bluetooth.qml
modified:   binding-bluetooth/binding-bluetooth.pro
new file:   binding-bluetooth/bluetooth-agent.c
new file:   binding-bluetooth/bluetooth-agent.h
modified:   binding-bluetooth/bluetooth-api.c
modified:   binding-bluetooth/bluetooth-api.h
modified:   binding-bluetooth/bluetooth-manager.c
modified:   binding-bluetooth/bluetooth-manager.h
new file:   binding-bluetooth/bluez-client.c
new file:   binding-bluetooth/bluez-client.h
new file:   binding-bluetooth/lib_agent.c
new file:   binding-bluetooth/lib_agent.h
new file:   binding-bluetooth/lib_bluez.c
new file:   binding-bluetooth/lib_bluez.h
new file:   binding-bluetooth/lib_ofono.c
new file:   binding-bluetooth/lib_ofono.h
new file:   binding-bluetooth/lib_ofono_modem.c
new file:   binding-bluetooth/lib_ofono_modem.h
new file:   binding-bluetooth/ofono-client.c
new file:   binding-bluetooth/ofono-client.h

modified:   Bluetooth.qml

Change-Id: I18bc7ed86b6759d5b55a2662cf3ebd0d1e81b07f
Signed-off-by: yidongmiao <yidong.miao@cn.alps.com>
Jira identifier: SPEC-528

20 files changed:
app/bluetooth/Bluetooth.qml
binding-bluetooth/binding-bluetooth.pro
binding-bluetooth/bluetooth-agent.c [new file with mode: 0644]
binding-bluetooth/bluetooth-agent.h [new file with mode: 0644]
binding-bluetooth/bluetooth-api.c
binding-bluetooth/bluetooth-api.h
binding-bluetooth/bluetooth-manager.c
binding-bluetooth/bluetooth-manager.h
binding-bluetooth/bluez-client.c [new file with mode: 0644]
binding-bluetooth/bluez-client.h [new file with mode: 0644]
binding-bluetooth/lib_agent.c [new file with mode: 0644]
binding-bluetooth/lib_agent.h [new file with mode: 0644]
binding-bluetooth/lib_bluez.c [new file with mode: 0644]
binding-bluetooth/lib_bluez.h [new file with mode: 0644]
binding-bluetooth/lib_ofono.c [new file with mode: 0644]
binding-bluetooth/lib_ofono.h [new file with mode: 0644]
binding-bluetooth/lib_ofono_modem.c [new file with mode: 0644]
binding-bluetooth/lib_ofono_modem.h [new file with mode: 0644]
binding-bluetooth/ofono-client.c [new file with mode: 0644]
binding-bluetooth/ofono-client.h [new file with mode: 0644]

index 0ce01a1..a99d8a0 100644 (file)
-/*
- * Copyright (C) 2016 The Qt Company Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import QtQuick 2.6
-import QtQuick.Layouts 1.1
-import QtQuick.Controls 2.0
-import '..'
-
-SettingPage {
-    id: root
-    icon: '/bluetooth/images/HMI_Settings_BluetoothIcon.svg'
-    title: 'Bluetooth'
-    checkable: true
-
-    property string btAPIpath: bindingAddress + '/Bluetooth-manager/'
-    property var jsonObjectBT
-    property string currentState: 'idle'
-    property string btState: 'off' //add property to indicate the bt status
-
-    Text {
-        id: log
-        anchors.fill: parent
-        anchors.margins: 10
-        horizontalAlignment: Text.AlignHCenter
-        verticalAlignment: Text.AlignVCenter
-        //text: "log"
-    }
-
-    onCheckedChanged: {
-        console.log("Bluetooth set to", checked)
-        if (checked == true) {
-            request(btAPIpath + 'power?value=1', function (o) {
-                // log the json response
-                console.log(o.responseText)
-            })
-            request(btAPIpath + 'start_discovery', function (o) {
-               console.log(o.responseText)
-            })
-            buttonScan.text = "STOP"           //when power on and after send the discovery command, button set to STOP
-            currentState = 'discovering'
-            btState = 'on'     //bt is on
-            //search_device()
-            periodicRefresh.start()
-
-        } else {
-            //console.log(networkPath)
-            btDeviceList.clear()
-            periodicRefresh.stop()
-            request(btAPIpath + 'stop_discovery', function (o) {
-               // log the json response
-               console.log(o.responseText)
-            })
-            request(btAPIpath + 'power?value=0', function (o) {
-                // log the json response
-                //showRequestInfo(o.responseText)
-                console.log(o.responseText)
-            })
-            buttonScan.text = "SEARCH" //when power off the button should be set to SEARCH
-            currentState = 'idle'
-            btState = 'off'    //bt off
-        }
-    }
-
-    ListModel {
-      id: btDeviceList
-    }
-
-    Rectangle {
-      anchors.horizontalCenter: parent.horizontalCenter
-      anchors.bottom: parent.bottom
-      anchors.margins: 80
-      width: buttonScan.width + 10
-      height: buttonScan.height + 10
-      color: "#222"
-      border.color: "white"
-
-                Button {
-                    id: buttonScan
-                    anchors.centerIn: parent
-                    width: 100
-                    text: "SEARCH"     //default value is SEARCH
-
-                    MouseArea {
-                        //id: mouseArea
-                        anchors.fill: parent
-
-                        onClicked: {
-                            if (buttonScan.text == "SEARCH"){
-                                if (btState == 'on'){  //only response to the requirement when bt is on
-                                    request(btAPIpath + 'start_discovery', function (o) {
-
-                                    // log the json response
-                                    //showRequestInfo(o.responseText)
-                                    console.log(o.responseText)
-                                })
-                                    buttonScan.text = "STOP"
-                                    currentState = 'discovering'
-                                    periodicRefresh.start()
-                                }
-
-                            }else{
-                                request(btAPIpath + 'stop_discovery', function (o) {
-
-                                    // log the json response
-                                    //showRequestInfo(o.responseText)
-                                    console.log(o.responseText)
-                                })
-                                buttonScan.text = "SEARCH"
-                                currentState = 'idle'
-                                //periodicRefresh.stop()  //in order to update the content from bluez
-                            }
-                        }
-                    }
-                }
-      }
-
-      function request(url, callback) {
-            var xhr = new XMLHttpRequest()
-            xhr.onreadystatechange = (function (myxhr) {
-            return function () {
-                     if (xhr.readyState == 4 && xhr.status == 200){
-                         callback(myxhr)
-                     }
-                 }
-             })(xhr)
-             xhr.open('GET', url, false)
-             xhr.send('')
-       }
-
-      Component {
-         id:blueToothDevice
-         Rectangle {
-         height: 120
-         width: parent.width
-         color: "transparent"
-             MouseArea {
-               anchors.fill: parent
-                 Column {
-                     anchors.left: parent.left
-                     anchors.leftMargin: 80
-                     Text {
-                        id: btName
-                        text: deviceName
-                        color: '#66FF99'
-                        font.pixelSize: 48
-                     }
-//                     Text {
-//                        id: btAddr
-//                        text: deviceAddress
-//                        font.pixelSize: 24
-//                        color: 'white'
-//                     }
-                     Text {
-                        text: {
-                          if ((devicePairable === "True")
-                                 && (deviceConnect === "False"))
-                                 text = "paired, "
-                          else if ((devicePairable === "True")
-                                   && (deviceConnect === "True")
-                                   && (connectAVP === "True")
-                                   && (connectHFP === "False"))
-                                   text = "AV Connection, "
-                          else if ((devicePairable === "True")
-                                    && (deviceConnect === "True")
-                                    && (connectHFP === "True")
-                                    && (connectAVP === "False"))
-                                    text = "Handsfree Connection, "
-                          else if ((devicePairable === "True")
-                                   && (deviceConnect === "True")
-                                   && (connectHFP === "True")
-                                   && (connectAVP === "True"))
-                                   text = "Handsfree & AV Connection, "
-                          else
-                             text = ""
-                          text = text + deviceAddress
-                        }
-                        font.pointSize: 18
-                        color: "#ffffff"
-                        font.italic: true
-                     }
-                     Text {
-                       id: btPairable
-                       text: devicePairable
-                       visible: false
-                     }
-                     Text {
-                       id: btConnectstatus
-                       text: deviceConnect
-                       visible: false
-                     }
-
-                 }
-                 Button {
-                     id: removeButton
-                     anchors.top:parent.top
-                     anchors.topMargin: 15
-                     //anchors.horizontalCenter: btName.horizontalCenter
-                     anchors.right: parent.right
-                     anchors.rightMargin: 100
-
-                     text: "Unpair"
-                     MouseArea {
-                         anchors.fill: parent
-                         onClicked: {
-                             request(btAPIpath + 'remove_device?value=' + deviceAddress, function (o) {
-                                 console.log(o.responseText)
-                             })
-                             btDeviceList.remove(findDevice(deviceAddress))
-                         }
-                     }
-
-                 }
-
-                 Button {
-                  id: connectButton
-                  anchors.top:parent.top
-                  anchors.topMargin: 15
-                  //anchors.horizontalCenter: btName.horizontalCenter
-                  anchors.right: removeButton.left
-                  anchors.rightMargin: 10
-
-                  text:((connectHFP === "True") || (connectAVP === "True"))? "Disconnect":((btPairable.text == "True")? "Connect":"Pair")
-                  // only when HFP or AVP is connected, button will be shown as Disconnect
-                 MouseArea {
-                     anchors.fill: parent
-                     onClicked: {
-                        if (currentState == 'discovering'){
-                             request(btAPIpath + 'stop_discovery', function (o) {
-                               currentState = "idle"
-                               console.log(o.responseText)
-                             })
-                           }
-                        if (connectButton.text == "Pair"){
-                             connectButton.text = "Connect"
-                             request(btAPIpath + 'pair?value=' + deviceAddress, function (o) {
-                             btPairable.text = "True"
-                                console.log(o.responseText)
-                             })
-                             request(btAPIpath + 'set_property?Address=' + deviceAddress + '\&Property=Trusted\&value=true', function (o) {
-                                console.log(o.responseText)
-                             })
-                         }
-                         else if (connectButton.text == "Connect"){
-                                  connectButton.text = "Disconnect"
-                                  request(btAPIpath + 'connect?value=' + deviceAddress, function (o) {
-                                    console.log(o.responseText)
-                                  })
-                         }
-                         else if (connectButton.text == "Disconnect"){
-                                  request(btAPIpath + 'disconnect?value=' + deviceAddress, function (o) {
-                                    console.log(o.responseText)
-                                  })
-                                  connectButton.text = "Connect"
-                                  btDeviceList.remove(findDevice(deviceAddress))
-                          }
-                      }
-                    }
-                }
-             }
-
-             Image {
-                 source: '../images/HMI_Settings_DividingLine.svg'
-                 anchors.horizontalCenter: parent.horizontalCenter
-                 anchors.top: parent.top
-                 anchors.topMargin: -15
-
-                 visible: model.index > 0
-             }
-          }
-      }
-
-      ListView {
-          width: parent.width
-          anchors.top: parent.top
-          anchors.topMargin: 70
-          anchors.bottom: parent.bottom
-          anchors.bottomMargin: 150
-          model: btDeviceList
-          delegate: blueToothDevice
-          clip: true
-      }
-
-      function findDevice(address){
-                for (var i = 0; i < jsonObjectBT.length; i++) {
-                    if (address === jsonObjectBT[i].Address){
-                        return i
-                }
-          }
-      }
-      function search_device(){
-                btDeviceList.clear()
-                request(btAPIpath + 'discovery_result', function (o) {
-
-                    // log the json response
-                    console.log(o.responseText)
-
-                    // translate response into object
-                    var jsonObject = eval('(' + o.responseText + ')')
-
-                    jsonObjectBT = eval('(' + JSON.stbtPairableringify(
-                                                      jsonObject.response) + ')')
-
-                    console.log("BT list refreshed")
-
-                    //console.log(jsonObject.response)
-                    for (var i = 0; i < jsonObjectBT.length; i++) {
-                    btDeviceList.append({
-                                            deviceAddress: jsonObjectBT[i].Address,
-                                            deviceName: jsonObjectBT[i].Name,
-                                            devicePairable:jsonObjectBT[i].Paired,
-                                            deviceConnect: jsonObjectBT[i].Connected,
-                                            connectAVP: jsonObjectBT[i].AVPConnected,
-                                            connectHFP: jsonObjectBT[i].HFPConnected
-                                        })
-                     }
-               })
-      }
-
-      //Timer for periodic refresh; this is BAD solution, need to figure out how to subscribe for events
-      Timer {
-                id: periodicRefresh
-                interval: (currentState == "idle")? 10000:1000 // 1second
-                onTriggered: {
-
-                    btDeviceList.clear()
-
-                    request(btAPIpath + 'discovery_result', function (o) {
-
-                        // log the json response
-                        console.log(o.responseText)
-
-                        // translate response into object
-                        var jsonObject = eval('(' + o.responseText + ')')
-
-                        jsonObjectBT = eval('(' + JSON.stringify(
-                                                          jsonObject.response) + ')')
-
-                        console.log("BT list refreshed")
-
-                        //console.log(jsonObject.response)
-                        for (var i = 0; i < jsonObjectBT.length; i++) {
-                        btDeviceList.append({
-                                                deviceAddress: jsonObjectBT[i].Address,
-                                                deviceName: jsonObjectBT[i].Name,
-                                                devicePairable:jsonObjectBT[i].Paired,
-                                                deviceConnect: jsonObjectBT[i].Connected,
-                                                connectAVP: jsonObjectBT[i].AVPConnected,
-                                                connectHFP: jsonObjectBT[i].HFPConnected
-                                            })
-                       }
-                    })
-                    start()
-                }
-            }
- }
-
+/*\r
+ * Copyright (C) 2016 The Qt Company Ltd.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+import QtQuick 2.6\r
+import QtQuick.Layouts 1.1\r
+import QtQuick.Controls 2.0\r
+import QtWebSockets 1.0\r
+import '..'\r
+\r
+SettingPage {\r
+    id: root\r
+    icon: '/bluetooth/images/HMI_Settings_BluetoothIcon.svg'\r
+    title: 'Bluetooth'\r
+    checkable: true\r
+\r
+    property string btAPIpath: bindingAddress + '/Bluetooth-manager/'\r
+    property var jsonObjectBT: []\r
+    property string currentState: 'idle'\r
+    property string btState: 'off' //add property to indicate the bt status\r
+    property string initDevice: 'N'\r
+\r
+    property string address_str: bindingAddressWS\r
+    property string token_str: ""\r
+    property string api_str: "Bluetooth-Manager"\r
+    property string verb_str: ""\r
+    property var parameterJson: 'None'\r
+    property string payloadLength: "9999"\r
+    property var msgid_enu: {\r
+         "call": 2,\r
+         "retok": 3,\r
+         "reterr": 4,\r
+         "event": 5\r
+    }\r
+    property string request_str: ""\r
+    property string status_str: ""\r
+\r
+    WebSocket {\r
+        id: websocket\r
+        url: address_str\r
+        onTextMessageReceived: {\r
+            var message_json = JSON.parse(message);\r
+            //console.log("Raw response: " + message)\r
+            //console.log("JSON response: " + message_json)\r
+            if (message_json[0] === msgid_enu.reterr) {\r
+                console.log("Return value is not OK!")\r
+                return\r
+            }\r
+            else if ((message_json[0] === msgid_enu.event)){\r
+                var eventContent = JSON.parse(JSON.stringify(message_json[2]))\r
+                if (eventContent.event === "Bluetooth-Manager/device_added"){\r
+                    //jsonObjectBT.add(eventContent.data)\r
+                    //btDeviceList.clear()\r
+                    console.log("BT list refreshed")\r
+                    initDevice = 'Y'\r
+                    btDeviceList.append({\r
+                                        deviceAddress: eventContent.data.Address,\r
+                                        deviceName: eventContent.data.Name,\r
+                                        devicePairable:eventContent.data.Paired,\r
+                                        deviceConnect: eventContent.data.Connected,\r
+                                        connectAVP: eventContent.data.AVPConnected,\r
+                                        connectHFP: eventContent.data.HFPConnected,\r
+                                        textToShow: ""\r
+                                    })\r
+                } else if(eventContent.event === "Bluetooth-Manager/device_removed"){\r
+                  if (findDevice(eventContent.data.Address) >= 0){\r
+                      btDeviceList.remove(findDevice(eventContent.data.Address))\r
+                  }\r
+                } else if(eventContent.event === "Bluetooth-Manager/device_updated"){\r
+                  updateDeviceAttribute(eventContent.data)\r
+                } else if(eventContent.event === "Bluetooth-Manager/request_confirmation"){\r
+                    request(btAPIpath + "send_confirmation?value=yes", function (o) {\r
+                    console.log(o.responseText)\r
+                  })\r
+                }\r
+            }\r
+            if ((verb_str == "connect") || (verb_str == "refresh")) {\r
+                token_str = message_json[3]\r
+            } else if (verb_str == "logout") {\r
+                token_str = ""\r
+                websocket.active = false\r
+                console.log("close socket")\r
+            }\r
+        }\r
+        onStatusChanged: {\r
+            if (websocket.status == WebSocket.Error) {\r
+                status_str = "Error: " + websocket.errorString\r
+            } else if (websocket.status == WebSocket.Open) {\r
+                status_str = "Socket opened; sending message..."\r
+                if (verb_str == "connect"){\r
+                    WebSocket.sendTextMessage (request_str)\r
+                }\r
+\r
+                verb_str = "eventadd"\r
+                parameterJson = {\r
+                    tag: 'device_updated',\r
+                    name: 'device_updated'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+                verb_str = "eventsub"\r
+                parameterJson = {\r
+                    tag: 'device_updated'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+                verb_str = "eventadd"\r
+                parameterJson = {\r
+                    tag: 'device_added',\r
+                    name: 'device_added'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+                verb_str = "eventsub"\r
+                parameterJson = {\r
+                    tag: 'device_added'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+                verb_str = "eventadd"\r
+                parameterJson = {\r
+                    tag: 'device_removed',\r
+                    name: 'device_removed'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+                verb_str = "eventsub"\r
+                parameterJson = {\r
+                    tag: 'device_removed'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+                verb_str = "eventadd"\r
+                parameterJson = {\r
+                    tag: 'request_confirmation',\r
+                    name: 'request_confirmation'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+                verb_str = "eventsub"\r
+                parameterJson = {\r
+                    tag: 'request_confirmation'\r
+                }\r
+                sendSocketMesage(verb_str, parameterJson)\r
+\r
+            } else if (websocket.status == WebSocket.Closed) {\r
+                status_str = "Socket closed"\r
+            }\r
+        }\r
+        active: false\r
+    }\r
+\r
+    Text {\r
+        id: log\r
+        anchors.fill: parent\r
+        anchors.margins: 10\r
+        horizontalAlignment: Text.AlignHCenter\r
+        verticalAlignment: Text.AlignVCenter\r
+    }\r
+\r
+    onCheckedChanged: {\r
+        console.log("Bluetooth set to", checked)\r
+        if (checked == true) {\r
+            initBTlist()\r
+            request(btAPIpath + 'power?value=1', function (o) {\r
+                // log the json response\r
+                console.log(o.responseText)\r
+                websocket.active = true\r
+            })\r
+            request(btAPIpath + 'set_property?Property=Discoverable\&value=true', function (o) {\r
+               console.log(o.responseText)\r
+            })\r
+            request(btAPIpath + 'set_property?Property=Pairable\&value=true', function (o) {\r
+               console.log(o.responseText)\r
+            })\r
+            request(btAPIpath + 'start_discovery', function (o) {\r
+               console.log(o.responseText)\r
+            })\r
+            buttonScan.text = "STOP"           //when power on and after send the discovery command, button set to STOP\r
+            currentState = 'discovering'\r
+            btState = 'on'     //bt is on\r
+\r
+        } else {\r
+            btDeviceList.clear()\r
+            request(btAPIpath + 'stop_discovery', function (o) {\r
+               // log the json response\r
+               console.log(o.responseText)\r
+            })\r
+            request(btAPIpath + 'power?value=0', function (o) {\r
+                // log the json response\r
+                console.log(o.responseText)\r
+            })\r
+            buttonScan.text = "SEARCH" //when power off the button should be set to SEARCH\r
+            currentState = 'idle'\r
+            btState = 'off'    //bt off\r
+            websocket.active = false\r
+        }\r
+    }\r
+\r
+    function sendSocketMesage(verb, parameter) {\r
+        var requestJson = [msgid_enu.call, payloadLength, api_str + '/'\r
+                           + verb, parameter]\r
+        websocket.sendTextMessage(JSON.stringify(requestJson))\r
+    }\r
+\r
+    ListModel {\r
+      id: btDeviceList\r
+    }\r
+\r
+    Rectangle {\r
+      anchors.horizontalCenter: parent.horizontalCenter\r
+      anchors.bottom: parent.bottom\r
+      anchors.margins: 80\r
+      width: buttonScan.width + 10\r
+      height: buttonScan.height + 10\r
+      color: "#222"\r
+      border.color: "white"\r
+\r
+                Button {\r
+                    id: buttonScan\r
+                    anchors.centerIn: parent\r
+                    width: 100\r
+                    text: "SEARCH"     //default value is SEARCH\r
+\r
+                    MouseArea {\r
+                        //id: mouseArea\r
+                        anchors.fill: parent\r
+\r
+                        onClicked: {\r
+                            if (buttonScan.text == "SEARCH"){\r
+                                if (btState == 'on'){  //only response to the requirement when bt is on\r
+                                    request(btAPIpath + 'start_discovery', function (o) {\r
+\r
+                                    // log the json response\r
+                                    console.log(o.responseText)\r
+                                })\r
+                                    buttonScan.text = "STOP"\r
+                                    currentState = 'discovering'\r
+                                }\r
+                            }else{\r
+                                request(btAPIpath + 'stop_discovery', function (o) {\r
+                                    // log the json response\r
+                                    console.log(o.responseText)\r
+                                })\r
+                                buttonScan.text = "SEARCH"\r
+                                currentState = 'idle'\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+      }\r
+\r
+      function request(url, callback) {\r
+            var xhr = new XMLHttpRequest()\r
+            xhr.onreadystatechange = (function (myxhr) {\r
+            return function () {\r
+                     if (xhr.readyState == 4 && xhr.status == 200){\r
+                         callback(myxhr)\r
+                     }\r
+                 }\r
+             })(xhr)\r
+             xhr.open('GET', url, false)\r
+             xhr.send('')\r
+       }\r
+\r
+      Component {\r
+         id:blueToothDevice\r
+         Rectangle {\r
+         height: 120\r
+         width: parent.width\r
+         color: "transparent"\r
+             MouseArea {\r
+               anchors.fill: parent\r
+                 Column {\r
+                     anchors.left: parent.left\r
+                     anchors.leftMargin: 80\r
+                     Text {\r
+                        id: btName\r
+                        text: deviceName\r
+                        color: '#66FF99'\r
+                        font.pixelSize: 48\r
+                     }\r
+                     Text {\r
+                        id: btStatus\r
+                        property string connectionState:""\r
+                        text: {\r
+                          if ((devicePairable === "True")\r
+                                 && (deviceConnect === "False"))\r
+                                 text = ", paired"\r
+                          else if ((devicePairable === "True")\r
+                                   && (deviceConnect === "True")\r
+                                   && (connectAVP === "True")\r
+                                   && (connectHFP === "False"))\r
+                                   text = " AV Connection, "\r
+                          else if ((devicePairable === "True")\r
+                                    && (deviceConnect === "True")\r
+                                    && (connectHFP === "True")\r
+                                    && (connectAVP === "False"))\r
+                                    text = " Handsfree Connection, "\r
+                          else if ((devicePairable === "True")\r
+                                   && (deviceConnect === "True")\r
+                                   && (connectHFP === "True")\r
+                                   && (connectAVP === "True"))\r
+                                   text = " Handsfree & AV Connection, "\r
+                          else\r
+                             text = connectionState\r
+                          if (initDevice === "Y")\r
+                          {\r
+                             textToShow = text\r
+                             text = deviceAddress + text\r
+                             initDevice = 'N'\r
+                          }\r
+                          else\r
+                          {\r
+                             text = deviceAddress + textToShow\r
+                          }\r
+                        }\r
+                        font.pixelSize: 18\r
+                        color: "#ffffff"\r
+                        font.italic: true\r
+                     }\r
+                     Text {\r
+                       id: btPairable\r
+                       text: devicePairable\r
+                       visible: false\r
+                     }\r
+                     Text {\r
+                       id: btConnectstatus\r
+                       text: deviceConnect\r
+                       visible: false\r
+                     }\r
+                 }\r
+                 Button {\r
+                     id: removeButton\r
+                     anchors.top:parent.top\r
+                     anchors.topMargin: 15\r
+                     //anchors.horizontalCenter: btName.horizontalCenter\r
+                     anchors.right: parent.right\r
+                     anchors.rightMargin: 100\r
+\r
+                     text: "Unpair"\r
+                     MouseArea {\r
+                         anchors.fill: parent\r
+                         onClicked: {\r
+                             request(btAPIpath + 'remove_device?value=' + deviceAddress, function (o) {\r
+                                 console.log(o.responseText)\r
+                             })\r
+                             if (findDevice(deviceAddress) >= 0){\r
+                                btDeviceList.remove(findDevice(deviceAddress))\r
+                             }\r
+                         }\r
+                     }\r
+                 }\r
+\r
+                 Button {\r
+                  id: connectButton\r
+                  anchors.top:parent.top\r
+                  anchors.topMargin: 15\r
+                  anchors.right: removeButton.left\r
+                  anchors.rightMargin: 10\r
+\r
+                  text:(deviceConnect == "True")? "Disconnect":((btPairable.text == "True")? "Connect":"Pair")\r
+                  // only when HFP or AVP is connected, button will be shown as Disconnect\r
+                 MouseArea {\r
+                     anchors.fill: parent\r
+                     onClicked: {\r
+                        if (currentState == 'discovering'){\r
+                             request(btAPIpath + 'stop_discovery', function (o) {\r
+                               currentState = "idle"\r
+                               console.log(o.responseText)\r
+                             })\r
+                           }\r
+                        if (connectButton.text == "Pair"){\r
+                             connectButton.text = "Connect"\r
+                             request(btAPIpath + 'pair?value=' + deviceAddress, function (o) {\r
+                             btPairable.text = "True"\r
+                                console.log(o.responseText)\r
+                             })\r
+                             request(btAPIpath + 'set_device_property?Address=' + deviceAddress + '\&Property=Trusted\&value=true', function (o) {\r
+                                console.log(o.responseText)\r
+                             })\r
+                         }\r
+                         else if (connectButton.text == "Connect"){\r
+                                  connectButton.text = "Disconnect"\r
+                                  request(btAPIpath + 'connect?value=' + deviceAddress, function (o) {\r
+                                    console.log(o.responseText)\r
+                                  })\r
+                         }\r
+                         else if (connectButton.text == "Disconnect"){\r
+                                  request(btAPIpath + 'disconnect?value=' + deviceAddress, function (o) {\r
+                                    console.log(o.responseText)\r
+                                  })\r
+                                  connectButton.text = "Connect"\r
+                          }\r
+                      }\r
+                    }\r
+                }\r
+             }\r
+\r
+             Image {\r
+                 source: '../images/HMI_Settings_DividingLine.svg'\r
+                 anchors.horizontalCenter: parent.horizontalCenter\r
+                 anchors.top: parent.top\r
+                 anchors.topMargin: -15\r
+\r
+                 visible: model.index > 0\r
+             }\r
+          }\r
+      }\r
+\r
+      ListView {\r
+          width: parent.width\r
+          anchors.top: parent.top\r
+          anchors.topMargin: 70\r
+          anchors.bottom: parent.bottom\r
+          anchors.bottomMargin: 150\r
+          model: btDeviceList\r
+          delegate: blueToothDevice\r
+          clip: true\r
+      }\r
+\r
+      function findDevice(address){\r
+          for (var i = 0; i < btDeviceList.count; i++) {\r
+              if (address === btDeviceList.get(i).deviceAddress){\r
+                  return i\r
+                  }\r
+              }\r
+          return -1\r
+      }\r
+\r
+      function updateDeviceAttribute(data){\r
+            var text = ""\r
+            for (var i = 0; i < btDeviceList.count; i++) {\r
+                if (data.Address === btDeviceList.get(i).deviceAddress){\r
+                    btDeviceList.get(i).devicePairable = data.Paired\r
+                    if (data.Paired == "True")\r
+                    {\r
+                        console.log("connectButton  " + btDeviceList.get(i).btStatus)\r
+                        //ALCZbtDeviceList.get(i).connectButton.text = "Connect"\r
+                    }\r
+\r
+                    if ((data.Paired === "True")\r
+                               && (data.Connected === "False"))\r
+                        text = ", paired"\r
+                    else if ((data.Paired === "True")\r
+                               && (data.Connected === "True")\r
+                               && (data.AVPConnected === "True")\r
+                               && (data.HFPConnected === "False"))\r
+                        text = "AV Connection, "\r
+                    else if ((data.Paired === "True")\r
+                                && (data.Connected === "True")\r
+                                && (data.HFPConnected === "True")\r
+                                && (data.AVPConnected === "False"))\r
+                        text = "Handsfree Connection, "\r
+                    else if ((data.Paired === "True")\r
+                                && (data.Connected === "True")\r
+                                && (data.HFPConnected === "True")\r
+                                && (data.AVPConnected === "True")) {\r
+                        console.log("all connected!!")\r
+                        text = ", Handsfree & AV Connection"}\r
+                    else\r
+                        text = ""\r
+\r
+                    btDeviceList.set(i, {\r
+                                            textToShow: " " + text\r
+                                        })\r
+                    console.log("iamhere" + btDeviceList.get(i).deviceAddress + data.Paired)\r
+\r
+                    //btDeviceList.get(i).btStatus = text + btDeviceList.get(i).deviceAddress //btDeviceList.get(i).textToShow\r
+                    btDeviceList.layoutChanged()\r
+\r
+                    btDeviceList.get(i).deviceConnect = data.Connected\r
+                    console.log(data.Connected)\r
+              }\r
+          }\r
+        }\r
+\r
+      function initBTlist(){\r
+          request(btAPIpath + 'discovery_result', function (o) {\r
+\r
+              // log the json response\r
+              console.log(o.responseText)\r
+\r
+              // translate response into object\r
+              var jsonObject = eval('(' + o.responseText + ')')\r
+\r
+              jsonObjectBT = eval('(' + JSON.stringify(\r
+                                                jsonObject.response) + ')')\r
+\r
+              console.log("BT list refreshed")\r
+\r
+              //console.log(jsonObject.response)\r
+              for (var i = 0; i < jsonObjectBT.length; i++) {\r
+              initDevice = 'Y'\r
+              console.log(jsonObjectBT[i].Paired)\r
+              btDeviceList.append({\r
+                                      deviceAddress: jsonObjectBT[i].Address,\r
+                                      deviceName: jsonObjectBT[i].Name,\r
+                                      devicePairable:jsonObjectBT[i].Paired,\r
+                                      deviceConnect: jsonObjectBT[i].Connected,\r
+                                      connectAVP: jsonObjectBT[i].AVPConnected,\r
+                                      connectHFP: jsonObjectBT[i].HFPConnected,\r
+                                      textToShow: ""\r
+                                  })\r
+             }\r
+          })\r
+      }\r
+ }\r
+\r
index 9dba7a1..600695a 100644 (file)
@@ -1,11 +1,11 @@
 TARGET = settings-bluetooth-binding
 
-HEADERS = bluetooth-api.h bluetooth-manager.h
-SOURCES = bluetooth-api.c bluetooth-manager.c
+HEADERS = bluetooth-api.h bluetooth-manager.h bluetooth-agent.h lib_agent.h ofono-client.h lib_ofono.h lib_ofono_modem.h bluez-client.h lib_bluez.h
+SOURCES = bluetooth-api.c bluetooth-manager.c bluetooth-agent.c lib_agent.c ofono-client.c lib_ofono.c lib_ofono_modem.c bluez-client.c lib_bluez.c 
 
 LIBS += -Wl,--version-script=$$PWD/export.map
 
 CONFIG += link_pkgconfig
-PKGCONFIG += json-c afb-daemon glib-2.0 gio-2.0 gobject-2.0 zlib
+PKGCONFIG += json-c afb-daemon glib-2.0 gio-2.0 gobject-2.0 gio-unix-2.0 zlib
 
 include(binding.pri)
diff --git a/binding-bluetooth/bluetooth-agent.c b/binding-bluetooth/bluetooth-agent.c
new file mode 100644 (file)
index 0000000..7193ce5
--- /dev/null
@@ -0,0 +1,736 @@
+/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
+*
+*   Licensed under the Apache License, Version 2.0 (the "License");
+*   you may not use this file except in compliance with the License.
+*   You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*   Unless required by applicable law or agreed to in writing, software
+*   distributed under the License is distributed on an "AS IS" BASIS,
+*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*   See the License for the specific language governing permissions and
+*   limitations under the License.
+*/
+
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <gio/gio.h>
+
+#include "bluetooth-agent.h"
+
+#ifdef AGENT_THREAD
+
+#include <pthread.h>
+
+static GMainLoop *agentLoop = NULL;
+#endif
+
+static GDBusConnection *system_conn = NULL;
+static gboolean agent_registered = FALSE;
+static const char *agent_capability = NULL;
+static Agent_RegisterCallback_t agent_RegisterCallback = { 0 };
+static AGENTOrgBluezAgent1 * agnet_interface = NULL;
+
+static struct Agent_Node *agent_event = NULL;
+
+
+static void agent_event_auto_release(struct Agent_Node *event)
+{
+    if (NULL == event ){
+        return;
+    }
+    g_dbus_method_invocation_return_dbus_error (event->invocation,
+                                                ERROR_BLUEZ_REJECT, "");
+    g_free(event);
+}
+
+/*
+ * Store the agent event
+ */
+static void agent_event_new(AGENTOrgBluezAgent1      *object,
+                    GDBusMethodInvocation   *invocation, int type)
+{
+    LOGD("\n");
+    if(NULL !=agent_event )
+    {
+        agent_event_auto_release(agent_event);
+    }
+    agent_event = g_malloc0(sizeof(struct Agent_Node));
+    agent_event->type = type;
+    agent_event->object = object;
+    agent_event->invocation = invocation;
+
+}
+
+
+/*
+ * agent api
+ *
+ * Methods : void Release()
+ * This method gets called when the service daemon
+ * unregisters the agent. An agent can use it to do
+ * cleanup tasks. There is no need to unregister the
+ * agent, because when this method gets called it has
+ * already been unregistered.
+ */
+static gboolean
+on_handle_Release (AGENTOrgBluezAgent1      *object,
+                    GDBusMethodInvocation   *invocation,
+                    gpointer                user_data)
+{
+    LOGD("\n");
+
+    //gboolean ret = FALSE;
+
+    if (NULL != agent_RegisterCallback.agent_Release)
+    {
+        agent_RegisterCallback.agent_Release();
+    }
+
+    agent_org_bluez_agent1_complete_release(object, invocation);
+
+    g_dbus_interface_skeleton_unexport(
+        G_DBUS_INTERFACE_SKELETON(agnet_interface));
+
+    g_object_unref(agnet_interface);
+    agent_registered = FALSE;
+
+#ifdef AGENT_THREAD
+    if(agentLoop){
+        g_main_loop_quit(agentLoop);
+    }
+#endif
+
+    return TRUE;
+}
+
+/*
+ * agent api
+ * Methods : string RequestPinCode(object device)
+ *
+ * This method gets called when the service daemon
+ * needs to get the passkey for an authentication.
+ *
+ * The return value should be a string of 1-16 characters
+ * length. The string can be alphanumeric.
+ */
+static gboolean
+on_handle_RequestPinCode (AGENTOrgBluezAgent1       *object,
+                            GDBusMethodInvocation   *invocation,
+                            const gchar             *device,
+                            gpointer                user_data)
+{
+
+    LOGD("device:%s.\n",device);
+
+    gboolean ret = FALSE;
+    const gchar *error = ERROR_BLUEZ_REJECT;
+    gchar *response;
+
+    if (NULL != agent_RegisterCallback.agent_RequestPinCode)
+    {
+        ret = agent_RegisterCallback.agent_RequestPinCode (device,
+                                                           &response, &error);
+    }
+
+    if (TRUE == ret)
+    {
+        agent_org_bluez_agent1_complete_request_pin_code(object,
+                                                        invocation, response);
+        g_free(response);
+
+    }
+    else
+    {
+         g_dbus_method_invocation_return_dbus_error (invocation, error, "");
+    }
+
+    return TRUE;
+}
+
+/*
+ * agent api
+ * Methods : void DisplayPinCode(object device, string pincode)
+ *
+ * This method gets called when the service daemon
+ * needs to display a pincode for an authentication.
+ */
+static gboolean
+on_handle_DisplayPinCode (AGENTOrgBluezAgent1   *object,
+                        GDBusMethodInvocation   *invocation,
+                        const gchar             *device,
+                        const gchar             *pincode,
+                        gpointer                user_data)
+{
+
+    LOGD("device:%s,pincode:%s.\n",device, pincode);
+
+    gboolean ret = FALSE;
+    const gchar *error = ERROR_BLUEZ_REJECT;
+
+    if (NULL != agent_RegisterCallback.agent_DisplayPinCode)
+    {
+        ret = agent_RegisterCallback.agent_DisplayPinCode(device,
+                                                            pincode, &error);
+    }
+
+    if (TRUE == ret)
+    {
+        agent_org_bluez_agent1_complete_display_pin_code(object, invocation);
+    }
+    else
+    {
+        g_dbus_method_invocation_return_dbus_error (invocation, error, "");
+    }
+
+     return TRUE;
+}
+
+
+/*
+ * agent api
+ * Methods : uint32 RequestPasskey(object device)
+ *
+ * This method gets called when the service daemon
+ * needs to get the passkey for an authentication.
+ *
+ * The return value should be a numeric value
+ * between 0-999999.
+ */
+static gboolean
+on_handle_RequestPasskey (AGENTOrgBluezAgent1   *object,
+                        GDBusMethodInvocation   *invocation,
+                        const gchar             *device,
+                        gpointer                user_data)
+{
+
+    LOGD("device:%s.\n",device);
+
+    gboolean ret = FALSE;
+    const gchar *error = ERROR_BLUEZ_REJECT;
+    guint passkey;
+
+    if (NULL != agent_RegisterCallback.agent_RequestPasskey)
+    {
+        ret = agent_RegisterCallback.agent_RequestPasskey(device,
+                                                            &passkey, &error);
+    }
+
+    if (TRUE == ret)
+    {
+        agent_org_bluez_agent1_complete_request_passkey(object,
+                                                        invocation, passkey);
+    }
+    else
+    {
+        g_dbus_method_invocation_return_dbus_error (invocation, error, "");
+    }
+
+    return TRUE;
+
+}
+
+
+/*
+ * agent api
+ * Methods : void DisplayPasskey(object device, uint32 passkey, uint16 entered)
+ *
+ * This method gets called when the service daemon
+ * needs to display a passkey for an authentication.
+ *
+ * The entered parameter indicates the number of already
+ * typed keys on the remote side.
+ */
+static gboolean
+on_handle_DisplayPasskey (AGENTOrgBluezAgent1   *object,
+                        GDBusMethodInvocation   *invocation,
+                        const gchar             *device,
+                        guint                   passkey,
+                        guint16                 entered,
+                        gpointer                user_data)
+{
+
+    LOGD("device:%s,passkey:%d,entered:%d.\n",device, passkey, entered);
+
+    //gboolean ret = FALSE;
+
+    if (NULL != agent_RegisterCallback.agent_DisplayPasskey)
+    {
+        agent_RegisterCallback.agent_DisplayPasskey(device, passkey, entered);
+    }
+
+    agent_org_bluez_agent1_complete_display_passkey(object, invocation);
+
+
+    return TRUE;
+
+}
+
+/*
+ * agent api
+ * Methods : void RequestConfirmation(object device, uint32 passkey)
+ *
+ * This method gets called when the service daemon
+ * needs to confirm a passkey for an authentication.
+ *
+ * To confirm the value it should return an empty reply
+ * or an error in case the passkey is invalid.
+ */
+static gboolean
+on_handle_RequestConfirmation (AGENTOrgBluezAgent1  *object,
+                            GDBusMethodInvocation   *invocation,
+                            const gchar             *device,
+                            guint                   passkey,
+                            gpointer                user_data)
+{
+    LOGD("device:%s,passkey:%d.\n", device, passkey);
+
+    gboolean ret = FALSE;
+    const gchar *error = ERROR_BLUEZ_REJECT;
+
+    if (NULL != agent_RegisterCallback.agent_RequestConfirmation)
+    {
+        ret = agent_RegisterCallback.agent_RequestConfirmation(device,
+                                                              passkey, &error);
+    }
+    LOGD("ret %d\n",ret);
+    if (TRUE == ret)
+    {
+        agent_event_new(object, invocation,REQUEST_CONFIRMATION);
+        //agent_org_bluez_agent1_complete_request_confirmation(object,
+        //                                                    invocation);
+    }
+    else
+    {
+        g_dbus_method_invocation_return_dbus_error (invocation, error, "");
+    }
+
+    return TRUE;
+}
+
+/*
+ * agent api
+ * Methods : void RequestAuthorization(object device)
+ *
+ * This method gets called to request the user to
+ * authorize an incoming pairing attempt which
+ * would in other circumstances trigger the just-works
+ * model.
+ */
+static gboolean
+on_handle_RequestAuthorization (AGENTOrgBluezAgent1     *object,
+                                GDBusMethodInvocation   *invocation,
+                                const gchar             *device,
+                                gpointer                user_data)
+{
+    LOGD("device:%s.\n",device);
+
+    gboolean ret = FALSE;
+    const gchar *error = ERROR_BLUEZ_REJECT;
+
+    if (NULL != agent_RegisterCallback.agent_RequestAuthorization)
+    {
+        ret = agent_RegisterCallback.agent_RequestAuthorization(device,&error);
+    }
+
+    if (TRUE == ret)
+    {
+        agent_org_bluez_agent1_complete_request_authorization(object,
+                                                                invocation);
+    }
+    else
+    {
+        g_dbus_method_invocation_return_dbus_error (invocation, error, "");
+    }
+
+    return TRUE;
+}
+
+/*
+ * agent api
+ * Methods : void AuthorizeService(object device, string uuid)
+ *
+ * This method gets called when the service daemon
+ * needs to authorize a connection/service request.
+ */
+static gboolean
+on_handle_AuthorizeService (AGENTOrgBluezAgent1     *object,
+                            GDBusMethodInvocation   *invocation,
+                            const gchar             *device,
+                            const gchar             *uuid,
+                            gpointer                user_data)
+{
+
+    LOGD("device:%s.uuid:%s\n",device,uuid);
+
+    gboolean ret = FALSE;
+    const gchar *error = ERROR_BLUEZ_REJECT;
+
+    if (NULL != agent_RegisterCallback.agent_AuthorizeService)
+    {
+        ret = agent_RegisterCallback.agent_AuthorizeService(device,
+                                                            uuid, &error);
+    }
+
+    if (TRUE == ret)
+    {
+        agent_org_bluez_agent1_complete_authorize_service(object, invocation);
+    }
+    else
+    {
+        g_dbus_method_invocation_return_dbus_error (invocation, error, "");
+    }
+
+    return TRUE;
+}
+
+/*
+ * agent api
+ * Methods : void Cancel()
+ *
+ * This method gets called to indicate that the agent
+ * request failed before a reply was returned.
+ */
+static gboolean
+on_handle_Cancel (AGENTOrgBluezAgent1           *object,
+                       GDBusMethodInvocation    *invocation,
+                       gpointer                 user_data)
+{
+    LOGD("\n");
+
+    if (NULL != agent_RegisterCallback.agent_Cancel)
+    {
+        agent_RegisterCallback.agent_Cancel();
+    }
+
+    agent_org_bluez_agent1_complete_cancel(object, invocation);
+
+    return TRUE;
+
+}
+
+/*
+ * agent init
+ * init the dbus and register the agent to bluez
+ */
+static int create_and_register_agent(const char *capability)
+{
+    GError *error = NULL;
+    gboolean ret;
+    GVariant *value;
+
+    LOGD("%s\n",capability);
+
+    if (agent_registered == TRUE) {
+        LOGD("Agent is already registered\n");
+        return -1;
+    }
+
+    system_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
+
+    if (error)
+    {
+        LOGE("errr:%s",error->message);
+        g_error_free(error);
+
+        return -1;
+    }
+
+    agent_capability = capability;
+
+    agnet_interface = agent_org_bluez_agent1_skeleton_new ();
+
+    g_signal_connect (agnet_interface,
+                        "handle-release",
+                        G_CALLBACK (on_handle_Release),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-request-pin-code",
+                        G_CALLBACK (on_handle_RequestPinCode),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-display-pin-code",
+                        G_CALLBACK (on_handle_DisplayPinCode),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-request-passkey",
+                        G_CALLBACK (on_handle_RequestPasskey),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-display-passkey",
+                        G_CALLBACK (on_handle_DisplayPasskey),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-request-confirmation",
+                        G_CALLBACK (on_handle_RequestConfirmation),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-request-authorization",
+                        G_CALLBACK (on_handle_RequestAuthorization),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-authorize-service",
+                        G_CALLBACK (on_handle_AuthorizeService),
+                        NULL);
+
+    g_signal_connect (agnet_interface,
+                        "handle-cancel",
+                        G_CALLBACK (on_handle_Cancel),
+                        NULL);
+
+    ret = g_dbus_interface_skeleton_export (
+                                   G_DBUS_INTERFACE_SKELETON (agnet_interface),
+                                    system_conn,
+                                    AGENT_PATH,
+                                    &error);
+
+    if (FALSE == ret)
+    {
+        LOGE("errr:%s",error->message);
+        g_error_free(error);
+        g_object_unref(system_conn);
+
+        return -1;
+    }
+
+    value = g_dbus_connection_call_sync(system_conn, BLUEZ_SERVICE,
+                    AGENT_PATH,   AGENT_MANAGER_INTERFACE,
+                    "RegisterAgent",    g_variant_new("(os)", AGENT_PATH,
+                        agent_capability),
+                    NULL,  G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT,
+                    NULL, &error);
+
+    if (NULL == value) {
+        LOGE ("RegisterAgent Err: %s", error->message);
+        g_error_free(error);
+
+        g_dbus_interface_skeleton_unexport(
+            G_DBUS_INTERFACE_SKELETON(agnet_interface));
+
+        g_object_unref(system_conn);
+        return -1;
+    }
+
+    g_variant_unref(value);
+
+    agent_capability = NULL;
+
+    agent_registered = TRUE;
+
+    return 0;
+}
+
+#ifdef AGENT_THREAD
+/*
+ * agent thread function
+ */
+static void *agent_event_loop_thread(const char *capability)
+{
+
+    agentLoop = g_main_loop_new(NULL, FALSE);
+    guint id;
+    GError *error = NULL;
+    gboolean ret;
+
+    ret = create_and_register_agent(capability);
+
+    if (0 == ret)
+    {
+        LOGD("g_main_loop_run\n");
+        g_main_loop_run(agentLoop);
+
+
+    }
+
+    g_main_loop_unref(agentLoop);
+    agentLoop = NULL;
+    LOGD("exit...\n");
+}
+#endif
+
+
+/* --- PUBLIC FUNCTIONS --- */
+
+
+/*
+ * start agent.
+ * Returns: 0 - success or other errors
+ */
+int agent_register(const char *capability)
+{
+    int ret = 0;
+    LOGD("\n");
+
+    if (agent_registered == TRUE) {
+        LOGD("Agent is already registered\n");
+        return -1;
+    }
+
+#ifdef AGENT_THREAD
+    pthread_t thread_id;
+    pthread_create(&thread_id, NULL, agent_event_loop_thread, capability);
+    pthread_setname_np(thread_id, "agent");
+
+#else
+    ret = create_and_register_agent(capability);
+#endif
+
+    return ret;
+}
+
+/*
+ * stop agent.
+ * Returns: 0 - success or other errors
+ */
+int stop_agent()
+{
+    GError *error = NULL;
+    GVariant *value;
+
+    LOGD("\n");
+
+    if (agent_registered == FALSE) {
+        LOGD("No agent is registered\n");
+        return -1;
+    }
+
+    value = g_dbus_connection_call_sync(system_conn, BLUEZ_SERVICE,
+                    AGENT_PATH,   AGENT_MANAGER_INTERFACE,
+                    "UnregisterAgent",    g_variant_new("(o)", AGENT_PATH  ),
+                    NULL,  G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT,
+                    NULL, &error);
+
+    if (NULL == value) {
+        LOGE ("Error UnregisterAgent: %s", error->message);
+        g_error_free(error);
+
+        return -1;
+    }
+
+    g_dbus_interface_skeleton_unexport(
+        G_DBUS_INTERFACE_SKELETON(agnet_interface));
+
+    g_object_unref(agnet_interface);
+
+    g_object_unref(system_conn);
+
+    agent_registered = FALSE;
+
+    memset(&agent_RegisterCallback, 0, sizeof(Agent_RegisterCallback_t));
+
+#ifdef AGENT_THREAD
+    if(agentLoop){
+        g_main_loop_quit(agentLoop);
+    }
+#endif
+
+    return 0;
+}
+
+/*
+ * Register Agent Callback function
+ */
+void agent_API_register(const Agent_RegisterCallback_t* pstRegisterCallback)
+{
+    LOGD("\n");
+
+    if (NULL != pstRegisterCallback)
+    {
+        if (NULL != pstRegisterCallback->agent_Release)
+        {
+            agent_RegisterCallback.agent_Release =
+                pstRegisterCallback->agent_Release;
+        }
+
+        if (NULL != pstRegisterCallback->agent_RequestPinCode)
+        {
+            agent_RegisterCallback.agent_RequestPinCode =
+                pstRegisterCallback->agent_RequestPinCode;
+        }
+
+        if (NULL != pstRegisterCallback->agent_DisplayPinCode)
+        {
+            agent_RegisterCallback.agent_DisplayPinCode =
+                pstRegisterCallback->agent_DisplayPinCode;
+        }
+
+        if (NULL != pstRegisterCallback->agent_RequestPasskey)
+        {
+            agent_RegisterCallback.agent_RequestPasskey =
+                pstRegisterCallback->agent_RequestPasskey;
+        }
+
+        if (NULL != pstRegisterCallback->agent_DisplayPasskey)
+        {
+            agent_RegisterCallback.agent_DisplayPasskey =
+                pstRegisterCallback->agent_DisplayPasskey;
+        }
+
+        if (NULL != pstRegisterCallback->agent_RequestConfirmation)
+        {
+            agent_RegisterCallback.agent_RequestConfirmation =
+                pstRegisterCallback->agent_RequestConfirmation;
+        }
+
+        if (NULL != pstRegisterCallback->agent_RequestAuthorization)
+        {
+            agent_RegisterCallback.agent_RequestAuthorization =
+                pstRegisterCallback->agent_RequestAuthorization;
+        }
+
+        if (NULL != pstRegisterCallback->agent_AuthorizeService)
+        {
+            agent_RegisterCallback.agent_AuthorizeService =
+                pstRegisterCallback->agent_AuthorizeService;
+        }
+
+        if (NULL != pstRegisterCallback->agent_Cancel)
+        {
+            agent_RegisterCallback.agent_Cancel =
+                pstRegisterCallback->agent_Cancel;
+        }
+
+    }
+
+}
+
+/*
+ * Send the agent event "RequestConfirmation" reply
+ */
+int agent_send_confirmation(gboolean confirmation)
+{
+    if (NULL == agent_event)
+    {
+        LOGW("Not agent event");
+        return -1;
+    }
+    LOGD("%d-%d\n", confirmation, agent_event->type);
+
+    if (REQUEST_CONFIRMATION != agent_event->type)
+    {
+        return -1;
+    }
+
+    if (TRUE == confirmation){
+        agent_org_bluez_agent1_complete_request_confirmation(agent_event->object,
+                                                      agent_event->invocation);
+    }else{
+        g_dbus_method_invocation_return_dbus_error (agent_event->invocation,
+                                                    ERROR_BLUEZ_REJECT, "");
+    }
+
+    g_free(agent_event);
+    agent_event = NULL;
+    return 0;
+}
+/****************************** The End Of File ******************************/
+
diff --git a/binding-bluetooth/bluetooth-agent.h b/binding-bluetooth/bluetooth-agent.h
new file mode 100644 (file)
index 0000000..2b4b78a
--- /dev/null
@@ -0,0 +1,67 @@
+/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
+*
+*   Licensed under the Apache License, Version 2.0 (the "License");
+*   you may not use this file except in compliance with the License.
+*   You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*   Unless required by applicable law or agreed to in writing, software
+*   distributed under the License is distributed on an "AS IS" BASIS,
+*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*   See the License for the specific language governing permissions and
+*   limitations under the License.
+*/
+
+
+#ifndef BLUETOOTH_AGENT_H
+#define BLUETOOTH_AGENT_H
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+
+#include "lib_agent.h"
+#include "bluetooth-manager.h"
+
+//#define AGENT_THREAD
+#define REQUEST_PINCCODE 1
+#define REQUEST_PASSKEY 2
+#define REQUEST_CONFIRMATION 3
+#define REQUEST_AUTHORIZATION 4
+
+struct Agent_Node
+{
+    int    type;
+    AGENTOrgBluezAgent1     *object;
+    GDBusMethodInvocation   *invocation;
+};
+
+typedef struct tagAgent_RegisterCallback
+{
+    void (*agent_Release)(void);
+    gboolean (*agent_RequestPinCode) (const gchar *device, gchar **pincode, const gchar **error);
+    gboolean (*agent_DisplayPinCode)(const gchar *device, const gchar *pincode, const gchar **error);
+    gboolean (*agent_RequestPasskey)(const gchar *device, guint *passkey, const gchar **error);
+    void (*agent_DisplayPasskey)(const gchar *device, guint passkey, guint16 entered);
+    gboolean (*agent_RequestConfirmation)(const gchar *device, guint passkey, const gchar **error);
+    gboolean (*agent_RequestAuthorization)(const gchar *device, const gchar **error);
+    gboolean (*agent_AuthorizeService)(const gchar *device, const gchar *uuid, const gchar **error);
+    void (*agent_Cancel)(void);
+}Agent_RegisterCallback_t;
+
+
+
+/* --- PUBLIC FUNCTIONS --- */
+void agent_API_register(const Agent_RegisterCallback_t* pstRegisterCallback);
+
+int agent_register(const char *capability);
+int stop_agent();
+
+int agent_send_confirmation(gboolean confirmation);
+
+#endif /* BLUETOOTH_AGENT_H */
+
+
+/****************************** The End Of File ******************************/
+
index 487a79f..705e040 100644 (file)
 #include <json-c/json.h>
 #include <afb/afb-binding.h>
 #include <afb/afb-service-itf.h>
-#include "bluetooth-api.h"
-#include "bluetooth-manager.h"
 
+#include "bluetooth-manager.h"
+#include "bluetooth-agent.h"
+#include "bluetooth-api.h"
 
 /*
  * the interface to afb-daemon
  */
 const struct afb_binding_interface *afbitf;
 
+struct event
+{
+       struct event *next;
+       struct afb_event event;
+       char tag[1];
+};
+
+static struct event *events = 0;
+
+/* searchs the event of tag */
+static struct event *event_get(const char *tag)
+{
+       struct event *e = events;
+       while(e && strcmp(e->tag, tag))
+               e = e->next;
+       return e;
+}
+
+/* deletes the event of tag */
+static int event_del(const char *tag)
+{
+       struct event *e, **p;
+
+       /* check exists */
+       e = event_get(tag);
+       if (!e) return -1;
+
+       /* unlink */
+       p = &events;
+       while(*p != e) p = &(*p)->next;
+       *p = e->next;
+
+       /* destroys */
+       afb_event_drop(e->event);
+       free(e);
+       return 0;
+}
+
+/* creates the event of tag */
+static int event_add(const char *tag, const char *name)
+{
+       struct event *e;
+
+       /* check valid tag */
+       e = event_get(tag);
+       if (e) return -1;
+
+       /* creation */
+       e = malloc(strlen(tag) + sizeof *e);
+       if (!e) return -1;
+       strcpy(e->tag, tag);
+
+       /* make the event */
+       e->event = afb_daemon_make_event(afbitf->daemon, name);
+       if (!e->event.closure) { free(e); return -1; }
+
+       /* link */
+       e->next = events;
+       events = e;
+       return 0;
+}
+
+static int event_subscribe(struct afb_req request, const char *tag)
+{
+       struct event *e;
+       e = event_get(tag);
+       return e ? afb_req_subscribe(request, e->event) : -1;
+}
+
+static int event_unsubscribe(struct afb_req request, const char *tag)
+{
+       struct event *e;
+       e = event_get(tag);
+       return e ? afb_req_unsubscribe(request, e->event) : -1;
+}
+
+static int event_push(struct json_object *args, const char *tag)
+{
+       struct event *e;
+       e = event_get(tag);
+       return e ? afb_event_push(e->event, json_object_get(args)) : -1;
+}
+
+/* create device json object*/
+static json_object *new_json_object_from_device(struct btd_device *BDdevice, unsigned int filter)
+{
+    json_object *jresp = json_object_new_object();
+    json_object *jstring = NULL;
+
+    if (BD_PATH & filter)
+    {
+        if (BDdevice->path)
+        {
+            jstring = json_object_new_string(BDdevice->path);
+        }
+        else
+        {
+            jstring = json_object_new_string("");
+        }
+        json_object_object_add(jresp, "Path", jstring);
+    }
+
+    if (BD_ADDER & filter)
+    {
+        if (BDdevice->bdaddr)
+        {
+            jstring = json_object_new_string(BDdevice->bdaddr);
+        }
+        else
+        {
+            jstring = json_object_new_string("");
+        }
+        json_object_object_add(jresp, "Address", jstring);
+    }
+
+    if (BD_NAME & filter)
+    {
+        if (BDdevice->name)
+        {
+            jstring = json_object_new_string(BDdevice->name);
+        }
+        else
+        {
+            jstring = json_object_new_string("");
+        }
+        json_object_object_add(jresp, "Name", jstring);
+    }
+
+    if (BD_PAIRED & filter)
+    {
+        jstring = (TRUE == BDdevice->paired) ?
+            json_object_new_string("True"):json_object_new_string("False");
+        json_object_object_add(jresp, "Paired", jstring);
+    }
+
+    if (BD_TRUSTED & filter)
+    {
+        jstring = (TRUE == BDdevice->trusted) ?
+            json_object_new_string("True"):json_object_new_string("False");
+        json_object_object_add(jresp, "Trusted", jstring);
+    }
+
+    if (BD_ACLCONNECTED & filter)
+    {
+        jstring = (TRUE == BDdevice->connected) ?
+            json_object_new_string("True"):json_object_new_string("False");
+        json_object_object_add(jresp, "Connected", jstring);
+    }
 
-/* ------ PUBLIC PLUGIN FUNCTIONS --------- */
+    if (BD_AVCONNECTED & filter)
+    {
+        jstring = (TRUE == BDdevice->avconnected) ?
+            json_object_new_string("True"):json_object_new_string("False");
+        json_object_object_add(jresp, "AVPConnected", jstring);
+    }
+
+    if (BD_HFPCONNECTED & filter)
+    {
+        jstring = (TRUE == BDdevice->hfpconnected) ?
+            json_object_new_string("True"):json_object_new_string("False");
+        json_object_object_add(jresp, "HFPConnected", jstring);
+    }
+
+    return jresp;
+}
 
 /**/
-static void bt_power (struct afb_req request) 
+static void bt_power (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
 
     const char *value = afb_req_value (request, "value");
     json_object *jresp = NULL;
     int ret = 0;
-    
+
     jresp = json_object_new_object();
 
     /* no "?value=" parameter : return current state */
@@ -55,38 +219,38 @@ static void bt_power (struct afb_req request)
 
             setHMIStatus(ACTIVE);
             (TRUE==power_value)?json_object_object_add (jresp, "power", json_object_new_string ("on"))
-                                        : json_object_object_add (jresp, "power", json_object_new_string ("off"));
+                                : json_object_object_add (jresp, "power", json_object_new_string ("off"));
         }
         else
         {
             afb_req_fail (request, "failed", "Unable to get power status");
             return;
-        }       
-        
+        }
+
     }
 
     /* "?value=" parameter is "1" or "true" */
-    else if ( atoi(value) == 1 || !strcasecmp(value, "true") ) 
+    else if ( atoi(value) == 1 || !strcasecmp(value, "true") )
     {
-        if (adapter_set_powered (TRUE)) 
+        if (adapter_set_powered (TRUE))
         {
-                afb_req_fail (request, "failed", "no more radio devices available");
-                return;
+            afb_req_fail (request,"failed","no more radio devices available");
+            return;
         }
         json_object_object_add (jresp, "power", json_object_new_string ("on"));
         setHMIStatus(ACTIVE);
     }
 
     /* "?value=" parameter is "0" or "false" */
-    else if ( atoi(value) == 0 || !strcasecmp(value, "false") ) 
+    else if ( atoi(value) == 0 || !strcasecmp(value, "false") )
     {
-            if (adapter_set_powered (FALSE)) 
-            {
-                afb_req_fail (request, "failed", "Unable to release radio device");
-                return;
-            }
+        if (adapter_set_powered (FALSE))
+        {
+            afb_req_fail (request, "failed", "Unable to release radio device");
+            return;
+        }
 
-        json_object_object_add (jresp, "power", json_object_new_string ("off"));
+        json_object_object_add (jresp, "power", json_object_new_string("off"));
         setHMIStatus(INACTIVE);
     }
     else
@@ -99,9 +263,9 @@ static void bt_power (struct afb_req request)
 }
 
 /**/
-static void bt_start_discovery (struct afb_req request) 
+static void bt_start_discovery (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
     int ret = 0;
 
     ret = adapter_start_discovery();
@@ -116,9 +280,9 @@ static void bt_start_discovery (struct afb_req request)
 }
 
 /**/
-static void bt_stop_discovery (struct afb_req request) 
+static void bt_stop_discovery (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
     int ret = 0;
 
     ret = adapter_stop_discovery();
@@ -134,11 +298,12 @@ static void bt_stop_discovery (struct afb_req request)
 
 
 /**/
-static void bt_discovery_result (struct afb_req request) 
+static void bt_discovery_result (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
     GSList *list = NULL;
-    adapter_update_devices();
+    GSList *tmp = NULL;
+    //adapter_update_devices();
     list = adapter_get_devices_list();
     if (NULL == list)
     {
@@ -148,265 +313,160 @@ static void bt_discovery_result (struct afb_req request)
 
     json_object *my_array = json_object_new_array();
 
-    for(;list;list=list->next)
+    tmp = list;
+    for(;tmp;tmp=tmp->next)
     {
-        struct btd_device *BDdevice = list->data;
-        //D_PRINTF("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
+        struct btd_device *BDdevice = tmp->data;
+        //LOGD("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
 
-        json_object *jresp = json_object_new_object();
-        json_object *jstring1 = NULL;
-        json_object *jstring2 = NULL;  
-        json_object *jstring3 = NULL;
-        json_object *jstring4 = NULL;
-        json_object *jstring5 = NULL;
-        json_object *jstring6 = NULL;
+        unsigned int filter = BD_ADDER|BD_NAME|BD_PAIRED|BD_ACLCONNECTED|BD_AVCONNECTED|BD_HFPCONNECTED;
 
+        json_object *jresp = new_json_object_from_device(BDdevice, filter);
 
-
-        if (BDdevice->bdaddr)
-        {
-            jstring1 = json_object_new_string(BDdevice->bdaddr); 
-        }
-        else
-        {
-            jstring1 = json_object_new_string("");
-        }
-
-        
-        if (BDdevice->name)
-        {
-            jstring2 = json_object_new_string(BDdevice->name);
-        }
-        else
-        {
-            jstring2 = json_object_new_string("");
-        }
-
-        jstring3 = (TRUE == BDdevice->paired) ? json_object_new_string("True"):json_object_new_string("False");
-        jstring4 = (TRUE == BDdevice->connected) ? json_object_new_string("True"):json_object_new_string("False");
-        jstring5 = (TRUE == isAVPConnected(BDdevice)) ? json_object_new_string("True"):json_object_new_string("False");
-        jstring6 = (TRUE == isHFPConnected(BDdevice)) ? json_object_new_string("True"):json_object_new_string("False");
-
-        
-        json_object_object_add(jresp, "Address", jstring1);
-        json_object_object_add(jresp, "Name", jstring2);
-        json_object_object_add(jresp, "Paired", jstring3);
-        json_object_object_add(jresp, "Connected", jstring4);
-        json_object_object_add(jresp, "AVPConnected", jstring5);
-        json_object_object_add(jresp, "HFPConnected", jstring6);
         json_object_array_add(my_array, jresp);
     }
 
+    adapter_devices_list_free(list);
+
     afb_req_success(request, my_array, "BT - Scan Result is Displayed");
 }
 
 /**/
-static void bt_pair (struct afb_req request) 
+static void bt_pair (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
 
     const char *value = afb_req_value (request, "value");
     int ret = 0;
-    GSList *list = NULL;
 
     if (NULL == value)
     {
         afb_req_fail (request, "failed", "Please Input the Device Address");
         return;
     }
-    
-    list = adapter_get_devices_list();
-    
-    for(;list;list=list->next)
+
+    ret = device_pair(value);
+    if (0 == ret)
     {
-        struct btd_device *BDdevice = list->data;
-        
-        if ((NULL!=BDdevice->bdaddr)&&g_strrstr(BDdevice->bdaddr,value))
-        {
-            D_PRINTF("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
-            ret = device_pair(BDdevice);
-            if (0 == ret)
-            {
-                afb_req_success (request, NULL, NULL);
-            }
-            else
-            {
-                afb_req_fail (request, "failed", "Device pairing failed"); 
-            }
-            return;
-        }
+        afb_req_success (request, NULL, NULL);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Device pairing failed");
     }
-    
-    afb_req_fail (request, "failed", "Not found device");   
 
 }
 
 /**/
-static void bt_cancel_pairing (struct afb_req request) 
+static void bt_cancel_pairing (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
 
     const char *value = afb_req_value (request, "value");
     int ret = 0;
-    GSList *list = NULL;
 
     if (NULL == value)
     {
         afb_req_fail (request, "failed", "Please Input the Device Address");
         return;
     }
-    
-    list = adapter_get_devices_list();
-    
-    for(;list;list=list->next)
+
+    ret = device_cancelPairing(value);
+    if (0 == ret)
     {
-        struct btd_device *BDdevice = list->data;
-        
-        if ((NULL!=BDdevice->bdaddr)&&g_strrstr(BDdevice->bdaddr,value))
-        {
-            D_PRINTF("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
-            ret = device_cancelPairing(BDdevice);
-            if (0 == ret)
-            {
-                afb_req_success (request, NULL, NULL);
-            }
-            else
-            {
-                afb_req_fail (request, "failed", "Device pairing failed"); 
-            }
-            return;
-        }
+        afb_req_success (request, NULL, NULL);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Device cancel pairing failed");
     }
-    
-    afb_req_fail (request, "failed", "Not found device");   
 
 }
 
 /**/
-static void bt_connect (struct afb_req request) 
+static void bt_connect (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
 
     const char *value = afb_req_value (request, "value");
     int ret = 0;
-    GSList *list = NULL;
 
     if (NULL == value)
     {
         afb_req_fail (request, "failed", "Please Input the Device Address");
         return;
     }
-    
-    list = adapter_get_devices_list();
-    
-    for(;list;list=list->next)
+
+    ret = device_connect(value);
+
+    if (0 == ret)
     {
-        struct btd_device *BDdevice = list->data;
-        
-        if ((NULL!=BDdevice->bdaddr)&&g_strrstr(BDdevice->bdaddr,value))
-        {
-            D_PRINTF("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
-            ret = device_connect(BDdevice);
-            if (0 == ret)
-            {
-                afb_req_success (request, NULL, NULL);
-            }
-            else
-            {
-                afb_req_fail (request, "failed", "Device pairing failed"); 
-            }
-            return;
-        }
+        afb_req_success (request, NULL, NULL);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Device connect failed");
     }
-    
-    afb_req_fail (request, "failed", "Not found device");  
+
 }
 
 /**/
-static void bt_disconnect (struct afb_req request) 
+static void bt_disconnect (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
 
     const char *value = afb_req_value (request, "value");
     int ret = 0;
-    GSList *list = NULL;
 
     if (NULL == value)
     {
         afb_req_fail (request, "failed", "Please Input the Device Address");
         return;
     }
-    
-    list = adapter_get_devices_list();
-    
-    for(;list;list=list->next)
+
+    ret = device_disconnect(value);
+    if (0 == ret)
     {
-        struct btd_device *BDdevice = list->data;
-        
-        if ((NULL!=BDdevice->bdaddr)&&g_strrstr(BDdevice->bdaddr,value))
-        {
-            D_PRINTF("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
-            ret = device_disconnect(BDdevice);
-            if (0 == ret)
-            {
-                afb_req_success (request, NULL, NULL);
-            }
-            else
-            {
-                afb_req_fail (request, "failed", "Device pairing failed"); 
-            }
-            return;
-        }
+        afb_req_success (request, NULL, NULL);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Device disconnect failed");
     }
-    
-    afb_req_fail (request, "failed", "Not found device");  
+
 }
 
 /**/
-static void bt_remove_device (struct afb_req request) 
+static void bt_remove_device (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
 
     const char *value = afb_req_value (request, "value");
     int ret = 0;
-    GSList *list = NULL;
 
     if (NULL == value)
     {
         afb_req_fail (request, "failed", "Please Input the Device Address");
         return;
     }
-    
-    list = adapter_get_devices_list();
-    
-    for(;list;list=list->next)
+
+    ret = adapter_remove_device(value);
+    if (0 == ret)
     {
-        struct btd_device *BDdevice = list->data;
-        
-        if ((NULL!=BDdevice->bdaddr)&&g_strrstr(BDdevice->bdaddr,value))
-        {
-            D_PRINTF("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
-            ret = adapter_remove_device(BDdevice);
-            if (0 == ret)
-            {
                 afb_req_success (request, NULL, NULL);
-            }
-            else
-            {
-                afb_req_fail (request, "failed", "Device pairing failed"); 
-            }
-            return;
-        }
     }
-    
-    afb_req_fail (request, "failed", "Not found device");   
+    else
+    {
+        afb_req_fail (request, "failed", "Remove Device failed");
+    }
+
 }
 
 
 /**/
-static void bt_set_property (struct afb_req request) 
+static void bt_set_device_property (struct afb_req request)
 {
-    D_PRINTF("\n");
+    LOGD("\n");
 
     const char *address = afb_req_value (request, "Address");
     const char *property = afb_req_value (request, "Property");
@@ -419,33 +479,237 @@ static void bt_set_property (struct afb_req request)
         afb_req_fail (request, "failed", "Please Check Input Parameter");
         return;
     }
-    
-    list = adapter_get_devices_list();
-    
-    for(;list;list=list->next)
+
+    ret = device_set_property(address, property, value);
+    if (0 == ret)
     {
-        struct btd_device *BDdevice = list->data;
-        
-        if ((NULL!=BDdevice->bdaddr)&&g_strrstr(BDdevice->bdaddr,address))
-        {
-            //D_PRINTF("\n%s\t%s\n",BDdevice->bdaddr,BDdevice->name);
-            ret = device_set_property(BDdevice, property, value);
-            if (0 == ret)
-            {
-                afb_req_success (request, NULL, NULL);
-            }
-            else
-            {
-                afb_req_fail (request, "failed", "Device set property failed"); 
-            }
-            return;
-        }
+        afb_req_success (request, NULL, NULL);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Device set property failed");
+    }
+
+}
+
+/**/
+static void bt_set_property (struct afb_req request)
+{
+    LOGD("\n");
+
+    const char *property = afb_req_value (request, "Property");
+    const char *value = afb_req_value (request, "value");
+    int ret = 0;
+    gboolean setvalue;
+
+
+    if (NULL==property || NULL==value)
+    {
+        afb_req_fail (request, "failed", "Please Check Input Parameter");
+        return;
+    }
+
+
+    if ( atoi(value) == 1 || !strcasecmp(value, "true") )
+    {
+        ret = adapter_set_property (property, TRUE);
+
+    }
+
+    /* "?value=" parameter is "0" or "false" */
+    else if ( atoi(value) == 0 || !strcasecmp(value, "false") )
+    {
+        ret = adapter_set_property (property, FALSE);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Invalid value");
+        return;
+    }
+
+    if (0 == ret)
+    {
+        afb_req_success (request, NULL, NULL);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Bluetooth set property failed");
+    }
+
+}
+
+static void eventadd (struct afb_req request)
+{
+       const char *tag = afb_req_value(request, "tag");
+       const char *name = afb_req_value(request, "name");
+
+       if (tag == NULL || name == NULL)
+               afb_req_fail(request, "failed", "bad arguments");
+       else if (0 != event_add(tag, name))
+               afb_req_fail(request, "failed", "creation error");
+       else
+               afb_req_success(request, NULL, NULL);
+}
+
+static void eventdel (struct afb_req request)
+{
+       const char *tag = afb_req_value(request, "tag");
+
+       if (tag == NULL)
+               afb_req_fail(request, "failed", "bad arguments");
+       else if (0 != event_del(tag))
+               afb_req_fail(request, "failed", "deletion error");
+       else
+               afb_req_success(request, NULL, NULL);
+}
+
+static void eventsub (struct afb_req request)
+{
+       const char *tag = afb_req_value(request, "tag");
+
+       if (tag == NULL)
+               afb_req_fail(request, "failed", "bad arguments");
+       else if (0 != event_subscribe(request, tag))
+               afb_req_fail(request, "failed", "subscription error");
+       else
+               afb_req_success(request, NULL, NULL);
+}
+
+static void eventunsub (struct afb_req request)
+{
+       const char *tag = afb_req_value(request, "tag");
+
+       if (tag == NULL)
+               afb_req_fail(request, "failed", "bad arguments");
+       else if (0 != event_unsubscribe(request, tag))
+               afb_req_fail(request, "failed", "unsubscription error");
+       else
+               afb_req_success(request, NULL, NULL);
+}
+
+static void eventpush (struct afb_req request)
+{
+       const char *tag = afb_req_value(request, "tag");
+       const char *data = afb_req_value(request, "data");
+       json_object *object = data ? json_tokener_parse(data) : NULL;
+
+       if (tag == NULL)
+               afb_req_fail(request, "failed", "bad arguments");
+       else if (0 > event_push(object, tag))
+               afb_req_fail(request, "failed", "push error");
+       else
+               afb_req_success(request, NULL, NULL);
+}
+
+/*
+ * broadcast new device
+ */
+void bt_broadcast_device_added(struct btd_device *BDdevice)
+{
+    unsigned int filter = BD_ADDER|BD_NAME|BD_PAIRED|BD_ACLCONNECTED|BD_AVCONNECTED|BD_HFPCONNECTED;
+    int ret;
+    json_object *jresp = new_json_object_from_device(BDdevice, filter);
+
+    LOGD("\n");
+    ret = event_push(jresp,"device_added");
+    //ret = afb_daemon_broadcast_event(afbitf->daemon, "device_added", jresp);
+    LOGD("%d\n",ret);
+}
+
+/*
+ * broadcast device removed
+ */
+void bt_broadcast_device_removed(struct btd_device *BDdevice)
+{
+    unsigned int filter = BD_ADDER;
+    int ret;
+    json_object *jresp = new_json_object_from_device(BDdevice, filter);
+
+    LOGD("\n");
+    ret = event_push(jresp,"device_removed");
+    //ret = afb_daemon_broadcast_event(afbitf->daemon, "device_removed", jresp);
+    LOGD("%d\n",ret);
+}
+
+
+/*
+ * broadcast device updated
+ */
+void bt_broadcast_device_properties_change(struct btd_device *BDdevice)
+{
+
+    unsigned int filter = BD_ADDER|BD_NAME|BD_PAIRED|BD_ACLCONNECTED|BD_AVCONNECTED|BD_HFPCONNECTED;
+    int ret;
+    json_object *jresp = new_json_object_from_device(BDdevice, filter);
+
+    LOGD("\n");
+    ret = event_push(jresp,"device_updated");
+    //ret = afb_daemon_broadcast_event(afbitf->daemon, "device_updated", jresp);
+    LOGD("%d\n",ret);
+}
+
+/*
+ * broadcast request confirmation
+ */
+gboolean bt_request_confirmation(const gchar *device, guint passkey)
+{
+    json_object *jresp = json_object_new_object();
+    json_object *jstring = NULL;
+    int ret;
+
+    jstring = json_object_new_string(device);
+    json_object_object_add(jresp, "Address", jstring);
+    jstring = json_object_new_int(passkey);
+    json_object_object_add(jresp, "Passkey", jstring);
+
+    ret = event_push(jresp,"request_confirmation");
+    //ret = afb_daemon_broadcast_event(afbitf->daemon, "device_updated", jresp);
+
+    LOGD("%d\n",ret);
+
+    if (ret >0) {
+        return TRUE;
+    }else {
+        return FALSE;
     }
-    
-    afb_req_fail (request, "failed", "Not found device");   
+
 }
 
+static void bt_send_confirmation(struct afb_req request)
+{
+    const char *value = afb_req_value(request, "value");
+    int ret;
+    gboolean confirmation;
+
+    if (!value) {
+            afb_req_fail (request, "failed", "Unable to get value status");
+            return;
+    }
 
+    /* "?value=" parameter is "1" or "yes" */
+    else if ( atoi(value) == 1 || !strcasecmp(value, "yes") )
+    {
+        ret = agent_send_confirmation (TRUE);
+    }
+
+    /* "?value=" parameter is "0" or "no" */
+    else if ( atoi(value) == 0 || !strcasecmp(value, "no") )
+    {
+        ret = agent_send_confirmation (TRUE);
+    }
+    else
+    {
+        afb_req_fail (request, "failed", "Invalid value");
+        return;
+    }
+
+    if ( 0==ret) {
+        afb_req_success(request, NULL, NULL);
+    }else {
+        afb_req_success(request, "failed", "fail");
+    }
+
+}
 
 /*
  * array of the verbs exported to afb-daemon
@@ -461,7 +725,14 @@ static const struct afb_verb_desc_v1 binding_verbs[]= {
 { .name = "cancel_pair",         .session = AFB_SESSION_NONE,      .callback = bt_cancel_pairing,      .info = "Cancel the pairing process" },
 { .name = "connect",             .session = AFB_SESSION_NONE,      .callback = bt_connect,             .info = "Connect to special device" },
 { .name = "disconnect",          .session = AFB_SESSION_NONE,      .callback = bt_disconnect,          .info = "Disconnect special device" },
-{ .name = "set_property",          .session = AFB_SESSION_NONE,      .callback = bt_set_property,          .info = "Set special device property" },
+{ .name = "set_device_property", .session = AFB_SESSION_NONE,      .callback = bt_set_device_property, .info = "Set special device property" },
+{ .name = "set_property",        .session = AFB_SESSION_NONE,      .callback = bt_set_property,        .info = "Set Bluetooth property" },
+{ .name = "send_confirmation",   .session = AFB_SESSION_NONE,      .callback = bt_send_confirmation,   .info = "Send Confirmation" },
+{ .name = "eventadd",            .session = AFB_SESSION_NONE,      .callback = eventadd,               .info = "adds the event of 'name' for the 'tag'"},
+{ .name = "eventdel",            .session = AFB_SESSION_NONE,      .callback = eventdel,               .info = "deletes the event of 'tag'"},
+{ .name = "eventsub",            .session = AFB_SESSION_NONE,      .callback = eventsub,               .info = "subscribes to the event of 'tag'"},
+{ .name = "eventunsub",          .session = AFB_SESSION_NONE,      .callback = eventunsub,             .info = "unsubscribes to the event of 'tag'"},
+{ .name = "eventpush",           .session = AFB_SESSION_NONE,      .callback = eventpush,              .info = "pushs the event of 'tag' with the 'data'"},
 
 { .name = NULL } /* marker for end of the array */
 };
@@ -469,7 +740,7 @@ static const struct afb_verb_desc_v1 binding_verbs[]= {
 /*
  * description of the binding for afb-daemon
  */
-static const struct afb_binding binding_description = 
+static const struct afb_binding binding_description =
 {
     .type   = AFB_BINDING_VERSION_1,
     .v1 = {
@@ -485,13 +756,22 @@ static const struct afb_binding binding_description =
 const struct afb_binding *afbBindingV1Register (const struct afb_binding_interface *itf)
 {
     afbitf = itf;         // records the interface for accessing afb-daemon
-    //D_PRINTF("\n");
+
 #if 1
 //temp solution to fix configure Bluetooth USB Dongle
     system("rfkill unblock bluetooth");
     system("hciconfig hci0 up");
 #endif
-    BluetoothManageInit();
+
+    Binding_RegisterCallback_t API_Callback;
+    API_Callback.binding_device_added = bt_broadcast_device_added;
+    API_Callback.binding_device_removed = bt_broadcast_device_removed;
+    API_Callback.binding_device_propertyies_changed = bt_broadcast_device_properties_change;
+    API_Callback.binding_request_confirmation = bt_request_confirmation;
+    BindingAPIRegister(&API_Callback);
+
+    BluetoothManagerInit();
+
     return &binding_description;
 }
 
@@ -503,5 +783,5 @@ int afbBindingV1ServiceInit(struct afb_service service)
 #endif
 
 
-/************************************** The End Of File **************************************/  
+/***************************** The End Of File ******************************/
 
index 8a7e593..07e1875 100644 (file)
 #define BLUETOOTH_API_H
 
 
-
-
-//#define _DEBUG
-#ifdef _DEBUG
-#define D_PRINTF(fmt, args...) \
-       printf("[DEBUG][%s:%d:%s]"fmt, __FILE__, __LINE__, __FUNCTION__, ## args)
-#define D_PRINTF_RAW(fmt, args...) \
-       printf(""fmt, ## args)
-#else  /* ifdef _DEBUG */
-#define D_PRINTF(fmt, args...)
-#define D_PRINTF_RAW(fmt, args...)
-#endif /* ifdef _DEBUG */
-#define E_PRINTF(fmt, args...) \
-       printf("[ERROR][%s:%d:%s]"fmt, __FILE__, __LINE__, __FUNCTION__, ## args)
+#define LEFT_SHIFT(shift)    (0x00000001ul << (shift) )
+
+#define BD_NONE 0x00000000
+#define BD_PATH LEFT_SHIFT(0)
+#define BD_ADDER LEFT_SHIFT(1)
+#define BD_NAME LEFT_SHIFT(2)
+#define BD_ALIAS LEFT_SHIFT(3)
+#define BD_PAIRED LEFT_SHIFT(4)
+#define BD_TRUSTED LEFT_SHIFT(5)
+#define BD_BLOCKED LEFT_SHIFT(6)
+#define BD_ACLCONNECTED LEFT_SHIFT(7)
+#define BD_AVCONNECTED LEFT_SHIFT(8)
+#define BD_HFPCONNECTED LEFT_SHIFT(9)
+#define BD_LEGACYPAIRING LEFT_SHIFT(10)
+#define BD_RSSI LEFT_SHIFT(11)
 
 
 /* -------------- PLUGIN DEFINITIONS ----------------- */
 
 typedef struct {
   void *bt_server;          /* handle to implementation  */
-  unsigned int index;          /* currently selected media file       */
+  unsigned int index;       /* currently selected media file       */
 } BtCtxHandleT;
 
+
 #endif /* BLUETOOTH_API_H */
 
 
 
-/************************************** The End Of File **************************************/  
+/****************************** The End Of File ******************************/
 
 
index 893760d..91dfa1c 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <pthread.h>
 #include <glib.h>
 #include <gio/gio.h>
 #include <glib-object.h>
+#include <syslog.h>
+#include <sys/time.h>
 
-#include "bluetooth-api.h"
 #include "bluetooth-manager.h"
+#include "bluez-client.h"
+#include "ofono-client.h"
+#include "bluetooth-agent.h"
 
-Client cli = { 0 };
-
-stBluetoothManage BluetoothManage = { 0 };
+static Client cli = { 0 };
+static Binding_RegisterCallback_t g_RegisterCallback = { 0 };
+static stBluetoothManage BluetoothManage = { 0 };
+static FILE *logfp= NULL;
 
 /* ------ LOCAL  FUNCTIONS --------- */
+void BluetoothManage_InitFlag_Set(gboolean value)
+{
+    BluetoothManage.inited = value;
+}
+
+gboolean BluetoothManage_InitFlag_Get(void)
+{
+    return BluetoothManage.inited;
+}
+
+void devices_list_lock(void)
+{
+    g_mutex_lock(&(BluetoothManage.m));
+}
+
+void devices_list_unlock(void)
+{
+    g_mutex_unlock(&(BluetoothManage.m));
+}
+
+static int device_path_cmp(struct btd_device * device, const gchar* pPath )
+{
+    return g_strcmp0 (device->path, pPath);
+}
 
 /*
- register the agent, and register signal watch
+ * search device by path
+ * Returns the first found btd_device or NULL if it is not found
  */
-void bt_manage_dbus_init(void) {
-       D_PRINTF("\n");
+struct btd_device *devices_list_find_device_by_path(const gchar* pPath)
+{
+    GSList * temp;
 
-       //InitDBusCommunication();
+    temp = g_slist_find_custom (BluetoothManage.device, pPath,
+                                (GCompareFunc)device_path_cmp);
+
+    if (temp) {
+        return temp->data;
+    }
+
+    return NULL;
 
 }
-/* ------ PUBLIC PLUGIN FUNCTIONS --------- */
+
+
+static int device_bdaddr_cmp(struct btd_device * device, const gchar* pBDaddr )
+{
+    return g_strcmp0 (device->bdaddr, pBDaddr);
+}
 
 /*
- * Init the Bluetooth Manager
- * Note: bluetooth-api shall do BluetoothManageInit() first before call other APIs.
+ * search device by path
+ * Returns the first found btd_device or NULL if it is not found
  */
-int BluetoothManageInit() {
-       D_PRINTF("\n");
+struct btd_device *devices_list_find_device_by_bdaddr(const gchar* pBDaddr)
+{
+    GSList * temp;
 
-       BluetoothManage.device = NULL;
-       g_mutex_init(&(BluetoothManage.m));
+    temp = g_slist_find_custom (BluetoothManage.device, pBDaddr,
+                                (GCompareFunc)device_bdaddr_cmp);
 
-       bt_manage_dbus_init();
+    if (temp) {
+        return temp->data;
+    }
+
+    return NULL;
 
-       return 0;
 }
 
+
 /*
- * Set the Bluez Adapter Property "Powered" value
- * If success return 0, else return -1;
+ * make a copy of each element
+ * And, to entirely free the new btd_device, you could do: device_free
  */
-int adapter_set_powered(gboolean powervalue) {
-       D_PRINTF("value:%d\n",powervalue);
-       GDBusConnection *connection;
-       GError *error = NULL;
+struct btd_device *device_copy(struct btd_device* device)
+{
+    struct btd_device * temp;
 
-       GVariant *value;
-       gboolean result;
+    if (NULL == device) {
+        return NULL;
+    }
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    temp = g_malloc0(sizeof(struct btd_device));
+    temp->path = g_strdup(device->path);
+    temp->bdaddr = g_strdup(device->bdaddr);
+    temp->name = g_strdup(device->name);
+    temp->paired = device->paired;
+    temp->trusted = device->trusted;
+    temp->connected = device->connected;
+    temp->avconnected = device->avconnected;
+    temp->hfpconnected = device->hfpconnected;
+
+    return temp;
+}
 
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, ADAPTER_PATH,
-       FREEDESKTOP_PROPERTIES, "Set",
-                       g_variant_new("(ssv)", ADAPTER_INTERFACE, "Powered",
-                                       g_variant_new("b", powervalue)), NULL,
-                       G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+/*
+ * Frees all of the memory
+ */
+void device_free(struct btd_device* device)
+{
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    if (NULL == device) {
+        return ;
+    }
+    D_PRINTF("device %p\n",device);
+    if (device->path) {
+        D_PRINTF("path:%s\n",device->path);
+        g_free(device->path);
+        device->path = NULL;
+    }
+    if (device->bdaddr) {
+        D_PRINTF("bdaddr:%s\n",device->bdaddr);
+        g_free(device->bdaddr);
+        device->bdaddr = NULL;
+    }
+    if (device->name) {
+        D_PRINTF("name:%s\n",device->name);
+        g_free(device->name);
+        device->name = NULL;
+    }
 
-       g_variant_unref(value);
-       return 0;
+    g_free(device);
+}
+
+void device_print(struct btd_device *BDdevice)
+{
+    g_print("device %p\n",BDdevice);
+    g_print("bdaddr\t\t:%s\n",BDdevice->bdaddr);
+    g_print("name\t\t:%s\n",BDdevice->name);
+    g_print("trusted\t\t:%d\n",BDdevice->trusted);
+    g_print("paired\t\t:%d\n",BDdevice->paired);
+
+    g_print("connected\t:%d\n",BDdevice->connected);
+    g_print("AVPconnected\t:%d\n",BDdevice->avconnected);
+    g_print("HFPconnected\t:%d\n",BDdevice->hfpconnected);
 }
 
 /*
- * Get the Bluez Adapter Property "Powered" value
- * If success return 0, else return -1;
+ * remove all the devices
  */
-int adapter_get_powered(gboolean *powervalue) {
-       D_PRINTF("\n");
-       GDBusConnection *connection;
-       GError *error = NULL;
-       GVariant *value = NULL;
-       GVariant *subValue = NULL;
+void devices_list_cleanup()
+{
+    LOGD("\n");
+    GSList * temp = BluetoothManage.device;
+    while (temp) {
+        struct btd_device *BDdevice = temp->data;
+        temp = temp->next;
+
+        BluetoothManage.device = g_slist_remove_all(BluetoothManage.device,
+                BDdevice);
+
+        device_free(BDdevice);
+    }
+}
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, ADAPTER_PATH,
-       FREEDESKTOP_PROPERTIES, "Get",
-                       g_variant_new("(ss)", ADAPTER_INTERFACE, "Powered"), NULL,
-                       G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+/*
+ * Print all the devices
+ */
+void devices_list_print()
+{
+    LOGD("\n");
+    GSList * temp = BluetoothManage.device;
+    while (temp) {
+        struct btd_device *BDdevice = temp->data;
+        temp = temp->next;
+        g_print("----------------------------------------\n");
+        device_print(BDdevice);
+    }
+    g_print("----------------------------------------\n");
+}
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s\n", error->message);
-               g_error_free(error);
-               return -1;
-       }
+/*
+ * update device from Interfcace org.bluez.MediaControl1 properties
+ */
+static int device_update_from_MediaControl1(struct btd_device *device,
+                                                     GVariant *value)
+{
+    GVariantIter iter;
+    const gchar *key;
+    GVariant *subValue;
 
-       g_variant_get(value, "(v)", &subValue);
-       g_variant_get(subValue, "b", powervalue);
-       g_variant_unref(value);
+    if ((NULL==device) || (NULL==value))
+    {
+        return -1;
+    }
+
+    g_variant_iter_init (&iter, value);
+    while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue))
+    {
+        //gchar *s = g_variant_print (subValue, TRUE);
+        //g_print ("  %s -> %s\n", key, s);
+        //g_free (s);
+
+        gboolean value_b  =  FALSE;//b gboolean
+        //gchar value_c = 0;
+        //guchar value_y  =  0;//y guchar
+        //gint16 value_n  =  0;//n gint16
+        //guint16 value_q  =  0;//q guint16
+        //gint32 value_i  =  0;//i gint32
+        //guint32 value_u  =  0;//u guint32
+        //gint64 value_x  =  0;//x gint64
+        //guint64 value_t  =  0;//t guint64
+        //gint32 value_h  = 0;//h gint32
+        //gdouble value_d = 0.0;//d gdouble
+        gchar *str;//d gdouble
+
+        if (0==g_strcmp0(key,"Connected")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Connected %d\n",value_b);
+            device->avconnected = value_b;
+        }else if (0==g_strcmp0(key,"Player")) {
+            g_variant_get(subValue, "o", &str );
+            D_PRINTF("Player Object %s\n",str);
+        }
+    }
 
-       D_PRINTF("get ret :%d\n",*powervalue);
-       return 0;
+    return 0;
 }
 
+
+
 /*
- * Call the Bluez Adapter Method "StartDiscovery"
- * If success return 0, else return -1;
+ * update device from Interfcace org.bluez.Device1 properties
  */
-int adapter_start_discovery() {
-       D_PRINTF("\n");
-       GDBusConnection *connection = NULL;
-       GError *error = NULL;
-       GVariant *value = NULL;
-       GVariant *subValue = NULL;
+static int device_update_from_Device1(struct btd_device *device,
+                                               GVariant *value)
+{
+    if ((NULL==device) || (NULL==value))
+    {
+        return -1;
+    }
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, ADAPTER_PATH,
-       ADAPTER_INTERFACE, "StartDiscovery", NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
-                       DBUS_REPLY_TIMEOUT, NULL, &error);
+    GVariantIter iter;
+    const gchar *key;
+    GVariant *subValue;
+
+    g_variant_iter_init (&iter, value);
+    while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue))
+    {
+        //gchar *s = g_variant_print (subValue, TRUE);
+        //g_print ("  %s -> %s\n", key, s);
+        //g_free (s);
+
+        gboolean value_b  =  FALSE;//b gboolean
+        //gchar value_c = 0;
+        //guchar value_y  =  0;//y guchar
+        //gint16 value_n  =  0;//n gint16
+        //guint16 value_q  =  0;//q guint16
+        //gint32 value_i  =  0;//i gint32
+        //guint32 value_u  =  0;//u guint32
+        //gint64 value_x  =  0;//x gint64
+        //guint64 value_t  =  0;//t guint64
+        //gint32 value_h  = 0;//h gint32
+        //gdouble value_d = 0.0;//d gdouble
+        gchar *str;//d gdouble
+
+        if (0==g_strcmp0(key,"Address")) {
+            g_variant_get(subValue, "s", &str );
+            D_PRINTF("Address %s\n",str);
+
+            if (device->bdaddr)
+                g_free (device->bdaddr);
+
+            device->bdaddr = g_strdup(str);
+
+            g_free (str);
+            str = NULL;
+
+        }else if (0==g_strcmp0(key,"Name")) {
+            g_variant_get(subValue, "s", &str );
+            D_PRINTF("Name %s\n",str);
+
+            if (device->name)
+                g_free (device->name);
+
+            device->name = g_strdup(str);
+
+            g_free (str);
+            str = NULL;
+
+        }else if (0==g_strcmp0(key,"Paired")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Paired %d\n",value_b);
+            device->paired = value_b;
+        }else if (0==g_strcmp0(key,"Trusted")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Trusted %d\n",value_b);
+            device->trusted = value_b;
+         }else if (0==g_strcmp0(key,"Connected")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Connected %d\n",value_b);
+            device->connected = value_b;
+        }
+    }
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s\n", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    return 0;
 
-       g_variant_unref(value);
-       return 0;
 }
+#if 0
+/*
+ * update device from Interfcace org.bluez.MediaControl1 properties
+ */
+static int bluez_mediacontrol1_properties_update(struct bt_device *device,
+                                                         GVariant *value)
+{
+    GVariantIter iter;
+    const gchar *key;
+    GVariant *subValue;
+
+    if ((NULL==device) || (NULL==value))
+    {
+        return -1;
+    }
+
+    g_variant_iter_init (&iter, value);
+    while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue))
+    {
+        //gchar *s = g_variant_print (subValue, TRUE);
+        //g_print ("  %s -> %s\n", key, s);
+        //g_free (s);
+
+        gboolean value_b  =  FALSE;//b gboolean
+        //gchar value_c = 0;
+        //guchar value_y  =  0;//y guchar
+        gint16 value_n  =  0;//n gint16
+        //guint16 value_q  =  0;//q guint16
+        //gint32 value_i  =  0;//i gint32
+        //guint32 value_u  =  0;//u guint32
+        //gint64 value_x  =  0;//x gint64
+        //guint64 value_t  =  0;//t guint64
+        //gint32 value_h  = 0;//h gint32
+        //gdouble value_d = 0.0;//d gdouble
+        gchar *str;//d gdouble
+
+        if (0==g_strcmp0(key,"Connected")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Connected %d\n",value_b);
+            device->avconnected = value_b;
+
+        }else if (0==g_strcmp0(key,"Player")) {
+            g_variant_get(subValue, "o", &str );
+            D_PRINTF("Player Object %s\n",str);
+
+        }
+    }
+
+    return 0;
+
+}
+#endif
 
 /*
- * Call the Bluez Adapter Method "StopDiscovery"
- * If success return 0, else return -1;
+ * make a copy of each element
  */
-int adapter_stop_discovery() {
-       D_PRINTF("\n");
-       GDBusConnection *connection = NULL;
-       GError *error = NULL;
-       GVariant *value = NULL;
-       GVariant *subValue = NULL;
+struct btd_device *device_copy_from_bluez(struct bt_device* device)
+{
+    struct btd_device * temp;
+
+    if (NULL == device) {
+        return NULL;
+    }
+
+    temp = g_malloc0(sizeof(struct btd_device));
+    temp->path = g_strdup(device->path);
+    temp->bdaddr = g_strdup(device->bdaddr);
+    temp->name = g_strdup(device->name);
+    temp->paired = device->paired;
+    temp->trusted = device->trusted;
+    temp->connected = device->connected;
+    temp->avconnected = device->avconnected;
+
+    return temp;
+}
+
+/*
+ * Force Update the device list
+ * Call <method>GetManagedObjects
+ * Returns: 0 - success or other errors
+ */
+int devices_list_update(void)
+{
+    LOGD("\n");
+
+    GSList* list;
+    GSList* tmp;
+    list = GetBluezDevicesList();
+
+    if (NULL == list)
+    {
+        return -1;
+    }
+
+    tmp = list;
+
+    devices_list_lock();
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, ADAPTER_PATH,
-       ADAPTER_INTERFACE, "StopDiscovery", NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
-                       DBUS_REPLY_TIMEOUT, NULL, &error);
+    devices_list_cleanup();
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s\n", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    while(tmp)
+    {
+        struct bt_device *BDdevice = tmp->data;
+        tmp = tmp->next;
 
-       g_variant_unref(value);
+        struct btd_device * new_device = device_copy_from_bluez(BDdevice);
 
-       return 0;
+        if (new_device)
+        {
+            gchar * ofono_path = g_strconcat("/hfp", new_device->path, NULL);
+            if (ofono_path)
+                new_device->hfpconnected =
+                                    getOfonoModemPoweredByPath(ofono_path);
+
+            //BluetoothManage.device = g_slist_prepend(BluetoothManage.device, new_device);
+            BluetoothManage.device =
+                            g_slist_append(BluetoothManage.device, new_device);
+        }
+
+    }
+
+    FreeBluezDevicesList(list);
+
+    devices_list_unlock();
+
+
+    return 0;
 }
 
+
 /*
- * Call the Bluez Adapter Method "RemoveDevice"
- * If success return 0, else return -1;
+ * notify::name-owner callback function
  */
-int adapter_remove_device(struct btd_device * addr) {
-       D_PRINTF("\n%s\t%s\t%s\n",addr->bdaddr,addr->name,addr->path);
+static void bluez_device_added_cb(struct bt_device *device)
+{
+    LOGD("\n");
+
+    struct btd_device * new_device;
 
-       GDBusConnection *connection;
-       GError *error = NULL;
-       GVariant *value;
+    if (NULL == device)
+    {
+        return;
+    }
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    new_device = device_copy_from_bluez(device);
 
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, ADAPTER_PATH,
-       ADAPTER_INTERFACE, "RemoveDevice", g_variant_new("(o)", addr->path), NULL,
-                       G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+    devices_list_lock();
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    //BluetoothManage.device = g_slist_prepend(BluetoothManage.device, new_device);
+    BluetoothManage.device = g_slist_append(BluetoothManage.device,new_device);
+    if (NULL != g_RegisterCallback.binding_device_added)
+    {
+        g_RegisterCallback.binding_device_added(new_device);
+    }
 
-       g_variant_unref(value);
-       return 0;
+    devices_list_unlock();
 
 }
 
 /*
- * Get the store device list.
+ * object-removed callback function
  */
-//FIXME: gdevices should be added the lock/unlock
-GSList* adapter_get_devices_list() {
-       return BluetoothManage.device;
+static void bluez_device_removed_cb (const gchar *path)
+{
+    struct btd_device *device;
+
+    LOGD("%s\n",path);
+
+    devices_list_lock();
+
+    device = devices_list_find_device_by_path(path);
+
+    if (device) {
+        BluetoothManage.device = g_slist_remove_all(BluetoothManage.device,
+                                    device);
+
+        if (NULL != g_RegisterCallback.binding_device_removed)
+        {
+            g_RegisterCallback.binding_device_removed(device);
+        }
+
+        device_free(device);
+    }
+
+    devices_list_unlock();
+
 }
 
-void lock_devices_list(void) {
-       g_mutex_lock(&(BluetoothManage.m));
+/*
+ * BLUEZ interface-proxy-properties-changed callback function
+ */
+static void
+bluez_device_properties_changed_cb (const gchar *pObjecPath,
+                                    const gchar *pInterface,
+                                    GVariant *properties)
+{
+
+    struct btd_device *device;
+
+#if  0
+    gchar *s;
+    g_print ("Path:%s, Interface:%s\n",pObjecPath, pInterface);
+    g_print ("type '%s'\n", g_variant_get_type_string (properties));
+    s = g_variant_print (properties, TRUE);
+    g_print (" %s\n", s);
+    g_free (s);
+#endif
+
+    LOGD("%s\n",pObjecPath);
+
+    devices_list_lock();
+
+    device = devices_list_find_device_by_path(pObjecPath);
+
+    if (0 == g_strcmp0(pInterface, DEVICE_INTERFACE)) {
+
+        device_update_from_Device1(device, properties);
+
+    } else if (0 == g_strcmp0(pInterface, MEDIA_CONTROL1_INTERFACE)) {
+
+        device_update_from_MediaControl1(device, properties);
+
+    }
+
+    if (g_RegisterCallback.binding_device_propertyies_changed)
+        g_RegisterCallback.binding_device_propertyies_changed(device);
+
+    devices_list_unlock();
+
 }
 
-void unlock_devices_list(void) {
-       g_mutex_unlock(&(BluetoothManage.m));
+void ofono_modem_added_cb(struct ofono_modem *modem)
+{
+    struct btd_device * device;
+    gchar *path;
+
+    path = modem->path;
+
+    LOGD("%s\n",path);
+
+    if (NULL == path)
+        return;
+
+    devices_list_lock();
+    device = devices_list_find_device_by_path(path+4);
+
+    if (device)
+    {
+        gboolean old_value = device->hfpconnected;
+
+        device->hfpconnected = modem->powered;
+
+        if ((NULL != g_RegisterCallback.binding_device_propertyies_changed)
+            && (old_value != device->hfpconnected))
+        {
+            g_RegisterCallback.binding_device_propertyies_changed(device);
+        }
+    }
+    devices_list_unlock();
+
+}
+
+void ofono_modem_removed_cb(struct ofono_modem *modem)
+{
+    struct btd_device * device;
+    gchar *path = modem->path;
+
+    LOGD("%s\n",path);
+
+    if (NULL == path)
+        return;
+
+    devices_list_lock();
+    device = devices_list_find_device_by_path(path+4);
+
+    if (device)
+    {
+        gboolean old_value = device->hfpconnected;
+
+        device->hfpconnected = FALSE;
+
+        if ((NULL != g_RegisterCallback.binding_device_propertyies_changed)
+            && (old_value != device->hfpconnected))
+        {
+            g_RegisterCallback.binding_device_propertyies_changed(device);
+        }
+    }
+    devices_list_unlock();
+}
+
+void ofono_modem_properties_change_cb(struct ofono_modem *modem)
+{
+    struct btd_device * device;
+    gchar *path = modem->path;
+
+    LOGD("%s\n",path);
+
+    if (NULL == path)
+        return;
+
+    devices_list_lock();
+    device = devices_list_find_device_by_path(path+4);
+
+    if (device)
+    {
+        gboolean old_value = device->hfpconnected;
+
+        device->hfpconnected = modem->powered;
+
+        if ((NULL != g_RegisterCallback.binding_device_propertyies_changed)
+            && (old_value != device->hfpconnected))
+        {
+            g_RegisterCallback.binding_device_propertyies_changed(device);
+        }
+    }
+    devices_list_unlock();
+}
+
+gboolean agent_requset_confirm( const gchar *device_path,
+                                guint passkey,
+                                const gchar **error)
+{
+    gboolean ret = FALSE;
+
+    const gchar *myerror = ERROR_BLUEZ_REJECT;
+
+    LOGD("-%s,%d\n",device_path,passkey);
+
+    if (NULL != g_RegisterCallback.binding_request_confirmation)
+    {
+
+        devices_list_lock();
+        struct btd_device *device = devices_list_find_device_by_path(device_path);
+        gchar *device_bdaddr = NULL;
+
+        if (device)
+        {
+            device_bdaddr = g_strdup(device->bdaddr);
+        }
+        devices_list_unlock();
+
+        if (device_bdaddr)
+            ret = g_RegisterCallback.binding_request_confirmation(device_bdaddr, passkey);
+    }
+
+    if (TRUE == ret)
+    {
+        LOGD("return TRUE\n");
+        return TRUE;
+    }else{
+        *error = myerror;
+        LOGD("return FALSE\n");
+        return FALSE;
+    }
 }
 
+
 /*
- * Update the device list
- * Call <method>GetManagedObjects
- * reply type is "Dict of {Object Path, Dict of {String, Dict of {String, Variant}}}"
+ * register callback function
+ * Returns: 0 - success or other errors
  */
-#if 0
-// Test Function
-/* recursively iterate a container */
-void iterate_container_recursive (GVariant *container)
+static int bt_manager_app_init(void)
 {
-       GVariantIter iter;
-       GVariant *child;
+    GError *error = NULL;
+    int ret;
 
-       g_variant_iter_init (&iter, container);
-       while ((child = g_variant_iter_next_value (&iter)))
-       {
-               g_print ("type '%s'\n", g_variant_get_type_string (child));
+    cli.system_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
+    if (error) {
+        LOGE("Create System GDBusconnection fail\n");
+        LOGE("Error:%s\n", error->message);
+        g_error_free(error);
+        return -1;
+    }
+
+    cli.session_conn = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);
+    if (error) {
+        LOGE("Create Session GDBusconnection fail\n");
+        LOGE("Error:%s\n", error->message);
+        g_error_free(error);
+        g_object_unref(cli.system_conn);
+        return -1;
+    }
+
+    Bluez_RegisterCallback_t Bluez_API_Callback;
+    Bluez_API_Callback.device_added = bluez_device_added_cb;
+    Bluez_API_Callback.device_removed = bluez_device_removed_cb;
+    Bluez_API_Callback.device_propertyies_changed = bluez_device_properties_changed_cb;
+    BluezDeviceAPIRegister(&Bluez_API_Callback);
+
+    Ofono_RegisterCallback_t Ofono_API_Callback;
+    Ofono_API_Callback.modem_added = ofono_modem_added_cb;
+    Ofono_API_Callback.modem_removed = ofono_modem_removed_cb;
+    Ofono_API_Callback.modem_propertyies_changed = ofono_modem_properties_change_cb;
+    OfonoModemAPIRegister(&Ofono_API_Callback);
 
-               if (g_variant_is_container (child))
-               iterate_container_recursive (child);
 
-               g_variant_unref (child);
-       }
+    Agent_RegisterCallback_t AgentRegCallback;
+    AgentRegCallback.agent_RequestConfirmation = agent_requset_confirm;
+    agent_API_register(&AgentRegCallback);
+
+    ret = BluezManagerInit();
+    if (0 != ret )
+    {
+        LOGE("BluezManagerInit fail\n");
+        return -1;
+    }
+
+    ret = OfonoManagerInit();
+    if (0 != ret )
+    {
+        LOGE("OfonoManagerInit fail\n");
+
+        BluezManagerQuit();
+        return -1;
+    }
+
+    ret = agent_register("");
+    if (0 != ret )
+    {
+        LOGE("agent_register fail\n");
+
+        BluezManagerQuit();
+        OfonoManagerQuit();
+        return -1;
+    }
+
+    return 0;
 }
-#endif
 
-int adapter_update_devices() {
-       D_PRINTF("\n");
-       GDBusConnection *connection = NULL;
-       GError *error = NULL;
-       GVariant *value = NULL;
-       GSList *newDeviceList = NULL;
-
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, "/",
-                       "org.freedesktop.DBus.ObjectManager", "GetManagedObjects", NULL,
-                       NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
-
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s\n", error->message);
-               g_error_free(error);
-               return -1;
-       }
-
-       GVariant *subValue = NULL;
-       GVariant *subValue_1 = NULL;
-       GVariantIter *subValueIter;
-
-       g_variant_get(value, "(*)", &subValue);
-
-       g_variant_get(subValue, "a*", &subValueIter);
-       while (g_variant_iter_loop(subValueIter, "*", &subValue_1)) {
+/*
+ * Bluetooth Manager Thread
+ * register callback function and create a new GMainLoop structure
+ */
+static void *bt_event_loop_thread()
+{
+    int ret = 0;
 
-#if 0
-               iterate_container_recursive(subValue_1);
-#else
+    cli.clientloop = g_main_loop_new(NULL, FALSE);
+
+    ret = bt_manager_app_init();
+
+    if (0 == ret){
+
+        devices_list_update();
+
+        BluetoothManage.inited = TRUE;
+        LOGD("g_main_loop_run\n");
+        g_main_loop_run(cli.clientloop);
 
-//FIXME:Bad solution to get the BT address and name
-               GVariantIter dbus_object_iter;
-               GVariant *dbusObjecValue;
-               GVariant *dbusObjecSubValue;
-               gchar *dbusObjecPath;
-               struct btd_device *device;
-
-               g_variant_iter_init(&dbus_object_iter, subValue_1);
-
-               //DBus Object
-               dbusObjecValue = g_variant_iter_next_value(&dbus_object_iter);
-
-               g_variant_get(dbusObjecValue, "o", &dbusObjecPath);
-
-               //ObjectPath is /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx
-               if ((37 != strlen(dbusObjecPath))
-                               || (NULL
-                                               == g_strrstr_len(dbusObjecPath, 19,
-                                                               "/org/bluez/hci0/dev"))) {
-                       g_variant_unref(dbusObjecValue);
-                       continue;
-               }
-               device = g_try_malloc0(sizeof(struct btd_device));
-               device->path = g_strdup(dbusObjecPath);
-               g_variant_unref(dbusObjecValue);
-               D_PRINTF("Found new device%s\n",device->path );
-
-               //DBus Interfaces and Method/Properties under Interface
-               dbusObjecSubValue = g_variant_iter_next_value(&dbus_object_iter);
-
-               GVariantIter *interfaces_iter;
-               GVariant *interfaces_subValue;
-               g_variant_get(dbusObjecSubValue, "a*", &interfaces_iter);
-
-               while (g_variant_iter_loop(interfaces_iter, "*", &interfaces_subValue)) {
-                       // D_PRINTF("\t%s\n",g_variant_get_type_string(interfaces_subValue));
-
-                       GVariantIter MethodsSignalProperties_iter;
-                       GVariant *MethodsSignalProperties_name;
-                       GVariant *MethodsSignalProperties_value;
-                       gchar *properties_name;
-
-                       g_variant_iter_init(&MethodsSignalProperties_iter,
-                                       interfaces_subValue);
-
-                       //DBus Interfaces
-                       MethodsSignalProperties_name = g_variant_iter_next_value(
-                                       &MethodsSignalProperties_iter);
-
-                       g_variant_get(MethodsSignalProperties_name, "s", &properties_name);
-                       //D_PRINTF("\t%s\n",properties_name);
-                       g_variant_unref(MethodsSignalProperties_name);
-
-                       if (NULL
-                                       == g_strrstr_len(properties_name, 20,
-                                                       "org.bluez.Device1")) {
-                               continue;
-                       }
-
-                       D_PRINTF("\t%s\n",properties_name);
-
-                       //DBus XXX
-                       MethodsSignalProperties_value = g_variant_iter_next_value(
-                                       &MethodsSignalProperties_iter);
-
-                       GVariantIter *subValue_iter;
-                       GVariant *subValueVariant;
-                       g_variant_get(MethodsSignalProperties_value, "a*", &subValue_iter);
-
-                       while (g_variant_iter_loop(subValue_iter, "*", &subValueVariant)) {
-                               GVariantIter sub_subValue_iter;
-                               GVariant *sub_subValue_name;
-                               GVariant *sub_subValue_value;
-                               gchar *key_1 = NULL;
-                               gchar *key_2 = NULL;
-
-                               g_variant_iter_init(&sub_subValue_iter, subValueVariant);
-
-                               //DBus Interfaces
-                               sub_subValue_name = g_variant_iter_next_value(
-                                               &sub_subValue_iter);
-
-                               g_variant_get(sub_subValue_name, "s", &key_1);
-                               D_PRINTF("\t\t%s\n",key_1);
-
-                               //DBus XXX
-                               sub_subValue_value = g_variant_iter_next_value(
-                                               &sub_subValue_iter);
-
-                               GVariant *dbus_value;
-                               dbus_value = g_variant_get_variant(sub_subValue_value);
-
-                               if (g_variant_is_of_type(dbus_value, G_VARIANT_TYPE_STRING)) {
-                                       g_variant_get(dbus_value, "s", &key_2);
-                                       //D_PRINTF("\t\t\t%s\ts%s\n",key_1,key_2);
-
-                                       if (g_strrstr_len(key_1, 10, "Address")) {
-                                               device->bdaddr = g_strdup(key_2);
-                                       } else if (g_strrstr_len(key_1, 10, "Name")) {
-                                               device->name = g_strdup(key_2);
-                                       }
-                                       g_free(key_2);
-
-                               } else if (g_variant_is_of_type(dbus_value,
-                                               G_VARIANT_TYPE_BOOLEAN)) {
-                                       gboolean properties_value;
-                                       g_variant_get(dbus_value, "b", &properties_value);
-
-                                       if (g_strrstr_len(key_1, 10, "Paired")) {
-                                               device->paired = properties_value;
-                                       } else if (g_strrstr_len(key_1, 10, "Blocked")) {
-                                               device->blocked = properties_value;
-                                       } else if (g_strrstr_len(key_1, 10, "Connected")) {
-                                               device->connected = properties_value;
-                                       } else if (g_strrstr_len(key_1, 10, "Trusted")) {
-                                               device->trusted = properties_value;
-                                       }
-
-                               }
-                               g_variant_unref(sub_subValue_name);
-                               g_variant_unref(sub_subValue_value);
+    }
 
-                       }
-                       g_variant_iter_free(subValue_iter);
+    g_main_loop_unref(cli.clientloop);
 
-                       g_variant_unref(MethodsSignalProperties_value);
+    LOGD("Exit\n");
+}
 
-               }
-               g_variant_iter_free(interfaces_iter);
+/*
+ * print log message
+ */
+void DebugTraceSendMsg(int level, gchar* message)
+{
 
-               g_variant_unref(dbusObjecSubValue);
+    if (logfp)
+    {
+        struct timeval  tv;
+        struct tm       tm;
+        char            s[32]       = {0};
+
+        gettimeofday(&tv, NULL);
+        localtime_r(&tv.tv_sec, &tm);
+        strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", &tm);
+        fprintf(logfp, "[%s.%6.6d] ", s, (int)(tv.tv_usec));
+
+        switch (level)
+        {
+                case DT_LEVEL_ERROR:
+                    fprintf(logfp,"[E]");
+                    break;
+
+                case DT_LEVEL_WARNING:
+                    fprintf(logfp,"[W]");
+                    break;
+
+                case DT_LEVEL_NOTICE:
+                    fprintf(logfp,"[N]");
+                    break;
+
+                case DT_LEVEL_INFO:
+                    fprintf(logfp,"[I]");
+                    break;
+
+                case DT_LEVEL_DEBUG:
+                    fprintf(logfp,"[D]");
+                    break;
+
+                default:
+                    fprintf(logfp,"[-]");
+                    break;
+        }
+
+        fprintf(logfp,"%s\n",message);
+        fflush(logfp);
+    }
+#ifdef LOCAL_PRINT_DEBUG
+    switch (level)
+    {
+            case DT_LEVEL_ERROR:
+                g_print("[E]");
+                break;
+
+            case DT_LEVEL_WARNING:
+                g_print("[W]");
+                break;
+
+            case DT_LEVEL_NOTICE:
+                g_print("[N]");
+                break;
+
+            case DT_LEVEL_INFO:
+                g_print("[I]");
+                break;
+
+            case DT_LEVEL_DEBUG:
+                g_print("[D]");
+                break;
+
+            default:
+                g_print("[-]");
+                break;
+    }
 
+    g_print("%s",message);
 #endif
 
-               newDeviceList = g_slist_append(newDeviceList, device);
+    if (message) {
+        g_free(message);
+    }
 
-       }
+}
 
-       g_variant_iter_free(subValueIter);
 
-       g_variant_unref(value);
 
-       //clean first
-       GSList * temp = BluetoothManage.device;
-       while (temp) {
-               struct btd_device *BDdevice = temp->data;
-               temp = temp->next;
+/* ------ PUBLIC PLUGIN FUNCTIONS --------- */
 
-               BluetoothManage.device = g_slist_remove_all(BluetoothManage.device,
-                               BDdevice);
-               //D_PRINTF("\n%s\n%s\n",BDdevice->bdaddr,BDdevice->name);
-               if (BDdevice->bdaddr) {
-                       g_free(BDdevice->bdaddr);
-               }
-               if (BDdevice->name) {
-                       g_free(BDdevice->name);
-               }
-               if (BDdevice->path) {
-                       g_free(BDdevice->path);
-               }
-               g_free(BDdevice);
+/*
+ * Set the Bluez Adapter Property "Powered" value
+ * If success return 0, else return -1;
+ */
+int adapter_set_powered(gboolean powervalue)
+{
+    LOGD("value:%d\n",powervalue);
 
-       }
+    GError *error = NULL;
+    GVariant *value;
 
-       BluetoothManage.device = newDeviceList;
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGD("BluetoothManage Not Init\n");
+        return -1;
+    }
 
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                    ADAPTER_PATH,    FREEDESKTOP_PROPERTIES,
+                    "Set",    g_variant_new("(ssv)", ADAPTER_INTERFACE,
+                        "Powered",  g_variant_new("b", powervalue)),
+                    NULL,  G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT,
+                    NULL, &error);
+
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
+
+    g_variant_unref(value);
+    return 0;
 }
 
 /*
- * send pairing command
+ * Get the Bluez Adapter Property "Powered" value
  * If success return 0, else return -1;
  */
-int device_pair(struct btd_device * addr) {
-       D_PRINTF("\n%s\n%s\t%s\n",addr->bdaddr,addr->name,addr->path);
+int adapter_get_powered(gboolean *powervalue) {
+    LOGD("\n");
 
-       GDBusConnection *connection;
-       GError *error = NULL;
-       GVariant *value;
+    GError *error = NULL;
+    GVariant *value = NULL;
+    GVariant *subValue = NULL;
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGD("BluetoothManage Not Init\n");
+        return -1;
+    }
 
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, addr->path,
-                       "org.bluez.Device1", "Pair", NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
-                       DBUS_REPLY_TIMEOUT, NULL, &error);
+    if (NULL == powervalue) {
+        LOGD("powervalue is NULL\n");
+        return -1;
+    }
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                ADAPTER_PATH,   FREEDESKTOP_PROPERTIES, "Get",
+                g_variant_new("(ss)", ADAPTER_INTERFACE, "Powered"),
+                NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT,
+                NULL, &error);
 
-       g_variant_unref(value);
-       return 0;
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s\n", error->message);
+        g_error_free(error);
+        return -1;
+    }
 
+    g_variant_get(value, "(v)", &subValue);
+    g_variant_get(subValue, "b", powervalue);
+    g_variant_unref(subValue);
+
+    g_variant_unref(value);
+
+    LOGD("get ret :%d\n",*powervalue);
+    return 0;
 }
 
 /*
- * send cancel pairing command
+ * Set the Bluez Adapter Property value
+ * Only support boolean property now.(Discoverable, Pairable, Powered)
  * If success return 0, else return -1;
  */
-int device_cancelPairing(struct btd_device * addr) {
-       D_PRINTF("\n%s\n%s\t%s\n",addr->bdaddr,addr->name,addr->path);
+int adapter_set_property(const gchar* property, gboolean setvalue)
+{
+    LOGD("property:%s,value:%d\n",property, setvalue);
+
+    GError *error = NULL;
+    GVariant *value;
 
-       GDBusConnection *connection;
-       GError *error = NULL;
-       GVariant *value;
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGW("BluetoothManage Not Init\n");
+        return -1;
+    }
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    if ((0!=g_strcmp0 (property, "Discoverable"))&&
+        (0!=g_strcmp0 (property, "Pairable"))&&
+        (0!=g_strcmp0 (property, "Powered")))
+    {
+        LOGD("Invalid value\n");
+        return -1;
+    }
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                    ADAPTER_PATH,    FREEDESKTOP_PROPERTIES,
+                    "Set",    g_variant_new("(ssv)", ADAPTER_INTERFACE,
+                        property,  g_variant_new("b", setvalue)),
+                    NULL,  G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT,
+                    NULL, &error);
+
+    if (NULL == value) {
+        LOGW ("Error : %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
 
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, addr->path,
-                       "org.bluez.Device1", "CancelPairing", NULL, NULL,
-                       G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+    g_variant_unref(value);
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    return 0;
+}
 
-       g_variant_unref(value);
-       return 0;
 
+/*
+ * Call the Bluez Adapter Method "StartDiscovery"
+ * If success return 0, else return -1;
+ */
+int adapter_start_discovery()
+{
+    LOGD("\n");
+
+    GError *error = NULL;
+    GVariant *value = NULL;
+
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGW("BluetoothManage Not Init\n");
+        return -1;
+    }
+
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                ADAPTER_PATH,  ADAPTER_INTERFACE, "StartDiscovery",
+                NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s\n", error->message);
+        g_error_free(error);
+        return -1;
+    }
+
+    g_variant_unref(value);
+    return 0;
 }
+
 /*
- * send connect command
+ * Call the Bluez Adapter Method "StopDiscovery"
  * If success return 0, else return -1;
  */
-int device_connect(struct btd_device * addr) {
-       D_PRINTF("\n%s\n%s\t%s\n",addr->bdaddr,addr->name,addr->path);
+int adapter_stop_discovery()
+{
+    LOGD("\n");
 
-       GDBusConnection *connection;
-       GError *error = NULL;
-       GVariant *value;
+    GError *error = NULL;
+    GVariant *value = NULL;
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGW("BluetoothManage Not Init\n");
+        return -1;
+    }
 
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, addr->path,
-                       "org.bluez.Device1", "Connect", NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
-                       DBUS_REPLY_TIMEOUT, NULL, &error);
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                ADAPTER_PATH, ADAPTER_INTERFACE, "StopDiscovery",
+                NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s\n", error->message);
+        g_error_free(error);
+        return -1;
+    }
 
-       g_variant_unref(value);
-       return 0;
+    g_variant_unref(value);
 
+    return 0;
 }
 
 /*
- * send disconnect command
+ * Call the Bluez Adapter Method "RemoveDevice"
  * If success return 0, else return -1;
  */
-int device_disconnect(struct btd_device * addr) {
-       D_PRINTF("\n%s\n%s\t%s\n",addr->bdaddr,addr->name,addr->path);
+int adapter_remove_device(const gchar* bdaddr)
+{
+    LOGD("\n%s\n",bdaddr);
+
+    struct btd_device * device;
+    gchar *path;
+    GError *error = NULL;
+    GVariant *value;
+
+
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGW("BluetoothManage Not Init\n");
+        return -1;
+    }
+
+    devices_list_lock();
+    device = devices_list_find_device_by_bdaddr(bdaddr);
 
-       GDBusConnection *connection;
-       GError *error = NULL;
-       GVariant *value;
+    if (NULL == device) {
+        devices_list_unlock();
+        LOGD("not find device\n");
+        return -1;
+    }
+    path = g_strdup(device->path);
+    devices_list_unlock();
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                ADAPTER_PATH, ADAPTER_INTERFACE, "RemoveDevice",
+                g_variant_new("(o)", path), NULL,
+                G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
 
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, addr->path,
-                       "org.bluez.Device1", "Disconnect", NULL, NULL,
-                       G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+    g_free(path);
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
 
-       g_variant_unref(value);
-       return 0;
+    g_variant_unref(value);
+    return 0;
 
 }
 
+
 /*
- * set remote device property
+ * Get the copy of device list.
+ */
+GSList* adapter_get_devices_list()
+{
+    GSList* tmp;
+    devices_list_lock();
+    tmp = g_slist_copy_deep (BluetoothManage.device,
+                                        (GCopyFunc)device_copy, NULL);
+    devices_list_unlock();
+    return tmp;
+}
+
+/*
+ * free device list.
+ */
+void adapter_devices_list_free(GSList* list)
+{
+    if (NULL != list)
+        g_slist_free_full(list,(GDestroyNotify)device_free);
+
+}
+
+/*
+ * device_pair callback
+ */
+void device_pair_done_cb(GDBusConnection *source_object,
+                        GAsyncResult *res,
+                        gpointer user_data)
+{
+    LOGD("\n");
+    g_dbus_connection_call_finish (source_object, res, NULL);
+
+}
+
+/*
+ * send pairing command
+ * If success return 0, else return -1;
+ */
+int device_pair(const gchar * bdaddr)
+{
+    LOGD("\n%s\n",bdaddr);
+
+    struct btd_device * device;
+    gchar *path;
+    GError *error = NULL;
+    GVariant *value;
+
+
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGD("BluetoothManage Not Init\n");
+        return -1;
+    }
+
+    devices_list_lock();
+    device = devices_list_find_device_by_bdaddr(bdaddr);
+
+    if (NULL == device) {
+        devices_list_unlock();
+        LOGD("not find device\n");
+        return -1;
+    }
+    path = g_strdup(device->path);
+    devices_list_unlock();
+
+#if 0
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                path, DEVICE_INTERFACE, "Pair",
+                NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    g_free(path);
+
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
+
+    g_variant_unref(value);
+#else
+
+    g_dbus_connection_call(cli.system_conn, BLUEZ_SERVICE,
+                path, DEVICE_INTERFACE, "Pair",
+                NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL,
+                (GAsyncReadyCallback)device_pair_done_cb, NULL);
+
+    g_free(path);
+#endif
+    return 0;
+
+}
+
+/*
+ * send cancel pairing command
  * If success return 0, else return -1;
  */
-int device_set_property(struct btd_device * addr, const char *property_name,
-               const char *property_value) {
-       D_PRINTF("\n%s\n%s\t%s\n",addr->bdaddr,addr->name,addr->path);
+int device_cancelPairing(const gchar * bdaddr)
+{
+    LOGD("\n%s\n",bdaddr);
+
+    struct btd_device * device;
+    gchar *path;
+    GError *error = NULL;
+    GVariant *value;
 
-       GDBusConnection *connection;
-       GError *error = NULL;
-       GVariant *ret;
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGD("BluetoothManage Not Init\n");
+        return -1;
+    }
 
-       //Only support set "Trusted"
-       if (strcmp(property_name, "Trusted")) {
-               D_PRINTF("Not support property name\n");
-               return -1;
-       }
+    devices_list_lock();
+    device = devices_list_find_device_by_bdaddr(bdaddr);
 
-       gboolean value;
-       if (atoi(property_value) == 1 || !strcasecmp(property_value, "true")) {
-               value = TRUE;
-       } else if (atoi(property_value) == 0
-                       || !strcasecmp(property_value, "false")) {
-               value = FALSE;
-       } else {
-               D_PRINTF("Not support property value\n");
-               return -1;
-       }
+    if (NULL == device) {
+        devices_list_unlock();
+        LOGD("not find device\n");
+        return -1;
+    }
+    path = g_strdup(device->path);
+    devices_list_unlock();
 
-       ret = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, addr->path,
-       FREEDESKTOP_PROPERTIES, "Set",
-                       g_variant_new("(ssv)", DEVICE_INTERFACE, property_name,
-                                       g_variant_new("b", value)), NULL, G_DBUS_CALL_FLAGS_NONE,
-                       DBUS_REPLY_TIMEOUT, NULL, &error);
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                path, DEVICE_INTERFACE, "CancelPairing",
+                NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    g_free(path);
+
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
 
-       if (NULL == ret) {
-               D_PRINTF ("Error getting object manager client: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
+    g_variant_unref(value);
+    return 0;
 
-       g_variant_unref(ret);
-       return 0;
 }
+/*
+ * send connect command
+ * If success return 0, else return -1;
+ */
+int device_connect(const gchar * bdaddr)
+{
+    LOGD("\n%s\n",bdaddr);
 
-int isAVPConnected(struct btd_device *addr) {
+    struct btd_device * device;
+    gchar *path;
+    GError *error = NULL;
+    GVariant *value;
 
-       GDBusConnection *connection;
 
-       GError *error = NULL;
-       GVariant *value;
-       GVariant *variantValue;
-       gboolean status;
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGD("BluetoothManage Not Init\n");
+        return -1;
+    }
+
+    devices_list_lock();
+    device = devices_list_find_device_by_bdaddr(bdaddr);
+
+    if (NULL == device) {
+        devices_list_unlock();
+        LOGD("not find device\n");
+        return -1;
+    }
+    path = g_strdup(device->path);
+    devices_list_unlock();
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                path, DEVICE_INTERFACE, "Connect",
+                NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
 
-//    value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE,  BDdevice->path, FREEDESKTOP_PROPERTIES,
-//        "Get", g_variant_new("(ss)",MEDIA_CONTROL1_INTERFACE,"Connected"),
-//        NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+    g_free(path);
 
-       value = g_dbus_connection_call_sync(connection, BLUEZ_SERVICE, addr->path,
-       FREEDESKTOP_PROPERTIES, "Get",
-                       g_variant_new("(ss)", MEDIA_CONTROL1_INTERFACE, "Connected"), NULL,
-                       G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s\n", error->message);
+    g_variant_unref(value);
+    return 0;
 
-               g_error_free(error);
-               return -1;
-       }
+}
 
-       else {
-               g_variant_get(value, "(v)", &variantValue);
-               g_variant_get(variantValue, "b", &status);
-               printf("Address: %s:%i",addr->bdaddr, status);
-               return status;
-       }
+/*
+ * send disconnect command
+ * If success return 0, else return -1;
+ */
+int device_disconnect(const gchar* bdaddr)
+{
+    LOGD("\n%s\n",bdaddr);
 
-       return 0;
+    struct btd_device * device;
+    gchar *path;
+    GError *error = NULL;
+    GVariant *value;
 
+
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGD("BluetoothManage Not Init\n");
+        return -1;
+    }
+
+    devices_list_lock();
+    device = devices_list_find_device_by_bdaddr(bdaddr);
+
+    if (NULL == device) {
+        devices_list_unlock();
+        LOGD("not find device\n");
+        return -1;
+    }
+    path = g_strdup(device->path);
+    devices_list_unlock();
+
+    value = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                path, DEVICE_INTERFACE, "Disconnect",
+                NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    g_free(path);
+
+    if (NULL == value) {
+        LOGW ("Error getting object manager client: %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
+
+    g_variant_unref(value);
+    return 0;
+}
+
+/*
+ * set remote device property
+ * If success return 0, else return -1;
+ */
+int device_set_property(const char * bdaddr, const char *property_name,
+                        const char *property_value)
+{
+    LOGD("\n%s-%s-%s\n",bdaddr,property_name,property_value);
+
+    GError *error = NULL;
+    GVariant *ret;
+    struct btd_device * device;
+    gchar *path;
+    gboolean value;
+
+    if (FALSE == BluetoothManage_InitFlag_Get()) {
+        LOGD("BluetoothManage Not Init\n");
+        return -1;
+    }
+
+    //Only support set "Trusted"
+    if (strcmp(property_name, "Trusted")) {
+        LOGD("Not support property name\n");
+        return -1;
+    }
+
+    if (atoi(property_value) == 1 || !strcasecmp(property_value, "true")) {
+        value = TRUE;
+    } else if (atoi(property_value) == 0
+            || !strcasecmp(property_value, "false")) {
+        value = FALSE;
+    } else {
+        LOGD("Not support property value\n");
+        return -1;
+    }
+
+    devices_list_lock();
+    device = devices_list_find_device_by_bdaddr(bdaddr);
+
+    if (NULL == device) {
+        devices_list_unlock();
+        LOGD("not find device\n");
+        return -1;
+    }
+    path = g_strdup(device->path);
+    devices_list_unlock();
+
+    ret = g_dbus_connection_call_sync(cli.system_conn, BLUEZ_SERVICE,
+                path,   FREEDESKTOP_PROPERTIES, "Set",
+                g_variant_new("(ssv)", DEVICE_INTERFACE, property_name,
+                    g_variant_new("b", value)), NULL, G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    g_free(path);
+
+    if (NULL == ret) {
+        LOGW ("Error getting object manager client: %s", error->message);
+        g_error_free(error);
+        return -1;
+    }
+
+    g_variant_unref(ret);
+    return 0;
 }
 
-int isHFPConnected(struct btd_device *addr) {
 
-       GDBusConnection *connection;
+/*
+ * Stops the GMainLoop
+ */
+int BluetoothManagerQuit()
+{
+    LOGD("\n");
 
-       GError *error = NULL;
-       GVariant *value;
-       gchar *ofono_path;
-       gboolean status;
+    if (FALSE == BluetoothManage.inited )
+    {
+        LOGD("BluetoothManage Not init\n");
+        return -1;
+    }
 
-       GVariantIter *array;
-       GVariant *var = NULL;
-       const gchar *key = NULL;
+    if(cli.clientloop){
+        g_main_loop_quit(cli.clientloop);
+    }
 
-       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (NULL == connection) {
-               D_PRINTF("GDBusconnection is NULL\n");
-               return -1;
-       }
+    OfonoManagerQuit();
+    BluezManagerQuit();
+    stop_agent();
 
+    devices_list_lock();
+    devices_list_cleanup();
+    devices_list_unlock();
 
-//path=/hfp/org/bluez/hci0/dev_E0_98_61_7D_D3_1E; interface=org.ofono.Modem; member=GetProperties
 
-       ofono_path = g_strconcat("/hfp", addr->path, NULL);
+    g_mutex_clear (&(BluetoothManage.m));
 
+    g_object_unref(cli.system_conn);
+    g_object_unref(cli.session_conn);
 
-       value = g_dbus_connection_call_sync(connection, OFONO_SERVICE, ofono_path,
-       OFONO_MODEM_INTERFACE, "GetProperties", NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
-                       DBUS_REPLY_TIMEOUT, NULL, &error);
+    if (logfp)
+        fclose(logfp);
+    logfp = NULL;
 
-       if (NULL == value) {
-               D_PRINTF ("Error getting object manager client: %s\n", error->message);
+    BluetoothManage.inited = FALSE;
 
-               g_error_free(error);
-               return -1;
-       }
+    return 0;
+}
+
+/*
+ * Create Bluetooth Manager Thread
+ * Note: bluetooth-api shall do BluetoothManageInit() first before call other APIs.
+ *          bluetooth-api shall register callback function
+ * Returns: 0 - success or other errors
+ */
+int BluetoothManagerInit() {
+    pthread_t thread_id;
 
-       else {
+    LOGD("\n");
 
-               g_variant_get(value, "(a{sv})", &array);
-               while (g_variant_iter_loop(array, "{sv}", &key, &var)) {
-                       if (g_strcmp0(key, "Powered") == 0) {
+    if (TRUE == BluetoothManage.inited )
+    {
+        LOGW("BluetoothManage already init\n");
+        return -1;
+    }
 
-                               g_variant_get(var, "b", &status);
+    logfp = fopen("/var/log/BluetoothManager.log", "a+");
 
-                               return status;
+    if (NULL == logfp)
+    {
+        openlog("BluetoothManager", LOG_CONS | LOG_PID, LOG_USER);
+        syslog(LOG_WARNING, "BluetoothManager create log file fail\n");
+        closelog();
+    }
 
-                       }
-               }
-               g_variant_iter_free(array);
-               g_variant_unref(value);
-               g_free(ofono_path);
+    g_mutex_init(&(BluetoothManage.m));
 
-               return status;
-       }
+    pthread_create(&thread_id, NULL, bt_event_loop_thread, NULL);
+    //pthread_setname_np(thread_id, "BT_Manager");
+    sleep(1);
 
-       return 0;
+    return 0;
+}
 
+/*
+ * Register Bluetooth Manager Callback function
+ */
+void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback)
+{
+    if (NULL != pstRegisterCallback)
+    {
+        if (NULL != pstRegisterCallback->binding_device_added)
+        {
+            g_RegisterCallback.binding_device_added =
+                pstRegisterCallback->binding_device_added;
+        }
+
+        if (NULL != pstRegisterCallback->binding_device_removed)
+        {
+            g_RegisterCallback.binding_device_removed =
+                pstRegisterCallback->binding_device_removed;
+        }
+
+        if (NULL != pstRegisterCallback->binding_device_propertyies_changed)
+        {
+            g_RegisterCallback.binding_device_propertyies_changed =
+                pstRegisterCallback->binding_device_propertyies_changed;
+        }
+
+        if (NULL != pstRegisterCallback->binding_request_confirmation)
+        {
+            g_RegisterCallback.binding_request_confirmation =
+                pstRegisterCallback->binding_request_confirmation;
+        }
+    }
 }
 
 GError* setHMIStatus(enum btStates state) {
@@ -774,5 +1550,4 @@ GError* setHMIStatus(enum btStates state) {
 
 }
 
-/************************************** The End Of File **************************************/
 
index 3602a78..2876552 100644 (file)
 */
 
 
-#ifndef BLUETOOTH_MANAGER_H
-#define BLUETOOTH_MANAGER_H
+#ifndef BLUEZ_MANAGER_H
+#define BLUEZ_MANAGER_H
 
-#include <glib.h>
-#include <glib-object.h>
-//#include <dbus/dbus.h>
 #include <glib.h>
 #include <gio/gio.h>
 #include <glib-object.h>
+
+    /* Debug Trace Level */
+#define DT_LEVEL_ERROR          (1 << 1)
+#define DT_LEVEL_WARNING        (1 << 2)
+#define DT_LEVEL_NOTICE         (1 << 3)
+#define DT_LEVEL_INFO           (1 << 4)
+#define DT_LEVEL_DEBUG          (1 << 5)
+//#define _DEBUG 
+
+#define LOGE(fmt, args...)   \
+    DebugTraceSendMsg(DT_LEVEL_ERROR, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGW(fmt, args...)   \
+    DebugTraceSendMsg(DT_LEVEL_WARNING, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGN(fmt, args...)   \
+    DebugTraceSendMsg(DT_LEVEL_NOTICE,  g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGI(fmt, args...)   \
+    DebugTraceSendMsg(DT_LEVEL_INFO, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGD(fmt, args...)   \
+    DebugTraceSendMsg(DT_LEVEL_DEBUG,  g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+
+#ifdef _DEBUG
+ #define _DEBUG_PRINT_DBUS
+ #define LOCAL_PRINT_DEBUG
+#endif
+
+#ifdef LOCAL_PRINT_DEBUG
+#define D_PRINTF(fmt, args...) \
+       g_print("[DEBUG][%d:%s]"fmt,  __LINE__, __FUNCTION__, ## args)
+#define D_PRINTF_RAW(fmt, args...) \
+       g_print(""fmt, ## args)
+#else
+#define D_PRINTF(fmt, args...)
+#define D_PRINTF_RAW(fmt, args...)
+#endif /* ifdef _DEBUG */
+
 //service
 #define AGENT_SERVICE               "org.agent"
 
 
 //object path
 #define OFONO_MANAGER_PATH          "/"
+#define BLUEZ_MANAGER_PATH          "/"
+#define AGENT_PATH                  "/org/bluez"
 #define ADAPTER_PATH                "/org/bluez/hci0"
 #define OBEX_CLIENT_PATH            "/org/bluez/obex"
-#define AGENT_PATH                  "/org/bluez"
+
 
 //interface
 #define ADAPTER_INTERFACE           "org.bluez.Adapter1"
 #define DEVICE_INTERFACE            "org.bluez.Device1"
-#define AGENT_MANAGER_INTERFACE     "org.bluez.AgentManager"
-#define SERVICE_INTERFACE           "org.bluez.Service"
+#define AGENT_MANAGER_INTERFACE     "org.bluez.AgentManager1"
+//#define SERVICE_INTERFACE           "org.bluez.Service"
 #define AGENT_INTERFACE             "org.bluez.Agent"
 
-#define CLIENT_INTERFACE            "org.bluez.obex.Client"
+#define CLIENT_INTERFACE            "org.bluez.obex.Client1"
 #define TRANSFER_INTERFACE          "org.bluez.obex.Transfer"
 #define SESSION_INTERFACE           "org.bluez.obex.Session"
 #define OBEX_ERROR_INTERFACE        "org.bluez.obex.Error"
@@ -57,7 +91,7 @@
 #define MEDIA_FOLDER_INTERFACE      "org.bluez.MediaFolder"
 #define MEDIA_ITEM_INTERFACE        "org.bluez.MediaItem"
 #define MEDIA_TRANSPORT_INTERFACE   "org.bluez.MediaTransport"
-#define MEDIA_CONTROL1_INTERFACE   "org.bluez.MediaControl1"
+#define MEDIA_CONTROL1_INTERFACE    "org.bluez.MediaControl1"
 
 
 #define OFONO_HANDSFREE_INTERFACE               "org.ofono.Handsfree"
 
 #define FREEDESKTOP_INTROSPECT      "org.freedesktop.DBus.Introspectable"
 #define FREEDESKTOP_PROPERTIES      "org.freedesktop.DBus.Properties"
-
-
-#define CONVERTER_CONN              (cli.sys_conn)
-#define AGENT_CONN                  (cli.agent_conn)
-#define OBEX_CONN                   (cli.obex_conn)
+#define FREEDESKTOP_OBJECTMANAGER   "org.freedesktop.DBus.ObjectManager"
 
 #define HOMESCREEN_SERVICE                             "org.agl.homescreen"
 #define HOMESCREEN_ICON_INTERFACE              "org.agl.statusbar"
 #define DBUS_REPLY_TIMEOUT (120 * 1000)
 #define DBUS_REPLY_TIMEOUT_SHORT (10 * 1000)
 
-//typedef void(*callback)(void);
-typedef void(*callback)(int password_rejected_flag);
-void register_callback(callback ptr);
-
+#define ERROR_BLUEZ_REJECT "org.bluez.Error.Rejected"
+#define ERROR_BLUEZ_CANCELED "org.bluez.Error.Canceled"
+#if 0
+void DebugTraceSendMsg(int level, gchar* message);
+#else
 
 typedef struct _client
 {
-    GDBusConnection *sys_conn;
-    GDBusConnection *agent_conn;
-    GDBusConnection *obex_conn;
+    GDBusConnection *system_conn;
+    GDBusConnection *session_conn;
     GMainLoop *clientloop;
-//    FILE *fd;
-//    int conn_fd;
 } Client;
 
 //Bluetooth Device Properties
 struct btd_device {
-    gchar   *bdaddr;
     gchar   *path;
+    gchar   *bdaddr;
     gchar   *name;
     gboolean    paired;
     gboolean    trusted;
-    gboolean    blocked;
     gboolean    connected;
     gboolean    avconnected;
     gboolean    hfpconnected;
-    GSList        *uuids;
 };
 
 typedef struct {
@@ -120,35 +146,47 @@ typedef struct {
     GSList * device;
 } stBluetoothManage;
 
+typedef struct tagBinding_RegisterCallback
+{
+    void (*binding_device_added)(struct btd_device *BDdevice);
+    void (*binding_device_removed)(struct btd_device *BDdevice);
+    void (*binding_device_propertyies_changed)(struct btd_device *BDdevice);
+    gboolean (*binding_request_confirmation)(const gchar *device, guint passkey);
+}Binding_RegisterCallback_t;
+
 enum btStates {INACTIVE, ACTIVE};
 
+void DebugTraceSendMsg(int level, gchar* message);
 
-int BluetoothManageInit(void);
+/* ------ PUBLIC PLUGIN FUNCTIONS --------- */
+void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback);
+int BluetoothManagerInit(void);
+int BluetoothManagerQuit(void);
+
+GSList* adapter_get_devices_list() ;
+void adapter_devices_list_free(GSList* list) ;
 
 int adapter_set_powered(gboolean value);
 int adapter_get_powered(gboolean *value);
-int adapter_set_discoverable(gboolean value);
+//int adapter_set_discoverable(gboolean value);
 int adapter_start_discovery();
 int adapter_stop_discovery();
-int adapter_update_devices();
-GSList* adapter_get_devices_list();
-int adapter_remove_device(struct btd_device * addr);
-int device_pair(struct btd_device * addr);
-int device_cancelPairing(struct btd_device * addr);
-int device_connect(struct btd_device * addr);
+int adapter_remove_device(const gchar *addr);
+int device_pair(const gchar * addr);
+int device_cancelPairing(const gchar * bdaddr);
+int device_connect(const gchar *addr);
 //int device_connectProfile();
-int device_disconnect(struct btd_device * addr);
+int device_disconnect(const gchar *addr);
 //int device_disconnectProfile();
-int device_set_property(struct btd_device * addr, const char *property, const char *value);
+int device_set_property(const gchar * bdaddr, const gchar *property, const gchar *value);
 
-int isAVPConnected(struct btd_device *BDdevice);
-int isHFPConnected(struct btd_device *BDdevice);
+int adapter_set_property(const gchar* property, gboolean value) ;
 
 GError* setHMIStatus(enum btStates);
 
-
+#endif
 #endif /* BLUETOOTH_MANAGER_H */
 
 
-/************************************** The End Of File **************************************/  
+/****************************** The End Of File ******************************/
 
diff --git a/binding-bluetooth/bluez-client.c b/binding-bluetooth/bluez-client.c
new file mode 100644 (file)
index 0000000..ddaedbb
--- /dev/null
@@ -0,0 +1,956 @@
+/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
+*
+*   Licensed under the Apache License, Version 2.0 (the "License");
+*   you may not use this file except in compliance with the License.
+*   You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*   Unless required by applicable law or agreed to in writing, software
+*   distributed under the License is distributed on an "AS IS" BASIS,
+*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*   See the License for the specific language governing permissions and
+*   limitations under the License.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+
+#include "lib_bluez.h"
+#include "bluez-client.h"
+
+#ifdef BLUEZ_THREAD
+static GMainLoop *BluezLoop;
+#endif
+static Bluez_RegisterCallback_t bluez_RegisterCallback = { 0 };
+static stBluezManage BluezManage = { 0 };
+
+
+/* ------ LOCAL  FUNCTIONS --------- */
+
+/*
+ * make a copy of each element
+ * And, to entirely free the new btd_device, you could do: device_free
+ */
+static struct bt_device *bluez_device_copy(struct bt_device* device)
+{
+    struct bt_device * temp;
+
+    if (NULL == device) {
+        return NULL;
+    }
+
+    temp = g_malloc0(sizeof(struct bt_device));
+    temp->path = g_strdup(device->path);
+    temp->bdaddr = g_strdup(device->bdaddr);
+    temp->name = g_strdup(device->name);
+    temp->alias = g_strdup(device->alias);
+    temp->paired = device->paired;
+    temp->trusted = device->trusted;
+    temp->blocked = device->blocked;
+    temp->connected = device->connected;
+    temp->avconnected = device->avconnected;
+    temp->legacypairing = device->legacypairing;
+    temp->rssi = device->rssi;
+    temp->uuids = g_variant_ref(device->uuids);
+
+    return temp;
+}
+
+/*
+ * Frees all of the memory
+ */
+static void bluez_device_free(struct bt_device* device)
+{
+
+    if (NULL == device) {
+        return ;
+    }
+    D_PRINTF("device %p\n",device);
+    if (device->path) {
+        D_PRINTF("path:%s\n",device->path);
+        g_free(device->path);
+        device->path = NULL;
+    }
+    if (device->bdaddr) {
+        D_PRINTF("bdaddr:%s\n",device->bdaddr);
+        g_free(device->bdaddr);
+        device->bdaddr = NULL;
+    }
+    if (device->name) {
+        D_PRINTF("name:%s\n",device->name);
+        g_free(device->name);
+        device->name = NULL;
+    }
+    if (device->alias) {
+        D_PRINTF("alias:%s\n",device->alias);
+        g_free(device->alias);
+        device->alias = NULL;
+    }
+
+    if (device->uuids){
+        D_PRINTF("uuids xxx\n");
+        g_variant_unref(device->uuids);
+        device->uuids = NULL;
+    }
+
+    g_free(device);
+
+}
+
+#ifdef BLUEZ_BD_LIST
+
+static void bluez_devices_list_lock(void)
+{
+    g_mutex_lock(&(BluezManage.m));
+}
+
+static void bluez_devices_list_unlock(void)
+{
+    g_mutex_unlock(&(BluezManage.m));
+}
+
+static int bluez_device_path_cmp(struct bt_device * device, const gchar* pPath )
+{
+    return g_strcmp0 (device->path, pPath);
+}
+
+/*
+ * search device by path
+ * Returns the first found btd_device or NULL if it is not found
+ */
+static struct bt_device *bluez_devices_list_find_device_by_path(const gchar* pPath)
+{
+    GSList * temp;
+
+    temp = g_slist_find_custom (BluezManage.device, pPath,
+                                (GCompareFunc)bluez_device_path_cmp);
+
+    if (temp) {
+        return temp->data;
+    }
+
+    return NULL;
+
+}
+
+
+static int bluez_device_bdaddr_cmp(struct bt_device * device, const gchar* pBDaddr )
+{
+    return g_strcmp0 (device->bdaddr, pBDaddr);
+}
+
+/*
+ * search device by path
+ * Returns the first found btd_device or NULL if it is not found
+ */
+static struct
+bt_device *bluez_devices_list_find_device_by_bdaddr(const gchar* pBDaddr)
+{
+    GSList * temp;
+
+    temp = g_slist_find_custom (BluezManage.device, pBDaddr,
+                                (GCompareFunc)bluez_device_bdaddr_cmp);
+
+    if (temp) {
+        return temp->data;
+    }
+
+    return NULL;
+
+}
+
+/*
+ * remove all the devices
+ */
+static void bluez_devices_list_cleanup()
+{
+    LOGD("\n");
+    GSList * temp = BluezManage.device;
+    while (temp) {
+        struct bt_device *BDdevice = temp->data;
+        temp = temp->next;
+
+        BluezManage.device = g_slist_remove_all(BluezManage.device,
+                BDdevice);
+
+        bluez_device_free(BDdevice);
+    }
+}
+
+/*
+ * Get the copy of device list.
+ */
+GSList* bluez_devices_list_copy()
+{
+    GSList* tmp;
+    bluez_devices_list_lock();
+    tmp = g_slist_copy_deep (BluezManage.device,
+                                        (GCopyFunc)bluez_device_copy, NULL);
+    bluez_devices_list_unlock();
+    return tmp;
+}
+
+#endif
+
+/*
+ * free device list.
+ */
+void bluez_devices_list_free(GSList* list)
+{
+    if (NULL != list)
+        g_slist_free_full(list,(GDestroyNotify)bluez_device_free);
+
+}
+
+/*
+ * update device from Interfcace org.bluez.Device1 properties
+ */
+static int
+bluez_device1_properties_update(struct bt_device *device, GVariant *value)
+{
+    if ((NULL==device) || (NULL==value))
+    {
+        return -1;
+    }
+
+    GVariantIter iter;
+    const gchar *key;
+    GVariant *subValue;
+
+    g_variant_iter_init (&iter, value);
+    while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue))
+    {
+        //gchar *s = g_variant_print (subValue, TRUE);
+        //g_print ("  %s -> %s\n", key, s);
+        //g_free (s);
+
+        gboolean value_b  =  FALSE;//b gboolean
+        //gchar value_c = 0;
+        //guchar value_y  =  0;//y guchar
+        gint16 value_n  =  0;//n gint16
+        //guint16 value_q  =  0;//q guint16
+        //gint32 value_i  =  0;//i gint32
+        //guint32 value_u  =  0;//u guint32
+        //gint64 value_x  =  0;//x gint64
+        //guint64 value_t  =  0;//t guint64
+        //gint32 value_h  = 0;//h gint32
+        //gdouble value_d = 0.0;//d gdouble
+        gchar *str;
+
+        if (0==g_strcmp0(key,"Address")) {
+            g_variant_get(subValue, "s", &str );
+            D_PRINTF("Address %s\n",str);
+
+            if (device->bdaddr)
+                g_free (device->bdaddr);
+
+            device->bdaddr = g_strdup(str);
+
+            g_free (str);
+            str = NULL;
+
+        }else if (0==g_strcmp0(key,"Name")) {
+            g_variant_get(subValue, "s", &str );
+            D_PRINTF("Name %s\n",str);
+
+            if (device->name)
+                g_free (device->name);
+
+            device->name = g_strdup(str);
+
+            g_free (str);
+            str = NULL;
+
+        }else if (0==g_strcmp0(key,"Alias")) {
+            g_variant_get(subValue, "s", &str );
+            D_PRINTF("Alias %s\n",str);
+
+            if (device->alias)
+                g_free (device->alias);
+
+            device->alias = g_strdup(str);
+
+            g_free (str);
+            str = NULL;
+        }else if (0==g_strcmp0(key,"LegacyPairing")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("LegacyPairing %d\n",value_b);
+            device->legacypairing = value_b;
+
+        }else if (0==g_strcmp0(key,"Paired")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Paired %d\n",value_b);
+            device->paired = value_b;
+
+        }else if (0==g_strcmp0(key,"Trusted")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Trusted %d\n",value_b);
+            device->trusted = value_b;
+
+        }else if (0==g_strcmp0(key,"Blocked")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Blocked %d\n",value_b);
+            device->blocked = value_b;
+
+        }else if (0==g_strcmp0(key,"Connected")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Connected %d\n",value_b);
+            device->connected = value_b;
+
+        }else if (0==g_strcmp0(key,"RSSI")) {
+            g_variant_get(subValue, "n", &value_n );
+            D_PRINTF("RSSI %d\n",value_n);
+            device->rssi = value_n;
+
+        }else if (0==g_strcmp0(key,"UUIDs")) {
+            //g_print ("type '%s'\n", g_variant_get_type_string (subValue));
+            if (device->uuids)
+                g_variant_unref(device->uuids);
+            device->uuids = g_variant_new_variant(subValue);
+
+        }
+    }
+
+    return 0;
+
+}
+
+/*
+ * update device from Interfcace org.bluez.MediaControl1 properties
+ */
+static int
+bluez_mediacontrol1_properties_update(struct bt_device *device, GVariant *value)
+{
+    GVariantIter iter;
+    const gchar *key;
+    GVariant *subValue;
+
+    if ((NULL==device) || (NULL==value))
+    {
+        return -1;
+    }
+
+    g_variant_iter_init (&iter, value);
+    while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue))
+    {
+        //gchar *s = g_variant_print (subValue, TRUE);
+        //g_print ("  %s -> %s\n", key, s);
+        //g_free (s);
+
+        gboolean value_b = FALSE;//b gboolean
+        gchar *str;
+
+        if (0==g_strcmp0(key,"Connected")) {
+            g_variant_get(subValue, "b", &value_b );
+            D_PRINTF("Connected %d\n",value_b);
+            device->avconnected = value_b;
+
+        }else if (0==g_strcmp0(key,"Player")) {
+            g_variant_get(subValue, "o", &str );
+            D_PRINTF("Player Object %s\n",str);
+
+        }
+    }
+
+    return 0;
+
+}
+
+/*
+ * Get the device list
+ * Call <method>GetManagedObjects
+ * Returns: 0 - success or other errors
+ */
+static GSList * bluez_get_devices_list() {
+    LOGD("\n");
+
+    GError *error = NULL;
+    GVariant *result = NULL;
+    GSList *newDeviceList = NULL;
+
+    result = g_dbus_connection_call_sync(BluezManage.system_conn,
+            BLUEZ_SERVICE, BLUEZ_MANAGER_PATH, FREEDESKTOP_OBJECTMANAGER,
+            "GetManagedObjects", NULL, NULL,
+            G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    if (error) {
+        LOGW ("Error : %s\n", error->message);
+        g_error_free(error);
+        return NULL;
+    }
+
+    GVariant *ArrayValue = NULL;
+    GVariantIter *ArrayValueIter;
+    GVariant *Value = NULL;
+
+    g_variant_get(result, "(*)", &ArrayValue);
+
+    g_variant_get(ArrayValue, "a*", &ArrayValueIter);
+    while (g_variant_iter_loop(ArrayValueIter, "*", &Value)) {
+
+        GVariantIter dbus_object_iter;
+        GVariant *dbusObjecPath;
+        GVariant *dbusObjecInterfaces;
+
+        gchar *pObjecPath = NULL;
+        struct bt_device *device = NULL;
+
+        g_variant_iter_init(&dbus_object_iter, Value);
+
+        //1st : DBus Object Path
+        dbusObjecPath = g_variant_iter_next_value(&dbus_object_iter);
+
+        g_variant_get(dbusObjecPath, "o", &pObjecPath);
+
+        LOGD("object path %s\n",pObjecPath);
+          //ObjectPath is /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx
+        if ((37 != strlen(pObjecPath))
+            || (NULL == g_strrstr_len(pObjecPath, 19,
+                                      ADAPTER_PATH"/dev"))) {
+            g_free(pObjecPath);
+            pObjecPath = NULL;
+            g_variant_unref(dbusObjecPath);
+            continue;
+        }
+        device = g_malloc0(sizeof(struct bt_device));
+        device->path = g_strdup(pObjecPath);
+        g_free(pObjecPath);
+        pObjecPath = NULL;
+        g_variant_unref(dbusObjecPath);
+
+        LOGD("Found new device%s\n",device->path );
+
+        //2nd : DBus Interfaces under Object Path
+        dbusObjecInterfaces = g_variant_iter_next_value(&dbus_object_iter);
+
+        GVariant *interfaces_value = NULL;
+        g_variant_lookup(dbusObjecInterfaces, DEVICE_INTERFACE,
+                         "*", &interfaces_value);
+
+        if (interfaces_value)
+        {
+            bluez_device1_properties_update(device, interfaces_value);
+
+            g_variant_unref (interfaces_value);
+            interfaces_value = NULL;
+        }
+
+        g_variant_lookup(dbusObjecInterfaces, MEDIA_CONTROL1_INTERFACE,
+                         "*", &interfaces_value);
+
+        if (interfaces_value)
+        {
+            bluez_mediacontrol1_properties_update(device, interfaces_value);
+
+            g_variant_unref (interfaces_value);
+            interfaces_value = NULL;
+        }
+
+        g_variant_unref(dbusObjecInterfaces);
+
+        //newDeviceList = g_slist_prepend(newDeviceList, device);
+        newDeviceList = g_slist_append(newDeviceList, device);
+
+
+    }
+
+    g_variant_iter_free(ArrayValueIter);
+    g_variant_unref(ArrayValue);
+
+    g_variant_unref(result);
+
+    return newDeviceList;
+}
+
+
+
+/*
+ * notify::name-owner callback function
+ */
+static void on_notify_name_owner (GObject       *object,
+                                  GParamSpec    *pspec,
+                                  gpointer       user_data)
+{
+#ifdef _DEBUG_PRINT_DBUS
+  GDBusObjectManagerClient *manager = G_DBUS_OBJECT_MANAGER_CLIENT (object);
+  gchar *name_owner;
+
+  name_owner = g_dbus_object_manager_client_get_name_owner (manager);
+  g_print ("name-owner: %s\n", name_owner);
+  g_free (name_owner);
+#endif
+}
+
+/*
+ * object_added callback function
+ */
+static void on_object_added (GDBusObjectManager *manager,
+                             GDBusObject        *object,
+                             gpointer            user_data)
+{
+#ifdef _DEBUG_PRINT_DBUS
+    gchar *owner;
+    owner = g_dbus_object_manager_client_get_name_owner (
+                G_DBUS_OBJECT_MANAGER_CLIENT (manager));
+    g_print ("Added object at %s (owner %s)\n",
+                g_dbus_object_get_object_path (object), owner);
+    g_free (owner);
+#endif
+
+
+    const gchar *dbusObjecPath;
+    GError *error = NULL;
+    GVariant *value = NULL;
+    struct bt_device *device;
+
+    dbusObjecPath = g_dbus_object_get_object_path (object);
+
+    LOGD("%s\n", dbusObjecPath);
+
+    //ObjectPath is /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx
+    if ((37 != strlen(dbusObjecPath))
+        || (NULL == g_strrstr_len(dbusObjecPath, 19,ADAPTER_PATH"/dev"))) {
+        return;
+    }
+
+    device = g_malloc0(sizeof(struct bt_device));
+    device->path = g_strdup(dbusObjecPath);
+
+    value = g_dbus_connection_call_sync(BluezManage.system_conn, BLUEZ_SERVICE,
+                dbusObjecPath, FREEDESKTOP_PROPERTIES,
+                "GetAll",      g_variant_new("(s)", DEVICE_INTERFACE),
+                NULL,          G_DBUS_CALL_FLAGS_NONE,
+                DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    if (error) {
+        LOGW ("Error : %s\n", error->message);
+        g_error_free(error);
+        g_free(device->path);
+        g_free(device);
+        return;
+    }
+
+    if (value) {
+        GVariant *subValue;
+        g_variant_get(value, "(*)", &subValue);
+
+        bluez_device1_properties_update(device, subValue);
+
+        g_variant_unref (subValue);
+        g_variant_unref(value);
+    }
+
+#ifdef BLUEZ_BD_LIST
+
+    bluez_devices_list_lock();
+
+    //BluezManage.device = g_slist_prepend(BluezManage.device, device);
+    BluezManage.device = g_slist_append(BluezManage.device, device);
+
+    if (NULL != bluez_RegisterCallback.device_added)
+    {
+        bluez_RegisterCallback.device_added(device);
+    }
+
+    bluez_devices_list_unlock();
+#else
+
+    if (NULL != bluez_RegisterCallback.device_added)
+    {
+        bluez_RegisterCallback.device_added(device);
+    }
+    bluez_device_free(device);
+
+#endif
+}
+
+/*
+ * object-removed callback function
+ */
+static void on_object_removed (GDBusObjectManager *manager,
+                               GDBusObject        *object,
+                               gpointer            user_data)
+{
+#ifdef _DEBUG_PRINT_DBUS
+  gchar *owner;
+
+  owner = g_dbus_object_manager_client_get_name_owner (
+                G_DBUS_OBJECT_MANAGER_CLIENT (manager));
+  g_print ("Removed object at %s (owner %s)\n",
+                g_dbus_object_get_object_path (object), owner);
+  g_free (owner);
+#endif
+
+    const gchar *dbusObjecPath;
+    //int ret;
+
+
+    dbusObjecPath = g_dbus_object_get_object_path (object);
+
+    if (NULL != bluez_RegisterCallback.device_removed)
+    {
+        bluez_RegisterCallback.device_removed(dbusObjecPath);
+    }
+    LOGD("%s\n", dbusObjecPath);
+#ifdef BLUEZ_BD_LIST
+    struct bt_device *device;
+
+    bluez_devices_list_lock();
+
+    device = bluez_devices_list_find_device_by_path(dbusObjecPath);
+
+    if (device) {
+        LOGD("Path      :%s.\n", dbusObjecPath);
+        BluezManage.device = g_slist_remove_all(BluezManage.device,
+                                    device);
+
+        bluez_device_free(device);
+    }
+
+    bluez_devices_list_unlock();
+#endif
+
+}
+
+/*
+ * BLUEZ interface-proxy-properties-changed callback function
+ */
+static void
+on_interface_proxy_properties_changed (GDBusObjectManagerClient *manager,
+                                GDBusObjectProxy     *object_proxy,
+                                GDBusProxy           *interface_proxy,
+                                GVariant             *changed_properties,
+                                const gchar *const   *invalidated_properties,
+                                gpointer              user_data)
+{
+    const gchar *pObjecPath;
+    const gchar *pInterface;
+
+    pObjecPath = g_dbus_object_get_object_path (G_DBUS_OBJECT (object_proxy));
+    pInterface = g_dbus_proxy_get_interface_name  (interface_proxy);
+
+#ifdef _DEBUG_PRINT_DBUS
+    gchar *s;
+    g_print ("Path:%s, Interface:%s\n",pObjecPath, pInterface);
+    g_print ("type '%s'\n", g_variant_get_type_string (changed_properties));
+    s = g_variant_print (changed_properties, TRUE);
+    g_print (" %s\n", s);
+    g_free (s);
+#endif
+
+    //ObjectPath is /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx
+    if ((37 != strlen(pObjecPath))
+        || (NULL == g_strrstr_len(pObjecPath, 19,
+                                  ADAPTER_PATH"/dev"))) {
+        return;
+    }
+
+    LOGD("%s\n",pObjecPath);
+
+    if( (0 == g_strcmp0(pInterface, DEVICE_INTERFACE)) ||
+        (0 == g_strcmp0(pInterface, MEDIA_CONTROL1_INTERFACE))) {
+
+        if (bluez_RegisterCallback.device_propertyies_changed)
+            bluez_RegisterCallback.device_propertyies_changed(pObjecPath,
+                                            pInterface, changed_properties);
+
+    }
+
+#ifdef BLUEZ_BD_LIST
+    struct bt_device *device;
+
+    if (0 == g_strcmp0(pInterface, DEVICE_INTERFACE)) {
+
+        bluez_devices_list_lock();
+
+        device = bluez_devices_list_find_device_by_path(pObjecPath);
+
+        bluez_device1_properties_update(device, changed_properties);
+
+        bluez_devices_list_unlock();
+
+    } else if (0 == g_strcmp0(pInterface, MEDIA_CONTROL1_INTERFACE)) {
+
+        bluez_devices_list_lock();
+
+        device = bluez_devices_list_find_device_by_path(pObjecPath);
+
+        bluez_mediacontrol1_properties_update(device, changed_properties);
+
+        bluez_devices_list_unlock();
+    }
+#endif
+}
+
+/*
+ * init cli dbus connection
+ * Returns: 0 - success or other errors
+ */
+static int bluez_manager_connect_to_dbus(void)
+{
+    GError *error = NULL;
+
+    BluezManage.system_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
+
+    if (error) {
+        LOGE("Create System GDBusconnection fail\n");
+        LOGE("Error:%s\n", error->message);
+        g_error_free(error);
+
+        return -1;
+    }
+
+    BluezManage.session_conn = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);
+
+    if (error) {
+        LOGE("Create Session GDBusconnection fail\n");
+        LOGE("Error:%s\n", error->message);
+        g_error_free(error);
+
+        g_object_unref(BluezManage.system_conn);
+
+        return -1;
+    }
+
+    BluezManage.proxy = bluez_object_manager_client_new_for_bus_sync(
+        G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, BLUEZ_SERVICE,
+        BLUEZ_MANAGER_PATH, NULL, &error);
+
+    if (error) {
+        LOGE("Create Bluez manager client fail\n");
+        LOGE("Error:%s\n", error->message);
+        g_error_free(error);
+
+        g_object_unref(BluezManage.system_conn);
+        g_object_unref(BluezManage.session_conn);
+        return -1;
+    }
+
+    return 0;
+}
+
+
+/*
+ * register dbus callback function
+ * Returns: 0 - success or other errors
+ */
+static int bluez_manager_register_callback(void)
+{
+
+    g_signal_connect (BluezManage.proxy,
+                      "notify::name-owner",
+                      G_CALLBACK (on_notify_name_owner),
+                      NULL);
+
+    g_signal_connect (BluezManage.proxy,
+                      "object-added",
+                      G_CALLBACK (on_object_added),
+                      NULL);
+
+    g_signal_connect (BluezManage.proxy,
+                      "object-removed",
+                      G_CALLBACK (on_object_removed),
+                      NULL);
+
+    g_signal_connect (BluezManage.proxy,
+                      "interface-proxy-properties-changed",
+                      G_CALLBACK (on_interface_proxy_properties_changed),
+                      NULL);
+
+    return 0;
+}
+
+/*
+ * init bluez client
+ * Returns: 0 - success or other errors
+ */
+static int bluez_manager_int()
+{
+    int ret = 0;
+
+    LOGD("\n");
+
+    ret = bluez_manager_connect_to_dbus();
+
+    if (ret){
+        LOGE("Init Fail\n");
+        return -1;
+    }
+
+    bluez_manager_register_callback();
+
+#ifdef BLUEZ_BD_LIST
+
+    g_mutex_init(&(BluezManage.m));
+
+    BluezManage.device = bluez_get_devices_list();
+
+#endif
+
+    BluezManage.inited = TRUE;
+
+    return 0;
+
+}
+
+#ifdef BLUEZ_THREAD
+/*
+ * Bluetooth Manager Thread
+ * register callback function and create a new GMainLoop structure
+ */
+static void *bluez_event_loop_thread()
+{
+    int ret = 0;
+
+    BluezLoop = g_main_loop_new(NULL, FALSE);;
+
+    ret = bluez_manager_int();
+
+    if (0 == ret){
+        LOGD("g_main_loop_run\n");
+        g_main_loop_run(BluezLoop);
+    }
+
+    g_main_loop_unref(BluezLoop);
+    LOGD("exit...\n");
+}
+#endif
+
+
+/* ------ PUBLIC FUNCTIONS --------- */
+
+
+/*
+ * Get the device list
+ * The list should free by FreeBluezDevicesList()
+ */
+GSList * GetBluezDevicesList(void)
+{
+    LOGD("\n");
+
+    GSList* newDeviceList = NULL;
+
+    if (TRUE != BluezManage.inited)
+    {
+        LOGD("Bluez Manager is not inited\n");
+        return NULL;
+    }
+
+#ifdef BLUEZ_BD_LIST
+    newDeviceList = bluez_devices_list_copy();
+#else
+    newDeviceList = bluez_get_devices_list();
+#endif
+    return newDeviceList;
+}
+
+/*
+ * free device list.
+ */
+void FreeBluezDevicesList(GSList* list)
+{
+    bluez_devices_list_free(list);
+}
+
+/*
+ * Stops the GMainLoop
+ */
+int BluezManagerQuit(void)
+{
+    LOGD("\n");
+
+    if (FALSE == BluezManage.inited)
+    {
+        LOGD("Bluez Manager is not inited\n");
+        return -1;
+    }
+
+#ifdef BLUEZ_THREAD
+    g_main_loop_quit(BluezLoop);
+#endif
+
+    memset(&bluez_RegisterCallback, 0, sizeof(Bluez_RegisterCallback_t));
+
+    g_object_unref(BluezManage.proxy);
+
+#ifdef BLUEZ_BD_LIST
+    bluez_devices_list_lock();
+    bluez_devices_list_cleanup();
+    bluez_devices_list_unlock();
+
+    g_mutex_clear (&(BluezManage.m));
+#endif
+
+    g_object_unref(BluezManage.system_conn);
+    g_object_unref(BluezManage.session_conn);
+
+    BluezManage.inited = FALSE;
+
+    return 0;
+}
+
+/*
+ * Init Bluez Manager
+ */
+int BluezManagerInit()
+{
+    LOGD("\n");
+    int ret = 0;
+
+    
+    if (TRUE == BluezManage.inited)
+    {
+        LOGD("Bluez Manager is already inited\n");
+        return -1;
+    }
+
+#ifdef BLUEZ_THREAD
+
+    pthread_t thread_id;
+    pthread_create(&thread_id, NULL, bluez_event_loop_thread, NULL);
+    pthread_setname_np(thread_id, "Bluez_Manage");
+
+#else
+
+    ret = bluez_manager_int();
+#endif
+
+    return ret;
+}
+
+/*
+ * Register Bluez Manager Callback function
+ */
+void BluezDeviceAPIRegister(const Bluez_RegisterCallback_t* pstRegisterCallback)
+{
+    if (NULL != pstRegisterCallback)
+    {
+        if (NULL != pstRegisterCallback->device_added)
+        {
+            bluez_RegisterCallback.device_added =
+                pstRegisterCallback->device_added;
+        }
+
+        if (NULL != pstRegisterCallback->device_removed)
+        {
+            bluez_RegisterCallback.device_removed =
+                pstRegisterCallback->device_removed;
+        }
+
+        if (NULL != pstRegisterCallback->device_propertyies_changed)
+        {
+            bluez_RegisterCallback.device_propertyies_changed =
+                pstRegisterCallback->device_propertyies_changed;
+        }
+    }
+}
+
+
+
diff --git a/binding-bluetooth/bluez-client.h b/binding-bluetooth/bluez-client.h
new file mode 100644 (file)
index 0000000..2ff50e6
--- /dev/null
@@ -0,0 +1,76 @@
+/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
+*
+*   Licensed under the Apache License, Version 2.0 (the "License");
+*   you may not use this file except in compliance with the License.
+*   You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*   Unless required by applicable law or agreed to in writing, software
+*   distributed under the License is distributed on an "AS IS" BASIS,
+*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*   See the License for the specific language governing permissions and
+*   limitations under the License.
+*/
+
+#ifndef BLUEZ_CLIENT_H
+#define BLUEZ_CLIENT_H
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+
+#include "lib_bluez.h"
+#include "bluetooth-manager.h"
+
+//#define BLUEZ_THREAD
+//#define BLUEZ_BD_LIST
+
+//Bluetooth Device Properties
+struct bt_device {
+    gchar   *path;
+    gchar   *bdaddr;
+    gchar   *name;
+    gchar   *alias;
+    gboolean    paired;
+    gboolean    trusted;
+    gboolean    blocked;
+    gboolean    connected;
+    gboolean    avconnected;
+    gboolean    legacypairing;
+    gint16      rssi;
+    GVariant    *uuids;
+};
+
+typedef struct {
+    gboolean inited;
+    #ifdef BLUEZ_BD_LIST
+    GMutex m;
+    GSList * device;
+    #endif
+    GDBusObjectManager *proxy;
+    GDBusConnection *system_conn;
+    GDBusConnection *session_conn;
+} stBluezManage;
+
+typedef struct tagBluez_RegisterCallback
+{
+    void (*device_added)(struct bt_device *device);
+    void (*device_removed)(const gchar *path);
+    void (*device_propertyies_changed)(const gchar *pObjecPath, const gchar *pInterface, GVariant *value);
+}Bluez_RegisterCallback_t;
+
+/* --- PUBLIC FUNCTIONS --- */
+void BluezDeviceAPIRegister(const Bluez_RegisterCallback_t* pstRegisterCallback);
+
+int BluezManagerInit(void) ;
+int BluezManagerQuit(void) ;
+
+GSList * GetBluezDevicesList(void);
+void FreeBluezDevicesList(GSList* list) ;
+
+#endif /* BLUEZ_CLIENT_H */
+
+
+/****************************** The End Of File ******************************/
+
diff --git a/binding-bluetooth/lib_agent.c b/binding-bluetooth/lib_agent.c
new file mode 100644 (file)
index 0000000..6324dfb
--- /dev/null
@@ -0,0 +1,2504 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "lib_agent.h"
+
+#include <string.h>
+#ifdef G_OS_UNIX
+#  include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        {
+          /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+          gdouble da = g_value_get_double (a);
+          gdouble db = g_value_get_double (b);
+          ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+        }
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.bluez.Agent1
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:AGENTOrgBluezAgent1
+ * @title: AGENTOrgBluezAgent1
+ * @short_description: Generated C code for the org.bluez.Agent1 D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-bluez-Agent1.top_of_page">org.bluez.Agent1</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.bluez.Agent1 ---- */
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_release =
+{
+  {
+    -1,
+    (gchar *) "Release",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-release",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_request_pin_code_IN_ARG_device =
+{
+  {
+    -1,
+    (gchar *) "device",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_request_pin_code_IN_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_request_pin_code_IN_ARG_device,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_request_pin_code_OUT_ARG_pincode =
+{
+  {
+    -1,
+    (gchar *) "pincode",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_request_pin_code_OUT_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_request_pin_code_OUT_ARG_pincode,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_request_pin_code =
+{
+  {
+    -1,
+    (gchar *) "RequestPinCode",
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_request_pin_code_IN_ARG_pointers,
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_request_pin_code_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-request-pin-code",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_display_pin_code_IN_ARG_device =
+{
+  {
+    -1,
+    (gchar *) "device",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_display_pin_code_IN_ARG_pincode =
+{
+  {
+    -1,
+    (gchar *) "pincode",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_display_pin_code_IN_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_display_pin_code_IN_ARG_device,
+  &_agent_org_bluez_agent1_method_info_display_pin_code_IN_ARG_pincode,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_display_pin_code =
+{
+  {
+    -1,
+    (gchar *) "DisplayPinCode",
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_display_pin_code_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-display-pin-code",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_request_passkey_IN_ARG_device =
+{
+  {
+    -1,
+    (gchar *) "device",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_request_passkey_IN_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_request_passkey_IN_ARG_device,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_request_passkey_OUT_ARG_passkey =
+{
+  {
+    -1,
+    (gchar *) "passkey",
+    (gchar *) "u",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_request_passkey_OUT_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_request_passkey_OUT_ARG_passkey,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_request_passkey =
+{
+  {
+    -1,
+    (gchar *) "RequestPasskey",
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_request_passkey_IN_ARG_pointers,
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_request_passkey_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-request-passkey",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_device =
+{
+  {
+    -1,
+    (gchar *) "device",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_passkey =
+{
+  {
+    -1,
+    (gchar *) "passkey",
+    (gchar *) "u",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_entered =
+{
+  {
+    -1,
+    (gchar *) "entered",
+    (gchar *) "q",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_device,
+  &_agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_passkey,
+  &_agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_entered,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_display_passkey =
+{
+  {
+    -1,
+    (gchar *) "DisplayPasskey",
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_display_passkey_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-display-passkey",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_request_confirmation_IN_ARG_device =
+{
+  {
+    -1,
+    (gchar *) "device",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_request_confirmation_IN_ARG_passkey =
+{
+  {
+    -1,
+    (gchar *) "passkey",
+    (gchar *) "u",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_request_confirmation_IN_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_request_confirmation_IN_ARG_device,
+  &_agent_org_bluez_agent1_method_info_request_confirmation_IN_ARG_passkey,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_request_confirmation =
+{
+  {
+    -1,
+    (gchar *) "RequestConfirmation",
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_request_confirmation_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-request-confirmation",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_request_authorization_IN_ARG_device =
+{
+  {
+    -1,
+    (gchar *) "device",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_request_authorization_IN_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_request_authorization_IN_ARG_device,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_request_authorization =
+{
+  {
+    -1,
+    (gchar *) "RequestAuthorization",
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_request_authorization_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-request-authorization",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_authorize_service_IN_ARG_device =
+{
+  {
+    -1,
+    (gchar *) "device",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _agent_org_bluez_agent1_method_info_authorize_service_IN_ARG_uuid =
+{
+  {
+    -1,
+    (gchar *) "uuid",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _agent_org_bluez_agent1_method_info_authorize_service_IN_ARG_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_authorize_service_IN_ARG_device,
+  &_agent_org_bluez_agent1_method_info_authorize_service_IN_ARG_uuid,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_authorize_service =
+{
+  {
+    -1,
+    (gchar *) "AuthorizeService",
+    (GDBusArgInfo **) &_agent_org_bluez_agent1_method_info_authorize_service_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-authorize-service",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _agent_org_bluez_agent1_method_info_cancel =
+{
+  {
+    -1,
+    (gchar *) "Cancel",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-cancel",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _agent_org_bluez_agent1_method_info_pointers[] =
+{
+  &_agent_org_bluez_agent1_method_info_release,
+  &_agent_org_bluez_agent1_method_info_request_pin_code,
+  &_agent_org_bluez_agent1_method_info_display_pin_code,
+  &_agent_org_bluez_agent1_method_info_request_passkey,
+  &_agent_org_bluez_agent1_method_info_display_passkey,
+  &_agent_org_bluez_agent1_method_info_request_confirmation,
+  &_agent_org_bluez_agent1_method_info_request_authorization,
+  &_agent_org_bluez_agent1_method_info_authorize_service,
+  &_agent_org_bluez_agent1_method_info_cancel,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _agent_org_bluez_agent1_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.bluez.Agent1",
+    (GDBusMethodInfo **) &_agent_org_bluez_agent1_method_info_pointers,
+    NULL,
+    NULL,
+    NULL
+  },
+  "org-bluez-agent1",
+};
+
+
+/**
+ * agent_org_bluez_agent1_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-bluez-Agent1.top_of_page">org.bluez.Agent1</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+agent_org_bluez_agent1_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_agent_org_bluez_agent1_interface_info.parent_struct;
+}
+
+/**
+ * agent_org_bluez_agent1_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #AGENTOrgBluezAgent1 interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+agent_org_bluez_agent1_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * AGENTOrgBluezAgent1:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Agent1.top_of_page">org.bluez.Agent1</link>.
+ */
+
+/**
+ * AGENTOrgBluezAgent1Iface:
+ * @parent_iface: The parent interface.
+ * @handle_authorize_service: Handler for the #AGENTOrgBluezAgent1::handle-authorize-service signal.
+ * @handle_cancel: Handler for the #AGENTOrgBluezAgent1::handle-cancel signal.
+ * @handle_display_passkey: Handler for the #AGENTOrgBluezAgent1::handle-display-passkey signal.
+ * @handle_display_pin_code: Handler for the #AGENTOrgBluezAgent1::handle-display-pin-code signal.
+ * @handle_release: Handler for the #AGENTOrgBluezAgent1::handle-release signal.
+ * @handle_request_authorization: Handler for the #AGENTOrgBluezAgent1::handle-request-authorization signal.
+ * @handle_request_confirmation: Handler for the #AGENTOrgBluezAgent1::handle-request-confirmation signal.
+ * @handle_request_passkey: Handler for the #AGENTOrgBluezAgent1::handle-request-passkey signal.
+ * @handle_request_pin_code: Handler for the #AGENTOrgBluezAgent1::handle-request-pin-code signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Agent1.top_of_page">org.bluez.Agent1</link>.
+ */
+
+typedef AGENTOrgBluezAgent1Iface AGENTOrgBluezAgent1Interface;
+G_DEFINE_INTERFACE (AGENTOrgBluezAgent1, agent_org_bluez_agent1, G_TYPE_OBJECT);
+
+static void
+agent_org_bluez_agent1_default_init (AGENTOrgBluezAgent1Iface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * AGENTOrgBluezAgent1::handle-release:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.Release">Release()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_release() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-release",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_release),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-request-pin-code:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_device: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.RequestPinCode">RequestPinCode()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_request_pin_code() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-request-pin-code",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_request_pin_code),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-display-pin-code:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_device: Argument passed by remote caller.
+   * @arg_pincode: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPinCode">DisplayPinCode()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_display_pin_code() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-display-pin-code",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_display_pin_code),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-request-passkey:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_device: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.RequestPasskey">RequestPasskey()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_request_passkey() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-request-passkey",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_request_passkey),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-display-passkey:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_device: Argument passed by remote caller.
+   * @arg_passkey: Argument passed by remote caller.
+   * @arg_entered: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPasskey">DisplayPasskey()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_display_passkey() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-display-passkey",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_display_passkey),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    4,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_UINT);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-request-confirmation:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_device: Argument passed by remote caller.
+   * @arg_passkey: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.RequestConfirmation">RequestConfirmation()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_request_confirmation() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-request-confirmation",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_request_confirmation),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_UINT);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-request-authorization:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_device: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.RequestAuthorization">RequestAuthorization()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_request_authorization() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-request-authorization",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_request_authorization),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-authorize-service:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_device: Argument passed by remote caller.
+   * @arg_uuid: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.AuthorizeService">AuthorizeService()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_authorize_service() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-authorize-service",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_authorize_service),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
+
+  /**
+   * AGENTOrgBluezAgent1::handle-cancel:
+   * @object: A #AGENTOrgBluezAgent1.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Agent1.Cancel">Cancel()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call agent_org_bluez_agent1_complete_cancel() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-cancel",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (AGENTOrgBluezAgent1Iface, handle_cancel),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+}
+
+/**
+ * agent_org_bluez_agent1_call_release:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.Release">Release()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_release_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_release_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_release (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Release",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_release_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_release().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_release().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_release_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_release_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.Release">Release()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_release() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_release_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Release",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_pin_code:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestPinCode">RequestPinCode()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_request_pin_code_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_request_pin_code_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_request_pin_code (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RequestPinCode",
+    g_variant_new ("(o)",
+                   arg_device),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_pin_code_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @out_pincode: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_request_pin_code().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_request_pin_code().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_pin_code_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    gchar **out_pincode,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_pincode);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_pin_code_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @out_pincode: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestPinCode">RequestPinCode()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_request_pin_code() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_pin_code_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    gchar **out_pincode,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RequestPinCode",
+    g_variant_new ("(o)",
+                   arg_device),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_pincode);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_display_pin_code:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_pincode: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPinCode">DisplayPinCode()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_display_pin_code_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_display_pin_code_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_display_pin_code (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_pincode,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "DisplayPinCode",
+    g_variant_new ("(os)",
+                   arg_device,
+                   arg_pincode),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_display_pin_code_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_display_pin_code().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_display_pin_code().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_display_pin_code_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_display_pin_code_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_pincode: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPinCode">DisplayPinCode()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_display_pin_code() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_display_pin_code_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_pincode,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "DisplayPinCode",
+    g_variant_new ("(os)",
+                   arg_device,
+                   arg_pincode),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_passkey:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestPasskey">RequestPasskey()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_request_passkey_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_request_passkey_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_request_passkey (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RequestPasskey",
+    g_variant_new ("(o)",
+                   arg_device),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_passkey_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @out_passkey: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_request_passkey().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_request_passkey().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_passkey_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    guint *out_passkey,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(u)",
+                 out_passkey);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_passkey_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @out_passkey: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestPasskey">RequestPasskey()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_request_passkey() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_passkey_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint *out_passkey,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RequestPasskey",
+    g_variant_new ("(o)",
+                   arg_device),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(u)",
+                 out_passkey);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_display_passkey:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_passkey: Argument to pass with the method invocation.
+ * @arg_entered: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPasskey">DisplayPasskey()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_display_passkey_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_display_passkey_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_display_passkey (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    guint16 arg_entered,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "DisplayPasskey",
+    g_variant_new ("(ouq)",
+                   arg_device,
+                   arg_passkey,
+                   arg_entered),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_display_passkey_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_display_passkey().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_display_passkey().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_display_passkey_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_display_passkey_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_passkey: Argument to pass with the method invocation.
+ * @arg_entered: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPasskey">DisplayPasskey()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_display_passkey() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_display_passkey_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    guint16 arg_entered,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "DisplayPasskey",
+    g_variant_new ("(ouq)",
+                   arg_device,
+                   arg_passkey,
+                   arg_entered),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_confirmation:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_passkey: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestConfirmation">RequestConfirmation()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_request_confirmation_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_request_confirmation_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_request_confirmation (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RequestConfirmation",
+    g_variant_new ("(ou)",
+                   arg_device,
+                   arg_passkey),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_confirmation_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_request_confirmation().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_request_confirmation().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_confirmation_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_confirmation_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_passkey: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestConfirmation">RequestConfirmation()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_request_confirmation() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_confirmation_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RequestConfirmation",
+    g_variant_new ("(ou)",
+                   arg_device,
+                   arg_passkey),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_authorization:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestAuthorization">RequestAuthorization()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_request_authorization_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_request_authorization_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_request_authorization (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RequestAuthorization",
+    g_variant_new ("(o)",
+                   arg_device),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_authorization_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_request_authorization().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_request_authorization().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_authorization_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_request_authorization_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.RequestAuthorization">RequestAuthorization()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_request_authorization() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_request_authorization_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RequestAuthorization",
+    g_variant_new ("(o)",
+                   arg_device),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_authorize_service:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_uuid: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.AuthorizeService">AuthorizeService()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_authorize_service_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_authorize_service_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_authorize_service (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_uuid,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "AuthorizeService",
+    g_variant_new ("(os)",
+                   arg_device,
+                   arg_uuid),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_authorize_service_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_authorize_service().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_authorize_service().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_authorize_service_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_authorize_service_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @arg_device: Argument to pass with the method invocation.
+ * @arg_uuid: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.AuthorizeService">AuthorizeService()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_authorize_service() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_authorize_service_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_uuid,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "AuthorizeService",
+    g_variant_new ("(os)",
+                   arg_device,
+                   arg_uuid),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_cancel:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.Cancel">Cancel()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_call_cancel_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_call_cancel_sync() for the synchronous, blocking version of this method.
+ */
+void
+agent_org_bluez_agent1_call_cancel (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Cancel",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * agent_org_bluez_agent1_call_cancel_finish:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_call_cancel().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_call_cancel().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_cancel_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_call_cancel_sync:
+ * @proxy: A #AGENTOrgBluezAgent1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Agent1.Cancel">Cancel()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_call_cancel() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+agent_org_bluez_agent1_call_cancel_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Cancel",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_complete_release:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.Release">Release()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_release (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_request_pin_code:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @pincode: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.RequestPinCode">RequestPinCode()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_request_pin_code (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *pincode)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(s)",
+                   pincode));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_display_pin_code:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPinCode">DisplayPinCode()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_display_pin_code (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_request_passkey:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @passkey: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.RequestPasskey">RequestPasskey()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_request_passkey (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    guint passkey)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(u)",
+                   passkey));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_display_passkey:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.DisplayPasskey">DisplayPasskey()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_display_passkey (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_request_confirmation:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.RequestConfirmation">RequestConfirmation()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_request_confirmation (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_request_authorization:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.RequestAuthorization">RequestAuthorization()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_request_authorization (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_authorize_service:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.AuthorizeService">AuthorizeService()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_authorize_service (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * agent_org_bluez_agent1_complete_cancel:
+ * @object: A #AGENTOrgBluezAgent1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Agent1.Cancel">Cancel()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+agent_org_bluez_agent1_complete_cancel (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * AGENTOrgBluezAgent1Proxy:
+ *
+ * The #AGENTOrgBluezAgent1Proxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * AGENTOrgBluezAgent1ProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #AGENTOrgBluezAgent1Proxy.
+ */
+
+struct _AGENTOrgBluezAgent1ProxyPrivate
+{
+  GData *qdata;
+};
+
+static void agent_org_bluez_agent1_proxy_iface_init (AGENTOrgBluezAgent1Iface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (AGENTOrgBluezAgent1Proxy, agent_org_bluez_agent1_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (AGENTOrgBluezAgent1Proxy)
+                         G_IMPLEMENT_INTERFACE (AGENT_TYPE_ORG_BLUEZ_AGENT1, agent_org_bluez_agent1_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (AGENTOrgBluezAgent1Proxy, agent_org_bluez_agent1_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (AGENT_TYPE_ORG_BLUEZ_AGENT1, agent_org_bluez_agent1_proxy_iface_init));
+
+#endif
+static void
+agent_org_bluez_agent1_proxy_finalize (GObject *object)
+{
+  AGENTOrgBluezAgent1Proxy *proxy = AGENT_ORG_BLUEZ_AGENT1_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (agent_org_bluez_agent1_proxy_parent_class)->finalize (object);
+}
+
+static void
+agent_org_bluez_agent1_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+agent_org_bluez_agent1_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+agent_org_bluez_agent1_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_agent_org_bluez_agent1_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], AGENT_TYPE_ORG_BLUEZ_AGENT1);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, AGENT_TYPE_ORG_BLUEZ_AGENT1);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+agent_org_bluez_agent1_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  AGENTOrgBluezAgent1Proxy *proxy = AGENT_ORG_BLUEZ_AGENT1_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_agent_org_bluez_agent1_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_agent_org_bluez_agent1_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+agent_org_bluez_agent1_proxy_init (AGENTOrgBluezAgent1Proxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = agent_org_bluez_agent1_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, AGENTOrgBluezAgent1ProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), agent_org_bluez_agent1_interface_info ());
+}
+
+static void
+agent_org_bluez_agent1_proxy_class_init (AGENTOrgBluezAgent1ProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = agent_org_bluez_agent1_proxy_finalize;
+  gobject_class->get_property = agent_org_bluez_agent1_proxy_get_property;
+  gobject_class->set_property = agent_org_bluez_agent1_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = agent_org_bluez_agent1_proxy_g_signal;
+  proxy_class->g_properties_changed = agent_org_bluez_agent1_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (AGENTOrgBluezAgent1ProxyPrivate));
+#endif
+}
+
+static void
+agent_org_bluez_agent1_proxy_iface_init (AGENTOrgBluezAgent1Iface *iface)
+{
+}
+
+/**
+ * agent_org_bluez_agent1_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Agent1.top_of_page">org.bluez.Agent1</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_proxy_new_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+agent_org_bluez_agent1_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Agent1", NULL);
+}
+
+/**
+ * agent_org_bluez_agent1_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_proxy_new().
+ *
+ * Returns: (transfer full) (type AGENTOrgBluezAgent1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+AGENTOrgBluezAgent1 *
+agent_org_bluez_agent1_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return AGENT_ORG_BLUEZ_AGENT1 (ret);
+  else
+    return NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Agent1.top_of_page">org.bluez.Agent1</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type AGENTOrgBluezAgent1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+AGENTOrgBluezAgent1 *
+agent_org_bluez_agent1_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Agent1", NULL);
+  if (ret != NULL)
+    return AGENT_ORG_BLUEZ_AGENT1 (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * agent_org_bluez_agent1_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like agent_org_bluez_agent1_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call agent_org_bluez_agent1_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See agent_org_bluez_agent1_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+agent_org_bluez_agent1_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Agent1", NULL);
+}
+
+/**
+ * agent_org_bluez_agent1_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to agent_org_bluez_agent1_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with agent_org_bluez_agent1_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type AGENTOrgBluezAgent1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+AGENTOrgBluezAgent1 *
+agent_org_bluez_agent1_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return AGENT_ORG_BLUEZ_AGENT1 (ret);
+  else
+    return NULL;
+}
+
+/**
+ * agent_org_bluez_agent1_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like agent_org_bluez_agent1_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See agent_org_bluez_agent1_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type AGENTOrgBluezAgent1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+AGENTOrgBluezAgent1 *
+agent_org_bluez_agent1_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Agent1", NULL);
+  if (ret != NULL)
+    return AGENT_ORG_BLUEZ_AGENT1 (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * AGENTOrgBluezAgent1Skeleton:
+ *
+ * The #AGENTOrgBluezAgent1Skeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * AGENTOrgBluezAgent1SkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #AGENTOrgBluezAgent1Skeleton.
+ */
+
+struct _AGENTOrgBluezAgent1SkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_agent_org_bluez_agent1_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  AGENTOrgBluezAgent1Skeleton *skeleton = AGENT_ORG_BLUEZ_AGENT1_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], AGENT_TYPE_ORG_BLUEZ_AGENT1);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, AGENT_TYPE_ORG_BLUEZ_AGENT1);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_agent_org_bluez_agent1_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  AGENTOrgBluezAgent1Skeleton *skeleton = AGENT_ORG_BLUEZ_AGENT1_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_agent_org_bluez_agent1_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_agent_org_bluez_agent1_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  AGENTOrgBluezAgent1Skeleton *skeleton = AGENT_ORG_BLUEZ_AGENT1_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_agent_org_bluez_agent1_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _agent_org_bluez_agent1_skeleton_vtable =
+{
+  _agent_org_bluez_agent1_skeleton_handle_method_call,
+  _agent_org_bluez_agent1_skeleton_handle_get_property,
+  _agent_org_bluez_agent1_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+agent_org_bluez_agent1_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return agent_org_bluez_agent1_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+agent_org_bluez_agent1_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_agent_org_bluez_agent1_skeleton_vtable;
+}
+
+static GVariant *
+agent_org_bluez_agent1_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  AGENTOrgBluezAgent1Skeleton *skeleton = AGENT_ORG_BLUEZ_AGENT1_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_agent_org_bluez_agent1_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _agent_org_bluez_agent1_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _agent_org_bluez_agent1_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _agent_org_bluez_agent1_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Agent1", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+agent_org_bluez_agent1_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void agent_org_bluez_agent1_skeleton_iface_init (AGENTOrgBluezAgent1Iface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (AGENTOrgBluezAgent1Skeleton, agent_org_bluez_agent1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (AGENTOrgBluezAgent1Skeleton)
+                         G_IMPLEMENT_INTERFACE (AGENT_TYPE_ORG_BLUEZ_AGENT1, agent_org_bluez_agent1_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (AGENTOrgBluezAgent1Skeleton, agent_org_bluez_agent1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (AGENT_TYPE_ORG_BLUEZ_AGENT1, agent_org_bluez_agent1_skeleton_iface_init));
+
+#endif
+static void
+agent_org_bluez_agent1_skeleton_finalize (GObject *object)
+{
+  AGENTOrgBluezAgent1Skeleton *skeleton = AGENT_ORG_BLUEZ_AGENT1_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (agent_org_bluez_agent1_skeleton_parent_class)->finalize (object);
+}
+
+static void
+agent_org_bluez_agent1_skeleton_init (AGENTOrgBluezAgent1Skeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = agent_org_bluez_agent1_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON, AGENTOrgBluezAgent1SkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+agent_org_bluez_agent1_skeleton_class_init (AGENTOrgBluezAgent1SkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = agent_org_bluez_agent1_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = agent_org_bluez_agent1_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = agent_org_bluez_agent1_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = agent_org_bluez_agent1_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = agent_org_bluez_agent1_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (AGENTOrgBluezAgent1SkeletonPrivate));
+#endif
+}
+
+static void
+agent_org_bluez_agent1_skeleton_iface_init (AGENTOrgBluezAgent1Iface *iface)
+{
+}
+
+/**
+ * agent_org_bluez_agent1_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Agent1.top_of_page">org.bluez.Agent1</link>.
+ *
+ * Returns: (transfer full) (type AGENTOrgBluezAgent1Skeleton): The skeleton object.
+ */
+AGENTOrgBluezAgent1 *
+agent_org_bluez_agent1_skeleton_new (void)
+{
+  return AGENT_ORG_BLUEZ_AGENT1 (g_object_new (AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON, NULL));
+}
+
diff --git a/binding-bluetooth/lib_agent.h b/binding-bluetooth/lib_agent.h
new file mode 100644 (file)
index 0000000..0a355ee
--- /dev/null
@@ -0,0 +1,409 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __LIB_AGENT_H__
+#define __LIB_AGENT_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.bluez.Agent1 */
+
+#define AGENT_TYPE_ORG_BLUEZ_AGENT1 (agent_org_bluez_agent1_get_type ())
+#define AGENT_ORG_BLUEZ_AGENT1(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1, AGENTOrgBluezAgent1))
+#define AGENT_IS_ORG_BLUEZ_AGENT1(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1))
+#define AGENT_ORG_BLUEZ_AGENT1_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1, AGENTOrgBluezAgent1Iface))
+
+struct _AGENTOrgBluezAgent1;
+typedef struct _AGENTOrgBluezAgent1 AGENTOrgBluezAgent1;
+typedef struct _AGENTOrgBluezAgent1Iface AGENTOrgBluezAgent1Iface;
+
+struct _AGENTOrgBluezAgent1Iface
+{
+  GTypeInterface parent_iface;
+
+  gboolean (*handle_authorize_service) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_device,
+    const gchar *arg_uuid);
+
+  gboolean (*handle_cancel) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_display_passkey) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_device,
+    guint arg_passkey,
+    guint16 arg_entered);
+
+  gboolean (*handle_display_pin_code) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_device,
+    const gchar *arg_pincode);
+
+  gboolean (*handle_release) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_request_authorization) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_device);
+
+  gboolean (*handle_request_confirmation) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_device,
+    guint arg_passkey);
+
+  gboolean (*handle_request_passkey) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_device);
+
+  gboolean (*handle_request_pin_code) (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_device);
+
+};
+
+GType agent_org_bluez_agent1_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *agent_org_bluez_agent1_interface_info (void);
+guint agent_org_bluez_agent1_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void agent_org_bluez_agent1_complete_release (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+void agent_org_bluez_agent1_complete_request_pin_code (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *pincode);
+
+void agent_org_bluez_agent1_complete_display_pin_code (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+void agent_org_bluez_agent1_complete_request_passkey (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation,
+    guint passkey);
+
+void agent_org_bluez_agent1_complete_display_passkey (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+void agent_org_bluez_agent1_complete_request_confirmation (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+void agent_org_bluez_agent1_complete_request_authorization (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+void agent_org_bluez_agent1_complete_authorize_service (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+void agent_org_bluez_agent1_complete_cancel (
+    AGENTOrgBluezAgent1 *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus method calls: */
+void agent_org_bluez_agent1_call_release (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_release_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_release_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_request_pin_code (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_request_pin_code_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    gchar **out_pincode,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_request_pin_code_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    gchar **out_pincode,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_display_pin_code (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_pincode,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_display_pin_code_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_display_pin_code_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_pincode,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_request_passkey (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_request_passkey_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    guint *out_passkey,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_request_passkey_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint *out_passkey,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_display_passkey (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    guint16 arg_entered,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_display_passkey_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_display_passkey_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    guint16 arg_entered,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_request_confirmation (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_request_confirmation_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_request_confirmation_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    guint arg_passkey,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_request_authorization (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_request_authorization_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_request_authorization_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_authorize_service (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_uuid,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_authorize_service_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_authorize_service_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    const gchar *arg_device,
+    const gchar *arg_uuid,
+    GCancellable *cancellable,
+    GError **error);
+
+void agent_org_bluez_agent1_call_cancel (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean agent_org_bluez_agent1_call_cancel_finish (
+    AGENTOrgBluezAgent1 *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean agent_org_bluez_agent1_call_cancel_sync (
+    AGENTOrgBluezAgent1 *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY (agent_org_bluez_agent1_proxy_get_type ())
+#define AGENT_ORG_BLUEZ_AGENT1_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, AGENTOrgBluezAgent1Proxy))
+#define AGENT_ORG_BLUEZ_AGENT1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, AGENTOrgBluezAgent1ProxyClass))
+#define AGENT_ORG_BLUEZ_AGENT1_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY, AGENTOrgBluezAgent1ProxyClass))
+#define AGENT_IS_ORG_BLUEZ_AGENT1_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY))
+#define AGENT_IS_ORG_BLUEZ_AGENT1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), AGENT_TYPE_ORG_BLUEZ_AGENT1_PROXY))
+
+typedef struct _AGENTOrgBluezAgent1Proxy AGENTOrgBluezAgent1Proxy;
+typedef struct _AGENTOrgBluezAgent1ProxyClass AGENTOrgBluezAgent1ProxyClass;
+typedef struct _AGENTOrgBluezAgent1ProxyPrivate AGENTOrgBluezAgent1ProxyPrivate;
+
+struct _AGENTOrgBluezAgent1Proxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  AGENTOrgBluezAgent1ProxyPrivate *priv;
+};
+
+struct _AGENTOrgBluezAgent1ProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType agent_org_bluez_agent1_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (AGENTOrgBluezAgent1Proxy, g_object_unref)
+#endif
+
+void agent_org_bluez_agent1_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+AGENTOrgBluezAgent1 *agent_org_bluez_agent1_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+AGENTOrgBluezAgent1 *agent_org_bluez_agent1_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void agent_org_bluez_agent1_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+AGENTOrgBluezAgent1 *agent_org_bluez_agent1_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+AGENTOrgBluezAgent1 *agent_org_bluez_agent1_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON (agent_org_bluez_agent1_skeleton_get_type ())
+#define AGENT_ORG_BLUEZ_AGENT1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON, AGENTOrgBluezAgent1Skeleton))
+#define AGENT_ORG_BLUEZ_AGENT1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON, AGENTOrgBluezAgent1SkeletonClass))
+#define AGENT_ORG_BLUEZ_AGENT1_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON, AGENTOrgBluezAgent1SkeletonClass))
+#define AGENT_IS_ORG_BLUEZ_AGENT1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON))
+#define AGENT_IS_ORG_BLUEZ_AGENT1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), AGENT_TYPE_ORG_BLUEZ_AGENT1_SKELETON))
+
+typedef struct _AGENTOrgBluezAgent1Skeleton AGENTOrgBluezAgent1Skeleton;
+typedef struct _AGENTOrgBluezAgent1SkeletonClass AGENTOrgBluezAgent1SkeletonClass;
+typedef struct _AGENTOrgBluezAgent1SkeletonPrivate AGENTOrgBluezAgent1SkeletonPrivate;
+
+struct _AGENTOrgBluezAgent1Skeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  AGENTOrgBluezAgent1SkeletonPrivate *priv;
+};
+
+struct _AGENTOrgBluezAgent1SkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType agent_org_bluez_agent1_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (AGENTOrgBluezAgent1Skeleton, g_object_unref)
+#endif
+
+AGENTOrgBluezAgent1 *agent_org_bluez_agent1_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __LIB_AGENT_H__ */
diff --git a/binding-bluetooth/lib_bluez.c b/binding-bluetooth/lib_bluez.c
new file mode 100644 (file)
index 0000000..58d844d
--- /dev/null
@@ -0,0 +1,630 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "lib_bluez.h"
+
+#include <string.h>
+#ifdef G_OS_UNIX
+#  include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        {
+          /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+          gdouble da = g_value_get_double (a);
+          gdouble db = g_value_get_double (b);
+          ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+        }
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for Object, ObjectProxy and ObjectSkeleton
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:BLUEZObject
+ * @title: BLUEZObject
+ * @short_description: Specialized GDBusObject types
+ *
+ * This section contains the #BLUEZObject, #BLUEZObjectProxy, and #BLUEZObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.
+ */
+
+/**
+ * BLUEZObject:
+ *
+ * The #BLUEZObject type is a specialized container of interfaces.
+ */
+
+/**
+ * BLUEZObjectIface:
+ * @parent_iface: The parent interface.
+ *
+ * Virtual table for the #BLUEZObject interface.
+ */
+
+typedef BLUEZObjectIface BLUEZObjectInterface;
+G_DEFINE_INTERFACE_WITH_CODE (BLUEZObject, bluez_object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT));
+
+static void
+bluez_object_default_init (BLUEZObjectIface *iface)
+{
+}
+
+
+
+static void
+bluez_object_notify (GDBusObject *object, GDBusInterface *interface)
+{
+  _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);
+  /* info can be NULL if the other end is using a D-Bus interface we don't know
+   * anything about, for example old generated code in this process talking to
+   * newer generated code in the other process. */
+  if (info != NULL)
+    g_object_notify (G_OBJECT (object), info->hyphen_name);
+}
+
+/**
+ * BLUEZObjectProxy:
+ *
+ * The #BLUEZObjectProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * BLUEZObjectProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #BLUEZObjectProxy.
+ */
+
+static void
+bluez_object_proxy__bluez_object_iface_init (BLUEZObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+static void
+bluez_object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+  iface->interface_added = bluez_object_notify;
+  iface->interface_removed = bluez_object_notify;
+}
+
+
+G_DEFINE_TYPE_WITH_CODE (BLUEZObjectProxy, bluez_object_proxy, G_TYPE_DBUS_OBJECT_PROXY,
+                         G_IMPLEMENT_INTERFACE (BLUEZ_TYPE_OBJECT, bluez_object_proxy__bluez_object_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, bluez_object_proxy__g_dbus_object_iface_init));
+
+static void
+bluez_object_proxy_init (BLUEZObjectProxy *object G_GNUC_UNUSED)
+{
+}
+
+static void
+bluez_object_proxy_set_property (GObject      *gobject,
+  guint         prop_id,
+  const GValue *value G_GNUC_UNUSED,
+  GParamSpec   *pspec)
+{
+  G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+}
+
+static void
+bluez_object_proxy_get_property (GObject      *gobject,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+  BLUEZObjectProxy *object = BLUEZ_OBJECT_PROXY (gobject);
+  GDBusInterface *interface;
+
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+bluez_object_proxy_class_init (BLUEZObjectProxyClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = bluez_object_proxy_set_property;
+  gobject_class->get_property = bluez_object_proxy_get_property;
+
+}
+
+/**
+ * bluez_object_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @object_path: An object path.
+ *
+ * Creates a new proxy object.
+ *
+ * Returns: (transfer full): The proxy object.
+ */
+BLUEZObjectProxy *
+bluez_object_proxy_new (GDBusConnection *connection,
+  const gchar *object_path)
+{
+  g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);
+  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+  return BLUEZ_OBJECT_PROXY (g_object_new (BLUEZ_TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL));
+}
+
+/**
+ * BLUEZObjectSkeleton:
+ *
+ * The #BLUEZObjectSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * BLUEZObjectSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #BLUEZObjectSkeleton.
+ */
+
+static void
+bluez_object_skeleton__bluez_object_iface_init (BLUEZObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+
+static void
+bluez_object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+  iface->interface_added = bluez_object_notify;
+  iface->interface_removed = bluez_object_notify;
+}
+
+G_DEFINE_TYPE_WITH_CODE (BLUEZObjectSkeleton, bluez_object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,
+                         G_IMPLEMENT_INTERFACE (BLUEZ_TYPE_OBJECT, bluez_object_skeleton__bluez_object_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, bluez_object_skeleton__g_dbus_object_iface_init));
+
+static void
+bluez_object_skeleton_init (BLUEZObjectSkeleton *object G_GNUC_UNUSED)
+{
+}
+
+static void
+bluez_object_skeleton_set_property (GObject      *gobject,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+  BLUEZObjectSkeleton *object = BLUEZ_OBJECT_SKELETON (gobject);
+  GDBusInterfaceSkeleton *interface;
+
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+bluez_object_skeleton_get_property (GObject      *gobject,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+  BLUEZObjectSkeleton *object = BLUEZ_OBJECT_SKELETON (gobject);
+  GDBusInterface *interface;
+
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+bluez_object_skeleton_class_init (BLUEZObjectSkeletonClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = bluez_object_skeleton_set_property;
+  gobject_class->get_property = bluez_object_skeleton_get_property;
+
+}
+
+/**
+ * bluez_object_skeleton_new:
+ * @object_path: An object path.
+ *
+ * Creates a new skeleton object.
+ *
+ * Returns: (transfer full): The skeleton object.
+ */
+BLUEZObjectSkeleton *
+bluez_object_skeleton_new (const gchar *object_path)
+{
+  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+  return BLUEZ_OBJECT_SKELETON (g_object_new (BLUEZ_TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));
+}
+
+
+/* ------------------------------------------------------------------------
+ * Code for ObjectManager client
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:BLUEZObjectManagerClient
+ * @title: BLUEZObjectManagerClient
+ * @short_description: Generated GDBusObjectManagerClient type
+ *
+ * This section contains a #GDBusObjectManagerClient that uses bluez_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.
+ */
+
+/**
+ * BLUEZObjectManagerClient:
+ *
+ * The #BLUEZObjectManagerClient structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * BLUEZObjectManagerClientClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #BLUEZObjectManagerClient.
+ */
+
+G_DEFINE_TYPE (BLUEZObjectManagerClient, bluez_object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT);
+
+static void
+bluez_object_manager_client_init (BLUEZObjectManagerClient *manager G_GNUC_UNUSED)
+{
+}
+
+static void
+bluez_object_manager_client_class_init (BLUEZObjectManagerClientClass *klass G_GNUC_UNUSED)
+{
+}
+
+/**
+ * bluez_object_manager_client_get_proxy_type:
+ * @manager: A #GDBusObjectManagerClient.
+ * @object_path: The object path of the remote object (unused).
+ * @interface_name: (allow-none): Interface name of the remote object or %NULL to get the object proxy #GType.
+ * @user_data: User data (unused).
+ *
+ * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy<!-- -->- and #GDBusProxy<!-- -->-derived types.
+ *
+ * Returns: A #GDBusProxy<!-- -->-derived #GType if @interface_name is not %NULL, otherwise the #GType for #BLUEZObjectProxy.
+ */
+GType
+bluez_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)
+{
+  static gsize once_init_value = 0;
+  static GHashTable *lookup_hash;
+  GType ret;
+
+  if (interface_name == NULL)
+    return BLUEZ_TYPE_OBJECT_PROXY;
+  if (g_once_init_enter (&once_init_value))
+    {
+      lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);
+      g_once_init_leave (&once_init_value, 1);
+    }
+  ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));
+  if (ret == (GType) 0)
+    ret = G_TYPE_DBUS_PROXY;
+  return ret;
+}
+
+/**
+ * bluez_object_manager_client_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates #GDBusObjectManagerClient using bluez_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call bluez_object_manager_client_new_finish() to get the result of the operation.
+ *
+ * See bluez_object_manager_client_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+bluez_object_manager_client_new (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data)
+{
+  g_async_initable_new_async (BLUEZ_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", bluez_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * bluez_object_manager_client_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to bluez_object_manager_client_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with bluez_object_manager_client_new().
+ *
+ * Returns: (transfer full) (type BLUEZObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+bluez_object_manager_client_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * bluez_object_manager_client_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates #GDBusObjectManagerClient using bluez_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See bluez_object_manager_client_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type BLUEZObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+bluez_object_manager_client_new_sync (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (BLUEZ_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", bluez_object_manager_client_get_proxy_type, NULL);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * bluez_object_manager_client_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like bluez_object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call bluez_object_manager_client_new_for_bus_finish() to get the result of the operation.
+ *
+ * See bluez_object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+bluez_object_manager_client_new_for_bus (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data)
+{
+  g_async_initable_new_async (BLUEZ_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", bluez_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * bluez_object_manager_client_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to bluez_object_manager_client_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with bluez_object_manager_client_new_for_bus().
+ *
+ * Returns: (transfer full) (type BLUEZObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+bluez_object_manager_client_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * bluez_object_manager_client_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like bluez_object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See bluez_object_manager_client_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type BLUEZObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+bluez_object_manager_client_new_for_bus_sync (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (BLUEZ_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", bluez_object_manager_client_get_proxy_type, NULL);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
diff --git a/binding-bluetooth/lib_bluez.h b/binding-bluetooth/lib_bluez.h
new file mode 100644 (file)
index 0000000..1408bb2
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __LIB_BLUEZ_H__
+#define __LIB_BLUEZ_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ---- */
+
+#define BLUEZ_TYPE_OBJECT (bluez_object_get_type ())
+#define BLUEZ_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BLUEZ_TYPE_OBJECT, BLUEZObject))
+#define BLUEZ_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BLUEZ_TYPE_OBJECT))
+#define BLUEZ_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), BLUEZ_TYPE_OBJECT, BLUEZObject))
+
+struct _BLUEZObject;
+typedef struct _BLUEZObject BLUEZObject;
+typedef struct _BLUEZObjectIface BLUEZObjectIface;
+
+struct _BLUEZObjectIface
+{
+  GTypeInterface parent_iface;
+};
+
+GType bluez_object_get_type (void) G_GNUC_CONST;
+
+
+#define BLUEZ_TYPE_OBJECT_PROXY (bluez_object_proxy_get_type ())
+#define BLUEZ_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BLUEZ_TYPE_OBJECT_PROXY, BLUEZObjectProxy))
+#define BLUEZ_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), BLUEZ_TYPE_OBJECT_PROXY, BLUEZObjectProxyClass))
+#define BLUEZ_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), BLUEZ_TYPE_OBJECT_PROXY, BLUEZObjectProxyClass))
+#define BLUEZ_IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BLUEZ_TYPE_OBJECT_PROXY))
+#define BLUEZ_IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), BLUEZ_TYPE_OBJECT_PROXY))
+
+typedef struct _BLUEZObjectProxy BLUEZObjectProxy;
+typedef struct _BLUEZObjectProxyClass BLUEZObjectProxyClass;
+typedef struct _BLUEZObjectProxyPrivate BLUEZObjectProxyPrivate;
+
+struct _BLUEZObjectProxy
+{
+  /*< private >*/
+  GDBusObjectProxy parent_instance;
+  BLUEZObjectProxyPrivate *priv;
+};
+
+struct _BLUEZObjectProxyClass
+{
+  GDBusObjectProxyClass parent_class;
+};
+
+GType bluez_object_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (BLUEZObjectProxy, g_object_unref)
+#endif
+
+BLUEZObjectProxy *bluez_object_proxy_new (GDBusConnection *connection, const gchar *object_path);
+
+#define BLUEZ_TYPE_OBJECT_SKELETON (bluez_object_skeleton_get_type ())
+#define BLUEZ_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BLUEZ_TYPE_OBJECT_SKELETON, BLUEZObjectSkeleton))
+#define BLUEZ_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), BLUEZ_TYPE_OBJECT_SKELETON, BLUEZObjectSkeletonClass))
+#define BLUEZ_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), BLUEZ_TYPE_OBJECT_SKELETON, BLUEZObjectSkeletonClass))
+#define BLUEZ_IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BLUEZ_TYPE_OBJECT_SKELETON))
+#define BLUEZ_IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), BLUEZ_TYPE_OBJECT_SKELETON))
+
+typedef struct _BLUEZObjectSkeleton BLUEZObjectSkeleton;
+typedef struct _BLUEZObjectSkeletonClass BLUEZObjectSkeletonClass;
+typedef struct _BLUEZObjectSkeletonPrivate BLUEZObjectSkeletonPrivate;
+
+struct _BLUEZObjectSkeleton
+{
+  /*< private >*/
+  GDBusObjectSkeleton parent_instance;
+  BLUEZObjectSkeletonPrivate *priv;
+};
+
+struct _BLUEZObjectSkeletonClass
+{
+  GDBusObjectSkeletonClass parent_class;
+};
+
+GType bluez_object_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (BLUEZObjectSkeleton, g_object_unref)
+#endif
+
+BLUEZObjectSkeleton *bluez_object_skeleton_new (const gchar *object_path);
+
+/* ---- */
+
+#define BLUEZ_TYPE_OBJECT_MANAGER_CLIENT (bluez_object_manager_client_get_type ())
+#define BLUEZ_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BLUEZ_TYPE_OBJECT_MANAGER_CLIENT, BLUEZObjectManagerClient))
+#define BLUEZ_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), BLUEZ_TYPE_OBJECT_MANAGER_CLIENT, BLUEZObjectManagerClientClass))
+#define BLUEZ_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), BLUEZ_TYPE_OBJECT_MANAGER_CLIENT, BLUEZObjectManagerClientClass))
+#define BLUEZ_IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BLUEZ_TYPE_OBJECT_MANAGER_CLIENT))
+#define BLUEZ_IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), BLUEZ_TYPE_OBJECT_MANAGER_CLIENT))
+
+typedef struct _BLUEZObjectManagerClient BLUEZObjectManagerClient;
+typedef struct _BLUEZObjectManagerClientClass BLUEZObjectManagerClientClass;
+typedef struct _BLUEZObjectManagerClientPrivate BLUEZObjectManagerClientPrivate;
+
+struct _BLUEZObjectManagerClient
+{
+  /*< private >*/
+  GDBusObjectManagerClient parent_instance;
+  BLUEZObjectManagerClientPrivate *priv;
+};
+
+struct _BLUEZObjectManagerClientClass
+{
+  GDBusObjectManagerClientClass parent_class;
+};
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (BLUEZObjectManagerClient, g_object_unref)
+#endif
+
+GType bluez_object_manager_client_get_type (void) G_GNUC_CONST;
+
+GType bluez_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);
+
+void bluez_object_manager_client_new (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data);
+GDBusObjectManager *bluez_object_manager_client_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+GDBusObjectManager *bluez_object_manager_client_new_sync (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error);
+
+void bluez_object_manager_client_new_for_bus (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data);
+GDBusObjectManager *bluez_object_manager_client_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+GDBusObjectManager *bluez_object_manager_client_new_for_bus_sync (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error);
+
+
+G_END_DECLS
+
+#endif /* __LIB_BLUEZ_H__ */
diff --git a/binding-bluetooth/lib_ofono.c b/binding-bluetooth/lib_ofono.c
new file mode 100644 (file)
index 0000000..05ce89b
--- /dev/null
@@ -0,0 +1,5615 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "lib_ofono.h"
+
+#include <string.h>
+#ifdef G_OS_UNIX
+#  include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        {
+          /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+          gdouble da = g_value_get_double (a);
+          gdouble db = g_value_get_double (b);
+          ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+        }
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.freedesktop.DBus.Introspectable
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOOrgFreedesktopDBusIntrospectable
+ * @title: OFONOOrgFreedesktopDBusIntrospectable
+ * @short_description: Generated C code for the org.freedesktop.DBus.Introspectable D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.freedesktop.DBus.Introspectable ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml =
+{
+  {
+    -1,
+    (gchar *) "xml",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers[] =
+{
+  &_ofono_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_freedesktop_dbus_introspectable_method_info_introspect =
+{
+  {
+    -1,
+    (gchar *) "Introspect",
+    NULL,
+    (GDBusArgInfo **) &_ofono_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-introspect",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_org_freedesktop_dbus_introspectable_method_info_pointers[] =
+{
+  &_ofono_org_freedesktop_dbus_introspectable_method_info_introspect,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_org_freedesktop_dbus_introspectable_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.freedesktop.DBus.Introspectable",
+    (GDBusMethodInfo **) &_ofono_org_freedesktop_dbus_introspectable_method_info_pointers,
+    NULL,
+    NULL,
+    NULL
+  },
+  "org-freedesktop-dbus-introspectable",
+};
+
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_org_freedesktop_dbus_introspectable_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct;
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOOrgFreedesktopDBusIntrospectable interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOOrgFreedesktopDBusIntrospectable:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ */
+
+/**
+ * OFONOOrgFreedesktopDBusIntrospectableIface:
+ * @parent_iface: The parent interface.
+ * @handle_introspect: Handler for the #OFONOOrgFreedesktopDBusIntrospectable::handle-introspect signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ */
+
+typedef OFONOOrgFreedesktopDBusIntrospectableIface OFONOOrgFreedesktopDBusIntrospectableInterface;
+G_DEFINE_INTERFACE (OFONOOrgFreedesktopDBusIntrospectable, ofono_org_freedesktop_dbus_introspectable, G_TYPE_OBJECT);
+
+static void
+ofono_org_freedesktop_dbus_introspectable_default_init (OFONOOrgFreedesktopDBusIntrospectableIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOOrgFreedesktopDBusIntrospectable::handle-introspect:
+   * @object: A #OFONOOrgFreedesktopDBusIntrospectable.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_freedesktop_dbus_introspectable_complete_introspect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-introspect",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgFreedesktopDBusIntrospectableIface, handle_introspect),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_call_introspect:
+ * @proxy: A #OFONOOrgFreedesktopDBusIntrospectableProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_freedesktop_dbus_introspectable_call_introspect_finish() to get the result of the operation.
+ *
+ * See ofono_org_freedesktop_dbus_introspectable_call_introspect_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_freedesktop_dbus_introspectable_call_introspect (
+    OFONOOrgFreedesktopDBusIntrospectable *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Introspect",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_call_introspect_finish:
+ * @proxy: A #OFONOOrgFreedesktopDBusIntrospectableProxy.
+ * @out_xml: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_freedesktop_dbus_introspectable_call_introspect().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_freedesktop_dbus_introspectable_call_introspect().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_freedesktop_dbus_introspectable_call_introspect_finish (
+    OFONOOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_xml);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_call_introspect_sync:
+ * @proxy: A #OFONOOrgFreedesktopDBusIntrospectableProxy.
+ * @out_xml: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_freedesktop_dbus_introspectable_call_introspect() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_freedesktop_dbus_introspectable_call_introspect_sync (
+    OFONOOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Introspect",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_xml);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_complete_introspect:
+ * @object: A #OFONOOrgFreedesktopDBusIntrospectable.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @xml: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_freedesktop_dbus_introspectable_complete_introspect (
+    OFONOOrgFreedesktopDBusIntrospectable *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *xml)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(s)",
+                   xml));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgFreedesktopDBusIntrospectableProxy:
+ *
+ * The #OFONOOrgFreedesktopDBusIntrospectableProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgFreedesktopDBusIntrospectableProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgFreedesktopDBusIntrospectableProxy.
+ */
+
+struct _OFONOOrgFreedesktopDBusIntrospectableProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_org_freedesktop_dbus_introspectable_proxy_iface_init (OFONOOrgFreedesktopDBusIntrospectableIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgFreedesktopDBusIntrospectableProxy, ofono_org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOOrgFreedesktopDBusIntrospectableProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_org_freedesktop_dbus_introspectable_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgFreedesktopDBusIntrospectableProxy, ofono_org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_org_freedesktop_dbus_introspectable_proxy_iface_init));
+
+#endif
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_finalize (GObject *object)
+{
+  OFONOOrgFreedesktopDBusIntrospectableProxy *proxy = OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_org_freedesktop_dbus_introspectable_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOOrgFreedesktopDBusIntrospectableProxy *proxy = OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_init (OFONOOrgFreedesktopDBusIntrospectableProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_org_freedesktop_dbus_introspectable_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOOrgFreedesktopDBusIntrospectableProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_org_freedesktop_dbus_introspectable_interface_info ());
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_class_init (OFONOOrgFreedesktopDBusIntrospectableProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_org_freedesktop_dbus_introspectable_proxy_finalize;
+  gobject_class->get_property = ofono_org_freedesktop_dbus_introspectable_proxy_get_property;
+  gobject_class->set_property = ofono_org_freedesktop_dbus_introspectable_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_org_freedesktop_dbus_introspectable_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_org_freedesktop_dbus_introspectable_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgFreedesktopDBusIntrospectableProxyPrivate));
+#endif
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_proxy_iface_init (OFONOOrgFreedesktopDBusIntrospectableIface *iface)
+{
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_freedesktop_dbus_introspectable_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_org_freedesktop_dbus_introspectable_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_freedesktop_dbus_introspectable_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_freedesktop_dbus_introspectable_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_freedesktop_dbus_introspectable_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgFreedesktopDBusIntrospectable *
+ofono_org_freedesktop_dbus_introspectable_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_freedesktop_dbus_introspectable_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgFreedesktopDBusIntrospectable *
+ofono_org_freedesktop_dbus_introspectable_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_org_freedesktop_dbus_introspectable_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgFreedesktopDBusIntrospectable *
+ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_org_freedesktop_dbus_introspectable_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgFreedesktopDBusIntrospectable *
+ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgFreedesktopDBusIntrospectableSkeleton:
+ *
+ * The #OFONOOrgFreedesktopDBusIntrospectableSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgFreedesktopDBusIntrospectableSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgFreedesktopDBusIntrospectableSkeleton.
+ */
+
+struct _OFONOOrgFreedesktopDBusIntrospectableSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_org_freedesktop_dbus_introspectable_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_org_freedesktop_dbus_introspectable_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_org_freedesktop_dbus_introspectable_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_org_freedesktop_dbus_introspectable_skeleton_vtable =
+{
+  _ofono_org_freedesktop_dbus_introspectable_skeleton_handle_method_call,
+  _ofono_org_freedesktop_dbus_introspectable_skeleton_handle_get_property,
+  _ofono_org_freedesktop_dbus_introspectable_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_org_freedesktop_dbus_introspectable_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_org_freedesktop_dbus_introspectable_skeleton_vtable;
+}
+
+static GVariant *
+ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_org_freedesktop_dbus_introspectable_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Introspectable", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void ofono_org_freedesktop_dbus_introspectable_skeleton_iface_init (OFONOOrgFreedesktopDBusIntrospectableIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgFreedesktopDBusIntrospectableSkeleton, ofono_org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOOrgFreedesktopDBusIntrospectableSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_org_freedesktop_dbus_introspectable_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgFreedesktopDBusIntrospectableSkeleton, ofono_org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_org_freedesktop_dbus_introspectable_skeleton_iface_init));
+
+#endif
+static void
+ofono_org_freedesktop_dbus_introspectable_skeleton_finalize (GObject *object)
+{
+  OFONOOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_org_freedesktop_dbus_introspectable_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_skeleton_init (OFONOOrgFreedesktopDBusIntrospectableSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_org_freedesktop_dbus_introspectable_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOOrgFreedesktopDBusIntrospectableSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_skeleton_class_init (OFONOOrgFreedesktopDBusIntrospectableSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_org_freedesktop_dbus_introspectable_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgFreedesktopDBusIntrospectableSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_org_freedesktop_dbus_introspectable_skeleton_iface_init (OFONOOrgFreedesktopDBusIntrospectableIface *iface)
+{
+}
+
+/**
+ * ofono_org_freedesktop_dbus_introspectable_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ *
+ * Returns: (transfer full) (type OFONOOrgFreedesktopDBusIntrospectableSkeleton): The skeleton object.
+ */
+OFONOOrgFreedesktopDBusIntrospectable *
+ofono_org_freedesktop_dbus_introspectable_skeleton_new (void)
+{
+  return OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (g_object_new (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.Manager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOOrgOfonoManager
+ * @title: OFONOOrgOfonoManager
+ * @short_description: Generated C code for the org.ofono.Manager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.Manager ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_manager_method_info_get_modems_OUT_ARG_modems =
+{
+  {
+    -1,
+    (gchar *) "modems",
+    (gchar *) "a(oa{sv})",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_manager_method_info_get_modems_OUT_ARG_pointers[] =
+{
+  &_ofono_org_ofono_manager_method_info_get_modems_OUT_ARG_modems,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_ofono_manager_method_info_get_modems =
+{
+  {
+    -1,
+    (gchar *) "GetModems",
+    NULL,
+    (GDBusArgInfo **) &_ofono_org_ofono_manager_method_info_get_modems_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-modems",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_org_ofono_manager_method_info_pointers[] =
+{
+  &_ofono_org_ofono_manager_method_info_get_modems,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_manager_signal_info_modem_added_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_manager_signal_info_modem_added_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_manager_signal_info_modem_added_ARG_pointers[] =
+{
+  &_ofono_org_ofono_manager_signal_info_modem_added_ARG_path,
+  &_ofono_org_ofono_manager_signal_info_modem_added_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_org_ofono_manager_signal_info_modem_added =
+{
+  {
+    -1,
+    (gchar *) "ModemAdded",
+    (GDBusArgInfo **) &_ofono_org_ofono_manager_signal_info_modem_added_ARG_pointers,
+    NULL
+  },
+  "modem-added"
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_manager_signal_info_modem_removed_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_manager_signal_info_modem_removed_ARG_pointers[] =
+{
+  &_ofono_org_ofono_manager_signal_info_modem_removed_ARG_path,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_org_ofono_manager_signal_info_modem_removed =
+{
+  {
+    -1,
+    (gchar *) "ModemRemoved",
+    (GDBusArgInfo **) &_ofono_org_ofono_manager_signal_info_modem_removed_ARG_pointers,
+    NULL
+  },
+  "modem-removed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_org_ofono_manager_signal_info_pointers[] =
+{
+  &_ofono_org_ofono_manager_signal_info_modem_added,
+  &_ofono_org_ofono_manager_signal_info_modem_removed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_org_ofono_manager_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.Manager",
+    (GDBusMethodInfo **) &_ofono_org_ofono_manager_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_org_ofono_manager_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-manager",
+};
+
+
+/**
+ * ofono_org_ofono_manager_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_org_ofono_manager_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_org_ofono_manager_interface_info.parent_struct;
+}
+
+/**
+ * ofono_org_ofono_manager_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOOrgOfonoManager interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_org_ofono_manager_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOOrgOfonoManager:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>.
+ */
+
+/**
+ * OFONOOrgOfonoManagerIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_modems: Handler for the #OFONOOrgOfonoManager::handle-get-modems signal.
+ * @modem_added: Handler for the #OFONOOrgOfonoManager::modem-added signal.
+ * @modem_removed: Handler for the #OFONOOrgOfonoManager::modem-removed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>.
+ */
+
+typedef OFONOOrgOfonoManagerIface OFONOOrgOfonoManagerInterface;
+G_DEFINE_INTERFACE (OFONOOrgOfonoManager, ofono_org_ofono_manager, G_TYPE_OBJECT);
+
+static void
+ofono_org_ofono_manager_default_init (OFONOOrgOfonoManagerIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOOrgOfonoManager::handle-get-modems:
+   * @object: A #OFONOOrgOfonoManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-Manager.GetModems">GetModems()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_ofono_manager_complete_get_modems() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-modems",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoManagerIface, handle_get_modems),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOOrgOfonoManager::modem-added:
+   * @object: A #OFONOOrgOfonoManager.
+   * @arg_path: Argument.
+   * @arg_properties: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-Manager.ModemAdded">"ModemAdded"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("modem-added",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoManagerIface, modem_added),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OFONOOrgOfonoManager::modem-removed:
+   * @object: A #OFONOOrgOfonoManager.
+   * @arg_path: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-Manager.ModemRemoved">"ModemRemoved"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("modem-removed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoManagerIface, modem_removed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+}
+
+/**
+ * ofono_org_ofono_manager_emit_modem_added:
+ * @object: A #OFONOOrgOfonoManager.
+ * @arg_path: Argument to pass with the signal.
+ * @arg_properties: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-Manager.ModemAdded">"ModemAdded"</link> D-Bus signal.
+ */
+void
+ofono_org_ofono_manager_emit_modem_added (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties)
+{
+  g_signal_emit_by_name (object, "modem-added", arg_path, arg_properties);
+}
+
+/**
+ * ofono_org_ofono_manager_emit_modem_removed:
+ * @object: A #OFONOOrgOfonoManager.
+ * @arg_path: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-Manager.ModemRemoved">"ModemRemoved"</link> D-Bus signal.
+ */
+void
+ofono_org_ofono_manager_emit_modem_removed (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path)
+{
+  g_signal_emit_by_name (object, "modem-removed", arg_path);
+}
+
+/**
+ * ofono_org_ofono_manager_call_get_modems:
+ * @proxy: A #OFONOOrgOfonoManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-Manager.GetModems">GetModems()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_manager_call_get_modems_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_manager_call_get_modems_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_ofono_manager_call_get_modems (
+    OFONOOrgOfonoManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetModems",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_ofono_manager_call_get_modems_finish:
+ * @proxy: A #OFONOOrgOfonoManagerProxy.
+ * @out_modems: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_manager_call_get_modems().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_ofono_manager_call_get_modems().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_manager_call_get_modems_finish (
+    OFONOOrgOfonoManager *proxy,
+    GVariant **out_modems,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_modems);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_manager_call_get_modems_sync:
+ * @proxy: A #OFONOOrgOfonoManagerProxy.
+ * @out_modems: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-Manager.GetModems">GetModems()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_manager_call_get_modems() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_manager_call_get_modems_sync (
+    OFONOOrgOfonoManager *proxy,
+    GVariant **out_modems,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetModems",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_modems);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_manager_complete_get_modems:
+ * @object: A #OFONOOrgOfonoManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @modems: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-Manager.GetModems">GetModems()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_ofono_manager_complete_get_modems (
+    OFONOOrgOfonoManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *modems)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a(oa{sv}))",
+                   modems));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgOfonoManagerProxy:
+ *
+ * The #OFONOOrgOfonoManagerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgOfonoManagerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgOfonoManagerProxy.
+ */
+
+struct _OFONOOrgOfonoManagerProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_org_ofono_manager_proxy_iface_init (OFONOOrgOfonoManagerIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoManagerProxy, ofono_org_ofono_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOOrgOfonoManagerProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_MANAGER, ofono_org_ofono_manager_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoManagerProxy, ofono_org_ofono_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_MANAGER, ofono_org_ofono_manager_proxy_iface_init));
+
+#endif
+static void
+ofono_org_ofono_manager_proxy_finalize (GObject *object)
+{
+  OFONOOrgOfonoManagerProxy *proxy = OFONO_ORG_OFONO_MANAGER_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_org_ofono_manager_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_ofono_manager_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_ofono_manager_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_ofono_manager_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_org_ofono_manager_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_TYPE_ORG_OFONO_MANAGER);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_OFONO_MANAGER);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_org_ofono_manager_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOOrgOfonoManagerProxy *proxy = OFONO_ORG_OFONO_MANAGER_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_manager_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_manager_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_org_ofono_manager_proxy_init (OFONOOrgOfonoManagerProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_org_ofono_manager_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, OFONOOrgOfonoManagerProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_org_ofono_manager_interface_info ());
+}
+
+static void
+ofono_org_ofono_manager_proxy_class_init (OFONOOrgOfonoManagerProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_org_ofono_manager_proxy_finalize;
+  gobject_class->get_property = ofono_org_ofono_manager_proxy_get_property;
+  gobject_class->set_property = ofono_org_ofono_manager_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_org_ofono_manager_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_org_ofono_manager_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgOfonoManagerProxyPrivate));
+#endif
+}
+
+static void
+ofono_org_ofono_manager_proxy_iface_init (OFONOOrgOfonoManagerIface *iface)
+{
+}
+
+/**
+ * ofono_org_ofono_manager_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_manager_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_manager_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_ofono_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+}
+
+/**
+ * ofono_org_ofono_manager_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_manager_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_ofono_manager_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoManager *
+ofono_org_ofono_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_ofono_manager_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_manager_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoManager *
+ofono_org_ofono_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_org_ofono_manager_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_org_ofono_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_manager_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_ofono_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+}
+
+/**
+ * ofono_org_ofono_manager_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_manager_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_ofono_manager_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoManager *
+ofono_org_ofono_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_ofono_manager_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_org_ofono_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_manager_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoManager *
+ofono_org_ofono_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgOfonoManagerSkeleton:
+ *
+ * The #OFONOOrgOfonoManagerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgOfonoManagerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgOfonoManagerSkeleton.
+ */
+
+struct _OFONOOrgOfonoManagerSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_org_ofono_manager_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOOrgOfonoManagerSkeleton *skeleton = OFONO_ORG_OFONO_MANAGER_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_TYPE_ORG_OFONO_MANAGER);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_OFONO_MANAGER);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_org_ofono_manager_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgOfonoManagerSkeleton *skeleton = OFONO_ORG_OFONO_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_org_ofono_manager_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgOfonoManagerSkeleton *skeleton = OFONO_ORG_OFONO_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_org_ofono_manager_skeleton_vtable =
+{
+  _ofono_org_ofono_manager_skeleton_handle_method_call,
+  _ofono_org_ofono_manager_skeleton_handle_get_property,
+  _ofono_org_ofono_manager_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_org_ofono_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_org_ofono_manager_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_org_ofono_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_org_ofono_manager_skeleton_vtable;
+}
+
+static GVariant *
+ofono_org_ofono_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOOrgOfonoManagerSkeleton *skeleton = OFONO_ORG_OFONO_MANAGER_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_org_ofono_manager_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_org_ofono_manager_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_org_ofono_manager_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_org_ofono_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Manager", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_org_ofono_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_org_ofono_manager_on_signal_modem_added (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties)
+{
+  OFONOOrgOfonoManagerSkeleton *skeleton = OFONO_ORG_OFONO_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o@a{sv})",
+                   arg_path,
+                   arg_properties));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Manager", "ModemAdded",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_ofono_org_ofono_manager_on_signal_modem_removed (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path)
+{
+  OFONOOrgOfonoManagerSkeleton *skeleton = OFONO_ORG_OFONO_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_path));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Manager", "ModemRemoved",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_org_ofono_manager_skeleton_iface_init (OFONOOrgOfonoManagerIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoManagerSkeleton, ofono_org_ofono_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOOrgOfonoManagerSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_MANAGER, ofono_org_ofono_manager_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoManagerSkeleton, ofono_org_ofono_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_MANAGER, ofono_org_ofono_manager_skeleton_iface_init));
+
+#endif
+static void
+ofono_org_ofono_manager_skeleton_finalize (GObject *object)
+{
+  OFONOOrgOfonoManagerSkeleton *skeleton = OFONO_ORG_OFONO_MANAGER_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_org_ofono_manager_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_ofono_manager_skeleton_init (OFONOOrgOfonoManagerSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_org_ofono_manager_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON, OFONOOrgOfonoManagerSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_org_ofono_manager_skeleton_class_init (OFONOOrgOfonoManagerSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_org_ofono_manager_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_org_ofono_manager_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_org_ofono_manager_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_org_ofono_manager_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_org_ofono_manager_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgOfonoManagerSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_org_ofono_manager_skeleton_iface_init (OFONOOrgOfonoManagerIface *iface)
+{
+  iface->modem_added = _ofono_org_ofono_manager_on_signal_modem_added;
+  iface->modem_removed = _ofono_org_ofono_manager_on_signal_modem_removed;
+}
+
+/**
+ * ofono_org_ofono_manager_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoManagerSkeleton): The skeleton object.
+ */
+OFONOOrgOfonoManager *
+ofono_org_ofono_manager_skeleton_new (void)
+{
+  return OFONO_ORG_OFONO_MANAGER (g_object_new (OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.HandsfreeAudioManager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOOrgOfonoHandsfreeAudioManager
+ * @title: OFONOOrgOfonoHandsfreeAudioManager
+ * @short_description: Generated C code for the org.ofono.HandsfreeAudioManager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.HandsfreeAudioManager ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_handsfree_audio_manager_method_info_get_cards_OUT_ARG_cards =
+{
+  {
+    -1,
+    (gchar *) "cards",
+    (gchar *) "a{oa{sv}}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_handsfree_audio_manager_method_info_get_cards_OUT_ARG_pointers[] =
+{
+  &_ofono_org_ofono_handsfree_audio_manager_method_info_get_cards_OUT_ARG_cards,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_ofono_handsfree_audio_manager_method_info_get_cards =
+{
+  {
+    -1,
+    (gchar *) "GetCards",
+    NULL,
+    (GDBusArgInfo **) &_ofono_org_ofono_handsfree_audio_manager_method_info_get_cards_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-cards",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_handsfree_audio_manager_method_info_register_IN_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_handsfree_audio_manager_method_info_register_IN_ARG_codecs =
+{
+  {
+    -1,
+    (gchar *) "codecs",
+    (gchar *) "ay",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_handsfree_audio_manager_method_info_register_IN_ARG_pointers[] =
+{
+  &_ofono_org_ofono_handsfree_audio_manager_method_info_register_IN_ARG_path,
+  &_ofono_org_ofono_handsfree_audio_manager_method_info_register_IN_ARG_codecs,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_ofono_handsfree_audio_manager_method_info_register =
+{
+  {
+    -1,
+    (gchar *) "Register",
+    (GDBusArgInfo **) &_ofono_org_ofono_handsfree_audio_manager_method_info_register_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-register",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_handsfree_audio_manager_method_info_unregister_IN_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_handsfree_audio_manager_method_info_unregister_IN_ARG_pointers[] =
+{
+  &_ofono_org_ofono_handsfree_audio_manager_method_info_unregister_IN_ARG_path,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_ofono_handsfree_audio_manager_method_info_unregister =
+{
+  {
+    -1,
+    (gchar *) "Unregister",
+    (GDBusArgInfo **) &_ofono_org_ofono_handsfree_audio_manager_method_info_unregister_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-unregister",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_org_ofono_handsfree_audio_manager_method_info_pointers[] =
+{
+  &_ofono_org_ofono_handsfree_audio_manager_method_info_get_cards,
+  &_ofono_org_ofono_handsfree_audio_manager_method_info_register,
+  &_ofono_org_ofono_handsfree_audio_manager_method_info_unregister,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_handsfree_audio_manager_signal_info_card_added_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_handsfree_audio_manager_signal_info_card_added_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_handsfree_audio_manager_signal_info_card_added_ARG_pointers[] =
+{
+  &_ofono_org_ofono_handsfree_audio_manager_signal_info_card_added_ARG_path,
+  &_ofono_org_ofono_handsfree_audio_manager_signal_info_card_added_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_org_ofono_handsfree_audio_manager_signal_info_card_added =
+{
+  {
+    -1,
+    (gchar *) "CardAdded",
+    (GDBusArgInfo **) &_ofono_org_ofono_handsfree_audio_manager_signal_info_card_added_ARG_pointers,
+    NULL
+  },
+  "card-added"
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_handsfree_audio_manager_signal_info_card_removed_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_handsfree_audio_manager_signal_info_card_removed_ARG_pointers[] =
+{
+  &_ofono_org_ofono_handsfree_audio_manager_signal_info_card_removed_ARG_path,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_org_ofono_handsfree_audio_manager_signal_info_card_removed =
+{
+  {
+    -1,
+    (gchar *) "CardRemoved",
+    (GDBusArgInfo **) &_ofono_org_ofono_handsfree_audio_manager_signal_info_card_removed_ARG_pointers,
+    NULL
+  },
+  "card-removed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_org_ofono_handsfree_audio_manager_signal_info_pointers[] =
+{
+  &_ofono_org_ofono_handsfree_audio_manager_signal_info_card_added,
+  &_ofono_org_ofono_handsfree_audio_manager_signal_info_card_removed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_org_ofono_handsfree_audio_manager_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.HandsfreeAudioManager",
+    (GDBusMethodInfo **) &_ofono_org_ofono_handsfree_audio_manager_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_org_ofono_handsfree_audio_manager_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-handsfree-audio-manager",
+};
+
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_org_ofono_handsfree_audio_manager_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOOrgOfonoHandsfreeAudioManager interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_org_ofono_handsfree_audio_manager_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOOrgOfonoHandsfreeAudioManager:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link>.
+ */
+
+/**
+ * OFONOOrgOfonoHandsfreeAudioManagerIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_cards: Handler for the #OFONOOrgOfonoHandsfreeAudioManager::handle-get-cards signal.
+ * @handle_register: Handler for the #OFONOOrgOfonoHandsfreeAudioManager::handle-register signal.
+ * @handle_unregister: Handler for the #OFONOOrgOfonoHandsfreeAudioManager::handle-unregister signal.
+ * @card_added: Handler for the #OFONOOrgOfonoHandsfreeAudioManager::card-added signal.
+ * @card_removed: Handler for the #OFONOOrgOfonoHandsfreeAudioManager::card-removed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link>.
+ */
+
+typedef OFONOOrgOfonoHandsfreeAudioManagerIface OFONOOrgOfonoHandsfreeAudioManagerInterface;
+G_DEFINE_INTERFACE (OFONOOrgOfonoHandsfreeAudioManager, ofono_org_ofono_handsfree_audio_manager, G_TYPE_OBJECT);
+
+static void
+ofono_org_ofono_handsfree_audio_manager_default_init (OFONOOrgOfonoHandsfreeAudioManagerIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOOrgOfonoHandsfreeAudioManager::handle-get-cards:
+   * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.GetCards">GetCards()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_ofono_handsfree_audio_manager_complete_get_cards() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-cards",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoHandsfreeAudioManagerIface, handle_get_cards),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOOrgOfonoHandsfreeAudioManager::handle-register:
+   * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_path: Argument passed by remote caller.
+   * @arg_codecs: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Register">Register()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_ofono_handsfree_audio_manager_complete_register() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-register",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoHandsfreeAudioManagerIface, handle_register),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
+
+  /**
+   * OFONOOrgOfonoHandsfreeAudioManager::handle-unregister:
+   * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_path: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Unregister">Unregister()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_ofono_handsfree_audio_manager_complete_unregister() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-unregister",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoHandsfreeAudioManagerIface, handle_unregister),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOOrgOfonoHandsfreeAudioManager::card-added:
+   * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+   * @arg_path: Argument.
+   * @arg_properties: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-HandsfreeAudioManager.CardAdded">"CardAdded"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("card-added",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoHandsfreeAudioManagerIface, card_added),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OFONOOrgOfonoHandsfreeAudioManager::card-removed:
+   * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+   * @arg_path: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-HandsfreeAudioManager.CardRemoved">"CardRemoved"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("card-removed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoHandsfreeAudioManagerIface, card_removed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_emit_card_added:
+ * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+ * @arg_path: Argument to pass with the signal.
+ * @arg_properties: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-HandsfreeAudioManager.CardAdded">"CardAdded"</link> D-Bus signal.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_emit_card_added (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties)
+{
+  g_signal_emit_by_name (object, "card-added", arg_path, arg_properties);
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_emit_card_removed:
+ * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+ * @arg_path: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-HandsfreeAudioManager.CardRemoved">"CardRemoved"</link> D-Bus signal.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_emit_card_removed (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path)
+{
+  g_signal_emit_by_name (object, "card-removed", arg_path);
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_get_cards:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.GetCards">GetCards()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_handsfree_audio_manager_call_get_cards_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_call_get_cards_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_call_get_cards (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetCards",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_get_cards_finish:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @out_cards: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_handsfree_audio_manager_call_get_cards().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_ofono_handsfree_audio_manager_call_get_cards().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_handsfree_audio_manager_call_get_cards_finish (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GVariant **out_cards,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{oa{sv}})",
+                 out_cards);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_get_cards_sync:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @out_cards: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.GetCards">GetCards()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_call_get_cards() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_handsfree_audio_manager_call_get_cards_sync (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GVariant **out_cards,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetCards",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{oa{sv}})",
+                 out_cards);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_register:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @arg_path: Argument to pass with the method invocation.
+ * @arg_codecs: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Register">Register()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_handsfree_audio_manager_call_register_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_call_register_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_call_register (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    const gchar *arg_codecs,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Register",
+    g_variant_new ("(o^ay)",
+                   arg_path,
+                   arg_codecs),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_register_finish:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_handsfree_audio_manager_call_register().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_ofono_handsfree_audio_manager_call_register().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_handsfree_audio_manager_call_register_finish (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_register_sync:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @arg_path: Argument to pass with the method invocation.
+ * @arg_codecs: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Register">Register()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_call_register() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_handsfree_audio_manager_call_register_sync (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    const gchar *arg_codecs,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Register",
+    g_variant_new ("(o^ay)",
+                   arg_path,
+                   arg_codecs),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_unregister:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @arg_path: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Unregister">Unregister()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_handsfree_audio_manager_call_unregister_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_call_unregister_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_call_unregister (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Unregister",
+    g_variant_new ("(o)",
+                   arg_path),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_unregister_finish:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_handsfree_audio_manager_call_unregister().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_ofono_handsfree_audio_manager_call_unregister().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_handsfree_audio_manager_call_unregister_finish (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_call_unregister_sync:
+ * @proxy: A #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ * @arg_path: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Unregister">Unregister()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_call_unregister() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_handsfree_audio_manager_call_unregister_sync (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Unregister",
+    g_variant_new ("(o)",
+                   arg_path),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_complete_get_cards:
+ * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @cards: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.GetCards">GetCards()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_complete_get_cards (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *cards)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{oa{sv}})",
+                   cards));
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_complete_register:
+ * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Register">Register()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_complete_register (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_complete_unregister:
+ * @object: A #OFONOOrgOfonoHandsfreeAudioManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-HandsfreeAudioManager.Unregister">Unregister()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_complete_unregister (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgOfonoHandsfreeAudioManagerProxy:
+ *
+ * The #OFONOOrgOfonoHandsfreeAudioManagerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgOfonoHandsfreeAudioManagerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgOfonoHandsfreeAudioManagerProxy.
+ */
+
+struct _OFONOOrgOfonoHandsfreeAudioManagerProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_org_ofono_handsfree_audio_manager_proxy_iface_init (OFONOOrgOfonoHandsfreeAudioManagerIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoHandsfreeAudioManagerProxy, ofono_org_ofono_handsfree_audio_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOOrgOfonoHandsfreeAudioManagerProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER, ofono_org_ofono_handsfree_audio_manager_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoHandsfreeAudioManagerProxy, ofono_org_ofono_handsfree_audio_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER, ofono_org_ofono_handsfree_audio_manager_proxy_iface_init));
+
+#endif
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_finalize (GObject *object)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerProxy *proxy = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_org_ofono_handsfree_audio_manager_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerProxy *proxy = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_init (OFONOOrgOfonoHandsfreeAudioManagerProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_org_ofono_handsfree_audio_manager_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, OFONOOrgOfonoHandsfreeAudioManagerProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_org_ofono_handsfree_audio_manager_interface_info ());
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_class_init (OFONOOrgOfonoHandsfreeAudioManagerProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_org_ofono_handsfree_audio_manager_proxy_finalize;
+  gobject_class->get_property = ofono_org_ofono_handsfree_audio_manager_proxy_get_property;
+  gobject_class->set_property = ofono_org_ofono_handsfree_audio_manager_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_org_ofono_handsfree_audio_manager_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_org_ofono_handsfree_audio_manager_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgOfonoHandsfreeAudioManagerProxyPrivate));
+#endif
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_proxy_iface_init (OFONOOrgOfonoHandsfreeAudioManagerIface *iface)
+{
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_handsfree_audio_manager_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.HandsfreeAudioManager", NULL);
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_handsfree_audio_manager_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_ofono_handsfree_audio_manager_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoHandsfreeAudioManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoHandsfreeAudioManager *
+ofono_org_ofono_handsfree_audio_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoHandsfreeAudioManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoHandsfreeAudioManager *
+ofono_org_ofono_handsfree_audio_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.HandsfreeAudioManager", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_org_ofono_handsfree_audio_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.HandsfreeAudioManager", NULL);
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoHandsfreeAudioManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoHandsfreeAudioManager *
+ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_org_ofono_handsfree_audio_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoHandsfreeAudioManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoHandsfreeAudioManager *
+ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.HandsfreeAudioManager", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgOfonoHandsfreeAudioManagerSkeleton:
+ *
+ * The #OFONOOrgOfonoHandsfreeAudioManagerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgOfonoHandsfreeAudioManagerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgOfonoHandsfreeAudioManagerSkeleton.
+ */
+
+struct _OFONOOrgOfonoHandsfreeAudioManagerSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_org_ofono_handsfree_audio_manager_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_org_ofono_handsfree_audio_manager_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_org_ofono_handsfree_audio_manager_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_org_ofono_handsfree_audio_manager_skeleton_vtable =
+{
+  _ofono_org_ofono_handsfree_audio_manager_skeleton_handle_method_call,
+  _ofono_org_ofono_handsfree_audio_manager_skeleton_handle_get_property,
+  _ofono_org_ofono_handsfree_audio_manager_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_org_ofono_handsfree_audio_manager_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_org_ofono_handsfree_audio_manager_skeleton_vtable;
+}
+
+static GVariant *
+ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_org_ofono_handsfree_audio_manager_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_org_ofono_handsfree_audio_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.HandsfreeAudioManager", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_org_ofono_handsfree_audio_manager_on_signal_card_added (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o@a{sv})",
+                   arg_path,
+                   arg_properties));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.HandsfreeAudioManager", "CardAdded",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_ofono_org_ofono_handsfree_audio_manager_on_signal_card_removed (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_path));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.HandsfreeAudioManager", "CardRemoved",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_org_ofono_handsfree_audio_manager_skeleton_iface_init (OFONOOrgOfonoHandsfreeAudioManagerIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoHandsfreeAudioManagerSkeleton, ofono_org_ofono_handsfree_audio_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOOrgOfonoHandsfreeAudioManagerSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER, ofono_org_ofono_handsfree_audio_manager_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoHandsfreeAudioManagerSkeleton, ofono_org_ofono_handsfree_audio_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER, ofono_org_ofono_handsfree_audio_manager_skeleton_iface_init));
+
+#endif
+static void
+ofono_org_ofono_handsfree_audio_manager_skeleton_finalize (GObject *object)
+{
+  OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton = OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_org_ofono_handsfree_audio_manager_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_skeleton_init (OFONOOrgOfonoHandsfreeAudioManagerSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_org_ofono_handsfree_audio_manager_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON, OFONOOrgOfonoHandsfreeAudioManagerSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_skeleton_class_init (OFONOOrgOfonoHandsfreeAudioManagerSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_org_ofono_handsfree_audio_manager_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_org_ofono_handsfree_audio_manager_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgOfonoHandsfreeAudioManagerSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_org_ofono_handsfree_audio_manager_skeleton_iface_init (OFONOOrgOfonoHandsfreeAudioManagerIface *iface)
+{
+  iface->card_added = _ofono_org_ofono_handsfree_audio_manager_on_signal_card_added;
+  iface->card_removed = _ofono_org_ofono_handsfree_audio_manager_on_signal_card_removed;
+}
+
+/**
+ * ofono_org_ofono_handsfree_audio_manager_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link>.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoHandsfreeAudioManagerSkeleton): The skeleton object.
+ */
+OFONOOrgOfonoHandsfreeAudioManager *
+ofono_org_ofono_handsfree_audio_manager_skeleton_new (void)
+{
+  return OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (g_object_new (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.phonesim.Manager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOOrgOfonoPhonesimManager
+ * @title: OFONOOrgOfonoPhonesimManager
+ * @short_description: Generated C code for the org.ofono.phonesim.Manager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.phonesim.Manager ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_name =
+{
+  {
+    -1,
+    (gchar *) "name",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_address =
+{
+  {
+    -1,
+    (gchar *) "address",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_port =
+{
+  {
+    -1,
+    (gchar *) "port",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_pointers[] =
+{
+  &_ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_name,
+  &_ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_address,
+  &_ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_port,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_ofono_phonesim_manager_method_info_add =
+{
+  {
+    -1,
+    (gchar *) "Add",
+    (GDBusArgInfo **) &_ofono_org_ofono_phonesim_manager_method_info_add_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-add",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_ofono_phonesim_manager_method_info_remove_all =
+{
+  {
+    -1,
+    (gchar *) "RemoveAll",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-remove-all",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_org_ofono_phonesim_manager_method_info_reset =
+{
+  {
+    -1,
+    (gchar *) "Reset",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-reset",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_org_ofono_phonesim_manager_method_info_pointers[] =
+{
+  &_ofono_org_ofono_phonesim_manager_method_info_add,
+  &_ofono_org_ofono_phonesim_manager_method_info_remove_all,
+  &_ofono_org_ofono_phonesim_manager_method_info_reset,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_org_ofono_phonesim_manager_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.phonesim.Manager",
+    (GDBusMethodInfo **) &_ofono_org_ofono_phonesim_manager_method_info_pointers,
+    NULL,
+    NULL,
+    NULL
+  },
+  "org-ofono-phonesim-manager",
+};
+
+
+/**
+ * ofono_org_ofono_phonesim_manager_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_org_ofono_phonesim_manager_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_org_ofono_phonesim_manager_interface_info.parent_struct;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOOrgOfonoPhonesimManager interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_org_ofono_phonesim_manager_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOOrgOfonoPhonesimManager:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link>.
+ */
+
+/**
+ * OFONOOrgOfonoPhonesimManagerIface:
+ * @parent_iface: The parent interface.
+ * @handle_add: Handler for the #OFONOOrgOfonoPhonesimManager::handle-add signal.
+ * @handle_remove_all: Handler for the #OFONOOrgOfonoPhonesimManager::handle-remove-all signal.
+ * @handle_reset: Handler for the #OFONOOrgOfonoPhonesimManager::handle-reset signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link>.
+ */
+
+typedef OFONOOrgOfonoPhonesimManagerIface OFONOOrgOfonoPhonesimManagerInterface;
+G_DEFINE_INTERFACE (OFONOOrgOfonoPhonesimManager, ofono_org_ofono_phonesim_manager, G_TYPE_OBJECT);
+
+static void
+ofono_org_ofono_phonesim_manager_default_init (OFONOOrgOfonoPhonesimManagerIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOOrgOfonoPhonesimManager::handle-add:
+   * @object: A #OFONOOrgOfonoPhonesimManager.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_name: Argument passed by remote caller.
+   * @arg_address: Argument passed by remote caller.
+   * @arg_port: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Add">Add()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_ofono_phonesim_manager_complete_add() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-add",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoPhonesimManagerIface, handle_add),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    4,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+
+  /**
+   * OFONOOrgOfonoPhonesimManager::handle-remove-all:
+   * @object: A #OFONOOrgOfonoPhonesimManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-phonesim-Manager.RemoveAll">RemoveAll()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_ofono_phonesim_manager_complete_remove_all() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-remove-all",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoPhonesimManagerIface, handle_remove_all),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOOrgOfonoPhonesimManager::handle-reset:
+   * @object: A #OFONOOrgOfonoPhonesimManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Reset">Reset()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_org_ofono_phonesim_manager_complete_reset() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-reset",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOOrgOfonoPhonesimManagerIface, handle_reset),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_add:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @arg_name: Argument to pass with the method invocation.
+ * @arg_address: Argument to pass with the method invocation.
+ * @arg_port: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Add">Add()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_phonesim_manager_call_add_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_phonesim_manager_call_add_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_ofono_phonesim_manager_call_add (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    const gchar *arg_name,
+    const gchar *arg_address,
+    const gchar *arg_port,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Add",
+    g_variant_new ("(sss)",
+                   arg_name,
+                   arg_address,
+                   arg_port),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_add_finish:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_phonesim_manager_call_add().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_ofono_phonesim_manager_call_add().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_phonesim_manager_call_add_finish (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_add_sync:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @arg_name: Argument to pass with the method invocation.
+ * @arg_address: Argument to pass with the method invocation.
+ * @arg_port: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Add">Add()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_phonesim_manager_call_add() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_phonesim_manager_call_add_sync (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    const gchar *arg_name,
+    const gchar *arg_address,
+    const gchar *arg_port,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Add",
+    g_variant_new ("(sss)",
+                   arg_name,
+                   arg_address,
+                   arg_port),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_remove_all:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-phonesim-Manager.RemoveAll">RemoveAll()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_phonesim_manager_call_remove_all_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_phonesim_manager_call_remove_all_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_ofono_phonesim_manager_call_remove_all (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RemoveAll",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_remove_all_finish:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_phonesim_manager_call_remove_all().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_ofono_phonesim_manager_call_remove_all().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_phonesim_manager_call_remove_all_finish (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_remove_all_sync:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-phonesim-Manager.RemoveAll">RemoveAll()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_phonesim_manager_call_remove_all() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_phonesim_manager_call_remove_all_sync (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RemoveAll",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_reset:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Reset">Reset()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_phonesim_manager_call_reset_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_phonesim_manager_call_reset_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_org_ofono_phonesim_manager_call_reset (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Reset",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_reset_finish:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_phonesim_manager_call_reset().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_org_ofono_phonesim_manager_call_reset().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_phonesim_manager_call_reset_finish (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_call_reset_sync:
+ * @proxy: A #OFONOOrgOfonoPhonesimManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Reset">Reset()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_phonesim_manager_call_reset() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_org_ofono_phonesim_manager_call_reset_sync (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Reset",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_complete_add:
+ * @object: A #OFONOOrgOfonoPhonesimManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Add">Add()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_ofono_phonesim_manager_complete_add (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_complete_remove_all:
+ * @object: A #OFONOOrgOfonoPhonesimManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-phonesim-Manager.RemoveAll">RemoveAll()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_ofono_phonesim_manager_complete_remove_all (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_complete_reset:
+ * @object: A #OFONOOrgOfonoPhonesimManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-phonesim-Manager.Reset">Reset()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_org_ofono_phonesim_manager_complete_reset (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgOfonoPhonesimManagerProxy:
+ *
+ * The #OFONOOrgOfonoPhonesimManagerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgOfonoPhonesimManagerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgOfonoPhonesimManagerProxy.
+ */
+
+struct _OFONOOrgOfonoPhonesimManagerProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_org_ofono_phonesim_manager_proxy_iface_init (OFONOOrgOfonoPhonesimManagerIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoPhonesimManagerProxy, ofono_org_ofono_phonesim_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOOrgOfonoPhonesimManagerProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER, ofono_org_ofono_phonesim_manager_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoPhonesimManagerProxy, ofono_org_ofono_phonesim_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER, ofono_org_ofono_phonesim_manager_proxy_iface_init));
+
+#endif
+static void
+ofono_org_ofono_phonesim_manager_proxy_finalize (GObject *object)
+{
+  OFONOOrgOfonoPhonesimManagerProxy *proxy = OFONO_ORG_OFONO_PHONESIM_MANAGER_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_org_ofono_phonesim_manager_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_ofono_phonesim_manager_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_ofono_phonesim_manager_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_org_ofono_phonesim_manager_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_org_ofono_phonesim_manager_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_org_ofono_phonesim_manager_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOOrgOfonoPhonesimManagerProxy *proxy = OFONO_ORG_OFONO_PHONESIM_MANAGER_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_phonesim_manager_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_phonesim_manager_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_org_ofono_phonesim_manager_proxy_init (OFONOOrgOfonoPhonesimManagerProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_org_ofono_phonesim_manager_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, OFONOOrgOfonoPhonesimManagerProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_org_ofono_phonesim_manager_interface_info ());
+}
+
+static void
+ofono_org_ofono_phonesim_manager_proxy_class_init (OFONOOrgOfonoPhonesimManagerProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_org_ofono_phonesim_manager_proxy_finalize;
+  gobject_class->get_property = ofono_org_ofono_phonesim_manager_proxy_get_property;
+  gobject_class->set_property = ofono_org_ofono_phonesim_manager_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_org_ofono_phonesim_manager_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_org_ofono_phonesim_manager_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgOfonoPhonesimManagerProxyPrivate));
+#endif
+}
+
+static void
+ofono_org_ofono_phonesim_manager_proxy_iface_init (OFONOOrgOfonoPhonesimManagerIface *iface)
+{
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_phonesim_manager_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_phonesim_manager_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_ofono_phonesim_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.phonesim.Manager", NULL);
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_phonesim_manager_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_ofono_phonesim_manager_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoPhonesimManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoPhonesimManager *
+ofono_org_ofono_phonesim_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_PHONESIM_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_phonesim_manager_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoPhonesimManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoPhonesimManager *
+ofono_org_ofono_phonesim_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.phonesim.Manager", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_PHONESIM_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_org_ofono_phonesim_manager_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_org_ofono_phonesim_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_org_ofono_phonesim_manager_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_org_ofono_phonesim_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_org_ofono_phonesim_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.phonesim.Manager", NULL);
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_org_ofono_phonesim_manager_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_org_ofono_phonesim_manager_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoPhonesimManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoPhonesimManager *
+ofono_org_ofono_phonesim_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_PHONESIM_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_org_ofono_phonesim_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_org_ofono_phonesim_manager_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoPhonesimManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOOrgOfonoPhonesimManager *
+ofono_org_ofono_phonesim_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.phonesim.Manager", NULL);
+  if (ret != NULL)
+    return OFONO_ORG_OFONO_PHONESIM_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOOrgOfonoPhonesimManagerSkeleton:
+ *
+ * The #OFONOOrgOfonoPhonesimManagerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOOrgOfonoPhonesimManagerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOOrgOfonoPhonesimManagerSkeleton.
+ */
+
+struct _OFONOOrgOfonoPhonesimManagerSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_org_ofono_phonesim_manager_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOOrgOfonoPhonesimManagerSkeleton *skeleton = OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_org_ofono_phonesim_manager_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgOfonoPhonesimManagerSkeleton *skeleton = OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_phonesim_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_org_ofono_phonesim_manager_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOOrgOfonoPhonesimManagerSkeleton *skeleton = OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_org_ofono_phonesim_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_org_ofono_phonesim_manager_skeleton_vtable =
+{
+  _ofono_org_ofono_phonesim_manager_skeleton_handle_method_call,
+  _ofono_org_ofono_phonesim_manager_skeleton_handle_get_property,
+  _ofono_org_ofono_phonesim_manager_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_org_ofono_phonesim_manager_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_org_ofono_phonesim_manager_skeleton_vtable;
+}
+
+static GVariant *
+ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOOrgOfonoPhonesimManagerSkeleton *skeleton = OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_org_ofono_phonesim_manager_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_org_ofono_phonesim_manager_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_org_ofono_phonesim_manager_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_org_ofono_phonesim_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.phonesim.Manager", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void ofono_org_ofono_phonesim_manager_skeleton_iface_init (OFONOOrgOfonoPhonesimManagerIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoPhonesimManagerSkeleton, ofono_org_ofono_phonesim_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOOrgOfonoPhonesimManagerSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER, ofono_org_ofono_phonesim_manager_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOOrgOfonoPhonesimManagerSkeleton, ofono_org_ofono_phonesim_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER, ofono_org_ofono_phonesim_manager_skeleton_iface_init));
+
+#endif
+static void
+ofono_org_ofono_phonesim_manager_skeleton_finalize (GObject *object)
+{
+  OFONOOrgOfonoPhonesimManagerSkeleton *skeleton = OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_org_ofono_phonesim_manager_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_org_ofono_phonesim_manager_skeleton_init (OFONOOrgOfonoPhonesimManagerSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_org_ofono_phonesim_manager_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON, OFONOOrgOfonoPhonesimManagerSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_org_ofono_phonesim_manager_skeleton_class_init (OFONOOrgOfonoPhonesimManagerSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_org_ofono_phonesim_manager_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_org_ofono_phonesim_manager_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOOrgOfonoPhonesimManagerSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_org_ofono_phonesim_manager_skeleton_iface_init (OFONOOrgOfonoPhonesimManagerIface *iface)
+{
+}
+
+/**
+ * ofono_org_ofono_phonesim_manager_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link>.
+ *
+ * Returns: (transfer full) (type OFONOOrgOfonoPhonesimManagerSkeleton): The skeleton object.
+ */
+OFONOOrgOfonoPhonesimManager *
+ofono_org_ofono_phonesim_manager_skeleton_new (void)
+{
+  return OFONO_ORG_OFONO_PHONESIM_MANAGER (g_object_new (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for Object, ObjectProxy and ObjectSkeleton
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOObject
+ * @title: OFONOObject
+ * @short_description: Specialized GDBusObject types
+ *
+ * This section contains the #OFONOObject, #OFONOObjectProxy, and #OFONOObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.
+ */
+
+/**
+ * OFONOObject:
+ *
+ * The #OFONOObject type is a specialized container of interfaces.
+ */
+
+/**
+ * OFONOObjectIface:
+ * @parent_iface: The parent interface.
+ *
+ * Virtual table for the #OFONOObject interface.
+ */
+
+typedef OFONOObjectIface OFONOObjectInterface;
+G_DEFINE_INTERFACE_WITH_CODE (OFONOObject, ofono_object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT));
+
+static void
+ofono_object_default_init (OFONOObjectIface *iface)
+{
+  /**
+   * OFONOObject:org-freedesktop-dbus-introspectable:
+   *
+   * The #OFONOOrgFreedesktopDBusIntrospectable instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-freedesktop-dbus-introspectable", "org-freedesktop-dbus-introspectable", "org-freedesktop-dbus-introspectable", OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOObject:org-ofono-manager:
+   *
+   * The #OFONOOrgOfonoManager instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-manager", "org-ofono-manager", "org-ofono-manager", OFONO_TYPE_ORG_OFONO_MANAGER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOObject:org-ofono-handsfree-audio-manager:
+   *
+   * The #OFONOOrgOfonoHandsfreeAudioManager instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-handsfree-audio-manager", "org-ofono-handsfree-audio-manager", "org-ofono-handsfree-audio-manager", OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOObject:org-ofono-phonesim-manager:
+   *
+   * The #OFONOOrgOfonoPhonesimManager instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-phonesim-manager", "org-ofono-phonesim-manager", "org-ofono-phonesim-manager", OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+}
+
+/**
+ * ofono_object_get_org_freedesktop_dbus_introspectable:
+ * @object: A #OFONOObject.
+ *
+ * Gets the #OFONOOrgFreedesktopDBusIntrospectable instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOOrgFreedesktopDBusIntrospectable that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOOrgFreedesktopDBusIntrospectable *ofono_object_get_org_freedesktop_dbus_introspectable (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+}
+
+/**
+ * ofono_object_get_org_ofono_manager:
+ * @object: A #OFONOObject.
+ *
+ * Gets the #OFONOOrgOfonoManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOOrgOfonoManager that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOOrgOfonoManager *ofono_object_get_org_ofono_manager (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_ORG_OFONO_MANAGER (ret);
+}
+
+/**
+ * ofono_object_get_org_ofono_handsfree_audio_manager:
+ * @object: A #OFONOObject.
+ *
+ * Gets the #OFONOOrgOfonoHandsfreeAudioManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOOrgOfonoHandsfreeAudioManager that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOOrgOfonoHandsfreeAudioManager *ofono_object_get_org_ofono_handsfree_audio_manager (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.HandsfreeAudioManager");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (ret);
+}
+
+/**
+ * ofono_object_get_org_ofono_phonesim_manager:
+ * @object: A #OFONOObject.
+ *
+ * Gets the #OFONOOrgOfonoPhonesimManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOOrgOfonoPhonesimManager that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOOrgOfonoPhonesimManager *ofono_object_get_org_ofono_phonesim_manager (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.phonesim.Manager");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_ORG_OFONO_PHONESIM_MANAGER (ret);
+}
+
+
+/**
+ * ofono_object_peek_org_freedesktop_dbus_introspectable: (skip)
+ * @object: A #OFONOObject.
+ *
+ * Like ofono_object_get_org_freedesktop_dbus_introspectable() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOOrgFreedesktopDBusIntrospectable or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOOrgFreedesktopDBusIntrospectable *ofono_object_peek_org_freedesktop_dbus_introspectable (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+}
+
+/**
+ * ofono_object_peek_org_ofono_manager: (skip)
+ * @object: A #OFONOObject.
+ *
+ * Like ofono_object_get_org_ofono_manager() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOOrgOfonoManager or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOOrgOfonoManager *ofono_object_peek_org_ofono_manager (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_ORG_OFONO_MANAGER (ret);
+}
+
+/**
+ * ofono_object_peek_org_ofono_handsfree_audio_manager: (skip)
+ * @object: A #OFONOObject.
+ *
+ * Like ofono_object_get_org_ofono_handsfree_audio_manager() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOOrgOfonoHandsfreeAudioManager or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOOrgOfonoHandsfreeAudioManager *ofono_object_peek_org_ofono_handsfree_audio_manager (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.HandsfreeAudioManager");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (ret);
+}
+
+/**
+ * ofono_object_peek_org_ofono_phonesim_manager: (skip)
+ * @object: A #OFONOObject.
+ *
+ * Like ofono_object_get_org_ofono_phonesim_manager() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOOrgOfonoPhonesimManager or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOOrgOfonoPhonesimManager *ofono_object_peek_org_ofono_phonesim_manager (OFONOObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.phonesim.Manager");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_ORG_OFONO_PHONESIM_MANAGER (ret);
+}
+
+
+static void
+ofono_object_notify (GDBusObject *object, GDBusInterface *interface)
+{
+  _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);
+  /* info can be NULL if the other end is using a D-Bus interface we don't know
+   * anything about, for example old generated code in this process talking to
+   * newer generated code in the other process. */
+  if (info != NULL)
+    g_object_notify (G_OBJECT (object), info->hyphen_name);
+}
+
+/**
+ * OFONOObjectProxy:
+ *
+ * The #OFONOObjectProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOObjectProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOObjectProxy.
+ */
+
+static void
+ofono_object_proxy__ofono_object_iface_init (OFONOObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+  iface->interface_added = ofono_object_notify;
+  iface->interface_removed = ofono_object_notify;
+}
+
+
+G_DEFINE_TYPE_WITH_CODE (OFONOObjectProxy, ofono_object_proxy, G_TYPE_DBUS_OBJECT_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_OBJECT, ofono_object_proxy__ofono_object_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, ofono_object_proxy__g_dbus_object_iface_init));
+
+static void
+ofono_object_proxy_init (OFONOObjectProxy *object G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_object_proxy_set_property (GObject      *gobject,
+  guint         prop_id,
+  const GValue *value G_GNUC_UNUSED,
+  GParamSpec   *pspec)
+{
+  G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+}
+
+static void
+ofono_object_proxy_get_property (GObject      *gobject,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+  OFONOObjectProxy *object = OFONO_OBJECT_PROXY (gobject);
+  GDBusInterface *interface;
+
+  switch (prop_id)
+    {
+    case 1:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+      g_value_take_object (value, interface);
+      break;
+
+    case 2:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+      g_value_take_object (value, interface);
+      break;
+
+    case 3:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.HandsfreeAudioManager");
+      g_value_take_object (value, interface);
+      break;
+
+    case 4:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.phonesim.Manager");
+      g_value_take_object (value, interface);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+ofono_object_proxy_class_init (OFONOObjectProxyClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = ofono_object_proxy_set_property;
+  gobject_class->get_property = ofono_object_proxy_get_property;
+
+  g_object_class_override_property (gobject_class, 1, "org-freedesktop-dbus-introspectable");
+  g_object_class_override_property (gobject_class, 2, "org-ofono-manager");
+  g_object_class_override_property (gobject_class, 3, "org-ofono-handsfree-audio-manager");
+  g_object_class_override_property (gobject_class, 4, "org-ofono-phonesim-manager");
+}
+
+/**
+ * ofono_object_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @object_path: An object path.
+ *
+ * Creates a new proxy object.
+ *
+ * Returns: (transfer full): The proxy object.
+ */
+OFONOObjectProxy *
+ofono_object_proxy_new (GDBusConnection *connection,
+  const gchar *object_path)
+{
+  g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);
+  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+  return OFONO_OBJECT_PROXY (g_object_new (OFONO_TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL));
+}
+
+/**
+ * OFONOObjectSkeleton:
+ *
+ * The #OFONOObjectSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOObjectSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOObjectSkeleton.
+ */
+
+static void
+ofono_object_skeleton__ofono_object_iface_init (OFONOObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+
+static void
+ofono_object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+  iface->interface_added = ofono_object_notify;
+  iface->interface_removed = ofono_object_notify;
+}
+
+G_DEFINE_TYPE_WITH_CODE (OFONOObjectSkeleton, ofono_object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_TYPE_OBJECT, ofono_object_skeleton__ofono_object_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, ofono_object_skeleton__g_dbus_object_iface_init));
+
+static void
+ofono_object_skeleton_init (OFONOObjectSkeleton *object G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_object_skeleton_set_property (GObject      *gobject,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+  OFONOObjectSkeleton *object = OFONO_OBJECT_SKELETON (gobject);
+  GDBusInterfaceSkeleton *interface;
+
+  switch (prop_id)
+    {
+    case 1:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.freedesktop.DBus.Introspectable");
+        }
+      break;
+
+    case 2:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_IS_ORG_OFONO_MANAGER (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.Manager");
+        }
+      break;
+
+    case 3:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_IS_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.HandsfreeAudioManager");
+        }
+      break;
+
+    case 4:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_IS_ORG_OFONO_PHONESIM_MANAGER (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.phonesim.Manager");
+        }
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+ofono_object_skeleton_get_property (GObject      *gobject,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+  OFONOObjectSkeleton *object = OFONO_OBJECT_SKELETON (gobject);
+  GDBusInterface *interface;
+
+  switch (prop_id)
+    {
+    case 1:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+      g_value_take_object (value, interface);
+      break;
+
+    case 2:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+      g_value_take_object (value, interface);
+      break;
+
+    case 3:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.HandsfreeAudioManager");
+      g_value_take_object (value, interface);
+      break;
+
+    case 4:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.phonesim.Manager");
+      g_value_take_object (value, interface);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+ofono_object_skeleton_class_init (OFONOObjectSkeletonClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = ofono_object_skeleton_set_property;
+  gobject_class->get_property = ofono_object_skeleton_get_property;
+
+  g_object_class_override_property (gobject_class, 1, "org-freedesktop-dbus-introspectable");
+  g_object_class_override_property (gobject_class, 2, "org-ofono-manager");
+  g_object_class_override_property (gobject_class, 3, "org-ofono-handsfree-audio-manager");
+  g_object_class_override_property (gobject_class, 4, "org-ofono-phonesim-manager");
+}
+
+/**
+ * ofono_object_skeleton_new:
+ * @object_path: An object path.
+ *
+ * Creates a new skeleton object.
+ *
+ * Returns: (transfer full): The skeleton object.
+ */
+OFONOObjectSkeleton *
+ofono_object_skeleton_new (const gchar *object_path)
+{
+  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+  return OFONO_OBJECT_SKELETON (g_object_new (OFONO_TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));
+}
+
+/**
+ * ofono_object_skeleton_set_org_freedesktop_dbus_introspectable:
+ * @object: A #OFONOObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOOrgFreedesktopDBusIntrospectable or %NULL to clear the interface.
+ *
+ * Sets the #OFONOOrgFreedesktopDBusIntrospectable instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> on @object.
+ */
+void ofono_object_skeleton_set_org_freedesktop_dbus_introspectable (OFONOObjectSkeleton *object, OFONOOrgFreedesktopDBusIntrospectable *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-freedesktop-dbus-introspectable", interface_, NULL);
+}
+
+/**
+ * ofono_object_skeleton_set_org_ofono_manager:
+ * @object: A #OFONOObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOOrgOfonoManager or %NULL to clear the interface.
+ *
+ * Sets the #OFONOOrgOfonoManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> on @object.
+ */
+void ofono_object_skeleton_set_org_ofono_manager (OFONOObjectSkeleton *object, OFONOOrgOfonoManager *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-manager", interface_, NULL);
+}
+
+/**
+ * ofono_object_skeleton_set_org_ofono_handsfree_audio_manager:
+ * @object: A #OFONOObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOOrgOfonoHandsfreeAudioManager or %NULL to clear the interface.
+ *
+ * Sets the #OFONOOrgOfonoHandsfreeAudioManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-HandsfreeAudioManager.top_of_page">org.ofono.HandsfreeAudioManager</link> on @object.
+ */
+void ofono_object_skeleton_set_org_ofono_handsfree_audio_manager (OFONOObjectSkeleton *object, OFONOOrgOfonoHandsfreeAudioManager *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-handsfree-audio-manager", interface_, NULL);
+}
+
+/**
+ * ofono_object_skeleton_set_org_ofono_phonesim_manager:
+ * @object: A #OFONOObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOOrgOfonoPhonesimManager or %NULL to clear the interface.
+ *
+ * Sets the #OFONOOrgOfonoPhonesimManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-phonesim-Manager.top_of_page">org.ofono.phonesim.Manager</link> on @object.
+ */
+void ofono_object_skeleton_set_org_ofono_phonesim_manager (OFONOObjectSkeleton *object, OFONOOrgOfonoPhonesimManager *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-phonesim-manager", interface_, NULL);
+}
+
+
+/* ------------------------------------------------------------------------
+ * Code for ObjectManager client
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOObjectManagerClient
+ * @title: OFONOObjectManagerClient
+ * @short_description: Generated GDBusObjectManagerClient type
+ *
+ * This section contains a #GDBusObjectManagerClient that uses ofono_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.
+ */
+
+/**
+ * OFONOObjectManagerClient:
+ *
+ * The #OFONOObjectManagerClient structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOObjectManagerClientClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOObjectManagerClient.
+ */
+
+G_DEFINE_TYPE (OFONOObjectManagerClient, ofono_object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT);
+
+static void
+ofono_object_manager_client_init (OFONOObjectManagerClient *manager G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_object_manager_client_class_init (OFONOObjectManagerClientClass *klass G_GNUC_UNUSED)
+{
+}
+
+/**
+ * ofono_object_manager_client_get_proxy_type:
+ * @manager: A #GDBusObjectManagerClient.
+ * @object_path: The object path of the remote object (unused).
+ * @interface_name: (allow-none): Interface name of the remote object or %NULL to get the object proxy #GType.
+ * @user_data: User data (unused).
+ *
+ * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy<!-- -->- and #GDBusProxy<!-- -->-derived types.
+ *
+ * Returns: A #GDBusProxy<!-- -->-derived #GType if @interface_name is not %NULL, otherwise the #GType for #OFONOObjectProxy.
+ */
+GType
+ofono_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)
+{
+  static gsize once_init_value = 0;
+  static GHashTable *lookup_hash;
+  GType ret;
+
+  if (interface_name == NULL)
+    return OFONO_TYPE_OBJECT_PROXY;
+  if (g_once_init_enter (&once_init_value))
+    {
+      lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);
+      g_hash_table_insert (lookup_hash, (gpointer) "org.freedesktop.DBus.Introspectable", GSIZE_TO_POINTER (OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.Manager", GSIZE_TO_POINTER (OFONO_TYPE_ORG_OFONO_MANAGER_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.HandsfreeAudioManager", GSIZE_TO_POINTER (OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.phonesim.Manager", GSIZE_TO_POINTER (OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY));
+      g_once_init_leave (&once_init_value, 1);
+    }
+  ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));
+  if (ret == (GType) 0)
+    ret = G_TYPE_DBUS_PROXY;
+  return ret;
+}
+
+/**
+ * ofono_object_manager_client_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates #GDBusObjectManagerClient using ofono_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_object_manager_client_new_finish() to get the result of the operation.
+ *
+ * See ofono_object_manager_client_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_object_manager_client_new (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", ofono_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * ofono_object_manager_client_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_object_manager_client_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_object_manager_client_new().
+ *
+ * Returns: (transfer full) (type OFONOObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_object_manager_client_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_object_manager_client_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates #GDBusObjectManagerClient using ofono_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_object_manager_client_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_object_manager_client_new_sync (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", ofono_object_manager_client_get_proxy_type, NULL);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_object_manager_client_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_object_manager_client_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_object_manager_client_new_for_bus (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data)
+{
+  g_async_initable_new_async (OFONO_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", ofono_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * ofono_object_manager_client_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_object_manager_client_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_object_manager_client_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_object_manager_client_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_object_manager_client_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_object_manager_client_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_object_manager_client_new_for_bus_sync (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", ofono_object_manager_client_get_proxy_type, NULL);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
diff --git a/binding-bluetooth/lib_ofono.h b/binding-bluetooth/lib_ofono.h
new file mode 100644 (file)
index 0000000..bdc946e
--- /dev/null
@@ -0,0 +1,981 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __LIB_OFONO_H__
+#define __LIB_OFONO_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.freedesktop.DBus.Introspectable */
+
+#define OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ofono_org_freedesktop_dbus_introspectable_get_type ())
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OFONOOrgFreedesktopDBusIntrospectable))
+#define OFONO_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE))
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OFONOOrgFreedesktopDBusIntrospectableIface))
+
+struct _OFONOOrgFreedesktopDBusIntrospectable;
+typedef struct _OFONOOrgFreedesktopDBusIntrospectable OFONOOrgFreedesktopDBusIntrospectable;
+typedef struct _OFONOOrgFreedesktopDBusIntrospectableIface OFONOOrgFreedesktopDBusIntrospectableIface;
+
+struct _OFONOOrgFreedesktopDBusIntrospectableIface
+{
+  GTypeInterface parent_iface;
+
+  gboolean (*handle_introspect) (
+    OFONOOrgFreedesktopDBusIntrospectable *object,
+    GDBusMethodInvocation *invocation);
+
+};
+
+GType ofono_org_freedesktop_dbus_introspectable_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_org_freedesktop_dbus_introspectable_interface_info (void);
+guint ofono_org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_org_freedesktop_dbus_introspectable_complete_introspect (
+    OFONOOrgFreedesktopDBusIntrospectable *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *xml);
+
+
+
+/* D-Bus method calls: */
+void ofono_org_freedesktop_dbus_introspectable_call_introspect (
+    OFONOOrgFreedesktopDBusIntrospectable *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_freedesktop_dbus_introspectable_call_introspect_finish (
+    OFONOOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_freedesktop_dbus_introspectable_call_introspect_sync (
+    OFONOOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (ofono_org_freedesktop_dbus_introspectable_proxy_get_type ())
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOOrgFreedesktopDBusIntrospectableProxy))
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOOrgFreedesktopDBusIntrospectableProxyClass))
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOOrgFreedesktopDBusIntrospectableProxyClass))
+#define OFONO_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY))
+#define OFONO_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY))
+
+typedef struct _OFONOOrgFreedesktopDBusIntrospectableProxy OFONOOrgFreedesktopDBusIntrospectableProxy;
+typedef struct _OFONOOrgFreedesktopDBusIntrospectableProxyClass OFONOOrgFreedesktopDBusIntrospectableProxyClass;
+typedef struct _OFONOOrgFreedesktopDBusIntrospectableProxyPrivate OFONOOrgFreedesktopDBusIntrospectableProxyPrivate;
+
+struct _OFONOOrgFreedesktopDBusIntrospectableProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOOrgFreedesktopDBusIntrospectableProxyPrivate *priv;
+};
+
+struct _OFONOOrgFreedesktopDBusIntrospectableProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_org_freedesktop_dbus_introspectable_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgFreedesktopDBusIntrospectableProxy, g_object_unref)
+#endif
+
+void ofono_org_freedesktop_dbus_introspectable_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgFreedesktopDBusIntrospectable *ofono_org_freedesktop_dbus_introspectable_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgFreedesktopDBusIntrospectable *ofono_org_freedesktop_dbus_introspectable_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgFreedesktopDBusIntrospectable *ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgFreedesktopDBusIntrospectable *ofono_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (ofono_org_freedesktop_dbus_introspectable_skeleton_get_type ())
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOOrgFreedesktopDBusIntrospectableSkeleton))
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOOrgFreedesktopDBusIntrospectableSkeletonClass))
+#define OFONO_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOOrgFreedesktopDBusIntrospectableSkeletonClass))
+#define OFONO_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON))
+#define OFONO_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON))
+
+typedef struct _OFONOOrgFreedesktopDBusIntrospectableSkeleton OFONOOrgFreedesktopDBusIntrospectableSkeleton;
+typedef struct _OFONOOrgFreedesktopDBusIntrospectableSkeletonClass OFONOOrgFreedesktopDBusIntrospectableSkeletonClass;
+typedef struct _OFONOOrgFreedesktopDBusIntrospectableSkeletonPrivate OFONOOrgFreedesktopDBusIntrospectableSkeletonPrivate;
+
+struct _OFONOOrgFreedesktopDBusIntrospectableSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOOrgFreedesktopDBusIntrospectableSkeletonPrivate *priv;
+};
+
+struct _OFONOOrgFreedesktopDBusIntrospectableSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_org_freedesktop_dbus_introspectable_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgFreedesktopDBusIntrospectableSkeleton, g_object_unref)
+#endif
+
+OFONOOrgFreedesktopDBusIntrospectable *ofono_org_freedesktop_dbus_introspectable_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.Manager */
+
+#define OFONO_TYPE_ORG_OFONO_MANAGER (ofono_org_ofono_manager_get_type ())
+#define OFONO_ORG_OFONO_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_MANAGER, OFONOOrgOfonoManager))
+#define OFONO_IS_ORG_OFONO_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_MANAGER))
+#define OFONO_ORG_OFONO_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_TYPE_ORG_OFONO_MANAGER, OFONOOrgOfonoManagerIface))
+
+struct _OFONOOrgOfonoManager;
+typedef struct _OFONOOrgOfonoManager OFONOOrgOfonoManager;
+typedef struct _OFONOOrgOfonoManagerIface OFONOOrgOfonoManagerIface;
+
+struct _OFONOOrgOfonoManagerIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_modems) (
+    OFONOOrgOfonoManager *object,
+    GDBusMethodInvocation *invocation);
+
+  void (*modem_added) (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties);
+
+  void (*modem_removed) (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path);
+
+};
+
+GType ofono_org_ofono_manager_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_org_ofono_manager_interface_info (void);
+guint ofono_org_ofono_manager_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_org_ofono_manager_complete_get_modems (
+    OFONOOrgOfonoManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *modems);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_org_ofono_manager_emit_modem_added (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties);
+
+void ofono_org_ofono_manager_emit_modem_removed (
+    OFONOOrgOfonoManager *object,
+    const gchar *arg_path);
+
+
+
+/* D-Bus method calls: */
+void ofono_org_ofono_manager_call_get_modems (
+    OFONOOrgOfonoManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_ofono_manager_call_get_modems_finish (
+    OFONOOrgOfonoManager *proxy,
+    GVariant **out_modems,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_ofono_manager_call_get_modems_sync (
+    OFONOOrgOfonoManager *proxy,
+    GVariant **out_modems,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_OFONO_MANAGER_PROXY (ofono_org_ofono_manager_proxy_get_type ())
+#define OFONO_ORG_OFONO_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, OFONOOrgOfonoManagerProxy))
+#define OFONO_ORG_OFONO_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, OFONOOrgOfonoManagerProxyClass))
+#define OFONO_ORG_OFONO_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_OFONO_MANAGER_PROXY, OFONOOrgOfonoManagerProxyClass))
+#define OFONO_IS_ORG_OFONO_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_MANAGER_PROXY))
+#define OFONO_IS_ORG_OFONO_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_OFONO_MANAGER_PROXY))
+
+typedef struct _OFONOOrgOfonoManagerProxy OFONOOrgOfonoManagerProxy;
+typedef struct _OFONOOrgOfonoManagerProxyClass OFONOOrgOfonoManagerProxyClass;
+typedef struct _OFONOOrgOfonoManagerProxyPrivate OFONOOrgOfonoManagerProxyPrivate;
+
+struct _OFONOOrgOfonoManagerProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOOrgOfonoManagerProxyPrivate *priv;
+};
+
+struct _OFONOOrgOfonoManagerProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_org_ofono_manager_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgOfonoManagerProxy, g_object_unref)
+#endif
+
+void ofono_org_ofono_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgOfonoManager *ofono_org_ofono_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgOfonoManager *ofono_org_ofono_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_org_ofono_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgOfonoManager *ofono_org_ofono_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgOfonoManager *ofono_org_ofono_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON (ofono_org_ofono_manager_skeleton_get_type ())
+#define OFONO_ORG_OFONO_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON, OFONOOrgOfonoManagerSkeleton))
+#define OFONO_ORG_OFONO_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON, OFONOOrgOfonoManagerSkeletonClass))
+#define OFONO_ORG_OFONO_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON, OFONOOrgOfonoManagerSkeletonClass))
+#define OFONO_IS_ORG_OFONO_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON))
+#define OFONO_IS_ORG_OFONO_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_OFONO_MANAGER_SKELETON))
+
+typedef struct _OFONOOrgOfonoManagerSkeleton OFONOOrgOfonoManagerSkeleton;
+typedef struct _OFONOOrgOfonoManagerSkeletonClass OFONOOrgOfonoManagerSkeletonClass;
+typedef struct _OFONOOrgOfonoManagerSkeletonPrivate OFONOOrgOfonoManagerSkeletonPrivate;
+
+struct _OFONOOrgOfonoManagerSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOOrgOfonoManagerSkeletonPrivate *priv;
+};
+
+struct _OFONOOrgOfonoManagerSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_org_ofono_manager_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgOfonoManagerSkeleton, g_object_unref)
+#endif
+
+OFONOOrgOfonoManager *ofono_org_ofono_manager_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.HandsfreeAudioManager */
+
+#define OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER (ofono_org_ofono_handsfree_audio_manager_get_type ())
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER, OFONOOrgOfonoHandsfreeAudioManager))
+#define OFONO_IS_ORG_OFONO_HANDSFREE_AUDIO_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER))
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER, OFONOOrgOfonoHandsfreeAudioManagerIface))
+
+struct _OFONOOrgOfonoHandsfreeAudioManager;
+typedef struct _OFONOOrgOfonoHandsfreeAudioManager OFONOOrgOfonoHandsfreeAudioManager;
+typedef struct _OFONOOrgOfonoHandsfreeAudioManagerIface OFONOOrgOfonoHandsfreeAudioManagerIface;
+
+struct _OFONOOrgOfonoHandsfreeAudioManagerIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_cards) (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_register) (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_path,
+    const gchar *arg_codecs);
+
+  gboolean (*handle_unregister) (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_path);
+
+  void (*card_added) (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties);
+
+  void (*card_removed) (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path);
+
+};
+
+GType ofono_org_ofono_handsfree_audio_manager_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_org_ofono_handsfree_audio_manager_interface_info (void);
+guint ofono_org_ofono_handsfree_audio_manager_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_org_ofono_handsfree_audio_manager_complete_get_cards (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *cards);
+
+void ofono_org_ofono_handsfree_audio_manager_complete_register (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_org_ofono_handsfree_audio_manager_complete_unregister (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_org_ofono_handsfree_audio_manager_emit_card_added (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties);
+
+void ofono_org_ofono_handsfree_audio_manager_emit_card_removed (
+    OFONOOrgOfonoHandsfreeAudioManager *object,
+    const gchar *arg_path);
+
+
+
+/* D-Bus method calls: */
+void ofono_org_ofono_handsfree_audio_manager_call_get_cards (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_ofono_handsfree_audio_manager_call_get_cards_finish (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GVariant **out_cards,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_ofono_handsfree_audio_manager_call_get_cards_sync (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GVariant **out_cards,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_org_ofono_handsfree_audio_manager_call_register (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    const gchar *arg_codecs,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_ofono_handsfree_audio_manager_call_register_finish (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_ofono_handsfree_audio_manager_call_register_sync (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    const gchar *arg_codecs,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_org_ofono_handsfree_audio_manager_call_unregister (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_ofono_handsfree_audio_manager_call_unregister_finish (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_ofono_handsfree_audio_manager_call_unregister_sync (
+    OFONOOrgOfonoHandsfreeAudioManager *proxy,
+    const gchar *arg_path,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY (ofono_org_ofono_handsfree_audio_manager_proxy_get_type ())
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, OFONOOrgOfonoHandsfreeAudioManagerProxy))
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, OFONOOrgOfonoHandsfreeAudioManagerProxyClass))
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY, OFONOOrgOfonoHandsfreeAudioManagerProxyClass))
+#define OFONO_IS_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY))
+#define OFONO_IS_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_PROXY))
+
+typedef struct _OFONOOrgOfonoHandsfreeAudioManagerProxy OFONOOrgOfonoHandsfreeAudioManagerProxy;
+typedef struct _OFONOOrgOfonoHandsfreeAudioManagerProxyClass OFONOOrgOfonoHandsfreeAudioManagerProxyClass;
+typedef struct _OFONOOrgOfonoHandsfreeAudioManagerProxyPrivate OFONOOrgOfonoHandsfreeAudioManagerProxyPrivate;
+
+struct _OFONOOrgOfonoHandsfreeAudioManagerProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOOrgOfonoHandsfreeAudioManagerProxyPrivate *priv;
+};
+
+struct _OFONOOrgOfonoHandsfreeAudioManagerProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_org_ofono_handsfree_audio_manager_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgOfonoHandsfreeAudioManagerProxy, g_object_unref)
+#endif
+
+void ofono_org_ofono_handsfree_audio_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgOfonoHandsfreeAudioManager *ofono_org_ofono_handsfree_audio_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgOfonoHandsfreeAudioManager *ofono_org_ofono_handsfree_audio_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgOfonoHandsfreeAudioManager *ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgOfonoHandsfreeAudioManager *ofono_org_ofono_handsfree_audio_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON (ofono_org_ofono_handsfree_audio_manager_skeleton_get_type ())
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON, OFONOOrgOfonoHandsfreeAudioManagerSkeleton))
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON, OFONOOrgOfonoHandsfreeAudioManagerSkeletonClass))
+#define OFONO_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON, OFONOOrgOfonoHandsfreeAudioManagerSkeletonClass))
+#define OFONO_IS_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON))
+#define OFONO_IS_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER_SKELETON))
+
+typedef struct _OFONOOrgOfonoHandsfreeAudioManagerSkeleton OFONOOrgOfonoHandsfreeAudioManagerSkeleton;
+typedef struct _OFONOOrgOfonoHandsfreeAudioManagerSkeletonClass OFONOOrgOfonoHandsfreeAudioManagerSkeletonClass;
+typedef struct _OFONOOrgOfonoHandsfreeAudioManagerSkeletonPrivate OFONOOrgOfonoHandsfreeAudioManagerSkeletonPrivate;
+
+struct _OFONOOrgOfonoHandsfreeAudioManagerSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOOrgOfonoHandsfreeAudioManagerSkeletonPrivate *priv;
+};
+
+struct _OFONOOrgOfonoHandsfreeAudioManagerSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_org_ofono_handsfree_audio_manager_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgOfonoHandsfreeAudioManagerSkeleton, g_object_unref)
+#endif
+
+OFONOOrgOfonoHandsfreeAudioManager *ofono_org_ofono_handsfree_audio_manager_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.phonesim.Manager */
+
+#define OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER (ofono_org_ofono_phonesim_manager_get_type ())
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER, OFONOOrgOfonoPhonesimManager))
+#define OFONO_IS_ORG_OFONO_PHONESIM_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER))
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER, OFONOOrgOfonoPhonesimManagerIface))
+
+struct _OFONOOrgOfonoPhonesimManager;
+typedef struct _OFONOOrgOfonoPhonesimManager OFONOOrgOfonoPhonesimManager;
+typedef struct _OFONOOrgOfonoPhonesimManagerIface OFONOOrgOfonoPhonesimManagerIface;
+
+struct _OFONOOrgOfonoPhonesimManagerIface
+{
+  GTypeInterface parent_iface;
+
+  gboolean (*handle_add) (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_name,
+    const gchar *arg_address,
+    const gchar *arg_port);
+
+  gboolean (*handle_remove_all) (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_reset) (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation);
+
+};
+
+GType ofono_org_ofono_phonesim_manager_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_org_ofono_phonesim_manager_interface_info (void);
+guint ofono_org_ofono_phonesim_manager_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_org_ofono_phonesim_manager_complete_add (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_org_ofono_phonesim_manager_complete_remove_all (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_org_ofono_phonesim_manager_complete_reset (
+    OFONOOrgOfonoPhonesimManager *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus method calls: */
+void ofono_org_ofono_phonesim_manager_call_add (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    const gchar *arg_name,
+    const gchar *arg_address,
+    const gchar *arg_port,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_ofono_phonesim_manager_call_add_finish (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_ofono_phonesim_manager_call_add_sync (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    const gchar *arg_name,
+    const gchar *arg_address,
+    const gchar *arg_port,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_org_ofono_phonesim_manager_call_remove_all (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_ofono_phonesim_manager_call_remove_all_finish (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_ofono_phonesim_manager_call_remove_all_sync (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_org_ofono_phonesim_manager_call_reset (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_org_ofono_phonesim_manager_call_reset_finish (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_org_ofono_phonesim_manager_call_reset_sync (
+    OFONOOrgOfonoPhonesimManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY (ofono_org_ofono_phonesim_manager_proxy_get_type ())
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, OFONOOrgOfonoPhonesimManagerProxy))
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, OFONOOrgOfonoPhonesimManagerProxyClass))
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY, OFONOOrgOfonoPhonesimManagerProxyClass))
+#define OFONO_IS_ORG_OFONO_PHONESIM_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY))
+#define OFONO_IS_ORG_OFONO_PHONESIM_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_PROXY))
+
+typedef struct _OFONOOrgOfonoPhonesimManagerProxy OFONOOrgOfonoPhonesimManagerProxy;
+typedef struct _OFONOOrgOfonoPhonesimManagerProxyClass OFONOOrgOfonoPhonesimManagerProxyClass;
+typedef struct _OFONOOrgOfonoPhonesimManagerProxyPrivate OFONOOrgOfonoPhonesimManagerProxyPrivate;
+
+struct _OFONOOrgOfonoPhonesimManagerProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOOrgOfonoPhonesimManagerProxyPrivate *priv;
+};
+
+struct _OFONOOrgOfonoPhonesimManagerProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_org_ofono_phonesim_manager_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgOfonoPhonesimManagerProxy, g_object_unref)
+#endif
+
+void ofono_org_ofono_phonesim_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgOfonoPhonesimManager *ofono_org_ofono_phonesim_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgOfonoPhonesimManager *ofono_org_ofono_phonesim_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_org_ofono_phonesim_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOOrgOfonoPhonesimManager *ofono_org_ofono_phonesim_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOOrgOfonoPhonesimManager *ofono_org_ofono_phonesim_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON (ofono_org_ofono_phonesim_manager_skeleton_get_type ())
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON, OFONOOrgOfonoPhonesimManagerSkeleton))
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON, OFONOOrgOfonoPhonesimManagerSkeletonClass))
+#define OFONO_ORG_OFONO_PHONESIM_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON, OFONOOrgOfonoPhonesimManagerSkeletonClass))
+#define OFONO_IS_ORG_OFONO_PHONESIM_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON))
+#define OFONO_IS_ORG_OFONO_PHONESIM_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER_SKELETON))
+
+typedef struct _OFONOOrgOfonoPhonesimManagerSkeleton OFONOOrgOfonoPhonesimManagerSkeleton;
+typedef struct _OFONOOrgOfonoPhonesimManagerSkeletonClass OFONOOrgOfonoPhonesimManagerSkeletonClass;
+typedef struct _OFONOOrgOfonoPhonesimManagerSkeletonPrivate OFONOOrgOfonoPhonesimManagerSkeletonPrivate;
+
+struct _OFONOOrgOfonoPhonesimManagerSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOOrgOfonoPhonesimManagerSkeletonPrivate *priv;
+};
+
+struct _OFONOOrgOfonoPhonesimManagerSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_org_ofono_phonesim_manager_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOOrgOfonoPhonesimManagerSkeleton, g_object_unref)
+#endif
+
+OFONOOrgOfonoPhonesimManager *ofono_org_ofono_phonesim_manager_skeleton_new (void);
+
+
+/* ---- */
+
+#define OFONO_TYPE_OBJECT (ofono_object_get_type ())
+#define OFONO_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_OBJECT, OFONOObject))
+#define OFONO_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_OBJECT))
+#define OFONO_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_TYPE_OBJECT, OFONOObject))
+
+struct _OFONOObject;
+typedef struct _OFONOObject OFONOObject;
+typedef struct _OFONOObjectIface OFONOObjectIface;
+
+struct _OFONOObjectIface
+{
+  GTypeInterface parent_iface;
+};
+
+GType ofono_object_get_type (void) G_GNUC_CONST;
+
+OFONOOrgFreedesktopDBusIntrospectable *ofono_object_get_org_freedesktop_dbus_introspectable (OFONOObject *object);
+OFONOOrgOfonoManager *ofono_object_get_org_ofono_manager (OFONOObject *object);
+OFONOOrgOfonoHandsfreeAudioManager *ofono_object_get_org_ofono_handsfree_audio_manager (OFONOObject *object);
+OFONOOrgOfonoPhonesimManager *ofono_object_get_org_ofono_phonesim_manager (OFONOObject *object);
+OFONOOrgFreedesktopDBusIntrospectable *ofono_object_peek_org_freedesktop_dbus_introspectable (OFONOObject *object);
+OFONOOrgOfonoManager *ofono_object_peek_org_ofono_manager (OFONOObject *object);
+OFONOOrgOfonoHandsfreeAudioManager *ofono_object_peek_org_ofono_handsfree_audio_manager (OFONOObject *object);
+OFONOOrgOfonoPhonesimManager *ofono_object_peek_org_ofono_phonesim_manager (OFONOObject *object);
+
+#define OFONO_TYPE_OBJECT_PROXY (ofono_object_proxy_get_type ())
+#define OFONO_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_OBJECT_PROXY, OFONOObjectProxy))
+#define OFONO_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_OBJECT_PROXY, OFONOObjectProxyClass))
+#define OFONO_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_OBJECT_PROXY, OFONOObjectProxyClass))
+#define OFONO_IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_OBJECT_PROXY))
+#define OFONO_IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_OBJECT_PROXY))
+
+typedef struct _OFONOObjectProxy OFONOObjectProxy;
+typedef struct _OFONOObjectProxyClass OFONOObjectProxyClass;
+typedef struct _OFONOObjectProxyPrivate OFONOObjectProxyPrivate;
+
+struct _OFONOObjectProxy
+{
+  /*< private >*/
+  GDBusObjectProxy parent_instance;
+  OFONOObjectProxyPrivate *priv;
+};
+
+struct _OFONOObjectProxyClass
+{
+  GDBusObjectProxyClass parent_class;
+};
+
+GType ofono_object_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOObjectProxy, g_object_unref)
+#endif
+
+OFONOObjectProxy *ofono_object_proxy_new (GDBusConnection *connection, const gchar *object_path);
+
+#define OFONO_TYPE_OBJECT_SKELETON (ofono_object_skeleton_get_type ())
+#define OFONO_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_OBJECT_SKELETON, OFONOObjectSkeleton))
+#define OFONO_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_OBJECT_SKELETON, OFONOObjectSkeletonClass))
+#define OFONO_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_OBJECT_SKELETON, OFONOObjectSkeletonClass))
+#define OFONO_IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_OBJECT_SKELETON))
+#define OFONO_IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_OBJECT_SKELETON))
+
+typedef struct _OFONOObjectSkeleton OFONOObjectSkeleton;
+typedef struct _OFONOObjectSkeletonClass OFONOObjectSkeletonClass;
+typedef struct _OFONOObjectSkeletonPrivate OFONOObjectSkeletonPrivate;
+
+struct _OFONOObjectSkeleton
+{
+  /*< private >*/
+  GDBusObjectSkeleton parent_instance;
+  OFONOObjectSkeletonPrivate *priv;
+};
+
+struct _OFONOObjectSkeletonClass
+{
+  GDBusObjectSkeletonClass parent_class;
+};
+
+GType ofono_object_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOObjectSkeleton, g_object_unref)
+#endif
+
+OFONOObjectSkeleton *ofono_object_skeleton_new (const gchar *object_path);
+void ofono_object_skeleton_set_org_freedesktop_dbus_introspectable (OFONOObjectSkeleton *object, OFONOOrgFreedesktopDBusIntrospectable *interface_);
+void ofono_object_skeleton_set_org_ofono_manager (OFONOObjectSkeleton *object, OFONOOrgOfonoManager *interface_);
+void ofono_object_skeleton_set_org_ofono_handsfree_audio_manager (OFONOObjectSkeleton *object, OFONOOrgOfonoHandsfreeAudioManager *interface_);
+void ofono_object_skeleton_set_org_ofono_phonesim_manager (OFONOObjectSkeleton *object, OFONOOrgOfonoPhonesimManager *interface_);
+
+/* ---- */
+
+#define OFONO_TYPE_OBJECT_MANAGER_CLIENT (ofono_object_manager_client_get_type ())
+#define OFONO_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_TYPE_OBJECT_MANAGER_CLIENT, OFONOObjectManagerClient))
+#define OFONO_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_TYPE_OBJECT_MANAGER_CLIENT, OFONOObjectManagerClientClass))
+#define OFONO_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_TYPE_OBJECT_MANAGER_CLIENT, OFONOObjectManagerClientClass))
+#define OFONO_IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_TYPE_OBJECT_MANAGER_CLIENT))
+#define OFONO_IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_TYPE_OBJECT_MANAGER_CLIENT))
+
+typedef struct _OFONOObjectManagerClient OFONOObjectManagerClient;
+typedef struct _OFONOObjectManagerClientClass OFONOObjectManagerClientClass;
+typedef struct _OFONOObjectManagerClientPrivate OFONOObjectManagerClientPrivate;
+
+struct _OFONOObjectManagerClient
+{
+  /*< private >*/
+  GDBusObjectManagerClient parent_instance;
+  OFONOObjectManagerClientPrivate *priv;
+};
+
+struct _OFONOObjectManagerClientClass
+{
+  GDBusObjectManagerClientClass parent_class;
+};
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOObjectManagerClient, g_object_unref)
+#endif
+
+GType ofono_object_manager_client_get_type (void) G_GNUC_CONST;
+
+GType ofono_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);
+
+void ofono_object_manager_client_new (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data);
+GDBusObjectManager *ofono_object_manager_client_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+GDBusObjectManager *ofono_object_manager_client_new_sync (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error);
+
+void ofono_object_manager_client_new_for_bus (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data);
+GDBusObjectManager *ofono_object_manager_client_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+GDBusObjectManager *ofono_object_manager_client_new_for_bus_sync (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error);
+
+
+G_END_DECLS
+
+#endif /* __LIB_OFONO_H__ */
diff --git a/binding-bluetooth/lib_ofono_modem.c b/binding-bluetooth/lib_ofono_modem.c
new file mode 100644 (file)
index 0000000..e30eaa0
--- /dev/null
@@ -0,0 +1,11664 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "lib_ofono_modem.h"
+
+#include <string.h>
+#ifdef G_OS_UNIX
+#  include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        {
+          /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+          gdouble da = g_value_get_double (a);
+          gdouble db = g_value_get_double (b);
+          ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+        }
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.freedesktop.DBus.Introspectable
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMOrgFreedesktopDBusIntrospectable
+ * @title: OFONOMODEMOrgFreedesktopDBusIntrospectable
+ * @short_description: Generated C code for the org.freedesktop.DBus.Introspectable D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.freedesktop.DBus.Introspectable ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml =
+{
+  {
+    -1,
+    (gchar *) "xml",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_freedesktop_dbus_introspectable_method_info_introspect =
+{
+  {
+    -1,
+    (gchar *) "Introspect",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-introspect",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_modem_org_freedesktop_dbus_introspectable_method_info_pointers[] =
+{
+  &_ofono_modem_org_freedesktop_dbus_introspectable_method_info_introspect,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_modem_org_freedesktop_dbus_introspectable_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.freedesktop.DBus.Introspectable",
+    (GDBusMethodInfo **) &_ofono_modem_org_freedesktop_dbus_introspectable_method_info_pointers,
+    NULL,
+    NULL,
+    NULL
+  },
+  "org-freedesktop-dbus-introspectable",
+};
+
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_modem_org_freedesktop_dbus_introspectable_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct;
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOMODEMOrgFreedesktopDBusIntrospectable interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_modem_org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOMODEMOrgFreedesktopDBusIntrospectable:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ */
+
+/**
+ * OFONOMODEMOrgFreedesktopDBusIntrospectableIface:
+ * @parent_iface: The parent interface.
+ * @handle_introspect: Handler for the #OFONOMODEMOrgFreedesktopDBusIntrospectable::handle-introspect signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ */
+
+typedef OFONOMODEMOrgFreedesktopDBusIntrospectableIface OFONOMODEMOrgFreedesktopDBusIntrospectableInterface;
+G_DEFINE_INTERFACE (OFONOMODEMOrgFreedesktopDBusIntrospectable, ofono_modem_org_freedesktop_dbus_introspectable, G_TYPE_OBJECT);
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_default_init (OFONOMODEMOrgFreedesktopDBusIntrospectableIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOMODEMOrgFreedesktopDBusIntrospectable::handle-introspect:
+   * @object: A #OFONOMODEMOrgFreedesktopDBusIntrospectable.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_freedesktop_dbus_introspectable_complete_introspect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-introspect",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgFreedesktopDBusIntrospectableIface, handle_introspect),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_call_introspect:
+ * @proxy: A #OFONOMODEMOrgFreedesktopDBusIntrospectableProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_freedesktop_dbus_introspectable_call_introspect (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Introspect",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_finish:
+ * @proxy: A #OFONOMODEMOrgFreedesktopDBusIntrospectableProxy.
+ * @out_xml: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_freedesktop_dbus_introspectable_call_introspect().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_freedesktop_dbus_introspectable_call_introspect().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_finish (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_xml);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_sync:
+ * @proxy: A #OFONOMODEMOrgFreedesktopDBusIntrospectableProxy.
+ * @out_xml: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_freedesktop_dbus_introspectable_call_introspect() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_sync (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Introspect",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_xml);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_complete_introspect:
+ * @object: A #OFONOMODEMOrgFreedesktopDBusIntrospectable.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @xml: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_freedesktop_dbus_introspectable_complete_introspect (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *xml)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(s)",
+                   xml));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgFreedesktopDBusIntrospectableProxy:
+ *
+ * The #OFONOMODEMOrgFreedesktopDBusIntrospectableProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgFreedesktopDBusIntrospectableProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgFreedesktopDBusIntrospectableProxy.
+ */
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectableProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_modem_org_freedesktop_dbus_introspectable_proxy_iface_init (OFONOMODEMOrgFreedesktopDBusIntrospectableIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgFreedesktopDBusIntrospectableProxy, ofono_modem_org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOMODEMOrgFreedesktopDBusIntrospectableProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_modem_org_freedesktop_dbus_introspectable_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgFreedesktopDBusIntrospectableProxy, ofono_modem_org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_modem_org_freedesktop_dbus_introspectable_proxy_iface_init));
+
+#endif
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_finalize (GObject *object)
+{
+  OFONOMODEMOrgFreedesktopDBusIntrospectableProxy *proxy = OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_modem_org_freedesktop_dbus_introspectable_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOMODEMOrgFreedesktopDBusIntrospectableProxy *proxy = OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_init (OFONOMODEMOrgFreedesktopDBusIntrospectableProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_modem_org_freedesktop_dbus_introspectable_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOMODEMOrgFreedesktopDBusIntrospectableProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_modem_org_freedesktop_dbus_introspectable_interface_info ());
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_class_init (OFONOMODEMOrgFreedesktopDBusIntrospectableProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_modem_org_freedesktop_dbus_introspectable_proxy_finalize;
+  gobject_class->get_property = ofono_modem_org_freedesktop_dbus_introspectable_proxy_get_property;
+  gobject_class->set_property = ofono_modem_org_freedesktop_dbus_introspectable_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_modem_org_freedesktop_dbus_introspectable_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_modem_org_freedesktop_dbus_introspectable_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgFreedesktopDBusIntrospectableProxyPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_iface_init (OFONOMODEMOrgFreedesktopDBusIntrospectableIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_freedesktop_dbus_introspectable_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_freedesktop_dbus_introspectable_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgFreedesktopDBusIntrospectable *
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_freedesktop_dbus_introspectable_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgFreedesktopDBusIntrospectable *
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_org_freedesktop_dbus_introspectable_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgFreedesktopDBusIntrospectable *
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgFreedesktopDBusIntrospectable *
+ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton:
+ *
+ * The #OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton.
+ */
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_modem_org_freedesktop_dbus_introspectable_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_modem_org_freedesktop_dbus_introspectable_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_modem_org_freedesktop_dbus_introspectable_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_modem_org_freedesktop_dbus_introspectable_skeleton_vtable =
+{
+  _ofono_modem_org_freedesktop_dbus_introspectable_skeleton_handle_method_call,
+  _ofono_modem_org_freedesktop_dbus_introspectable_skeleton_handle_get_property,
+  _ofono_modem_org_freedesktop_dbus_introspectable_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_modem_org_freedesktop_dbus_introspectable_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_modem_org_freedesktop_dbus_introspectable_skeleton_vtable;
+}
+
+static GVariant *
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_modem_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_modem_org_freedesktop_dbus_introspectable_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Introspectable", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void ofono_modem_org_freedesktop_dbus_introspectable_skeleton_iface_init (OFONOMODEMOrgFreedesktopDBusIntrospectableIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton, ofono_modem_org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_modem_org_freedesktop_dbus_introspectable_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton, ofono_modem_org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, ofono_modem_org_freedesktop_dbus_introspectable_skeleton_iface_init));
+
+#endif
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_finalize (GObject *object)
+{
+  OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton *skeleton = OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_modem_org_freedesktop_dbus_introspectable_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_init (OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_modem_org_freedesktop_dbus_introspectable_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_class_init (OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_modem_org_freedesktop_dbus_introspectable_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_modem_org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_iface_init (OFONOMODEMOrgFreedesktopDBusIntrospectableIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_freedesktop_dbus_introspectable_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton): The skeleton object.
+ */
+OFONOMODEMOrgFreedesktopDBusIntrospectable *
+ofono_modem_org_freedesktop_dbus_introspectable_skeleton_new (void)
+{
+  return OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (g_object_new (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.Modem
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMOrgOfonoModem
+ * @title: OFONOMODEMOrgOfonoModem
+ * @short_description: Generated C code for the org.ofono.Modem D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.Modem ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_modem_method_info_get_properties_OUT_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_modem_method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_modem_method_info_get_properties_OUT_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_modem_method_info_get_properties =
+{
+  {
+    -1,
+    (gchar *) "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_modem_method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_modem_method_info_set_property_IN_ARG_property =
+{
+  {
+    -1,
+    (gchar *) "property",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_modem_method_info_set_property_IN_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_modem_method_info_set_property_IN_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_modem_method_info_set_property_IN_ARG_property,
+  &_ofono_modem_org_ofono_modem_method_info_set_property_IN_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_modem_method_info_set_property =
+{
+  {
+    -1,
+    (gchar *) "SetProperty",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_modem_method_info_set_property_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-set-property",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_modem_org_ofono_modem_method_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_modem_method_info_get_properties,
+  &_ofono_modem_org_ofono_modem_method_info_set_property,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_modem_signal_info_property_changed_ARG_name =
+{
+  {
+    -1,
+    (gchar *) "name",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_modem_signal_info_property_changed_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_modem_signal_info_property_changed_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_modem_signal_info_property_changed_ARG_name,
+  &_ofono_modem_org_ofono_modem_signal_info_property_changed_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_modem_signal_info_property_changed =
+{
+  {
+    -1,
+    (gchar *) "PropertyChanged",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_modem_signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_modem_org_ofono_modem_signal_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_modem_signal_info_property_changed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_modem_org_ofono_modem_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.Modem",
+    (GDBusMethodInfo **) &_ofono_modem_org_ofono_modem_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_modem_org_ofono_modem_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-modem",
+};
+
+
+/**
+ * ofono_modem_org_ofono_modem_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_modem_org_ofono_modem_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_modem_org_ofono_modem_interface_info.parent_struct;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOMODEMOrgOfonoModem interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_modem_org_ofono_modem_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOMODEMOrgOfonoModem:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link>.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoModemIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_properties: Handler for the #OFONOMODEMOrgOfonoModem::handle-get-properties signal.
+ * @handle_set_property: Handler for the #OFONOMODEMOrgOfonoModem::handle-set-property signal.
+ * @property_changed: Handler for the #OFONOMODEMOrgOfonoModem::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link>.
+ */
+
+typedef OFONOMODEMOrgOfonoModemIface OFONOMODEMOrgOfonoModemInterface;
+G_DEFINE_INTERFACE (OFONOMODEMOrgOfonoModem, ofono_modem_org_ofono_modem, G_TYPE_OBJECT);
+
+static void
+ofono_modem_org_ofono_modem_default_init (OFONOMODEMOrgOfonoModemIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOMODEMOrgOfonoModem::handle-get-properties:
+   * @object: A #OFONOMODEMOrgOfonoModem.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-Modem.GetProperties">GetProperties()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_modem_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-properties",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoModemIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoModem::handle-set-property:
+   * @object: A #OFONOMODEMOrgOfonoModem.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_property: Argument passed by remote caller.
+   * @arg_value: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-Modem.SetProperty">SetProperty()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_modem_complete_set_property() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-set-property",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoModemIface, handle_set_property),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOMODEMOrgOfonoModem::property-changed:
+   * @object: A #OFONOMODEMOrgOfonoModem.
+   * @arg_name: Argument.
+   * @arg_value: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-Modem.PropertyChanged">"PropertyChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("property-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoModemIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+}
+
+/**
+ * ofono_modem_org_ofono_modem_emit_property_changed:
+ * @object: A #OFONOMODEMOrgOfonoModem.
+ * @arg_name: Argument to pass with the signal.
+ * @arg_value: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-Modem.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_modem_emit_property_changed (
+    OFONOMODEMOrgOfonoModem *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  g_signal_emit_by_name (object, "property-changed", arg_name, arg_value);
+}
+
+/**
+ * ofono_modem_org_ofono_modem_call_get_properties:
+ * @proxy: A #OFONOMODEMOrgOfonoModemProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-Modem.GetProperties">GetProperties()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_modem_call_get_properties_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_modem_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_modem_call_get_properties (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_modem_call_get_properties_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoModemProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_modem_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_modem_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_modem_call_get_properties_finish (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_call_get_properties_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoModemProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-Modem.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_modem_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_modem_call_get_properties_sync (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_call_set_property:
+ * @proxy: A #OFONOMODEMOrgOfonoModemProxy.
+ * @arg_property: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-Modem.SetProperty">SetProperty()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_modem_call_set_property_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_modem_call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_modem_call_set_property (
+    OFONOMODEMOrgOfonoModem *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_property,
+                   arg_value),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_modem_call_set_property_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoModemProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_modem_call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_modem_call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_modem_call_set_property_finish (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_call_set_property_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoModemProxy.
+ * @arg_property: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-Modem.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_modem_call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_modem_call_set_property_sync (
+    OFONOMODEMOrgOfonoModem *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_property,
+                   arg_value),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_complete_get_properties:
+ * @object: A #OFONOMODEMOrgOfonoModem.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-Modem.GetProperties">GetProperties()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_modem_complete_get_properties (
+    OFONOMODEMOrgOfonoModem *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   properties));
+}
+
+/**
+ * ofono_modem_org_ofono_modem_complete_set_property:
+ * @object: A #OFONOMODEMOrgOfonoModem.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-Modem.SetProperty">SetProperty()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_modem_complete_set_property (
+    OFONOMODEMOrgOfonoModem *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoModemProxy:
+ *
+ * The #OFONOMODEMOrgOfonoModemProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoModemProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoModemProxy.
+ */
+
+struct _OFONOMODEMOrgOfonoModemProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_modem_org_ofono_modem_proxy_iface_init (OFONOMODEMOrgOfonoModemIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoModemProxy, ofono_modem_org_ofono_modem_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoModemProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_MODEM, ofono_modem_org_ofono_modem_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoModemProxy, ofono_modem_org_ofono_modem_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_MODEM, ofono_modem_org_ofono_modem_proxy_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_modem_proxy_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoModemProxy *proxy = OFONO_MODEM_ORG_OFONO_MODEM_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_modem_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_modem_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_modem_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_modem_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_modem_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_MODEM_TYPE_ORG_OFONO_MODEM);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_MODEM);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_modem_org_ofono_modem_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOMODEMOrgOfonoModemProxy *proxy = OFONO_MODEM_ORG_OFONO_MODEM_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_modem_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_modem_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_modem_org_ofono_modem_proxy_init (OFONOMODEMOrgOfonoModemProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_modem_org_ofono_modem_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, OFONOMODEMOrgOfonoModemProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_modem_org_ofono_modem_interface_info ());
+}
+
+static void
+ofono_modem_org_ofono_modem_proxy_class_init (OFONOMODEMOrgOfonoModemProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_modem_org_ofono_modem_proxy_finalize;
+  gobject_class->get_property = ofono_modem_org_ofono_modem_proxy_get_property;
+  gobject_class->set_property = ofono_modem_org_ofono_modem_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_modem_org_ofono_modem_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_modem_org_ofono_modem_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoModemProxyPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_modem_proxy_iface_init (OFONOMODEMOrgOfonoModemIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_ofono_modem_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_modem_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_modem_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_modem_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Modem", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_modem_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_modem_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_modem_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoModemProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoModem *
+ofono_modem_org_ofono_modem_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_MODEM (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_modem_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoModemProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoModem *
+ofono_modem_org_ofono_modem_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Modem", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_MODEM (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_org_ofono_modem_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_org_ofono_modem_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_modem_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_modem_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_modem_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Modem", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_modem_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_modem_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_modem_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoModemProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoModem *
+ofono_modem_org_ofono_modem_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_MODEM (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_org_ofono_modem_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_modem_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoModemProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoModem *
+ofono_modem_org_ofono_modem_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Modem", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_MODEM (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoModemSkeleton:
+ *
+ * The #OFONOMODEMOrgOfonoModemSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoModemSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoModemSkeleton.
+ */
+
+struct _OFONOMODEMOrgOfonoModemSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_modem_org_ofono_modem_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoModemSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_MODEM_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_MODEM_TYPE_ORG_OFONO_MODEM);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_MODEM);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_modem_org_ofono_modem_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoModemSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_MODEM_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_modem_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_modem_org_ofono_modem_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoModemSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_MODEM_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_modem_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_modem_org_ofono_modem_skeleton_vtable =
+{
+  _ofono_modem_org_ofono_modem_skeleton_handle_method_call,
+  _ofono_modem_org_ofono_modem_skeleton_handle_get_property,
+  _ofono_modem_org_ofono_modem_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_modem_org_ofono_modem_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_modem_org_ofono_modem_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_modem_org_ofono_modem_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_modem_org_ofono_modem_skeleton_vtable;
+}
+
+static GVariant *
+ofono_modem_org_ofono_modem_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOMODEMOrgOfonoModemSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_MODEM_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_modem_org_ofono_modem_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_modem_org_ofono_modem_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_modem_org_ofono_modem_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_modem_org_ofono_modem_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Modem", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_modem_org_ofono_modem_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_modem_org_ofono_modem_on_signal_property_changed (
+    OFONOMODEMOrgOfonoModem *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  OFONOMODEMOrgOfonoModemSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_MODEM_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+                   arg_name,
+                   arg_value));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Modem", "PropertyChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_modem_org_ofono_modem_skeleton_iface_init (OFONOMODEMOrgOfonoModemIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoModemSkeleton, ofono_modem_org_ofono_modem_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoModemSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_MODEM, ofono_modem_org_ofono_modem_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoModemSkeleton, ofono_modem_org_ofono_modem_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_MODEM, ofono_modem_org_ofono_modem_skeleton_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_modem_skeleton_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoModemSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_MODEM_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_modem_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_modem_skeleton_init (OFONOMODEMOrgOfonoModemSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_modem_org_ofono_modem_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON, OFONOMODEMOrgOfonoModemSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_modem_org_ofono_modem_skeleton_class_init (OFONOMODEMOrgOfonoModemSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_modem_org_ofono_modem_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_modem_org_ofono_modem_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_modem_org_ofono_modem_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_modem_org_ofono_modem_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_modem_org_ofono_modem_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoModemSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_modem_skeleton_iface_init (OFONOMODEMOrgOfonoModemIface *iface)
+{
+  iface->property_changed = _ofono_modem_org_ofono_modem_on_signal_property_changed;
+}
+
+/**
+ * ofono_modem_org_ofono_modem_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link>.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoModemSkeleton): The skeleton object.
+ */
+OFONOMODEMOrgOfonoModem *
+ofono_modem_org_ofono_modem_skeleton_new (void)
+{
+  return OFONO_MODEM_ORG_OFONO_MODEM (g_object_new (OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.NetworkTime
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMOrgOfonoNetworkTime
+ * @title: OFONOMODEMOrgOfonoNetworkTime
+ * @short_description: Generated C code for the org.ofono.NetworkTime D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.NetworkTime ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_network_time_method_info_get_network_time_OUT_ARG_time =
+{
+  {
+    -1,
+    (gchar *) "time",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_network_time_method_info_get_network_time_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_time_method_info_get_network_time_OUT_ARG_time,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_network_time_method_info_get_network_time =
+{
+  {
+    -1,
+    (gchar *) "GetNetworkTime",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_network_time_method_info_get_network_time_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-network-time",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_modem_org_ofono_network_time_method_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_time_method_info_get_network_time,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_network_time_signal_info_network_time_changed_ARG_time =
+{
+  {
+    -1,
+    (gchar *) "time",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_network_time_signal_info_network_time_changed_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_time_signal_info_network_time_changed_ARG_time,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_network_time_signal_info_network_time_changed =
+{
+  {
+    -1,
+    (gchar *) "NetworkTimeChanged",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_network_time_signal_info_network_time_changed_ARG_pointers,
+    NULL
+  },
+  "network-time-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_modem_org_ofono_network_time_signal_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_time_signal_info_network_time_changed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_modem_org_ofono_network_time_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.NetworkTime",
+    (GDBusMethodInfo **) &_ofono_modem_org_ofono_network_time_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_modem_org_ofono_network_time_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-network-time",
+};
+
+
+/**
+ * ofono_modem_org_ofono_network_time_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_modem_org_ofono_network_time_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_time_interface_info.parent_struct;
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOMODEMOrgOfonoNetworkTime interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_modem_org_ofono_network_time_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOMODEMOrgOfonoNetworkTime:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link>.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkTimeIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_network_time: Handler for the #OFONOMODEMOrgOfonoNetworkTime::handle-get-network-time signal.
+ * @network_time_changed: Handler for the #OFONOMODEMOrgOfonoNetworkTime::network-time-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link>.
+ */
+
+typedef OFONOMODEMOrgOfonoNetworkTimeIface OFONOMODEMOrgOfonoNetworkTimeInterface;
+G_DEFINE_INTERFACE (OFONOMODEMOrgOfonoNetworkTime, ofono_modem_org_ofono_network_time, G_TYPE_OBJECT);
+
+static void
+ofono_modem_org_ofono_network_time_default_init (OFONOMODEMOrgOfonoNetworkTimeIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOMODEMOrgOfonoNetworkTime::handle-get-network-time:
+   * @object: A #OFONOMODEMOrgOfonoNetworkTime.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-NetworkTime.GetNetworkTime">GetNetworkTime()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_network_time_complete_get_network_time() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-network-time",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoNetworkTimeIface, handle_get_network_time),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOMODEMOrgOfonoNetworkTime::network-time-changed:
+   * @object: A #OFONOMODEMOrgOfonoNetworkTime.
+   * @arg_time: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-NetworkTime.NetworkTimeChanged">"NetworkTimeChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("network-time-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoNetworkTimeIface, network_time_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_VARIANT);
+
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_emit_network_time_changed:
+ * @object: A #OFONOMODEMOrgOfonoNetworkTime.
+ * @arg_time: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-NetworkTime.NetworkTimeChanged">"NetworkTimeChanged"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_network_time_emit_network_time_changed (
+    OFONOMODEMOrgOfonoNetworkTime *object,
+    GVariant *arg_time)
+{
+  g_signal_emit_by_name (object, "network-time-changed", arg_time);
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_call_get_network_time:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkTimeProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkTime.GetNetworkTime">GetNetworkTime()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_time_call_get_network_time_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_time_call_get_network_time_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_network_time_call_get_network_time (
+    OFONOMODEMOrgOfonoNetworkTime *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetNetworkTime",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_call_get_network_time_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkTimeProxy.
+ * @out_time: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_time_call_get_network_time().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_time_call_get_network_time().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_time_call_get_network_time_finish (
+    OFONOMODEMOrgOfonoNetworkTime *proxy,
+    GVariant **out_time,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_time);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_call_get_network_time_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkTimeProxy.
+ * @out_time: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkTime.GetNetworkTime">GetNetworkTime()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_time_call_get_network_time() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_time_call_get_network_time_sync (
+    OFONOMODEMOrgOfonoNetworkTime *proxy,
+    GVariant **out_time,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetNetworkTime",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_time);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_complete_get_network_time:
+ * @object: A #OFONOMODEMOrgOfonoNetworkTime.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @time: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-NetworkTime.GetNetworkTime">GetNetworkTime()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_network_time_complete_get_network_time (
+    OFONOMODEMOrgOfonoNetworkTime *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *time)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   time));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkTimeProxy:
+ *
+ * The #OFONOMODEMOrgOfonoNetworkTimeProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkTimeProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoNetworkTimeProxy.
+ */
+
+struct _OFONOMODEMOrgOfonoNetworkTimeProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_modem_org_ofono_network_time_proxy_iface_init (OFONOMODEMOrgOfonoNetworkTimeIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkTimeProxy, ofono_modem_org_ofono_network_time_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoNetworkTimeProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME, ofono_modem_org_ofono_network_time_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkTimeProxy, ofono_modem_org_ofono_network_time_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME, ofono_modem_org_ofono_network_time_proxy_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_network_time_proxy_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoNetworkTimeProxy *proxy = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_network_time_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_network_time_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_network_time_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_network_time_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_time_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_modem_org_ofono_network_time_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOMODEMOrgOfonoNetworkTimeProxy *proxy = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_time_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_time_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_modem_org_ofono_network_time_proxy_init (OFONOMODEMOrgOfonoNetworkTimeProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_modem_org_ofono_network_time_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, OFONOMODEMOrgOfonoNetworkTimeProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_modem_org_ofono_network_time_interface_info ());
+}
+
+static void
+ofono_modem_org_ofono_network_time_proxy_class_init (OFONOMODEMOrgOfonoNetworkTimeProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_modem_org_ofono_network_time_proxy_finalize;
+  gobject_class->get_property = ofono_modem_org_ofono_network_time_proxy_get_property;
+  gobject_class->set_property = ofono_modem_org_ofono_network_time_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_modem_org_ofono_network_time_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_modem_org_ofono_network_time_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoNetworkTimeProxyPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_network_time_proxy_iface_init (OFONOMODEMOrgOfonoNetworkTimeIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_time_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_time_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_network_time_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkTime", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_time_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_time_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkTimeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkTime *
+ofono_modem_org_ofono_network_time_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_TIME (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_time_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkTimeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkTime *
+ofono_modem_org_ofono_network_time_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkTime", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_TIME (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_org_ofono_network_time_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_org_ofono_network_time_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_time_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_time_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_network_time_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkTime", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_time_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_time_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkTimeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkTime *
+ofono_modem_org_ofono_network_time_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_TIME (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_org_ofono_network_time_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_time_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkTimeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkTime *
+ofono_modem_org_ofono_network_time_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkTime", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_TIME (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkTimeSkeleton:
+ *
+ * The #OFONOMODEMOrgOfonoNetworkTimeSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkTimeSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoNetworkTimeSkeleton.
+ */
+
+struct _OFONOMODEMOrgOfonoNetworkTimeSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_modem_org_ofono_network_time_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoNetworkTimeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_modem_org_ofono_network_time_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoNetworkTimeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_time_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_modem_org_ofono_network_time_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoNetworkTimeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_time_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_modem_org_ofono_network_time_skeleton_vtable =
+{
+  _ofono_modem_org_ofono_network_time_skeleton_handle_method_call,
+  _ofono_modem_org_ofono_network_time_skeleton_handle_get_property,
+  _ofono_modem_org_ofono_network_time_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_modem_org_ofono_network_time_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_modem_org_ofono_network_time_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_modem_org_ofono_network_time_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_modem_org_ofono_network_time_skeleton_vtable;
+}
+
+static GVariant *
+ofono_modem_org_ofono_network_time_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOMODEMOrgOfonoNetworkTimeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_modem_org_ofono_network_time_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_modem_org_ofono_network_time_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_modem_org_ofono_network_time_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_modem_org_ofono_network_time_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.NetworkTime", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_modem_org_ofono_network_time_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_modem_org_ofono_network_time_on_signal_network_time_changed (
+    OFONOMODEMOrgOfonoNetworkTime *object,
+    GVariant *arg_time)
+{
+  OFONOMODEMOrgOfonoNetworkTimeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(@a{sv})",
+                   arg_time));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.NetworkTime", "NetworkTimeChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_modem_org_ofono_network_time_skeleton_iface_init (OFONOMODEMOrgOfonoNetworkTimeIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkTimeSkeleton, ofono_modem_org_ofono_network_time_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoNetworkTimeSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME, ofono_modem_org_ofono_network_time_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkTimeSkeleton, ofono_modem_org_ofono_network_time_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME, ofono_modem_org_ofono_network_time_skeleton_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_network_time_skeleton_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoNetworkTimeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_network_time_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_network_time_skeleton_init (OFONOMODEMOrgOfonoNetworkTimeSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_modem_org_ofono_network_time_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON, OFONOMODEMOrgOfonoNetworkTimeSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_modem_org_ofono_network_time_skeleton_class_init (OFONOMODEMOrgOfonoNetworkTimeSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_modem_org_ofono_network_time_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_modem_org_ofono_network_time_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_modem_org_ofono_network_time_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_modem_org_ofono_network_time_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_modem_org_ofono_network_time_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoNetworkTimeSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_network_time_skeleton_iface_init (OFONOMODEMOrgOfonoNetworkTimeIface *iface)
+{
+  iface->network_time_changed = _ofono_modem_org_ofono_network_time_on_signal_network_time_changed;
+}
+
+/**
+ * ofono_modem_org_ofono_network_time_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link>.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkTimeSkeleton): The skeleton object.
+ */
+OFONOMODEMOrgOfonoNetworkTime *
+ofono_modem_org_ofono_network_time_skeleton_new (void)
+{
+  return OFONO_MODEM_ORG_OFONO_NETWORK_TIME (g_object_new (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.NetworkRegistration
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMOrgOfonoNetworkRegistration
+ * @title: OFONOMODEMOrgOfonoNetworkRegistration
+ * @short_description: Generated C code for the org.ofono.NetworkRegistration D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.NetworkRegistration ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_network_registration_method_info_get_properties_OUT_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_network_registration_method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_registration_method_info_get_properties_OUT_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_network_registration_method_info_get_properties =
+{
+  {
+    -1,
+    (gchar *) "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_network_registration_method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_network_registration_method_info_register =
+{
+  {
+    -1,
+    (gchar *) "Register",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-register",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_network_registration_method_info_get_operators_OUT_ARG_operators_with_properties =
+{
+  {
+    -1,
+    (gchar *) "operators_with_properties",
+    (gchar *) "a(oa{sv})",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_network_registration_method_info_get_operators_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_registration_method_info_get_operators_OUT_ARG_operators_with_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_network_registration_method_info_get_operators =
+{
+  {
+    -1,
+    (gchar *) "GetOperators",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_network_registration_method_info_get_operators_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-operators",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_network_registration_method_info_scan_OUT_ARG_operators_with_properties =
+{
+  {
+    -1,
+    (gchar *) "operators_with_properties",
+    (gchar *) "a(oa{sv})",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_network_registration_method_info_scan_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_registration_method_info_scan_OUT_ARG_operators_with_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_network_registration_method_info_scan =
+{
+  {
+    -1,
+    (gchar *) "Scan",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_network_registration_method_info_scan_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-scan",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_modem_org_ofono_network_registration_method_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_registration_method_info_get_properties,
+  &_ofono_modem_org_ofono_network_registration_method_info_register,
+  &_ofono_modem_org_ofono_network_registration_method_info_get_operators,
+  &_ofono_modem_org_ofono_network_registration_method_info_scan,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_network_registration_signal_info_property_changed_ARG_name =
+{
+  {
+    -1,
+    (gchar *) "name",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_network_registration_signal_info_property_changed_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_network_registration_signal_info_property_changed_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_registration_signal_info_property_changed_ARG_name,
+  &_ofono_modem_org_ofono_network_registration_signal_info_property_changed_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_network_registration_signal_info_property_changed =
+{
+  {
+    -1,
+    (gchar *) "PropertyChanged",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_network_registration_signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_modem_org_ofono_network_registration_signal_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_network_registration_signal_info_property_changed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_modem_org_ofono_network_registration_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.NetworkRegistration",
+    (GDBusMethodInfo **) &_ofono_modem_org_ofono_network_registration_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_modem_org_ofono_network_registration_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-network-registration",
+};
+
+
+/**
+ * ofono_modem_org_ofono_network_registration_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_modem_org_ofono_network_registration_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_registration_interface_info.parent_struct;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOMODEMOrgOfonoNetworkRegistration interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_modem_org_ofono_network_registration_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOMODEMOrgOfonoNetworkRegistration:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link>.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkRegistrationIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_operators: Handler for the #OFONOMODEMOrgOfonoNetworkRegistration::handle-get-operators signal.
+ * @handle_get_properties: Handler for the #OFONOMODEMOrgOfonoNetworkRegistration::handle-get-properties signal.
+ * @handle_register: Handler for the #OFONOMODEMOrgOfonoNetworkRegistration::handle-register signal.
+ * @handle_scan: Handler for the #OFONOMODEMOrgOfonoNetworkRegistration::handle-scan signal.
+ * @property_changed: Handler for the #OFONOMODEMOrgOfonoNetworkRegistration::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link>.
+ */
+
+typedef OFONOMODEMOrgOfonoNetworkRegistrationIface OFONOMODEMOrgOfonoNetworkRegistrationInterface;
+G_DEFINE_INTERFACE (OFONOMODEMOrgOfonoNetworkRegistration, ofono_modem_org_ofono_network_registration, G_TYPE_OBJECT);
+
+static void
+ofono_modem_org_ofono_network_registration_default_init (OFONOMODEMOrgOfonoNetworkRegistrationIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOMODEMOrgOfonoNetworkRegistration::handle-get-properties:
+   * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetProperties">GetProperties()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_network_registration_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-properties",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoNetworkRegistrationIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoNetworkRegistration::handle-register:
+   * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Register">Register()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_network_registration_complete_register() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-register",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoNetworkRegistrationIface, handle_register),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoNetworkRegistration::handle-get-operators:
+   * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetOperators">GetOperators()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_network_registration_complete_get_operators() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-operators",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoNetworkRegistrationIface, handle_get_operators),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoNetworkRegistration::handle-scan:
+   * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Scan">Scan()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_network_registration_complete_scan() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-scan",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoNetworkRegistrationIface, handle_scan),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOMODEMOrgOfonoNetworkRegistration::property-changed:
+   * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+   * @arg_name: Argument.
+   * @arg_value: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-NetworkRegistration.PropertyChanged">"PropertyChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("property-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoNetworkRegistrationIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_emit_property_changed:
+ * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+ * @arg_name: Argument to pass with the signal.
+ * @arg_value: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-NetworkRegistration.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_network_registration_emit_property_changed (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  g_signal_emit_by_name (object, "property-changed", arg_name, arg_value);
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_get_properties:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetProperties">GetProperties()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_registration_call_get_properties_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_network_registration_call_get_properties (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_get_properties_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_registration_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_registration_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_get_properties_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_get_properties_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_get_properties_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_register:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Register">Register()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_registration_call_register_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_register_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_network_registration_call_register (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Register",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_register_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_registration_call_register().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_registration_call_register().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_register_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_register_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Register">Register()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_register() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_register_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Register",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_get_operators:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetOperators">GetOperators()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_registration_call_get_operators_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_get_operators_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_network_registration_call_get_operators (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetOperators",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_get_operators_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @out_operators_with_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_registration_call_get_operators().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_registration_call_get_operators().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_get_operators_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_operators_with_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_get_operators_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @out_operators_with_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetOperators">GetOperators()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_get_operators() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_get_operators_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetOperators",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_operators_with_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_scan:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Scan">Scan()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_registration_call_scan_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_scan_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_network_registration_call_scan (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Scan",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_scan_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @out_operators_with_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_registration_call_scan().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_registration_call_scan().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_scan_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_operators_with_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_call_scan_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ * @out_operators_with_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Scan">Scan()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_registration_call_scan() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_network_registration_call_scan_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Scan",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_operators_with_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_complete_get_properties:
+ * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetProperties">GetProperties()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_network_registration_complete_get_properties (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   properties));
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_complete_register:
+ * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Register">Register()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_network_registration_complete_register (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_complete_get_operators:
+ * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @operators_with_properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-NetworkRegistration.GetOperators">GetOperators()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_network_registration_complete_get_operators (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *operators_with_properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a(oa{sv}))",
+                   operators_with_properties));
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_complete_scan:
+ * @object: A #OFONOMODEMOrgOfonoNetworkRegistration.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @operators_with_properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-NetworkRegistration.Scan">Scan()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_network_registration_complete_scan (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *operators_with_properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a(oa{sv}))",
+                   operators_with_properties));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkRegistrationProxy:
+ *
+ * The #OFONOMODEMOrgOfonoNetworkRegistrationProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkRegistrationProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoNetworkRegistrationProxy.
+ */
+
+struct _OFONOMODEMOrgOfonoNetworkRegistrationProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_modem_org_ofono_network_registration_proxy_iface_init (OFONOMODEMOrgOfonoNetworkRegistrationIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkRegistrationProxy, ofono_modem_org_ofono_network_registration_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoNetworkRegistrationProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION, ofono_modem_org_ofono_network_registration_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkRegistrationProxy, ofono_modem_org_ofono_network_registration_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION, ofono_modem_org_ofono_network_registration_proxy_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_network_registration_proxy_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationProxy *proxy = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_network_registration_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_network_registration_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_network_registration_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_network_registration_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_registration_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_modem_org_ofono_network_registration_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationProxy *proxy = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_registration_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_registration_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_modem_org_ofono_network_registration_proxy_init (OFONOMODEMOrgOfonoNetworkRegistrationProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_modem_org_ofono_network_registration_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, OFONOMODEMOrgOfonoNetworkRegistrationProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_modem_org_ofono_network_registration_interface_info ());
+}
+
+static void
+ofono_modem_org_ofono_network_registration_proxy_class_init (OFONOMODEMOrgOfonoNetworkRegistrationProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_modem_org_ofono_network_registration_proxy_finalize;
+  gobject_class->get_property = ofono_modem_org_ofono_network_registration_proxy_get_property;
+  gobject_class->set_property = ofono_modem_org_ofono_network_registration_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_modem_org_ofono_network_registration_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_modem_org_ofono_network_registration_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoNetworkRegistrationProxyPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_network_registration_proxy_iface_init (OFONOMODEMOrgOfonoNetworkRegistrationIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_registration_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_registration_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_network_registration_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkRegistration", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_registration_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_registration_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkRegistrationProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkRegistration *
+ofono_modem_org_ofono_network_registration_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_registration_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkRegistrationProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkRegistration *
+ofono_modem_org_ofono_network_registration_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkRegistration", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_org_ofono_network_registration_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_org_ofono_network_registration_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_network_registration_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_network_registration_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_network_registration_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkRegistration", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_network_registration_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_network_registration_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkRegistrationProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkRegistration *
+ofono_modem_org_ofono_network_registration_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_org_ofono_network_registration_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_network_registration_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkRegistrationProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoNetworkRegistration *
+ofono_modem_org_ofono_network_registration_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.NetworkRegistration", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkRegistrationSkeleton:
+ *
+ * The #OFONOMODEMOrgOfonoNetworkRegistrationSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoNetworkRegistrationSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoNetworkRegistrationSkeleton.
+ */
+
+struct _OFONOMODEMOrgOfonoNetworkRegistrationSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_modem_org_ofono_network_registration_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_modem_org_ofono_network_registration_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_registration_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_modem_org_ofono_network_registration_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_network_registration_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_modem_org_ofono_network_registration_skeleton_vtable =
+{
+  _ofono_modem_org_ofono_network_registration_skeleton_handle_method_call,
+  _ofono_modem_org_ofono_network_registration_skeleton_handle_get_property,
+  _ofono_modem_org_ofono_network_registration_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_modem_org_ofono_network_registration_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_modem_org_ofono_network_registration_skeleton_vtable;
+}
+
+static GVariant *
+ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_modem_org_ofono_network_registration_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_modem_org_ofono_network_registration_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_modem_org_ofono_network_registration_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_modem_org_ofono_network_registration_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.NetworkRegistration", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_modem_org_ofono_network_registration_on_signal_property_changed (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+                   arg_name,
+                   arg_value));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.NetworkRegistration", "PropertyChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_modem_org_ofono_network_registration_skeleton_iface_init (OFONOMODEMOrgOfonoNetworkRegistrationIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkRegistrationSkeleton, ofono_modem_org_ofono_network_registration_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoNetworkRegistrationSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION, ofono_modem_org_ofono_network_registration_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoNetworkRegistrationSkeleton, ofono_modem_org_ofono_network_registration_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION, ofono_modem_org_ofono_network_registration_skeleton_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_network_registration_skeleton_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoNetworkRegistrationSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_network_registration_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_network_registration_skeleton_init (OFONOMODEMOrgOfonoNetworkRegistrationSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_modem_org_ofono_network_registration_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON, OFONOMODEMOrgOfonoNetworkRegistrationSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_modem_org_ofono_network_registration_skeleton_class_init (OFONOMODEMOrgOfonoNetworkRegistrationSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_modem_org_ofono_network_registration_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_modem_org_ofono_network_registration_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoNetworkRegistrationSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_network_registration_skeleton_iface_init (OFONOMODEMOrgOfonoNetworkRegistrationIface *iface)
+{
+  iface->property_changed = _ofono_modem_org_ofono_network_registration_on_signal_property_changed;
+}
+
+/**
+ * ofono_modem_org_ofono_network_registration_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link>.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoNetworkRegistrationSkeleton): The skeleton object.
+ */
+OFONOMODEMOrgOfonoNetworkRegistration *
+ofono_modem_org_ofono_network_registration_skeleton_new (void)
+{
+  return OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION (g_object_new (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.Handsfree
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMOrgOfonoHandsfree
+ * @title: OFONOMODEMOrgOfonoHandsfree
+ * @short_description: Generated C code for the org.ofono.Handsfree D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.Handsfree ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_handsfree_method_info_get_properties_OUT_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_handsfree_method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_handsfree_method_info_get_properties_OUT_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_handsfree_method_info_get_properties =
+{
+  {
+    -1,
+    (gchar *) "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_handsfree_method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_handsfree_method_info_set_property_IN_ARG_property =
+{
+  {
+    -1,
+    (gchar *) "property",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_handsfree_method_info_set_property_IN_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_handsfree_method_info_set_property_IN_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_handsfree_method_info_set_property_IN_ARG_property,
+  &_ofono_modem_org_ofono_handsfree_method_info_set_property_IN_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_handsfree_method_info_set_property =
+{
+  {
+    -1,
+    (gchar *) "SetProperty",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_handsfree_method_info_set_property_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-set-property",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_handsfree_method_info_request_phone_number_OUT_ARG_number =
+{
+  {
+    -1,
+    (gchar *) "number",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_handsfree_method_info_request_phone_number_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_handsfree_method_info_request_phone_number_OUT_ARG_number,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_handsfree_method_info_request_phone_number =
+{
+  {
+    -1,
+    (gchar *) "RequestPhoneNumber",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_handsfree_method_info_request_phone_number_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-request-phone-number",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_modem_org_ofono_handsfree_method_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_handsfree_method_info_get_properties,
+  &_ofono_modem_org_ofono_handsfree_method_info_set_property,
+  &_ofono_modem_org_ofono_handsfree_method_info_request_phone_number,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_handsfree_signal_info_property_changed_ARG_name =
+{
+  {
+    -1,
+    (gchar *) "name",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_handsfree_signal_info_property_changed_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_handsfree_signal_info_property_changed_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_handsfree_signal_info_property_changed_ARG_name,
+  &_ofono_modem_org_ofono_handsfree_signal_info_property_changed_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_handsfree_signal_info_property_changed =
+{
+  {
+    -1,
+    (gchar *) "PropertyChanged",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_handsfree_signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_modem_org_ofono_handsfree_signal_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_handsfree_signal_info_property_changed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_modem_org_ofono_handsfree_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.Handsfree",
+    (GDBusMethodInfo **) &_ofono_modem_org_ofono_handsfree_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_modem_org_ofono_handsfree_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-handsfree",
+};
+
+
+/**
+ * ofono_modem_org_ofono_handsfree_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_modem_org_ofono_handsfree_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_modem_org_ofono_handsfree_interface_info.parent_struct;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOMODEMOrgOfonoHandsfree interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_modem_org_ofono_handsfree_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOMODEMOrgOfonoHandsfree:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link>.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoHandsfreeIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_properties: Handler for the #OFONOMODEMOrgOfonoHandsfree::handle-get-properties signal.
+ * @handle_request_phone_number: Handler for the #OFONOMODEMOrgOfonoHandsfree::handle-request-phone-number signal.
+ * @handle_set_property: Handler for the #OFONOMODEMOrgOfonoHandsfree::handle-set-property signal.
+ * @property_changed: Handler for the #OFONOMODEMOrgOfonoHandsfree::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link>.
+ */
+
+typedef OFONOMODEMOrgOfonoHandsfreeIface OFONOMODEMOrgOfonoHandsfreeInterface;
+G_DEFINE_INTERFACE (OFONOMODEMOrgOfonoHandsfree, ofono_modem_org_ofono_handsfree, G_TYPE_OBJECT);
+
+static void
+ofono_modem_org_ofono_handsfree_default_init (OFONOMODEMOrgOfonoHandsfreeIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOMODEMOrgOfonoHandsfree::handle-get-properties:
+   * @object: A #OFONOMODEMOrgOfonoHandsfree.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-Handsfree.GetProperties">GetProperties()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_handsfree_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-properties",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoHandsfreeIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoHandsfree::handle-set-property:
+   * @object: A #OFONOMODEMOrgOfonoHandsfree.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_property: Argument passed by remote caller.
+   * @arg_value: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-Handsfree.SetProperty">SetProperty()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_handsfree_complete_set_property() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-set-property",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoHandsfreeIface, handle_set_property),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OFONOMODEMOrgOfonoHandsfree::handle-request-phone-number:
+   * @object: A #OFONOMODEMOrgOfonoHandsfree.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-Handsfree.RequestPhoneNumber">RequestPhoneNumber()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_handsfree_complete_request_phone_number() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-request-phone-number",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoHandsfreeIface, handle_request_phone_number),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOMODEMOrgOfonoHandsfree::property-changed:
+   * @object: A #OFONOMODEMOrgOfonoHandsfree.
+   * @arg_name: Argument.
+   * @arg_value: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-Handsfree.PropertyChanged">"PropertyChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("property-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoHandsfreeIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_emit_property_changed:
+ * @object: A #OFONOMODEMOrgOfonoHandsfree.
+ * @arg_name: Argument to pass with the signal.
+ * @arg_value: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-Handsfree.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_handsfree_emit_property_changed (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  g_signal_emit_by_name (object, "property-changed", arg_name, arg_value);
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_get_properties:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-Handsfree.GetProperties">GetProperties()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_handsfree_call_get_properties_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_handsfree_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_handsfree_call_get_properties (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_get_properties_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_handsfree_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_handsfree_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_handsfree_call_get_properties_finish (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_get_properties_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-Handsfree.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_handsfree_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_handsfree_call_get_properties_sync (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_set_property:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @arg_property: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-Handsfree.SetProperty">SetProperty()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_handsfree_call_set_property_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_handsfree_call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_handsfree_call_set_property (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_property,
+                   arg_value),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_set_property_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_handsfree_call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_handsfree_call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_handsfree_call_set_property_finish (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_set_property_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @arg_property: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-Handsfree.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_handsfree_call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_handsfree_call_set_property_sync (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_property,
+                   arg_value),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_request_phone_number:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-Handsfree.RequestPhoneNumber">RequestPhoneNumber()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_handsfree_call_request_phone_number_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_handsfree_call_request_phone_number_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_handsfree_call_request_phone_number (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RequestPhoneNumber",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_request_phone_number_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @out_number: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_handsfree_call_request_phone_number().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_handsfree_call_request_phone_number().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_handsfree_call_request_phone_number_finish (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    gchar **out_number,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_number);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_call_request_phone_number_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoHandsfreeProxy.
+ * @out_number: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-Handsfree.RequestPhoneNumber">RequestPhoneNumber()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_handsfree_call_request_phone_number() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_handsfree_call_request_phone_number_sync (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    gchar **out_number,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RequestPhoneNumber",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_number);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_complete_get_properties:
+ * @object: A #OFONOMODEMOrgOfonoHandsfree.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-Handsfree.GetProperties">GetProperties()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_handsfree_complete_get_properties (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   properties));
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_complete_set_property:
+ * @object: A #OFONOMODEMOrgOfonoHandsfree.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-Handsfree.SetProperty">SetProperty()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_handsfree_complete_set_property (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_complete_request_phone_number:
+ * @object: A #OFONOMODEMOrgOfonoHandsfree.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @number: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-Handsfree.RequestPhoneNumber">RequestPhoneNumber()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_handsfree_complete_request_phone_number (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *number)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(s)",
+                   number));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoHandsfreeProxy:
+ *
+ * The #OFONOMODEMOrgOfonoHandsfreeProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoHandsfreeProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoHandsfreeProxy.
+ */
+
+struct _OFONOMODEMOrgOfonoHandsfreeProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_modem_org_ofono_handsfree_proxy_iface_init (OFONOMODEMOrgOfonoHandsfreeIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoHandsfreeProxy, ofono_modem_org_ofono_handsfree_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoHandsfreeProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE, ofono_modem_org_ofono_handsfree_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoHandsfreeProxy, ofono_modem_org_ofono_handsfree_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE, ofono_modem_org_ofono_handsfree_proxy_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_handsfree_proxy_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoHandsfreeProxy *proxy = OFONO_MODEM_ORG_OFONO_HANDSFREE_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_handsfree_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_handsfree_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_handsfree_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_handsfree_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_handsfree_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_modem_org_ofono_handsfree_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOMODEMOrgOfonoHandsfreeProxy *proxy = OFONO_MODEM_ORG_OFONO_HANDSFREE_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_handsfree_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_handsfree_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_modem_org_ofono_handsfree_proxy_init (OFONOMODEMOrgOfonoHandsfreeProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_modem_org_ofono_handsfree_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, OFONOMODEMOrgOfonoHandsfreeProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_modem_org_ofono_handsfree_interface_info ());
+}
+
+static void
+ofono_modem_org_ofono_handsfree_proxy_class_init (OFONOMODEMOrgOfonoHandsfreeProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_modem_org_ofono_handsfree_proxy_finalize;
+  gobject_class->get_property = ofono_modem_org_ofono_handsfree_proxy_get_property;
+  gobject_class->set_property = ofono_modem_org_ofono_handsfree_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_modem_org_ofono_handsfree_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_modem_org_ofono_handsfree_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoHandsfreeProxyPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_handsfree_proxy_iface_init (OFONOMODEMOrgOfonoHandsfreeIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_handsfree_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_handsfree_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_handsfree_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Handsfree", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_handsfree_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_handsfree_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoHandsfreeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoHandsfree *
+ofono_modem_org_ofono_handsfree_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_HANDSFREE (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_handsfree_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoHandsfreeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoHandsfree *
+ofono_modem_org_ofono_handsfree_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Handsfree", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_HANDSFREE (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_org_ofono_handsfree_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_org_ofono_handsfree_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_handsfree_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_handsfree_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_handsfree_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Handsfree", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_handsfree_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_handsfree_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoHandsfreeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoHandsfree *
+ofono_modem_org_ofono_handsfree_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_HANDSFREE (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_org_ofono_handsfree_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_handsfree_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoHandsfreeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoHandsfree *
+ofono_modem_org_ofono_handsfree_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Handsfree", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_HANDSFREE (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoHandsfreeSkeleton:
+ *
+ * The #OFONOMODEMOrgOfonoHandsfreeSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoHandsfreeSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoHandsfreeSkeleton.
+ */
+
+struct _OFONOMODEMOrgOfonoHandsfreeSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_modem_org_ofono_handsfree_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoHandsfreeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_modem_org_ofono_handsfree_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoHandsfreeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_handsfree_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_modem_org_ofono_handsfree_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoHandsfreeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_handsfree_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_modem_org_ofono_handsfree_skeleton_vtable =
+{
+  _ofono_modem_org_ofono_handsfree_skeleton_handle_method_call,
+  _ofono_modem_org_ofono_handsfree_skeleton_handle_get_property,
+  _ofono_modem_org_ofono_handsfree_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_modem_org_ofono_handsfree_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_modem_org_ofono_handsfree_skeleton_vtable;
+}
+
+static GVariant *
+ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOMODEMOrgOfonoHandsfreeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_modem_org_ofono_handsfree_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_modem_org_ofono_handsfree_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_modem_org_ofono_handsfree_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_modem_org_ofono_handsfree_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Handsfree", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_modem_org_ofono_handsfree_on_signal_property_changed (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  OFONOMODEMOrgOfonoHandsfreeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+                   arg_name,
+                   arg_value));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Handsfree", "PropertyChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_modem_org_ofono_handsfree_skeleton_iface_init (OFONOMODEMOrgOfonoHandsfreeIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoHandsfreeSkeleton, ofono_modem_org_ofono_handsfree_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoHandsfreeSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE, ofono_modem_org_ofono_handsfree_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoHandsfreeSkeleton, ofono_modem_org_ofono_handsfree_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE, ofono_modem_org_ofono_handsfree_skeleton_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_handsfree_skeleton_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoHandsfreeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_handsfree_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_handsfree_skeleton_init (OFONOMODEMOrgOfonoHandsfreeSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_modem_org_ofono_handsfree_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON, OFONOMODEMOrgOfonoHandsfreeSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_modem_org_ofono_handsfree_skeleton_class_init (OFONOMODEMOrgOfonoHandsfreeSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_modem_org_ofono_handsfree_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_modem_org_ofono_handsfree_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoHandsfreeSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_handsfree_skeleton_iface_init (OFONOMODEMOrgOfonoHandsfreeIface *iface)
+{
+  iface->property_changed = _ofono_modem_org_ofono_handsfree_on_signal_property_changed;
+}
+
+/**
+ * ofono_modem_org_ofono_handsfree_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link>.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoHandsfreeSkeleton): The skeleton object.
+ */
+OFONOMODEMOrgOfonoHandsfree *
+ofono_modem_org_ofono_handsfree_skeleton_new (void)
+{
+  return OFONO_MODEM_ORG_OFONO_HANDSFREE (g_object_new (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.CallVolume
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMOrgOfonoCallVolume
+ * @title: OFONOMODEMOrgOfonoCallVolume
+ * @short_description: Generated C code for the org.ofono.CallVolume D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.CallVolume ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_call_volume_method_info_get_properties_OUT_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_call_volume_method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_call_volume_method_info_get_properties_OUT_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_call_volume_method_info_get_properties =
+{
+  {
+    -1,
+    (gchar *) "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_call_volume_method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_call_volume_method_info_set_property_IN_ARG_property =
+{
+  {
+    -1,
+    (gchar *) "property",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_call_volume_method_info_set_property_IN_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_call_volume_method_info_set_property_IN_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_call_volume_method_info_set_property_IN_ARG_property,
+  &_ofono_modem_org_ofono_call_volume_method_info_set_property_IN_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_call_volume_method_info_set_property =
+{
+  {
+    -1,
+    (gchar *) "SetProperty",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_call_volume_method_info_set_property_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-set-property",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_modem_org_ofono_call_volume_method_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_call_volume_method_info_get_properties,
+  &_ofono_modem_org_ofono_call_volume_method_info_set_property,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_call_volume_signal_info_property_changed_ARG_property =
+{
+  {
+    -1,
+    (gchar *) "property",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_call_volume_signal_info_property_changed_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_call_volume_signal_info_property_changed_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_call_volume_signal_info_property_changed_ARG_property,
+  &_ofono_modem_org_ofono_call_volume_signal_info_property_changed_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_call_volume_signal_info_property_changed =
+{
+  {
+    -1,
+    (gchar *) "PropertyChanged",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_call_volume_signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_modem_org_ofono_call_volume_signal_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_call_volume_signal_info_property_changed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_modem_org_ofono_call_volume_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.CallVolume",
+    (GDBusMethodInfo **) &_ofono_modem_org_ofono_call_volume_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_modem_org_ofono_call_volume_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-call-volume",
+};
+
+
+/**
+ * ofono_modem_org_ofono_call_volume_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_modem_org_ofono_call_volume_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_modem_org_ofono_call_volume_interface_info.parent_struct;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOMODEMOrgOfonoCallVolume interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_modem_org_ofono_call_volume_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOMODEMOrgOfonoCallVolume:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link>.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoCallVolumeIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_properties: Handler for the #OFONOMODEMOrgOfonoCallVolume::handle-get-properties signal.
+ * @handle_set_property: Handler for the #OFONOMODEMOrgOfonoCallVolume::handle-set-property signal.
+ * @property_changed: Handler for the #OFONOMODEMOrgOfonoCallVolume::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link>.
+ */
+
+typedef OFONOMODEMOrgOfonoCallVolumeIface OFONOMODEMOrgOfonoCallVolumeInterface;
+G_DEFINE_INTERFACE (OFONOMODEMOrgOfonoCallVolume, ofono_modem_org_ofono_call_volume, G_TYPE_OBJECT);
+
+static void
+ofono_modem_org_ofono_call_volume_default_init (OFONOMODEMOrgOfonoCallVolumeIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOMODEMOrgOfonoCallVolume::handle-get-properties:
+   * @object: A #OFONOMODEMOrgOfonoCallVolume.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-CallVolume.GetProperties">GetProperties()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_call_volume_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-properties",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoCallVolumeIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoCallVolume::handle-set-property:
+   * @object: A #OFONOMODEMOrgOfonoCallVolume.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_property: Argument passed by remote caller.
+   * @arg_value: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-CallVolume.SetProperty">SetProperty()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_call_volume_complete_set_property() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-set-property",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoCallVolumeIface, handle_set_property),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOMODEMOrgOfonoCallVolume::property-changed:
+   * @object: A #OFONOMODEMOrgOfonoCallVolume.
+   * @arg_property: Argument.
+   * @arg_value: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-CallVolume.PropertyChanged">"PropertyChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("property-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoCallVolumeIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_emit_property_changed:
+ * @object: A #OFONOMODEMOrgOfonoCallVolume.
+ * @arg_property: Argument to pass with the signal.
+ * @arg_value: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-CallVolume.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_call_volume_emit_property_changed (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    const gchar *arg_property,
+    GVariant *arg_value)
+{
+  g_signal_emit_by_name (object, "property-changed", arg_property, arg_value);
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_call_get_properties:
+ * @proxy: A #OFONOMODEMOrgOfonoCallVolumeProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-CallVolume.GetProperties">GetProperties()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_call_volume_call_get_properties_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_call_volume_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_call_volume_call_get_properties (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_call_get_properties_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoCallVolumeProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_call_volume_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_call_volume_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_call_volume_call_get_properties_finish (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_call_get_properties_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoCallVolumeProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-CallVolume.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_call_volume_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_call_volume_call_get_properties_sync (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_call_set_property:
+ * @proxy: A #OFONOMODEMOrgOfonoCallVolumeProxy.
+ * @arg_property: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-CallVolume.SetProperty">SetProperty()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_call_volume_call_set_property_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_call_volume_call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_call_volume_call_set_property (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_property,
+                   arg_value),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_call_set_property_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoCallVolumeProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_call_volume_call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_call_volume_call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_call_volume_call_set_property_finish (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_call_set_property_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoCallVolumeProxy.
+ * @arg_property: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-CallVolume.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_call_volume_call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_call_volume_call_set_property_sync (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_property,
+                   arg_value),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_complete_get_properties:
+ * @object: A #OFONOMODEMOrgOfonoCallVolume.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-CallVolume.GetProperties">GetProperties()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_call_volume_complete_get_properties (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   properties));
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_complete_set_property:
+ * @object: A #OFONOMODEMOrgOfonoCallVolume.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-CallVolume.SetProperty">SetProperty()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_call_volume_complete_set_property (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoCallVolumeProxy:
+ *
+ * The #OFONOMODEMOrgOfonoCallVolumeProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoCallVolumeProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoCallVolumeProxy.
+ */
+
+struct _OFONOMODEMOrgOfonoCallVolumeProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_modem_org_ofono_call_volume_proxy_iface_init (OFONOMODEMOrgOfonoCallVolumeIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoCallVolumeProxy, ofono_modem_org_ofono_call_volume_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoCallVolumeProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME, ofono_modem_org_ofono_call_volume_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoCallVolumeProxy, ofono_modem_org_ofono_call_volume_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME, ofono_modem_org_ofono_call_volume_proxy_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_call_volume_proxy_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoCallVolumeProxy *proxy = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_call_volume_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_call_volume_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_call_volume_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_call_volume_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_call_volume_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_modem_org_ofono_call_volume_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOMODEMOrgOfonoCallVolumeProxy *proxy = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_call_volume_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_call_volume_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_modem_org_ofono_call_volume_proxy_init (OFONOMODEMOrgOfonoCallVolumeProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_modem_org_ofono_call_volume_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, OFONOMODEMOrgOfonoCallVolumeProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_modem_org_ofono_call_volume_interface_info ());
+}
+
+static void
+ofono_modem_org_ofono_call_volume_proxy_class_init (OFONOMODEMOrgOfonoCallVolumeProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_modem_org_ofono_call_volume_proxy_finalize;
+  gobject_class->get_property = ofono_modem_org_ofono_call_volume_proxy_get_property;
+  gobject_class->set_property = ofono_modem_org_ofono_call_volume_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_modem_org_ofono_call_volume_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_modem_org_ofono_call_volume_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoCallVolumeProxyPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_call_volume_proxy_iface_init (OFONOMODEMOrgOfonoCallVolumeIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_call_volume_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_call_volume_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_call_volume_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.CallVolume", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_call_volume_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_call_volume_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoCallVolumeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoCallVolume *
+ofono_modem_org_ofono_call_volume_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_CALL_VOLUME (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_call_volume_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoCallVolumeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoCallVolume *
+ofono_modem_org_ofono_call_volume_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.CallVolume", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_CALL_VOLUME (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_org_ofono_call_volume_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_org_ofono_call_volume_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_call_volume_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_call_volume_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_call_volume_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.CallVolume", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_call_volume_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_call_volume_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoCallVolumeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoCallVolume *
+ofono_modem_org_ofono_call_volume_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_CALL_VOLUME (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_org_ofono_call_volume_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_call_volume_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoCallVolumeProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoCallVolume *
+ofono_modem_org_ofono_call_volume_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.CallVolume", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_CALL_VOLUME (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoCallVolumeSkeleton:
+ *
+ * The #OFONOMODEMOrgOfonoCallVolumeSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoCallVolumeSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoCallVolumeSkeleton.
+ */
+
+struct _OFONOMODEMOrgOfonoCallVolumeSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_modem_org_ofono_call_volume_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoCallVolumeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_modem_org_ofono_call_volume_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoCallVolumeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_call_volume_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_modem_org_ofono_call_volume_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoCallVolumeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_call_volume_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_modem_org_ofono_call_volume_skeleton_vtable =
+{
+  _ofono_modem_org_ofono_call_volume_skeleton_handle_method_call,
+  _ofono_modem_org_ofono_call_volume_skeleton_handle_get_property,
+  _ofono_modem_org_ofono_call_volume_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_modem_org_ofono_call_volume_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_modem_org_ofono_call_volume_skeleton_vtable;
+}
+
+static GVariant *
+ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOMODEMOrgOfonoCallVolumeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_modem_org_ofono_call_volume_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_modem_org_ofono_call_volume_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_modem_org_ofono_call_volume_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_modem_org_ofono_call_volume_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.CallVolume", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_modem_org_ofono_call_volume_on_signal_property_changed (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    const gchar *arg_property,
+    GVariant *arg_value)
+{
+  OFONOMODEMOrgOfonoCallVolumeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+                   arg_property,
+                   arg_value));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.CallVolume", "PropertyChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_modem_org_ofono_call_volume_skeleton_iface_init (OFONOMODEMOrgOfonoCallVolumeIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoCallVolumeSkeleton, ofono_modem_org_ofono_call_volume_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoCallVolumeSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME, ofono_modem_org_ofono_call_volume_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoCallVolumeSkeleton, ofono_modem_org_ofono_call_volume_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME, ofono_modem_org_ofono_call_volume_skeleton_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_call_volume_skeleton_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoCallVolumeSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_call_volume_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_call_volume_skeleton_init (OFONOMODEMOrgOfonoCallVolumeSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_modem_org_ofono_call_volume_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON, OFONOMODEMOrgOfonoCallVolumeSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_modem_org_ofono_call_volume_skeleton_class_init (OFONOMODEMOrgOfonoCallVolumeSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_modem_org_ofono_call_volume_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_modem_org_ofono_call_volume_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoCallVolumeSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_call_volume_skeleton_iface_init (OFONOMODEMOrgOfonoCallVolumeIface *iface)
+{
+  iface->property_changed = _ofono_modem_org_ofono_call_volume_on_signal_property_changed;
+}
+
+/**
+ * ofono_modem_org_ofono_call_volume_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link>.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoCallVolumeSkeleton): The skeleton object.
+ */
+OFONOMODEMOrgOfonoCallVolume *
+ofono_modem_org_ofono_call_volume_skeleton_new (void)
+{
+  return OFONO_MODEM_ORG_OFONO_CALL_VOLUME (g_object_new (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.ofono.VoiceCallManager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMOrgOfonoVoiceCallManager
+ * @title: OFONOMODEMOrgOfonoVoiceCallManager
+ * @short_description: Generated C code for the org.ofono.VoiceCallManager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.VoiceCallManager ---- */
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_get_properties =
+{
+  {
+    -1,
+    (gchar *) "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_dial_IN_ARG_number =
+{
+  {
+    -1,
+    (gchar *) "number",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_dial_IN_ARG_hide_callerid =
+{
+  {
+    -1,
+    (gchar *) "hide_callerid",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_dial_IN_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_dial_IN_ARG_number,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_dial_IN_ARG_hide_callerid,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_dial_OUT_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_dial_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_dial_OUT_ARG_path,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_dial =
+{
+  {
+    -1,
+    (gchar *) "Dial",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_dial_IN_ARG_pointers,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_dial_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-dial",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_transfer =
+{
+  {
+    -1,
+    (gchar *) "Transfer",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-transfer",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_swap_calls =
+{
+  {
+    -1,
+    (gchar *) "SwapCalls",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-swap-calls",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_release_and_answer =
+{
+  {
+    -1,
+    (gchar *) "ReleaseAndAnswer",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-release-and-answer",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_release_and_swap =
+{
+  {
+    -1,
+    (gchar *) "ReleaseAndSwap",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-release-and-swap",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_hold_and_answer =
+{
+  {
+    -1,
+    (gchar *) "HoldAndAnswer",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-hold-and-answer",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_hangup_all =
+{
+  {
+    -1,
+    (gchar *) "HangupAll",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-hangup-all",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_call =
+{
+  {
+    -1,
+    (gchar *) "call",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_call,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_calls =
+{
+  {
+    -1,
+    (gchar *) "calls",
+    (gchar *) "ao",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_calls,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_private_chat =
+{
+  {
+    -1,
+    (gchar *) "PrivateChat",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_pointers,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-private-chat",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_calls =
+{
+  {
+    -1,
+    (gchar *) "calls",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_calls,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_create_multiparty =
+{
+  {
+    -1,
+    (gchar *) "CreateMultiparty",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-create-multiparty",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_hangup_multiparty =
+{
+  {
+    -1,
+    (gchar *) "HangupMultiparty",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-hangup-multiparty",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_SendTones =
+{
+  {
+    -1,
+    (gchar *) "SendTones",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_SendTones,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_send_tones =
+{
+  {
+    -1,
+    (gchar *) "SendTones",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-send-tones",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_calls_with_properties =
+{
+  {
+    -1,
+    (gchar *) "calls_with_properties",
+    (gchar *) "a(oa{sv})",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_calls_with_properties,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _ofono_modem_org_ofono_voice_call_manager_method_info_get_calls =
+{
+  {
+    -1,
+    (gchar *) "GetCalls",
+    NULL,
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-calls",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _ofono_modem_org_ofono_voice_call_manager_method_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_get_properties,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_dial,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_transfer,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_swap_calls,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_release_and_answer,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_release_and_swap,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_hold_and_answer,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_hangup_all,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_private_chat,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_create_multiparty,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_hangup_multiparty,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_send_tones,
+  &_ofono_modem_org_ofono_voice_call_manager_method_info_get_calls,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_forwarded_ARG_type =
+{
+  {
+    -1,
+    (gchar *) "type",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_signal_info_forwarded_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_forwarded_ARG_type,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_forwarded =
+{
+  {
+    -1,
+    (gchar *) "Forwarded",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_signal_info_forwarded_ARG_pointers,
+    NULL
+  },
+  "forwarded"
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_barring_active_ARG_type =
+{
+  {
+    -1,
+    (gchar *) "type",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_signal_info_barring_active_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_barring_active_ARG_type,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_barring_active =
+{
+  {
+    -1,
+    (gchar *) "BarringActive",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_signal_info_barring_active_ARG_pointers,
+    NULL
+  },
+  "barring-active"
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed_ARG_name =
+{
+  {
+    -1,
+    (gchar *) "name",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed_ARG_value =
+{
+  {
+    -1,
+    (gchar *) "value",
+    (gchar *) "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed_ARG_name,
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed_ARG_value,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed =
+{
+  {
+    -1,
+    (gchar *) "PropertyChanged",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_call_added_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_call_added_ARG_properties =
+{
+  {
+    -1,
+    (gchar *) "properties",
+    (gchar *) "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_signal_info_call_added_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_call_added_ARG_path,
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_call_added_ARG_properties,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_call_added =
+{
+  {
+    -1,
+    (gchar *) "CallAdded",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_signal_info_call_added_ARG_pointers,
+    NULL
+  },
+  "call-added"
+};
+
+static const _ExtendedGDBusArgInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_call_removed_ARG_path =
+{
+  {
+    -1,
+    (gchar *) "path",
+    (gchar *) "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _ofono_modem_org_ofono_voice_call_manager_signal_info_call_removed_ARG_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_call_removed_ARG_path,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _ofono_modem_org_ofono_voice_call_manager_signal_info_call_removed =
+{
+  {
+    -1,
+    (gchar *) "CallRemoved",
+    (GDBusArgInfo **) &_ofono_modem_org_ofono_voice_call_manager_signal_info_call_removed_ARG_pointers,
+    NULL
+  },
+  "call-removed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _ofono_modem_org_ofono_voice_call_manager_signal_info_pointers[] =
+{
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_forwarded,
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_barring_active,
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_property_changed,
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_call_added,
+  &_ofono_modem_org_ofono_voice_call_manager_signal_info_call_removed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _ofono_modem_org_ofono_voice_call_manager_interface_info =
+{
+  {
+    -1,
+    (gchar *) "org.ofono.VoiceCallManager",
+    (GDBusMethodInfo **) &_ofono_modem_org_ofono_voice_call_manager_method_info_pointers,
+    (GDBusSignalInfo **) &_ofono_modem_org_ofono_voice_call_manager_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-ofono-voice-call-manager",
+};
+
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+ofono_modem_org_ofono_voice_call_manager_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OFONOMODEMOrgOfonoVoiceCallManager interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+ofono_modem_org_ofono_voice_call_manager_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OFONOMODEMOrgOfonoVoiceCallManager:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoVoiceCallManagerIface:
+ * @parent_iface: The parent interface.
+ * @handle_create_multiparty: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-create-multiparty signal.
+ * @handle_dial: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-dial signal.
+ * @handle_get_calls: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-get-calls signal.
+ * @handle_get_properties: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-get-properties signal.
+ * @handle_hangup_all: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-hangup-all signal.
+ * @handle_hangup_multiparty: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-hangup-multiparty signal.
+ * @handle_hold_and_answer: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-hold-and-answer signal.
+ * @handle_private_chat: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-private-chat signal.
+ * @handle_release_and_answer: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-release-and-answer signal.
+ * @handle_release_and_swap: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-release-and-swap signal.
+ * @handle_send_tones: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-send-tones signal.
+ * @handle_swap_calls: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-swap-calls signal.
+ * @handle_transfer: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::handle-transfer signal.
+ * @barring_active: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::barring-active signal.
+ * @call_added: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::call-added signal.
+ * @call_removed: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::call-removed signal.
+ * @forwarded: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::forwarded signal.
+ * @property_changed: Handler for the #OFONOMODEMOrgOfonoVoiceCallManager::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>.
+ */
+
+typedef OFONOMODEMOrgOfonoVoiceCallManagerIface OFONOMODEMOrgOfonoVoiceCallManagerInterface;
+G_DEFINE_INTERFACE (OFONOMODEMOrgOfonoVoiceCallManager, ofono_modem_org_ofono_voice_call_manager, G_TYPE_OBJECT);
+
+static void
+ofono_modem_org_ofono_voice_call_manager_default_init (OFONOMODEMOrgOfonoVoiceCallManagerIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-get-properties:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetProperties">GetProperties()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-properties",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-dial:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_number: Argument passed by remote caller.
+   * @arg_hide_callerid: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Dial">Dial()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_dial() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-dial",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_dial),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-transfer:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Transfer">Transfer()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_transfer() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-transfer",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_transfer),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-swap-calls:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SwapCalls">SwapCalls()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_swap_calls() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-swap-calls",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_swap_calls),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-release-and-answer:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_release_and_answer() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-release-and-answer",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_release_and_answer),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-release-and-swap:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndSwap">ReleaseAndSwap()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_release_and_swap() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-release-and-swap",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_release_and_swap),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-hold-and-answer:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_hold_and_answer() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-hold-and-answer",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_hold_and_answer),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-hangup-all:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupAll">HangupAll()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_hangup_all() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-hangup-all",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_hangup_all),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-private-chat:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_call: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.PrivateChat">PrivateChat()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_private_chat() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-private-chat",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_private_chat),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-create-multiparty:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_create_multiparty() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-create-multiparty",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_create_multiparty),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-hangup-multiparty:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_hangup_multiparty() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-hangup-multiparty",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_hangup_multiparty),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-send-tones:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_SendTones: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SendTones">SendTones()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_send_tones() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-send-tones",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_send_tones),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::handle-get-calls:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetCalls">GetCalls()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ofono_modem_org_ofono_voice_call_manager_complete_get_calls() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-calls",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, handle_get_calls),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::forwarded:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @arg_type: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.Forwarded">"Forwarded"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("forwarded",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, forwarded),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::barring-active:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @arg_type: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.BarringActive">"BarringActive"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("barring-active",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, barring_active),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::property-changed:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @arg_name: Argument.
+   * @arg_value: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.PropertyChanged">"PropertyChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("property-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::call-added:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @arg_path: Argument.
+   * @arg_properties: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.CallAdded">"CallAdded"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("call-added",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, call_added),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OFONOMODEMOrgOfonoVoiceCallManager::call-removed:
+   * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+   * @arg_path: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.CallRemoved">"CallRemoved"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("call-removed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OFONOMODEMOrgOfonoVoiceCallManagerIface, call_removed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_emit_forwarded:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @arg_type: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.Forwarded">"Forwarded"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_emit_forwarded (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type)
+{
+  g_signal_emit_by_name (object, "forwarded", arg_type);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_emit_barring_active:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @arg_type: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.BarringActive">"BarringActive"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_emit_barring_active (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type)
+{
+  g_signal_emit_by_name (object, "barring-active", arg_type);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_emit_property_changed:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @arg_name: Argument to pass with the signal.
+ * @arg_value: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_emit_property_changed (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  g_signal_emit_by_name (object, "property-changed", arg_name, arg_value);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_emit_call_added:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @arg_path: Argument to pass with the signal.
+ * @arg_properties: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.CallAdded">"CallAdded"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_emit_call_added (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties)
+{
+  g_signal_emit_by_name (object, "call-added", arg_path, arg_properties);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_emit_call_removed:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @arg_path: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.CallRemoved">"CallRemoved"</link> D-Bus signal.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_emit_call_removed (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path)
+{
+  g_signal_emit_by_name (object, "call-removed", arg_path);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_get_properties:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetProperties">GetProperties()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_get_properties_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_get_properties (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_get_properties_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_get_properties_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_get_properties_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_get_properties_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_dial:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @arg_number: Argument to pass with the method invocation.
+ * @arg_hide_callerid: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Dial">Dial()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_dial_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_dial_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_dial (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_number,
+    const gchar *arg_hide_callerid,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Dial",
+    g_variant_new ("(ss)",
+                   arg_number,
+                   arg_hide_callerid),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_dial_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_path: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_dial().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_dial().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_dial_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar **out_path,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_path);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_dial_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @arg_number: Argument to pass with the method invocation.
+ * @arg_hide_callerid: Argument to pass with the method invocation.
+ * @out_path: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Dial">Dial()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_dial() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_dial_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_number,
+    const gchar *arg_hide_callerid,
+    gchar **out_path,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Dial",
+    g_variant_new ("(ss)",
+                   arg_number,
+                   arg_hide_callerid),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_path);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_transfer:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Transfer">Transfer()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_transfer_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_transfer_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_transfer (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Transfer",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_transfer_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_transfer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_transfer().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_transfer_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_transfer_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Transfer">Transfer()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_transfer() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_transfer_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Transfer",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_swap_calls:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SwapCalls">SwapCalls()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_swap_calls_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_swap_calls_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_swap_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "SwapCalls",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_swap_calls_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_swap_calls().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_swap_calls().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_swap_calls_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_swap_calls_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SwapCalls">SwapCalls()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_swap_calls() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_swap_calls_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "SwapCalls",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_release_and_answer:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_release_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "ReleaseAndAnswer",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_release_and_answer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_release_and_answer().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_release_and_answer() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "ReleaseAndAnswer",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_release_and_swap:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndSwap">ReleaseAndSwap()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_release_and_swap (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "ReleaseAndSwap",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_release_and_swap().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_release_and_swap().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndSwap">ReleaseAndSwap()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_release_and_swap() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "ReleaseAndSwap",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "HoldAndAnswer",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "HoldAndAnswer",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hangup_all:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupAll">HangupAll()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_hangup_all_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_hangup_all_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_hangup_all (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "HangupAll",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hangup_all_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_hangup_all().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_hangup_all().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_hangup_all_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hangup_all_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupAll">HangupAll()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_hangup_all() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_hangup_all_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "HangupAll",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_private_chat:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @arg_call: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.PrivateChat">PrivateChat()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_private_chat_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_private_chat_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_private_chat (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_call,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "PrivateChat",
+    g_variant_new ("(o)",
+                   arg_call),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_private_chat_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_calls: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_private_chat().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_private_chat().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_private_chat_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar ***out_calls,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(^ao)",
+                 out_calls);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_private_chat_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @arg_call: Argument to pass with the method invocation.
+ * @out_calls: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.PrivateChat">PrivateChat()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_private_chat() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_private_chat_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_call,
+    gchar ***out_calls,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "PrivateChat",
+    g_variant_new ("(o)",
+                   arg_call),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(^ao)",
+                 out_calls);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_create_multiparty:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_create_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "CreateMultiparty",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_calls: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_create_multiparty().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_create_multiparty().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar **out_calls,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_calls);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_calls: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_create_multiparty() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar **out_calls,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "CreateMultiparty",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_calls);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "HangupMultiparty",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "HangupMultiparty",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_send_tones:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @arg_SendTones: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SendTones">SendTones()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_send_tones_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_send_tones_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_send_tones (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_SendTones,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "SendTones",
+    g_variant_new ("(s)",
+                   arg_SendTones),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_send_tones_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_send_tones().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_send_tones().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_send_tones_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_send_tones_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @arg_SendTones: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SendTones">SendTones()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_send_tones() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_send_tones_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_SendTones,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "SendTones",
+    g_variant_new ("(s)",
+                   arg_SendTones),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_get_calls:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetCalls">GetCalls()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_call_get_calls_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_get_calls_sync() for the synchronous, blocking version of this method.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_call_get_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetCalls",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_get_calls_finish:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_calls_with_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_call_get_calls().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_call_get_calls().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_get_calls_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_calls_with_properties,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_calls_with_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_call_get_calls_sync:
+ * @proxy: A #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ * @out_calls_with_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetCalls">GetCalls()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_call_get_calls() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+ofono_modem_org_ofono_voice_call_manager_call_get_calls_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_calls_with_properties,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetCalls",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a(oa{sv}))",
+                 out_calls_with_properties);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_get_properties:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetProperties">GetProperties()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_get_properties (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   properties));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_dial:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @path: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Dial">Dial()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_dial (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *path)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(o)",
+                   path));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_transfer:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Transfer">Transfer()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_transfer (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_swap_calls:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SwapCalls">SwapCalls()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_swap_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_release_and_answer:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_release_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_release_and_swap:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndSwap">ReleaseAndSwap()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_release_and_swap (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_hold_and_answer:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_hold_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_hangup_all:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupAll">HangupAll()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_hangup_all (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_private_chat:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @calls: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.PrivateChat">PrivateChat()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_private_chat (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *const *calls)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(^ao)",
+                   calls));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_create_multiparty:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @calls: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_create_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *calls)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(o)",
+                   calls));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_hangup_multiparty:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_hangup_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_send_tones:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SendTones">SendTones()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_send_tones (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_complete_get_calls:
+ * @object: A #OFONOMODEMOrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @calls_with_properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetCalls">GetCalls()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_complete_get_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *calls_with_properties)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a(oa{sv}))",
+                   calls_with_properties));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoVoiceCallManagerProxy:
+ *
+ * The #OFONOMODEMOrgOfonoVoiceCallManagerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoVoiceCallManagerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoVoiceCallManagerProxy.
+ */
+
+struct _OFONOMODEMOrgOfonoVoiceCallManagerProxyPrivate
+{
+  GData *qdata;
+};
+
+static void ofono_modem_org_ofono_voice_call_manager_proxy_iface_init (OFONOMODEMOrgOfonoVoiceCallManagerIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoVoiceCallManagerProxy, ofono_modem_org_ofono_voice_call_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoVoiceCallManagerProxy)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER, ofono_modem_org_ofono_voice_call_manager_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoVoiceCallManagerProxy, ofono_modem_org_ofono_voice_call_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER, ofono_modem_org_ofono_voice_call_manager_proxy_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerProxy *proxy = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_voice_call_manager_proxy_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerProxy *proxy = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_init (OFONOMODEMOrgOfonoVoiceCallManagerProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = ofono_modem_org_ofono_voice_call_manager_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OFONOMODEMOrgOfonoVoiceCallManagerProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ofono_modem_org_ofono_voice_call_manager_interface_info ());
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_class_init (OFONOMODEMOrgOfonoVoiceCallManagerProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = ofono_modem_org_ofono_voice_call_manager_proxy_finalize;
+  gobject_class->get_property = ofono_modem_org_ofono_voice_call_manager_proxy_get_property;
+  gobject_class->set_property = ofono_modem_org_ofono_voice_call_manager_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = ofono_modem_org_ofono_voice_call_manager_proxy_g_signal;
+  proxy_class->g_properties_changed = ofono_modem_org_ofono_voice_call_manager_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoVoiceCallManagerProxyPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_proxy_iface_init (OFONOMODEMOrgOfonoVoiceCallManagerIface *iface)
+{
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_proxy_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_proxy_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoVoiceCallManager *
+ofono_modem_org_ofono_voice_call_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoVoiceCallManager *
+ofono_modem_org_ofono_voice_call_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_org_ofono_voice_call_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoVoiceCallManager *
+ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_org_ofono_voice_call_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OFONOMODEMOrgOfonoVoiceCallManager *
+ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+  if (ret != NULL)
+    return OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OFONOMODEMOrgOfonoVoiceCallManagerSkeleton:
+ *
+ * The #OFONOMODEMOrgOfonoVoiceCallManagerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMOrgOfonoVoiceCallManagerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMOrgOfonoVoiceCallManagerSkeleton.
+ */
+
+struct _OFONOMODEMOrgOfonoVoiceCallManagerSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_ofono_modem_org_ofono_voice_call_manager_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_ofono_modem_org_ofono_voice_call_manager_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_ofono_modem_org_ofono_voice_call_manager_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _ofono_modem_org_ofono_voice_call_manager_skeleton_vtable =
+{
+  _ofono_modem_org_ofono_voice_call_manager_skeleton_handle_method_call,
+  _ofono_modem_org_ofono_voice_call_manager_skeleton_handle_get_property,
+  _ofono_modem_org_ofono_voice_call_manager_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return ofono_modem_org_ofono_voice_call_manager_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_ofono_modem_org_ofono_voice_call_manager_skeleton_vtable;
+}
+
+static GVariant *
+ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _ofono_modem_org_ofono_voice_call_manager_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _ofono_modem_org_ofono_voice_call_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_ofono_modem_org_ofono_voice_call_manager_on_signal_forwarded (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
+                   arg_type));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "Forwarded",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_ofono_modem_org_ofono_voice_call_manager_on_signal_barring_active (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
+                   arg_type));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "BarringActive",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_ofono_modem_org_ofono_voice_call_manager_on_signal_property_changed (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_name,
+    GVariant *arg_value)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+                   arg_name,
+                   arg_value));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "PropertyChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_ofono_modem_org_ofono_voice_call_manager_on_signal_call_added (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o@a{sv})",
+                   arg_path,
+                   arg_properties));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "CallAdded",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_ofono_modem_org_ofono_voice_call_manager_on_signal_call_removed (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_path));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "CallRemoved",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void ofono_modem_org_ofono_voice_call_manager_skeleton_iface_init (OFONOMODEMOrgOfonoVoiceCallManagerIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoVoiceCallManagerSkeleton, ofono_modem_org_ofono_voice_call_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (OFONOMODEMOrgOfonoVoiceCallManagerSkeleton)
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER, ofono_modem_org_ofono_voice_call_manager_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMOrgOfonoVoiceCallManagerSkeleton, ofono_modem_org_ofono_voice_call_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER, ofono_modem_org_ofono_voice_call_manager_skeleton_iface_init));
+
+#endif
+static void
+ofono_modem_org_ofono_voice_call_manager_skeleton_finalize (GObject *object)
+{
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton = OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (ofono_modem_org_ofono_voice_call_manager_skeleton_parent_class)->finalize (object);
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_skeleton_init (OFONOMODEMOrgOfonoVoiceCallManagerSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = ofono_modem_org_ofono_voice_call_manager_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OFONOMODEMOrgOfonoVoiceCallManagerSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_skeleton_class_init (OFONOMODEMOrgOfonoVoiceCallManagerSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = ofono_modem_org_ofono_voice_call_manager_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = ofono_modem_org_ofono_voice_call_manager_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (OFONOMODEMOrgOfonoVoiceCallManagerSkeletonPrivate));
+#endif
+}
+
+static void
+ofono_modem_org_ofono_voice_call_manager_skeleton_iface_init (OFONOMODEMOrgOfonoVoiceCallManagerIface *iface)
+{
+  iface->forwarded = _ofono_modem_org_ofono_voice_call_manager_on_signal_forwarded;
+  iface->barring_active = _ofono_modem_org_ofono_voice_call_manager_on_signal_barring_active;
+  iface->property_changed = _ofono_modem_org_ofono_voice_call_manager_on_signal_property_changed;
+  iface->call_added = _ofono_modem_org_ofono_voice_call_manager_on_signal_call_added;
+  iface->call_removed = _ofono_modem_org_ofono_voice_call_manager_on_signal_call_removed;
+}
+
+/**
+ * ofono_modem_org_ofono_voice_call_manager_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>.
+ *
+ * Returns: (transfer full) (type OFONOMODEMOrgOfonoVoiceCallManagerSkeleton): The skeleton object.
+ */
+OFONOMODEMOrgOfonoVoiceCallManager *
+ofono_modem_org_ofono_voice_call_manager_skeleton_new (void)
+{
+  return OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER (g_object_new (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for Object, ObjectProxy and ObjectSkeleton
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMObject
+ * @title: OFONOMODEMObject
+ * @short_description: Specialized GDBusObject types
+ *
+ * This section contains the #OFONOMODEMObject, #OFONOMODEMObjectProxy, and #OFONOMODEMObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.
+ */
+
+/**
+ * OFONOMODEMObject:
+ *
+ * The #OFONOMODEMObject type is a specialized container of interfaces.
+ */
+
+/**
+ * OFONOMODEMObjectIface:
+ * @parent_iface: The parent interface.
+ *
+ * Virtual table for the #OFONOMODEMObject interface.
+ */
+
+typedef OFONOMODEMObjectIface OFONOMODEMObjectInterface;
+G_DEFINE_INTERFACE_WITH_CODE (OFONOMODEMObject, ofono_modem_object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT));
+
+static void
+ofono_modem_object_default_init (OFONOMODEMObjectIface *iface)
+{
+  /**
+   * OFONOMODEMObject:org-freedesktop-dbus-introspectable:
+   *
+   * The #OFONOMODEMOrgFreedesktopDBusIntrospectable instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-freedesktop-dbus-introspectable", "org-freedesktop-dbus-introspectable", "org-freedesktop-dbus-introspectable", OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOMODEMObject:org-ofono-modem:
+   *
+   * The #OFONOMODEMOrgOfonoModem instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-modem", "org-ofono-modem", "org-ofono-modem", OFONO_MODEM_TYPE_ORG_OFONO_MODEM, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOMODEMObject:org-ofono-network-time:
+   *
+   * The #OFONOMODEMOrgOfonoNetworkTime instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-network-time", "org-ofono-network-time", "org-ofono-network-time", OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOMODEMObject:org-ofono-network-registration:
+   *
+   * The #OFONOMODEMOrgOfonoNetworkRegistration instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-network-registration", "org-ofono-network-registration", "org-ofono-network-registration", OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOMODEMObject:org-ofono-handsfree:
+   *
+   * The #OFONOMODEMOrgOfonoHandsfree instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-handsfree", "org-ofono-handsfree", "org-ofono-handsfree", OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOMODEMObject:org-ofono-call-volume:
+   *
+   * The #OFONOMODEMOrgOfonoCallVolume instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-call-volume", "org-ofono-call-volume", "org-ofono-call-volume", OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+  /**
+   * OFONOMODEMObject:org-ofono-voice-call-manager:
+   *
+   * The #OFONOMODEMOrgOfonoVoiceCallManager instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>, if any.
+   *
+   * Connect to the #GObject::notify signal to get informed of property changes.
+   */
+  g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-voice-call-manager", "org-ofono-voice-call-manager", "org-ofono-voice-call-manager", OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+}
+
+/**
+ * ofono_modem_object_get_org_freedesktop_dbus_introspectable:
+ * @object: A #OFONOMODEMObject.
+ *
+ * Gets the #OFONOMODEMOrgFreedesktopDBusIntrospectable instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOMODEMOrgFreedesktopDBusIntrospectable that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_object_get_org_freedesktop_dbus_introspectable (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+}
+
+/**
+ * ofono_modem_object_get_org_ofono_modem:
+ * @object: A #OFONOMODEMObject.
+ *
+ * Gets the #OFONOMODEMOrgOfonoModem instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOMODEMOrgOfonoModem that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOMODEMOrgOfonoModem *ofono_modem_object_get_org_ofono_modem (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Modem");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_MODEM_ORG_OFONO_MODEM (ret);
+}
+
+/**
+ * ofono_modem_object_get_org_ofono_network_time:
+ * @object: A #OFONOMODEMObject.
+ *
+ * Gets the #OFONOMODEMOrgOfonoNetworkTime instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOMODEMOrgOfonoNetworkTime that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_object_get_org_ofono_network_time (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkTime");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_MODEM_ORG_OFONO_NETWORK_TIME (ret);
+}
+
+/**
+ * ofono_modem_object_get_org_ofono_network_registration:
+ * @object: A #OFONOMODEMObject.
+ *
+ * Gets the #OFONOMODEMOrgOfonoNetworkRegistration instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOMODEMOrgOfonoNetworkRegistration that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_object_get_org_ofono_network_registration (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkRegistration");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION (ret);
+}
+
+/**
+ * ofono_modem_object_get_org_ofono_handsfree:
+ * @object: A #OFONOMODEMObject.
+ *
+ * Gets the #OFONOMODEMOrgOfonoHandsfree instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOMODEMOrgOfonoHandsfree that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_object_get_org_ofono_handsfree (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Handsfree");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_MODEM_ORG_OFONO_HANDSFREE (ret);
+}
+
+/**
+ * ofono_modem_object_get_org_ofono_call_volume:
+ * @object: A #OFONOMODEMObject.
+ *
+ * Gets the #OFONOMODEMOrgOfonoCallVolume instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOMODEMOrgOfonoCallVolume that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_object_get_org_ofono_call_volume (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.CallVolume");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_MODEM_ORG_OFONO_CALL_VOLUME (ret);
+}
+
+/**
+ * ofono_modem_object_get_org_ofono_voice_call_manager:
+ * @object: A #OFONOMODEMObject.
+ *
+ * Gets the #OFONOMODEMOrgOfonoVoiceCallManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OFONOMODEMOrgOfonoVoiceCallManager that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_object_get_org_ofono_voice_call_manager (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.VoiceCallManager");
+  if (ret == NULL)
+    return NULL;
+  return OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER (ret);
+}
+
+
+/**
+ * ofono_modem_object_peek_org_freedesktop_dbus_introspectable: (skip)
+ * @object: A #OFONOMODEMObject.
+ *
+ * Like ofono_modem_object_get_org_freedesktop_dbus_introspectable() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOMODEMOrgFreedesktopDBusIntrospectable or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_object_peek_org_freedesktop_dbus_introspectable (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+}
+
+/**
+ * ofono_modem_object_peek_org_ofono_modem: (skip)
+ * @object: A #OFONOMODEMObject.
+ *
+ * Like ofono_modem_object_get_org_ofono_modem() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOMODEMOrgOfonoModem or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOMODEMOrgOfonoModem *ofono_modem_object_peek_org_ofono_modem (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Modem");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_MODEM_ORG_OFONO_MODEM (ret);
+}
+
+/**
+ * ofono_modem_object_peek_org_ofono_network_time: (skip)
+ * @object: A #OFONOMODEMObject.
+ *
+ * Like ofono_modem_object_get_org_ofono_network_time() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOMODEMOrgOfonoNetworkTime or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_object_peek_org_ofono_network_time (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkTime");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_MODEM_ORG_OFONO_NETWORK_TIME (ret);
+}
+
+/**
+ * ofono_modem_object_peek_org_ofono_network_registration: (skip)
+ * @object: A #OFONOMODEMObject.
+ *
+ * Like ofono_modem_object_get_org_ofono_network_registration() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOMODEMOrgOfonoNetworkRegistration or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_object_peek_org_ofono_network_registration (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkRegistration");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION (ret);
+}
+
+/**
+ * ofono_modem_object_peek_org_ofono_handsfree: (skip)
+ * @object: A #OFONOMODEMObject.
+ *
+ * Like ofono_modem_object_get_org_ofono_handsfree() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOMODEMOrgOfonoHandsfree or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_object_peek_org_ofono_handsfree (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Handsfree");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_MODEM_ORG_OFONO_HANDSFREE (ret);
+}
+
+/**
+ * ofono_modem_object_peek_org_ofono_call_volume: (skip)
+ * @object: A #OFONOMODEMObject.
+ *
+ * Like ofono_modem_object_get_org_ofono_call_volume() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOMODEMOrgOfonoCallVolume or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_object_peek_org_ofono_call_volume (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.CallVolume");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_MODEM_ORG_OFONO_CALL_VOLUME (ret);
+}
+
+/**
+ * ofono_modem_object_peek_org_ofono_voice_call_manager: (skip)
+ * @object: A #OFONOMODEMObject.
+ *
+ * Like ofono_modem_object_get_org_ofono_voice_call_manager() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OFONOMODEMOrgOfonoVoiceCallManager or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_object_peek_org_ofono_voice_call_manager (OFONOMODEMObject *object)
+{
+  GDBusInterface *ret;
+  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.VoiceCallManager");
+  if (ret == NULL)
+    return NULL;
+  g_object_unref (ret);
+  return OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER (ret);
+}
+
+
+static void
+ofono_modem_object_notify (GDBusObject *object, GDBusInterface *interface)
+{
+  _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);
+  /* info can be NULL if the other end is using a D-Bus interface we don't know
+   * anything about, for example old generated code in this process talking to
+   * newer generated code in the other process. */
+  if (info != NULL)
+    g_object_notify (G_OBJECT (object), info->hyphen_name);
+}
+
+/**
+ * OFONOMODEMObjectProxy:
+ *
+ * The #OFONOMODEMObjectProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMObjectProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMObjectProxy.
+ */
+
+static void
+ofono_modem_object_proxy__ofono_modem_object_iface_init (OFONOMODEMObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+  iface->interface_added = ofono_modem_object_notify;
+  iface->interface_removed = ofono_modem_object_notify;
+}
+
+
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMObjectProxy, ofono_modem_object_proxy, G_TYPE_DBUS_OBJECT_PROXY,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_OBJECT, ofono_modem_object_proxy__ofono_modem_object_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, ofono_modem_object_proxy__g_dbus_object_iface_init));
+
+static void
+ofono_modem_object_proxy_init (OFONOMODEMObjectProxy *object G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_object_proxy_set_property (GObject      *gobject,
+  guint         prop_id,
+  const GValue *value G_GNUC_UNUSED,
+  GParamSpec   *pspec)
+{
+  G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+}
+
+static void
+ofono_modem_object_proxy_get_property (GObject      *gobject,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+  OFONOMODEMObjectProxy *object = OFONO_MODEM_OBJECT_PROXY (gobject);
+  GDBusInterface *interface;
+
+  switch (prop_id)
+    {
+    case 1:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+      g_value_take_object (value, interface);
+      break;
+
+    case 2:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Modem");
+      g_value_take_object (value, interface);
+      break;
+
+    case 3:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkTime");
+      g_value_take_object (value, interface);
+      break;
+
+    case 4:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkRegistration");
+      g_value_take_object (value, interface);
+      break;
+
+    case 5:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Handsfree");
+      g_value_take_object (value, interface);
+      break;
+
+    case 6:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.CallVolume");
+      g_value_take_object (value, interface);
+      break;
+
+    case 7:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.VoiceCallManager");
+      g_value_take_object (value, interface);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+ofono_modem_object_proxy_class_init (OFONOMODEMObjectProxyClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = ofono_modem_object_proxy_set_property;
+  gobject_class->get_property = ofono_modem_object_proxy_get_property;
+
+  g_object_class_override_property (gobject_class, 1, "org-freedesktop-dbus-introspectable");
+  g_object_class_override_property (gobject_class, 2, "org-ofono-modem");
+  g_object_class_override_property (gobject_class, 3, "org-ofono-network-time");
+  g_object_class_override_property (gobject_class, 4, "org-ofono-network-registration");
+  g_object_class_override_property (gobject_class, 5, "org-ofono-handsfree");
+  g_object_class_override_property (gobject_class, 6, "org-ofono-call-volume");
+  g_object_class_override_property (gobject_class, 7, "org-ofono-voice-call-manager");
+}
+
+/**
+ * ofono_modem_object_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @object_path: An object path.
+ *
+ * Creates a new proxy object.
+ *
+ * Returns: (transfer full): The proxy object.
+ */
+OFONOMODEMObjectProxy *
+ofono_modem_object_proxy_new (GDBusConnection *connection,
+  const gchar *object_path)
+{
+  g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);
+  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+  return OFONO_MODEM_OBJECT_PROXY (g_object_new (OFONO_MODEM_TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL));
+}
+
+/**
+ * OFONOMODEMObjectSkeleton:
+ *
+ * The #OFONOMODEMObjectSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMObjectSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMObjectSkeleton.
+ */
+
+static void
+ofono_modem_object_skeleton__ofono_modem_object_iface_init (OFONOMODEMObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+
+static void
+ofono_modem_object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+  iface->interface_added = ofono_modem_object_notify;
+  iface->interface_removed = ofono_modem_object_notify;
+}
+
+G_DEFINE_TYPE_WITH_CODE (OFONOMODEMObjectSkeleton, ofono_modem_object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,
+                         G_IMPLEMENT_INTERFACE (OFONO_MODEM_TYPE_OBJECT, ofono_modem_object_skeleton__ofono_modem_object_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, ofono_modem_object_skeleton__g_dbus_object_iface_init));
+
+static void
+ofono_modem_object_skeleton_init (OFONOMODEMObjectSkeleton *object G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_object_skeleton_set_property (GObject      *gobject,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+  OFONOMODEMObjectSkeleton *object = OFONO_MODEM_OBJECT_SKELETON (gobject);
+  GDBusInterfaceSkeleton *interface;
+
+  switch (prop_id)
+    {
+    case 1:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_MODEM_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.freedesktop.DBus.Introspectable");
+        }
+      break;
+
+    case 2:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_MODEM_IS_ORG_OFONO_MODEM (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.Modem");
+        }
+      break;
+
+    case 3:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_MODEM_IS_ORG_OFONO_NETWORK_TIME (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.NetworkTime");
+        }
+      break;
+
+    case 4:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_MODEM_IS_ORG_OFONO_NETWORK_REGISTRATION (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.NetworkRegistration");
+        }
+      break;
+
+    case 5:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_MODEM_IS_ORG_OFONO_HANDSFREE (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.Handsfree");
+        }
+      break;
+
+    case 6:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_MODEM_IS_ORG_OFONO_CALL_VOLUME (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.CallVolume");
+        }
+      break;
+
+    case 7:
+      interface = g_value_get_object (value);
+      if (interface != NULL)
+        {
+          g_warn_if_fail (OFONO_MODEM_IS_ORG_OFONO_VOICE_CALL_MANAGER (interface));
+          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+        }
+      else
+        {
+          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.VoiceCallManager");
+        }
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+ofono_modem_object_skeleton_get_property (GObject      *gobject,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+  OFONOMODEMObjectSkeleton *object = OFONO_MODEM_OBJECT_SKELETON (gobject);
+  GDBusInterface *interface;
+
+  switch (prop_id)
+    {
+    case 1:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.DBus.Introspectable");
+      g_value_take_object (value, interface);
+      break;
+
+    case 2:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Modem");
+      g_value_take_object (value, interface);
+      break;
+
+    case 3:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkTime");
+      g_value_take_object (value, interface);
+      break;
+
+    case 4:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.NetworkRegistration");
+      g_value_take_object (value, interface);
+      break;
+
+    case 5:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Handsfree");
+      g_value_take_object (value, interface);
+      break;
+
+    case 6:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.CallVolume");
+      g_value_take_object (value, interface);
+      break;
+
+    case 7:
+      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.VoiceCallManager");
+      g_value_take_object (value, interface);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+ofono_modem_object_skeleton_class_init (OFONOMODEMObjectSkeletonClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = ofono_modem_object_skeleton_set_property;
+  gobject_class->get_property = ofono_modem_object_skeleton_get_property;
+
+  g_object_class_override_property (gobject_class, 1, "org-freedesktop-dbus-introspectable");
+  g_object_class_override_property (gobject_class, 2, "org-ofono-modem");
+  g_object_class_override_property (gobject_class, 3, "org-ofono-network-time");
+  g_object_class_override_property (gobject_class, 4, "org-ofono-network-registration");
+  g_object_class_override_property (gobject_class, 5, "org-ofono-handsfree");
+  g_object_class_override_property (gobject_class, 6, "org-ofono-call-volume");
+  g_object_class_override_property (gobject_class, 7, "org-ofono-voice-call-manager");
+}
+
+/**
+ * ofono_modem_object_skeleton_new:
+ * @object_path: An object path.
+ *
+ * Creates a new skeleton object.
+ *
+ * Returns: (transfer full): The skeleton object.
+ */
+OFONOMODEMObjectSkeleton *
+ofono_modem_object_skeleton_new (const gchar *object_path)
+{
+  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+  return OFONO_MODEM_OBJECT_SKELETON (g_object_new (OFONO_MODEM_TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));
+}
+
+/**
+ * ofono_modem_object_skeleton_set_org_freedesktop_dbus_introspectable:
+ * @object: A #OFONOMODEMObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOMODEMOrgFreedesktopDBusIntrospectable or %NULL to clear the interface.
+ *
+ * Sets the #OFONOMODEMOrgFreedesktopDBusIntrospectable instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> on @object.
+ */
+void ofono_modem_object_skeleton_set_org_freedesktop_dbus_introspectable (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgFreedesktopDBusIntrospectable *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-freedesktop-dbus-introspectable", interface_, NULL);
+}
+
+/**
+ * ofono_modem_object_skeleton_set_org_ofono_modem:
+ * @object: A #OFONOMODEMObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOMODEMOrgOfonoModem or %NULL to clear the interface.
+ *
+ * Sets the #OFONOMODEMOrgOfonoModem instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Modem.top_of_page">org.ofono.Modem</link> on @object.
+ */
+void ofono_modem_object_skeleton_set_org_ofono_modem (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoModem *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-modem", interface_, NULL);
+}
+
+/**
+ * ofono_modem_object_skeleton_set_org_ofono_network_time:
+ * @object: A #OFONOMODEMObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOMODEMOrgOfonoNetworkTime or %NULL to clear the interface.
+ *
+ * Sets the #OFONOMODEMOrgOfonoNetworkTime instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkTime.top_of_page">org.ofono.NetworkTime</link> on @object.
+ */
+void ofono_modem_object_skeleton_set_org_ofono_network_time (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoNetworkTime *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-network-time", interface_, NULL);
+}
+
+/**
+ * ofono_modem_object_skeleton_set_org_ofono_network_registration:
+ * @object: A #OFONOMODEMObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOMODEMOrgOfonoNetworkRegistration or %NULL to clear the interface.
+ *
+ * Sets the #OFONOMODEMOrgOfonoNetworkRegistration instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-NetworkRegistration.top_of_page">org.ofono.NetworkRegistration</link> on @object.
+ */
+void ofono_modem_object_skeleton_set_org_ofono_network_registration (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoNetworkRegistration *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-network-registration", interface_, NULL);
+}
+
+/**
+ * ofono_modem_object_skeleton_set_org_ofono_handsfree:
+ * @object: A #OFONOMODEMObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOMODEMOrgOfonoHandsfree or %NULL to clear the interface.
+ *
+ * Sets the #OFONOMODEMOrgOfonoHandsfree instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Handsfree.top_of_page">org.ofono.Handsfree</link> on @object.
+ */
+void ofono_modem_object_skeleton_set_org_ofono_handsfree (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoHandsfree *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-handsfree", interface_, NULL);
+}
+
+/**
+ * ofono_modem_object_skeleton_set_org_ofono_call_volume:
+ * @object: A #OFONOMODEMObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOMODEMOrgOfonoCallVolume or %NULL to clear the interface.
+ *
+ * Sets the #OFONOMODEMOrgOfonoCallVolume instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-CallVolume.top_of_page">org.ofono.CallVolume</link> on @object.
+ */
+void ofono_modem_object_skeleton_set_org_ofono_call_volume (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoCallVolume *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-call-volume", interface_, NULL);
+}
+
+/**
+ * ofono_modem_object_skeleton_set_org_ofono_voice_call_manager:
+ * @object: A #OFONOMODEMObjectSkeleton.
+ * @interface_: (allow-none): A #OFONOMODEMOrgOfonoVoiceCallManager or %NULL to clear the interface.
+ *
+ * Sets the #OFONOMODEMOrgOfonoVoiceCallManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link> on @object.
+ */
+void ofono_modem_object_skeleton_set_org_ofono_voice_call_manager (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoVoiceCallManager *interface_)
+{
+  g_object_set (G_OBJECT (object), "org-ofono-voice-call-manager", interface_, NULL);
+}
+
+
+/* ------------------------------------------------------------------------
+ * Code for ObjectManager client
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OFONOMODEMObjectManagerClient
+ * @title: OFONOMODEMObjectManagerClient
+ * @short_description: Generated GDBusObjectManagerClient type
+ *
+ * This section contains a #GDBusObjectManagerClient that uses ofono_modem_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.
+ */
+
+/**
+ * OFONOMODEMObjectManagerClient:
+ *
+ * The #OFONOMODEMObjectManagerClient structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OFONOMODEMObjectManagerClientClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OFONOMODEMObjectManagerClient.
+ */
+
+G_DEFINE_TYPE (OFONOMODEMObjectManagerClient, ofono_modem_object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT);
+
+static void
+ofono_modem_object_manager_client_init (OFONOMODEMObjectManagerClient *manager G_GNUC_UNUSED)
+{
+}
+
+static void
+ofono_modem_object_manager_client_class_init (OFONOMODEMObjectManagerClientClass *klass G_GNUC_UNUSED)
+{
+}
+
+/**
+ * ofono_modem_object_manager_client_get_proxy_type:
+ * @manager: A #GDBusObjectManagerClient.
+ * @object_path: The object path of the remote object (unused).
+ * @interface_name: (allow-none): Interface name of the remote object or %NULL to get the object proxy #GType.
+ * @user_data: User data (unused).
+ *
+ * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy<!-- -->- and #GDBusProxy<!-- -->-derived types.
+ *
+ * Returns: A #GDBusProxy<!-- -->-derived #GType if @interface_name is not %NULL, otherwise the #GType for #OFONOMODEMObjectProxy.
+ */
+GType
+ofono_modem_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)
+{
+  static gsize once_init_value = 0;
+  static GHashTable *lookup_hash;
+  GType ret;
+
+  if (interface_name == NULL)
+    return OFONO_MODEM_TYPE_OBJECT_PROXY;
+  if (g_once_init_enter (&once_init_value))
+    {
+      lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);
+      g_hash_table_insert (lookup_hash, (gpointer) "org.freedesktop.DBus.Introspectable", GSIZE_TO_POINTER (OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.Modem", GSIZE_TO_POINTER (OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.NetworkTime", GSIZE_TO_POINTER (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.NetworkRegistration", GSIZE_TO_POINTER (OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.Handsfree", GSIZE_TO_POINTER (OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.CallVolume", GSIZE_TO_POINTER (OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY));
+      g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.VoiceCallManager", GSIZE_TO_POINTER (OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY));
+      g_once_init_leave (&once_init_value, 1);
+    }
+  ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));
+  if (ret == (GType) 0)
+    ret = G_TYPE_DBUS_PROXY;
+  return ret;
+}
+
+/**
+ * ofono_modem_object_manager_client_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates #GDBusObjectManagerClient using ofono_modem_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_object_manager_client_new_finish() to get the result of the operation.
+ *
+ * See ofono_modem_object_manager_client_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_object_manager_client_new (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", ofono_modem_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * ofono_modem_object_manager_client_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_object_manager_client_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_object_manager_client_new().
+ *
+ * Returns: (transfer full) (type OFONOMODEMObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_modem_object_manager_client_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_object_manager_client_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates #GDBusObjectManagerClient using ofono_modem_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_object_manager_client_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_modem_object_manager_client_new_sync (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", ofono_modem_object_manager_client_get_proxy_type, NULL);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * ofono_modem_object_manager_client_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like ofono_modem_object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call ofono_modem_object_manager_client_new_for_bus_finish() to get the result of the operation.
+ *
+ * See ofono_modem_object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+ofono_modem_object_manager_client_new_for_bus (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data)
+{
+  g_async_initable_new_async (OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", ofono_modem_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * ofono_modem_object_manager_client_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ofono_modem_object_manager_client_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with ofono_modem_object_manager_client_new_for_bus().
+ *
+ * Returns: (transfer full) (type OFONOMODEMObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_modem_object_manager_client_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * ofono_modem_object_manager_client_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like ofono_modem_object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See ofono_modem_object_manager_client_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OFONOMODEMObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+ofono_modem_object_manager_client_new_for_bus_sync (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", ofono_modem_object_manager_client_get_proxy_type, NULL);
+  if (ret != NULL)
+    return G_DBUS_OBJECT_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
diff --git a/binding-bluetooth/lib_ofono_modem.h b/binding-bluetooth/lib_ofono_modem.h
new file mode 100644 (file)
index 0000000..de8f6b1
--- /dev/null
@@ -0,0 +1,1941 @@
+/*
+ * Generated by gdbus-codegen 2.48.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __LIB_OFONO_MODEM_H__
+#define __LIB_OFONO_MODEM_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.freedesktop.DBus.Introspectable */
+
+#define OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ofono_modem_org_freedesktop_dbus_introspectable_get_type ())
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OFONOMODEMOrgFreedesktopDBusIntrospectable))
+#define OFONO_MODEM_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE))
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OFONOMODEMOrgFreedesktopDBusIntrospectableIface))
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectable;
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectable OFONOMODEMOrgFreedesktopDBusIntrospectable;
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectableIface OFONOMODEMOrgFreedesktopDBusIntrospectableIface;
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectableIface
+{
+  GTypeInterface parent_iface;
+
+  gboolean (*handle_introspect) (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *object,
+    GDBusMethodInvocation *invocation);
+
+};
+
+GType ofono_modem_org_freedesktop_dbus_introspectable_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_modem_org_freedesktop_dbus_introspectable_interface_info (void);
+guint ofono_modem_org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_modem_org_freedesktop_dbus_introspectable_complete_introspect (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *xml);
+
+
+
+/* D-Bus method calls: */
+void ofono_modem_org_freedesktop_dbus_introspectable_call_introspect (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_finish (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_freedesktop_dbus_introspectable_call_introspect_sync (
+    OFONOMODEMOrgFreedesktopDBusIntrospectable *proxy,
+    gchar **out_xml,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (ofono_modem_org_freedesktop_dbus_introspectable_proxy_get_type ())
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOMODEMOrgFreedesktopDBusIntrospectableProxy))
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOMODEMOrgFreedesktopDBusIntrospectableProxyClass))
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OFONOMODEMOrgFreedesktopDBusIntrospectableProxyClass))
+#define OFONO_MODEM_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY))
+#define OFONO_MODEM_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY))
+
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectableProxy OFONOMODEMOrgFreedesktopDBusIntrospectableProxy;
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectableProxyClass OFONOMODEMOrgFreedesktopDBusIntrospectableProxyClass;
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectableProxyPrivate OFONOMODEMOrgFreedesktopDBusIntrospectableProxyPrivate;
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectableProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOMODEMOrgFreedesktopDBusIntrospectableProxyPrivate *priv;
+};
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectableProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_modem_org_freedesktop_dbus_introspectable_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgFreedesktopDBusIntrospectableProxy, g_object_unref)
+#endif
+
+void ofono_modem_org_freedesktop_dbus_introspectable_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (ofono_modem_org_freedesktop_dbus_introspectable_skeleton_get_type ())
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton))
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonClass))
+#define OFONO_MODEM_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonClass))
+#define OFONO_MODEM_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON))
+#define OFONO_MODEM_IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON))
+
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton;
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonClass OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonClass;
+typedef struct _OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonPrivate OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonPrivate;
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMOrgFreedesktopDBusIntrospectableSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_modem_org_freedesktop_dbus_introspectable_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgFreedesktopDBusIntrospectableSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_org_freedesktop_dbus_introspectable_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.Modem */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_MODEM (ofono_modem_org_ofono_modem_get_type ())
+#define OFONO_MODEM_ORG_OFONO_MODEM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM, OFONOMODEMOrgOfonoModem))
+#define OFONO_MODEM_IS_ORG_OFONO_MODEM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM))
+#define OFONO_MODEM_ORG_OFONO_MODEM_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM, OFONOMODEMOrgOfonoModemIface))
+
+struct _OFONOMODEMOrgOfonoModem;
+typedef struct _OFONOMODEMOrgOfonoModem OFONOMODEMOrgOfonoModem;
+typedef struct _OFONOMODEMOrgOfonoModemIface OFONOMODEMOrgOfonoModemIface;
+
+struct _OFONOMODEMOrgOfonoModemIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_properties) (
+    OFONOMODEMOrgOfonoModem *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_set_property) (
+    OFONOMODEMOrgOfonoModem *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_property,
+    GVariant *arg_value);
+
+  void (*property_changed) (
+    OFONOMODEMOrgOfonoModem *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+};
+
+GType ofono_modem_org_ofono_modem_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_modem_org_ofono_modem_interface_info (void);
+guint ofono_modem_org_ofono_modem_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_modem_org_ofono_modem_complete_get_properties (
+    OFONOMODEMOrgOfonoModem *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties);
+
+void ofono_modem_org_ofono_modem_complete_set_property (
+    OFONOMODEMOrgOfonoModem *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_modem_org_ofono_modem_emit_property_changed (
+    OFONOMODEMOrgOfonoModem *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+
+
+/* D-Bus method calls: */
+void ofono_modem_org_ofono_modem_call_get_properties (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_modem_call_get_properties_finish (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_modem_call_get_properties_sync (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_modem_call_set_property (
+    OFONOMODEMOrgOfonoModem *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_modem_call_set_property_finish (
+    OFONOMODEMOrgOfonoModem *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_modem_call_set_property_sync (
+    OFONOMODEMOrgOfonoModem *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY (ofono_modem_org_ofono_modem_proxy_get_type ())
+#define OFONO_MODEM_ORG_OFONO_MODEM_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, OFONOMODEMOrgOfonoModemProxy))
+#define OFONO_MODEM_ORG_OFONO_MODEM_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, OFONOMODEMOrgOfonoModemProxyClass))
+#define OFONO_MODEM_ORG_OFONO_MODEM_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY, OFONOMODEMOrgOfonoModemProxyClass))
+#define OFONO_MODEM_IS_ORG_OFONO_MODEM_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY))
+#define OFONO_MODEM_IS_ORG_OFONO_MODEM_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_PROXY))
+
+typedef struct _OFONOMODEMOrgOfonoModemProxy OFONOMODEMOrgOfonoModemProxy;
+typedef struct _OFONOMODEMOrgOfonoModemProxyClass OFONOMODEMOrgOfonoModemProxyClass;
+typedef struct _OFONOMODEMOrgOfonoModemProxyPrivate OFONOMODEMOrgOfonoModemProxyPrivate;
+
+struct _OFONOMODEMOrgOfonoModemProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOMODEMOrgOfonoModemProxyPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoModemProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_modem_org_ofono_modem_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoModemProxy, g_object_unref)
+#endif
+
+void ofono_modem_org_ofono_modem_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoModem *ofono_modem_org_ofono_modem_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoModem *ofono_modem_org_ofono_modem_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_modem_org_ofono_modem_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoModem *ofono_modem_org_ofono_modem_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoModem *ofono_modem_org_ofono_modem_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON (ofono_modem_org_ofono_modem_skeleton_get_type ())
+#define OFONO_MODEM_ORG_OFONO_MODEM_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON, OFONOMODEMOrgOfonoModemSkeleton))
+#define OFONO_MODEM_ORG_OFONO_MODEM_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON, OFONOMODEMOrgOfonoModemSkeletonClass))
+#define OFONO_MODEM_ORG_OFONO_MODEM_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON, OFONOMODEMOrgOfonoModemSkeletonClass))
+#define OFONO_MODEM_IS_ORG_OFONO_MODEM_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON))
+#define OFONO_MODEM_IS_ORG_OFONO_MODEM_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_MODEM_SKELETON))
+
+typedef struct _OFONOMODEMOrgOfonoModemSkeleton OFONOMODEMOrgOfonoModemSkeleton;
+typedef struct _OFONOMODEMOrgOfonoModemSkeletonClass OFONOMODEMOrgOfonoModemSkeletonClass;
+typedef struct _OFONOMODEMOrgOfonoModemSkeletonPrivate OFONOMODEMOrgOfonoModemSkeletonPrivate;
+
+struct _OFONOMODEMOrgOfonoModemSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOMODEMOrgOfonoModemSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoModemSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_modem_org_ofono_modem_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoModemSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMOrgOfonoModem *ofono_modem_org_ofono_modem_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.NetworkTime */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME (ofono_modem_org_ofono_network_time_get_type ())
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME, OFONOMODEMOrgOfonoNetworkTime))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_TIME(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME, OFONOMODEMOrgOfonoNetworkTimeIface))
+
+struct _OFONOMODEMOrgOfonoNetworkTime;
+typedef struct _OFONOMODEMOrgOfonoNetworkTime OFONOMODEMOrgOfonoNetworkTime;
+typedef struct _OFONOMODEMOrgOfonoNetworkTimeIface OFONOMODEMOrgOfonoNetworkTimeIface;
+
+struct _OFONOMODEMOrgOfonoNetworkTimeIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_network_time) (
+    OFONOMODEMOrgOfonoNetworkTime *object,
+    GDBusMethodInvocation *invocation);
+
+  void (*network_time_changed) (
+    OFONOMODEMOrgOfonoNetworkTime *object,
+    GVariant *arg_time);
+
+};
+
+GType ofono_modem_org_ofono_network_time_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_modem_org_ofono_network_time_interface_info (void);
+guint ofono_modem_org_ofono_network_time_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_modem_org_ofono_network_time_complete_get_network_time (
+    OFONOMODEMOrgOfonoNetworkTime *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *time);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_modem_org_ofono_network_time_emit_network_time_changed (
+    OFONOMODEMOrgOfonoNetworkTime *object,
+    GVariant *arg_time);
+
+
+
+/* D-Bus method calls: */
+void ofono_modem_org_ofono_network_time_call_get_network_time (
+    OFONOMODEMOrgOfonoNetworkTime *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_network_time_call_get_network_time_finish (
+    OFONOMODEMOrgOfonoNetworkTime *proxy,
+    GVariant **out_time,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_network_time_call_get_network_time_sync (
+    OFONOMODEMOrgOfonoNetworkTime *proxy,
+    GVariant **out_time,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY (ofono_modem_org_ofono_network_time_proxy_get_type ())
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, OFONOMODEMOrgOfonoNetworkTimeProxy))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, OFONOMODEMOrgOfonoNetworkTimeProxyClass))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY, OFONOMODEMOrgOfonoNetworkTimeProxyClass))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_TIME_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_TIME_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_PROXY))
+
+typedef struct _OFONOMODEMOrgOfonoNetworkTimeProxy OFONOMODEMOrgOfonoNetworkTimeProxy;
+typedef struct _OFONOMODEMOrgOfonoNetworkTimeProxyClass OFONOMODEMOrgOfonoNetworkTimeProxyClass;
+typedef struct _OFONOMODEMOrgOfonoNetworkTimeProxyPrivate OFONOMODEMOrgOfonoNetworkTimeProxyPrivate;
+
+struct _OFONOMODEMOrgOfonoNetworkTimeProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOMODEMOrgOfonoNetworkTimeProxyPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoNetworkTimeProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_modem_org_ofono_network_time_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoNetworkTimeProxy, g_object_unref)
+#endif
+
+void ofono_modem_org_ofono_network_time_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_org_ofono_network_time_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_org_ofono_network_time_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_modem_org_ofono_network_time_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_org_ofono_network_time_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_org_ofono_network_time_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON (ofono_modem_org_ofono_network_time_skeleton_get_type ())
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON, OFONOMODEMOrgOfonoNetworkTimeSkeleton))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON, OFONOMODEMOrgOfonoNetworkTimeSkeletonClass))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_TIME_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON, OFONOMODEMOrgOfonoNetworkTimeSkeletonClass))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_TIME_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_TIME_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME_SKELETON))
+
+typedef struct _OFONOMODEMOrgOfonoNetworkTimeSkeleton OFONOMODEMOrgOfonoNetworkTimeSkeleton;
+typedef struct _OFONOMODEMOrgOfonoNetworkTimeSkeletonClass OFONOMODEMOrgOfonoNetworkTimeSkeletonClass;
+typedef struct _OFONOMODEMOrgOfonoNetworkTimeSkeletonPrivate OFONOMODEMOrgOfonoNetworkTimeSkeletonPrivate;
+
+struct _OFONOMODEMOrgOfonoNetworkTimeSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOMODEMOrgOfonoNetworkTimeSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoNetworkTimeSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_modem_org_ofono_network_time_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoNetworkTimeSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_org_ofono_network_time_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.NetworkRegistration */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION (ofono_modem_org_ofono_network_registration_get_type ())
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION, OFONOMODEMOrgOfonoNetworkRegistration))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_REGISTRATION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION, OFONOMODEMOrgOfonoNetworkRegistrationIface))
+
+struct _OFONOMODEMOrgOfonoNetworkRegistration;
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistration OFONOMODEMOrgOfonoNetworkRegistration;
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistrationIface OFONOMODEMOrgOfonoNetworkRegistrationIface;
+
+struct _OFONOMODEMOrgOfonoNetworkRegistrationIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_operators) (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_get_properties) (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_register) (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_scan) (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation);
+
+  void (*property_changed) (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+};
+
+GType ofono_modem_org_ofono_network_registration_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_modem_org_ofono_network_registration_interface_info (void);
+guint ofono_modem_org_ofono_network_registration_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_modem_org_ofono_network_registration_complete_get_properties (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties);
+
+void ofono_modem_org_ofono_network_registration_complete_register (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_network_registration_complete_get_operators (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *operators_with_properties);
+
+void ofono_modem_org_ofono_network_registration_complete_scan (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *operators_with_properties);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_modem_org_ofono_network_registration_emit_property_changed (
+    OFONOMODEMOrgOfonoNetworkRegistration *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+
+
+/* D-Bus method calls: */
+void ofono_modem_org_ofono_network_registration_call_get_properties (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_network_registration_call_get_properties_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_network_registration_call_get_properties_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_network_registration_call_register (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_network_registration_call_register_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_network_registration_call_register_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_network_registration_call_get_operators (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_network_registration_call_get_operators_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_network_registration_call_get_operators_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_network_registration_call_scan (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_network_registration_call_scan_finish (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_network_registration_call_scan_sync (
+    OFONOMODEMOrgOfonoNetworkRegistration *proxy,
+    GVariant **out_operators_with_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY (ofono_modem_org_ofono_network_registration_proxy_get_type ())
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, OFONOMODEMOrgOfonoNetworkRegistrationProxy))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, OFONOMODEMOrgOfonoNetworkRegistrationProxyClass))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY, OFONOMODEMOrgOfonoNetworkRegistrationProxyClass))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_REGISTRATION_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_REGISTRATION_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_PROXY))
+
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistrationProxy OFONOMODEMOrgOfonoNetworkRegistrationProxy;
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistrationProxyClass OFONOMODEMOrgOfonoNetworkRegistrationProxyClass;
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistrationProxyPrivate OFONOMODEMOrgOfonoNetworkRegistrationProxyPrivate;
+
+struct _OFONOMODEMOrgOfonoNetworkRegistrationProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOMODEMOrgOfonoNetworkRegistrationProxyPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoNetworkRegistrationProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_modem_org_ofono_network_registration_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoNetworkRegistrationProxy, g_object_unref)
+#endif
+
+void ofono_modem_org_ofono_network_registration_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_org_ofono_network_registration_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_org_ofono_network_registration_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_modem_org_ofono_network_registration_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_org_ofono_network_registration_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_org_ofono_network_registration_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON (ofono_modem_org_ofono_network_registration_skeleton_get_type ())
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON, OFONOMODEMOrgOfonoNetworkRegistrationSkeleton))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON, OFONOMODEMOrgOfonoNetworkRegistrationSkeletonClass))
+#define OFONO_MODEM_ORG_OFONO_NETWORK_REGISTRATION_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON, OFONOMODEMOrgOfonoNetworkRegistrationSkeletonClass))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_REGISTRATION_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON))
+#define OFONO_MODEM_IS_ORG_OFONO_NETWORK_REGISTRATION_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION_SKELETON))
+
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistrationSkeleton OFONOMODEMOrgOfonoNetworkRegistrationSkeleton;
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistrationSkeletonClass OFONOMODEMOrgOfonoNetworkRegistrationSkeletonClass;
+typedef struct _OFONOMODEMOrgOfonoNetworkRegistrationSkeletonPrivate OFONOMODEMOrgOfonoNetworkRegistrationSkeletonPrivate;
+
+struct _OFONOMODEMOrgOfonoNetworkRegistrationSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOMODEMOrgOfonoNetworkRegistrationSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoNetworkRegistrationSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_modem_org_ofono_network_registration_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoNetworkRegistrationSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_org_ofono_network_registration_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.Handsfree */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE (ofono_modem_org_ofono_handsfree_get_type ())
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE, OFONOMODEMOrgOfonoHandsfree))
+#define OFONO_MODEM_IS_ORG_OFONO_HANDSFREE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE))
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE, OFONOMODEMOrgOfonoHandsfreeIface))
+
+struct _OFONOMODEMOrgOfonoHandsfree;
+typedef struct _OFONOMODEMOrgOfonoHandsfree OFONOMODEMOrgOfonoHandsfree;
+typedef struct _OFONOMODEMOrgOfonoHandsfreeIface OFONOMODEMOrgOfonoHandsfreeIface;
+
+struct _OFONOMODEMOrgOfonoHandsfreeIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_properties) (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_request_phone_number) (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_set_property) (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_property,
+    GVariant *arg_value);
+
+  void (*property_changed) (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+};
+
+GType ofono_modem_org_ofono_handsfree_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_modem_org_ofono_handsfree_interface_info (void);
+guint ofono_modem_org_ofono_handsfree_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_modem_org_ofono_handsfree_complete_get_properties (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties);
+
+void ofono_modem_org_ofono_handsfree_complete_set_property (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_handsfree_complete_request_phone_number (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *number);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_modem_org_ofono_handsfree_emit_property_changed (
+    OFONOMODEMOrgOfonoHandsfree *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+
+
+/* D-Bus method calls: */
+void ofono_modem_org_ofono_handsfree_call_get_properties (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_handsfree_call_get_properties_finish (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_handsfree_call_get_properties_sync (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_handsfree_call_set_property (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_handsfree_call_set_property_finish (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_handsfree_call_set_property_sync (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_handsfree_call_request_phone_number (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_handsfree_call_request_phone_number_finish (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    gchar **out_number,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_handsfree_call_request_phone_number_sync (
+    OFONOMODEMOrgOfonoHandsfree *proxy,
+    gchar **out_number,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY (ofono_modem_org_ofono_handsfree_proxy_get_type ())
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, OFONOMODEMOrgOfonoHandsfreeProxy))
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, OFONOMODEMOrgOfonoHandsfreeProxyClass))
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY, OFONOMODEMOrgOfonoHandsfreeProxyClass))
+#define OFONO_MODEM_IS_ORG_OFONO_HANDSFREE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY))
+#define OFONO_MODEM_IS_ORG_OFONO_HANDSFREE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_PROXY))
+
+typedef struct _OFONOMODEMOrgOfonoHandsfreeProxy OFONOMODEMOrgOfonoHandsfreeProxy;
+typedef struct _OFONOMODEMOrgOfonoHandsfreeProxyClass OFONOMODEMOrgOfonoHandsfreeProxyClass;
+typedef struct _OFONOMODEMOrgOfonoHandsfreeProxyPrivate OFONOMODEMOrgOfonoHandsfreeProxyPrivate;
+
+struct _OFONOMODEMOrgOfonoHandsfreeProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOMODEMOrgOfonoHandsfreeProxyPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoHandsfreeProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_modem_org_ofono_handsfree_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoHandsfreeProxy, g_object_unref)
+#endif
+
+void ofono_modem_org_ofono_handsfree_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_org_ofono_handsfree_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_org_ofono_handsfree_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_modem_org_ofono_handsfree_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_org_ofono_handsfree_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_org_ofono_handsfree_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON (ofono_modem_org_ofono_handsfree_skeleton_get_type ())
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON, OFONOMODEMOrgOfonoHandsfreeSkeleton))
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON, OFONOMODEMOrgOfonoHandsfreeSkeletonClass))
+#define OFONO_MODEM_ORG_OFONO_HANDSFREE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON, OFONOMODEMOrgOfonoHandsfreeSkeletonClass))
+#define OFONO_MODEM_IS_ORG_OFONO_HANDSFREE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON))
+#define OFONO_MODEM_IS_ORG_OFONO_HANDSFREE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE_SKELETON))
+
+typedef struct _OFONOMODEMOrgOfonoHandsfreeSkeleton OFONOMODEMOrgOfonoHandsfreeSkeleton;
+typedef struct _OFONOMODEMOrgOfonoHandsfreeSkeletonClass OFONOMODEMOrgOfonoHandsfreeSkeletonClass;
+typedef struct _OFONOMODEMOrgOfonoHandsfreeSkeletonPrivate OFONOMODEMOrgOfonoHandsfreeSkeletonPrivate;
+
+struct _OFONOMODEMOrgOfonoHandsfreeSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOMODEMOrgOfonoHandsfreeSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoHandsfreeSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_modem_org_ofono_handsfree_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoHandsfreeSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_org_ofono_handsfree_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.CallVolume */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME (ofono_modem_org_ofono_call_volume_get_type ())
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME, OFONOMODEMOrgOfonoCallVolume))
+#define OFONO_MODEM_IS_ORG_OFONO_CALL_VOLUME(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME))
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME, OFONOMODEMOrgOfonoCallVolumeIface))
+
+struct _OFONOMODEMOrgOfonoCallVolume;
+typedef struct _OFONOMODEMOrgOfonoCallVolume OFONOMODEMOrgOfonoCallVolume;
+typedef struct _OFONOMODEMOrgOfonoCallVolumeIface OFONOMODEMOrgOfonoCallVolumeIface;
+
+struct _OFONOMODEMOrgOfonoCallVolumeIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_properties) (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_set_property) (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_property,
+    GVariant *arg_value);
+
+  void (*property_changed) (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    const gchar *arg_property,
+    GVariant *arg_value);
+
+};
+
+GType ofono_modem_org_ofono_call_volume_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_modem_org_ofono_call_volume_interface_info (void);
+guint ofono_modem_org_ofono_call_volume_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_modem_org_ofono_call_volume_complete_get_properties (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties);
+
+void ofono_modem_org_ofono_call_volume_complete_set_property (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_modem_org_ofono_call_volume_emit_property_changed (
+    OFONOMODEMOrgOfonoCallVolume *object,
+    const gchar *arg_property,
+    GVariant *arg_value);
+
+
+
+/* D-Bus method calls: */
+void ofono_modem_org_ofono_call_volume_call_get_properties (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_call_volume_call_get_properties_finish (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_call_volume_call_get_properties_sync (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_call_volume_call_set_property (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_call_volume_call_set_property_finish (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_call_volume_call_set_property_sync (
+    OFONOMODEMOrgOfonoCallVolume *proxy,
+    const gchar *arg_property,
+    GVariant *arg_value,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY (ofono_modem_org_ofono_call_volume_proxy_get_type ())
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, OFONOMODEMOrgOfonoCallVolumeProxy))
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, OFONOMODEMOrgOfonoCallVolumeProxyClass))
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY, OFONOMODEMOrgOfonoCallVolumeProxyClass))
+#define OFONO_MODEM_IS_ORG_OFONO_CALL_VOLUME_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY))
+#define OFONO_MODEM_IS_ORG_OFONO_CALL_VOLUME_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_PROXY))
+
+typedef struct _OFONOMODEMOrgOfonoCallVolumeProxy OFONOMODEMOrgOfonoCallVolumeProxy;
+typedef struct _OFONOMODEMOrgOfonoCallVolumeProxyClass OFONOMODEMOrgOfonoCallVolumeProxyClass;
+typedef struct _OFONOMODEMOrgOfonoCallVolumeProxyPrivate OFONOMODEMOrgOfonoCallVolumeProxyPrivate;
+
+struct _OFONOMODEMOrgOfonoCallVolumeProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOMODEMOrgOfonoCallVolumeProxyPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoCallVolumeProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_modem_org_ofono_call_volume_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoCallVolumeProxy, g_object_unref)
+#endif
+
+void ofono_modem_org_ofono_call_volume_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_org_ofono_call_volume_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_org_ofono_call_volume_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_modem_org_ofono_call_volume_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_org_ofono_call_volume_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_org_ofono_call_volume_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON (ofono_modem_org_ofono_call_volume_skeleton_get_type ())
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON, OFONOMODEMOrgOfonoCallVolumeSkeleton))
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON, OFONOMODEMOrgOfonoCallVolumeSkeletonClass))
+#define OFONO_MODEM_ORG_OFONO_CALL_VOLUME_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON, OFONOMODEMOrgOfonoCallVolumeSkeletonClass))
+#define OFONO_MODEM_IS_ORG_OFONO_CALL_VOLUME_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON))
+#define OFONO_MODEM_IS_ORG_OFONO_CALL_VOLUME_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME_SKELETON))
+
+typedef struct _OFONOMODEMOrgOfonoCallVolumeSkeleton OFONOMODEMOrgOfonoCallVolumeSkeleton;
+typedef struct _OFONOMODEMOrgOfonoCallVolumeSkeletonClass OFONOMODEMOrgOfonoCallVolumeSkeletonClass;
+typedef struct _OFONOMODEMOrgOfonoCallVolumeSkeletonPrivate OFONOMODEMOrgOfonoCallVolumeSkeletonPrivate;
+
+struct _OFONOMODEMOrgOfonoCallVolumeSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOMODEMOrgOfonoCallVolumeSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoCallVolumeSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_modem_org_ofono_call_volume_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoCallVolumeSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_org_ofono_call_volume_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.VoiceCallManager */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER (ofono_modem_org_ofono_voice_call_manager_get_type ())
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER, OFONOMODEMOrgOfonoVoiceCallManager))
+#define OFONO_MODEM_IS_ORG_OFONO_VOICE_CALL_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER))
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER, OFONOMODEMOrgOfonoVoiceCallManagerIface))
+
+struct _OFONOMODEMOrgOfonoVoiceCallManager;
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManager OFONOMODEMOrgOfonoVoiceCallManager;
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManagerIface OFONOMODEMOrgOfonoVoiceCallManagerIface;
+
+struct _OFONOMODEMOrgOfonoVoiceCallManagerIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_create_multiparty) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_dial) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_number,
+    const gchar *arg_hide_callerid);
+
+  gboolean (*handle_get_calls) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_get_properties) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_hangup_all) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_hangup_multiparty) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_hold_and_answer) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_private_chat) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_call);
+
+  gboolean (*handle_release_and_answer) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_release_and_swap) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_send_tones) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_SendTones);
+
+  gboolean (*handle_swap_calls) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_transfer) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+  void (*barring_active) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type);
+
+  void (*call_added) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties);
+
+  void (*call_removed) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path);
+
+  void (*forwarded) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type);
+
+  void (*property_changed) (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+};
+
+GType ofono_modem_org_ofono_voice_call_manager_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *ofono_modem_org_ofono_voice_call_manager_interface_info (void);
+guint ofono_modem_org_ofono_voice_call_manager_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void ofono_modem_org_ofono_voice_call_manager_complete_get_properties (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *properties);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_dial (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *path);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_transfer (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_swap_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_release_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_release_and_swap (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_hold_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_hangup_all (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_private_chat (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *const *calls);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_create_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *calls);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_hangup_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_send_tones (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation);
+
+void ofono_modem_org_ofono_voice_call_manager_complete_get_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *calls_with_properties);
+
+
+
+/* D-Bus signal emissions functions: */
+void ofono_modem_org_ofono_voice_call_manager_emit_forwarded (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type);
+
+void ofono_modem_org_ofono_voice_call_manager_emit_barring_active (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_type);
+
+void ofono_modem_org_ofono_voice_call_manager_emit_property_changed (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_name,
+    GVariant *arg_value);
+
+void ofono_modem_org_ofono_voice_call_manager_emit_call_added (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path,
+    GVariant *arg_properties);
+
+void ofono_modem_org_ofono_voice_call_manager_emit_call_removed (
+    OFONOMODEMOrgOfonoVoiceCallManager *object,
+    const gchar *arg_path);
+
+
+
+/* D-Bus method calls: */
+void ofono_modem_org_ofono_voice_call_manager_call_get_properties (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_get_properties_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_get_properties_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_dial (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_number,
+    const gchar *arg_hide_callerid,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_dial_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar **out_path,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_dial_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_number,
+    const gchar *arg_hide_callerid,
+    gchar **out_path,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_transfer (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_transfer_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_transfer_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_swap_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_swap_calls_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_swap_calls_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_release_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_release_and_answer_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_release_and_swap (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_release_and_swap_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_hold_and_answer_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_hangup_all (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_hangup_all_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_hangup_all_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_private_chat (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_call,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_private_chat_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar ***out_calls,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_private_chat_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_call,
+    gchar ***out_calls,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_create_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar **out_calls,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_create_multiparty_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    gchar **out_calls,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_hangup_multiparty_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_send_tones (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_SendTones,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_send_tones_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_send_tones_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    const gchar *arg_SendTones,
+    GCancellable *cancellable,
+    GError **error);
+
+void ofono_modem_org_ofono_voice_call_manager_call_get_calls (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_get_calls_finish (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_calls_with_properties,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean ofono_modem_org_ofono_voice_call_manager_call_get_calls_sync (
+    OFONOMODEMOrgOfonoVoiceCallManager *proxy,
+    GVariant **out_calls_with_properties,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY (ofono_modem_org_ofono_voice_call_manager_proxy_get_type ())
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OFONOMODEMOrgOfonoVoiceCallManagerProxy))
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OFONOMODEMOrgOfonoVoiceCallManagerProxyClass))
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OFONOMODEMOrgOfonoVoiceCallManagerProxyClass))
+#define OFONO_MODEM_IS_ORG_OFONO_VOICE_CALL_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY))
+#define OFONO_MODEM_IS_ORG_OFONO_VOICE_CALL_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY))
+
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManagerProxy OFONOMODEMOrgOfonoVoiceCallManagerProxy;
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManagerProxyClass OFONOMODEMOrgOfonoVoiceCallManagerProxyClass;
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManagerProxyPrivate OFONOMODEMOrgOfonoVoiceCallManagerProxyPrivate;
+
+struct _OFONOMODEMOrgOfonoVoiceCallManagerProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OFONOMODEMOrgOfonoVoiceCallManagerProxyPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoVoiceCallManagerProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType ofono_modem_org_ofono_voice_call_manager_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoVoiceCallManagerProxy, g_object_unref)
+#endif
+
+void ofono_modem_org_ofono_voice_call_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_org_ofono_voice_call_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_org_ofono_voice_call_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_org_ofono_voice_call_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (ofono_modem_org_ofono_voice_call_manager_skeleton_get_type ())
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OFONOMODEMOrgOfonoVoiceCallManagerSkeleton))
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OFONOMODEMOrgOfonoVoiceCallManagerSkeletonClass))
+#define OFONO_MODEM_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OFONOMODEMOrgOfonoVoiceCallManagerSkeletonClass))
+#define OFONO_MODEM_IS_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON))
+#define OFONO_MODEM_IS_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON))
+
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManagerSkeleton OFONOMODEMOrgOfonoVoiceCallManagerSkeleton;
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManagerSkeletonClass OFONOMODEMOrgOfonoVoiceCallManagerSkeletonClass;
+typedef struct _OFONOMODEMOrgOfonoVoiceCallManagerSkeletonPrivate OFONOMODEMOrgOfonoVoiceCallManagerSkeletonPrivate;
+
+struct _OFONOMODEMOrgOfonoVoiceCallManagerSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OFONOMODEMOrgOfonoVoiceCallManagerSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMOrgOfonoVoiceCallManagerSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType ofono_modem_org_ofono_voice_call_manager_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMOrgOfonoVoiceCallManagerSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_org_ofono_voice_call_manager_skeleton_new (void);
+
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_OBJECT (ofono_modem_object_get_type ())
+#define OFONO_MODEM_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_OBJECT, OFONOMODEMObject))
+#define OFONO_MODEM_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_OBJECT))
+#define OFONO_MODEM_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), OFONO_MODEM_TYPE_OBJECT, OFONOMODEMObject))
+
+struct _OFONOMODEMObject;
+typedef struct _OFONOMODEMObject OFONOMODEMObject;
+typedef struct _OFONOMODEMObjectIface OFONOMODEMObjectIface;
+
+struct _OFONOMODEMObjectIface
+{
+  GTypeInterface parent_iface;
+};
+
+GType ofono_modem_object_get_type (void) G_GNUC_CONST;
+
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_object_get_org_freedesktop_dbus_introspectable (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoModem *ofono_modem_object_get_org_ofono_modem (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_object_get_org_ofono_network_time (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_object_get_org_ofono_network_registration (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_object_get_org_ofono_handsfree (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_object_get_org_ofono_call_volume (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_object_get_org_ofono_voice_call_manager (OFONOMODEMObject *object);
+OFONOMODEMOrgFreedesktopDBusIntrospectable *ofono_modem_object_peek_org_freedesktop_dbus_introspectable (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoModem *ofono_modem_object_peek_org_ofono_modem (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoNetworkTime *ofono_modem_object_peek_org_ofono_network_time (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoNetworkRegistration *ofono_modem_object_peek_org_ofono_network_registration (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoHandsfree *ofono_modem_object_peek_org_ofono_handsfree (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoCallVolume *ofono_modem_object_peek_org_ofono_call_volume (OFONOMODEMObject *object);
+OFONOMODEMOrgOfonoVoiceCallManager *ofono_modem_object_peek_org_ofono_voice_call_manager (OFONOMODEMObject *object);
+
+#define OFONO_MODEM_TYPE_OBJECT_PROXY (ofono_modem_object_proxy_get_type ())
+#define OFONO_MODEM_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_OBJECT_PROXY, OFONOMODEMObjectProxy))
+#define OFONO_MODEM_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_OBJECT_PROXY, OFONOMODEMObjectProxyClass))
+#define OFONO_MODEM_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_OBJECT_PROXY, OFONOMODEMObjectProxyClass))
+#define OFONO_MODEM_IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_OBJECT_PROXY))
+#define OFONO_MODEM_IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_OBJECT_PROXY))
+
+typedef struct _OFONOMODEMObjectProxy OFONOMODEMObjectProxy;
+typedef struct _OFONOMODEMObjectProxyClass OFONOMODEMObjectProxyClass;
+typedef struct _OFONOMODEMObjectProxyPrivate OFONOMODEMObjectProxyPrivate;
+
+struct _OFONOMODEMObjectProxy
+{
+  /*< private >*/
+  GDBusObjectProxy parent_instance;
+  OFONOMODEMObjectProxyPrivate *priv;
+};
+
+struct _OFONOMODEMObjectProxyClass
+{
+  GDBusObjectProxyClass parent_class;
+};
+
+GType ofono_modem_object_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMObjectProxy, g_object_unref)
+#endif
+
+OFONOMODEMObjectProxy *ofono_modem_object_proxy_new (GDBusConnection *connection, const gchar *object_path);
+
+#define OFONO_MODEM_TYPE_OBJECT_SKELETON (ofono_modem_object_skeleton_get_type ())
+#define OFONO_MODEM_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_OBJECT_SKELETON, OFONOMODEMObjectSkeleton))
+#define OFONO_MODEM_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_OBJECT_SKELETON, OFONOMODEMObjectSkeletonClass))
+#define OFONO_MODEM_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_OBJECT_SKELETON, OFONOMODEMObjectSkeletonClass))
+#define OFONO_MODEM_IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_OBJECT_SKELETON))
+#define OFONO_MODEM_IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_OBJECT_SKELETON))
+
+typedef struct _OFONOMODEMObjectSkeleton OFONOMODEMObjectSkeleton;
+typedef struct _OFONOMODEMObjectSkeletonClass OFONOMODEMObjectSkeletonClass;
+typedef struct _OFONOMODEMObjectSkeletonPrivate OFONOMODEMObjectSkeletonPrivate;
+
+struct _OFONOMODEMObjectSkeleton
+{
+  /*< private >*/
+  GDBusObjectSkeleton parent_instance;
+  OFONOMODEMObjectSkeletonPrivate *priv;
+};
+
+struct _OFONOMODEMObjectSkeletonClass
+{
+  GDBusObjectSkeletonClass parent_class;
+};
+
+GType ofono_modem_object_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMObjectSkeleton, g_object_unref)
+#endif
+
+OFONOMODEMObjectSkeleton *ofono_modem_object_skeleton_new (const gchar *object_path);
+void ofono_modem_object_skeleton_set_org_freedesktop_dbus_introspectable (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgFreedesktopDBusIntrospectable *interface_);
+void ofono_modem_object_skeleton_set_org_ofono_modem (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoModem *interface_);
+void ofono_modem_object_skeleton_set_org_ofono_network_time (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoNetworkTime *interface_);
+void ofono_modem_object_skeleton_set_org_ofono_network_registration (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoNetworkRegistration *interface_);
+void ofono_modem_object_skeleton_set_org_ofono_handsfree (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoHandsfree *interface_);
+void ofono_modem_object_skeleton_set_org_ofono_call_volume (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoCallVolume *interface_);
+void ofono_modem_object_skeleton_set_org_ofono_voice_call_manager (OFONOMODEMObjectSkeleton *object, OFONOMODEMOrgOfonoVoiceCallManager *interface_);
+
+/* ---- */
+
+#define OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT (ofono_modem_object_manager_client_get_type ())
+#define OFONO_MODEM_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT, OFONOMODEMObjectManagerClient))
+#define OFONO_MODEM_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT, OFONOMODEMObjectManagerClientClass))
+#define OFONO_MODEM_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT, OFONOMODEMObjectManagerClientClass))
+#define OFONO_MODEM_IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT))
+#define OFONO_MODEM_IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), OFONO_MODEM_TYPE_OBJECT_MANAGER_CLIENT))
+
+typedef struct _OFONOMODEMObjectManagerClient OFONOMODEMObjectManagerClient;
+typedef struct _OFONOMODEMObjectManagerClientClass OFONOMODEMObjectManagerClientClass;
+typedef struct _OFONOMODEMObjectManagerClientPrivate OFONOMODEMObjectManagerClientPrivate;
+
+struct _OFONOMODEMObjectManagerClient
+{
+  /*< private >*/
+  GDBusObjectManagerClient parent_instance;
+  OFONOMODEMObjectManagerClientPrivate *priv;
+};
+
+struct _OFONOMODEMObjectManagerClientClass
+{
+  GDBusObjectManagerClientClass parent_class;
+};
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OFONOMODEMObjectManagerClient, g_object_unref)
+#endif
+
+GType ofono_modem_object_manager_client_get_type (void) G_GNUC_CONST;
+
+GType ofono_modem_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);
+
+void ofono_modem_object_manager_client_new (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data);
+GDBusObjectManager *ofono_modem_object_manager_client_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+GDBusObjectManager *ofono_modem_object_manager_client_new_sync (
+    GDBusConnection        *connection,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error);
+
+void ofono_modem_object_manager_client_new_for_bus (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GAsyncReadyCallback     callback,
+    gpointer                user_data);
+GDBusObjectManager *ofono_modem_object_manager_client_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+GDBusObjectManager *ofono_modem_object_manager_client_new_for_bus_sync (
+    GBusType                bus_type,
+    GDBusObjectManagerClientFlags  flags,
+    const gchar            *name,
+    const gchar            *object_path,
+    GCancellable           *cancellable,
+    GError                **error);
+
+
+G_END_DECLS
+
+#endif /* __LIB_OFONO_MODEM_H__ */
diff --git a/binding-bluetooth/ofono-client.c b/binding-bluetooth/ofono-client.c
new file mode 100644 (file)
index 0000000..26b28c7
--- /dev/null
@@ -0,0 +1,672 @@
+/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
+*
+*   Licensed under the Apache License, Version 2.0 (the "License");
+*   you may not use this file except in compliance with the License.
+*   You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*   Unless required by applicable law or agreed to in writing, software
+*   distributed under the License is distributed on an "AS IS" BASIS,
+*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*   See the License for the specific language governing permissions and
+*   limitations under the License.
+*/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+
+#include "lib_ofono.h"
+#include "lib_ofono_modem.h"
+#include "ofono-client.h"
+
+#ifdef OFONO_THREAD
+static GMainLoop *OfonoLoop = NULL;
+#endif
+
+static stOfonoManager OfonoManager = { 0 };
+static Ofono_RegisterCallback_t ofono_RegisterCallback = { 0 };
+
+
+/* ------ LOCAL  FUNCTIONS --------- */
+static OFONOMODEMOrgOfonoModem* modem_create_proxy(struct ofono_modem *modem);
+
+
+/*
+ * make a copy of each element
+ * And, to entirely free the new btd_device, you could do: modem_free
+ */
+struct ofono_modem *modem_copy(struct ofono_modem* modem)
+{
+    struct ofono_modem * temp;
+
+    if (NULL == modem) {
+        return NULL;
+    }
+
+    temp = g_malloc0(sizeof(struct ofono_modem));
+    temp->path = g_strdup(modem->path);
+
+    temp->proxy = g_object_ref (modem->proxy);
+
+    temp->powered = modem->powered;
+
+    return temp;
+}
+
+/*
+ * Frees all of the memory
+ */
+static void modem_free(struct ofono_modem* modem)
+{
+
+    if (NULL == modem) {
+        return ;
+    }
+
+    if (modem->path) {
+        g_free(modem->path);
+        modem->path = NULL;
+    }
+
+    if (modem->proxy){
+        g_object_unref(modem->proxy);
+        modem->proxy = NULL;
+    }
+
+    g_free(modem);
+
+}
+
+#if 0
+//debug print
+void modem_print(struct ofono_modem *modem)
+{
+    gchar *s;
+    g_print("device %p\n",modem);
+    g_print("path\t\t:%s\n",modem->path);
+    g_print("powered\t\t:%d\n",modem->powered);
+
+}
+#endif
+
+static int modem_path_cmp(struct ofono_modem * modem, const gchar* path )
+{
+    return g_strcmp0 (modem->path, path);
+}
+
+static void modem_list_lock(void)
+{
+    g_mutex_lock(&(OfonoManager.m));
+}
+
+static void modem_list_unlock(void)
+{
+    g_mutex_unlock(&(OfonoManager.m));
+}
+
+#if 0
+//debug print
+void modem_list_print()
+{
+    GSList * temp = OfonoManager.modem;
+    while (temp) {
+        struct ofono_modem *modem = temp->data;
+        temp = temp->next;
+        g_print("----------------------------------------\n");
+        modem_print(modem);
+    }
+    g_print("----------------------------------------\n");
+}
+#endif
+
+
+/*
+ * remove all the devices
+*/
+static void modem_list_cleanup()
+{
+    LOGD("\n");
+    GSList * temp = OfonoManager.modem;
+    while (temp) {
+        struct ofono_modem *modem = temp->data;
+        temp = temp->next;
+
+        OfonoManager.modem = g_slist_remove_all(OfonoManager.modem,
+                modem);
+
+        modem_free(modem);
+    }
+}
+
+/*
+ * search ofono modem by path
+ * Returns the first found btd_device or NULL if it is not found
+ */
+static  struct ofono_modem *modem_list_find_modem_by_path(const char* path)
+{
+    //LOGD("path%s\n",path);
+    GSList * temp = NULL;
+
+    temp = g_slist_find_custom (OfonoManager.modem, path,
+                                (GCompareFunc)modem_path_cmp);
+
+    if (temp) {
+        return temp->data;
+    }
+
+    return NULL;
+}
+
+static void on_modem_property_changed (OFONOMODEMOrgOfonoModem* object,
+                                        gchar* property,
+                                        GVariant *value,
+                                        gpointer userdata)
+{
+#ifdef _DEBUG_PRINT_DBUS
+    gchar *s;
+
+    g_print ("%s\n",property);
+    s = g_variant_print (value, TRUE);
+    g_print ("  %s\n",  s);
+    g_free (s);
+#endif
+
+    struct ofono_modem *modem;
+
+
+    if (NULL==property || NULL==value || NULL==userdata){
+        LOGD(" receive null data\n");
+        return;
+    }
+
+    modem = userdata;
+
+    if (0 == g_strcmp0(property, "Powered"))
+    {
+
+        GVariant *temp = g_variant_get_variant (value);
+        //g_print ("update\n");
+        gboolean new_value;
+        //gboolean old_value;
+        g_variant_get(temp, "b", &new_value );
+        g_variant_unref(temp);
+        LOGD("Powered %d\n",new_value);
+        //old_value = modem->powered;
+        modem->powered = new_value;
+
+        if (NULL != ofono_RegisterCallback.modem_propertyies_changed)
+        {
+            ofono_RegisterCallback.modem_propertyies_changed(modem);
+        }
+    }
+
+
+}
+
+static void on_modem_added (OFONOOrgOfonoManager* object,
+                            gchar* path,
+                            GVariant *value,
+                            gpointer userdata)
+{
+#ifdef _DEBUG_PRINT_DBUS
+    gchar *s;
+
+    g_print ("on_modom_added\n");
+    g_print ("%s\n",path);
+    s = g_variant_print (value, TRUE);
+    g_print ("  %s\n",  s);
+    g_free (s);
+#endif
+
+
+    GError *error = NULL;
+
+    if (NULL == path)
+        return;
+
+    struct ofono_modem *modem = g_malloc0(sizeof(struct ofono_modem));
+
+    LOGD("new modem path:%s,%p\n", path, modem);
+
+    modem->path = g_strdup(path);
+    modem->proxy = modem_create_proxy(modem);
+
+
+
+    GVariant *property_value = NULL;
+    g_variant_lookup(value, "Powered",
+                     "*", &property_value);
+
+    if (property_value)
+    {
+        gboolean bValue = FALSE;
+        g_variant_get(property_value, "b", &bValue );
+        modem->powered = bValue;
+
+        g_variant_unref (property_value);
+    }
+
+    modem_list_lock();
+    OfonoManager.modem = g_slist_prepend(OfonoManager.modem, modem);
+    modem_list_unlock();
+
+    if (NULL != ofono_RegisterCallback.modem_added){
+        ofono_RegisterCallback.modem_added(modem);
+    }
+}
+
+static void on_modem_removed (OFONOOrgOfonoManager * object,
+                                gchar* path,
+                                gpointer userdata)
+{
+#ifdef _DEBUG_PRINT_DBUS
+    gchar *s;
+    g_print ("on_modem_removed\n");
+    g_print ("%s\n",path);
+#endif
+
+    struct ofono_modem *modem = NULL;
+
+    modem_list_lock();
+
+    modem = modem_list_find_modem_by_path(path);
+
+    LOGD("remove modem path:%s,%p\n", path, modem);
+
+    if (modem){
+
+        OfonoManager.modem = g_slist_remove_all(OfonoManager.modem,
+                                    modem);
+
+        if (NULL != ofono_RegisterCallback.modem_removed)
+        {
+            ofono_RegisterCallback.modem_removed(modem);
+        }
+
+        modem_free(modem);
+    }
+
+    modem_list_unlock();
+
+}
+
+
+static OFONOMODEMOrgOfonoModem* modem_create_proxy(struct ofono_modem *modem)
+{
+    GError *error = NULL;
+
+    if (NULL == modem)
+    {
+        return NULL;
+    }
+
+    if (NULL == modem->path)
+    {
+        return NULL;
+    }
+
+    modem->proxy = ofono_modem_org_ofono_modem_proxy_new_for_bus_sync (
+        G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, OFONO_SERVICE,
+        modem->path, NULL, &error);
+
+    if (error)
+    {
+        LOGW ("Error : %s\n", error->message);
+        g_error_free(error);
+        return NULL;
+    }
+
+    g_signal_connect (modem->proxy,
+                      "property_changed",
+                      G_CALLBACK (on_modem_property_changed),
+                      modem);
+
+    return modem->proxy;
+
+}
+
+
+/*
+ * Force Update the modem list
+ * Call <method>GetModems
+ * Returns: 0 - success or other errors
+ */
+int modem_list_update() {
+    LOGD("\n");
+
+    GError *error = NULL;
+    GVariant *result = NULL;
+    GSList *newDeviceList = NULL;
+
+
+    result = g_dbus_connection_call_sync(OfonoManager.system_conn,
+            OFONO_SERVICE, OFONO_MANAGER_PATH, OFONO_MANAGER_INTERFACE,
+            "GetModems", NULL, NULL,
+            G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &error);
+
+    if (error) {
+        LOGW ("Error : %s\n", error->message);
+        g_error_free(error);
+        return -1;
+    }
+
+    GVariant *ArrayValue = NULL;
+    GVariantIter *ArrayValueIter;
+    GVariant *Value = NULL;
+
+    g_variant_get(result, "(*)", &ArrayValue);
+
+    g_variant_get(ArrayValue, "a*", &ArrayValueIter);
+    while (g_variant_iter_loop(ArrayValueIter, "*", &Value)) {
+
+        GVariantIter dbus_object_iter;
+        GVariant *dbusObjecPath;
+        GVariant *dbusObjecProperties;
+
+        gchar *pObjecPath = NULL;
+        struct ofono_modem *modem = NULL;
+
+        g_variant_iter_init(&dbus_object_iter, Value);
+
+        //1st : DBus Object Path
+        dbusObjecPath = g_variant_iter_next_value(&dbus_object_iter);
+
+        g_variant_get(dbusObjecPath, "o", &pObjecPath);
+
+        LOGD("object path %s\n",pObjecPath);
+
+          //ObjectPath is /hfp/org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx
+        if ((41 != strlen(pObjecPath))
+            || (NULL == g_strstr_len(pObjecPath, 23,
+                                      "/hfp"ADAPTER_PATH"/dev"))) {
+            g_free(pObjecPath);
+            pObjecPath = NULL;
+            g_variant_unref(dbusObjecPath);
+            continue;
+        }
+
+        modem = g_malloc0(sizeof(struct ofono_modem));
+        modem->path = g_strdup(pObjecPath);
+        g_free(pObjecPath);
+        pObjecPath = NULL;
+        g_variant_unref(dbusObjecPath);
+
+        LOGD("Found new device%s\n",modem->path );
+
+        modem->proxy = modem_create_proxy(modem);
+
+        //2nd : DBus Interfaces under Object Path
+        dbusObjecProperties = g_variant_iter_next_value(&dbus_object_iter);
+
+        GVariant *property_value = NULL;
+        g_variant_lookup(dbusObjecProperties, "Powered",
+                         "*", &property_value);
+
+        if (property_value)
+        {
+            gboolean bValue = FALSE;
+            g_variant_get(property_value, "b", &bValue );
+            modem->powered = bValue;
+
+            g_variant_unref (property_value);
+        }
+
+        g_variant_unref(dbusObjecProperties);
+
+        //Save device to newDeviceList
+        newDeviceList = g_slist_prepend(newDeviceList, modem);
+
+    }
+
+    g_variant_iter_free(ArrayValueIter);
+    g_variant_unref(ArrayValue);
+
+    g_variant_unref(result);
+
+
+    //Force update device, so clean first
+    modem_list_lock();
+
+    modem_list_cleanup();
+
+    OfonoManager.modem = newDeviceList;
+
+    modem_list_unlock();
+
+    return 0;
+}
+
+
+/*
+ * init cli dbus connection
+ * Returns: 0 - success or other errors
+ */
+static int ofono_manager_connect_to_dbus(void)
+{
+    GError *error = NULL;
+
+    OfonoManager.system_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
+
+    if (error)
+    {
+        LOGE("errr:%s",error->message);
+        g_error_free(error);
+
+        return -1;
+    }
+
+    OfonoManager.proxy = ofono_org_ofono_manager_proxy_new_for_bus_sync(
+        G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, OFONO_SERVICE,
+        OFONO_MANAGER_PATH, NULL, &error);
+
+    if (error) {
+        LOGW("Create Ofono manager client fail\n");
+        LOGW("Error:%s\n", error->message);
+        g_error_free(error);
+
+        g_object_unref(OfonoManager.system_conn);
+        return -1;
+    }
+
+    return 0;
+}
+
+/*
+ * register callback function
+ * Returns: 0 - success or other errors
+ */
+static int ofono_manager_register_callback(void)
+{
+
+    g_signal_connect (OfonoManager.proxy,
+                      "modem-added",
+                      G_CALLBACK (on_modem_added),
+                      NULL);
+
+    g_signal_connect (OfonoManager.proxy,
+                      "modem-removed",
+                      G_CALLBACK (on_modem_removed),
+                      NULL);
+
+    return 0;
+}
+
+/*
+ * init dbus and register callback
+ */
+static int ofono_mamager_init(void)
+{
+    int ret = 0;
+    LOGD("\n");
+    ret = ofono_manager_connect_to_dbus();
+
+    if (0 != ret){
+        LOGW("init fail\n");
+        return -1;
+    }
+
+    g_mutex_init(&(OfonoManager.m));
+
+    ofono_manager_register_callback();
+    modem_list_update();
+
+    OfonoManager.inited = TRUE;
+
+    return 0;
+}
+
+#ifdef AGENT_THREAD
+/*
+ * Ofono Manager Thread
+ * register callback function and create a new GMainLoop structure
+ */
+static void *ofono_event_loop_thread()
+{
+    int ret = 0;
+
+    OfonoLoop = g_main_loop_new(NULL, FALSE);;
+
+    ret = ofono_mamager_init();
+
+    if (0 == ret){
+        LOGD("g_main_loop_run\n");
+        g_main_loop_run(OfonoLoop);
+
+    }
+
+    g_main_loop_unref(OfonoLoop);
+    LOGD("exit...\n");
+}
+#endif
+
+/* --- PUBLIC FUNCTIONS --- */
+
+/*
+ * Get the ofono modem "Powered" property
+ */
+gboolean getOfonoModemPoweredByPath (gchar* path)
+{
+    struct ofono_modem *modem = NULL;
+    gboolean powered = FALSE;
+
+    modem_list_lock();
+
+    modem = modem_list_find_modem_by_path(path);
+
+    if (modem){
+        powered = modem->powered;
+    }
+
+    LOGD("get modem %p by path:%s,%d\n", modem, path, powered);
+
+    modem_list_unlock();
+
+    return powered;
+}
+
+
+/*
+ * Init the ofono manager
+ */
+int OfonoManagerInit(void)
+{
+    int ret = 0;
+
+    LOGD("\n");
+
+    if (TRUE == OfonoManager.inited)
+    {
+        LOGW("Ofono Manager is already inited\n");
+        return -1;
+
+    }
+
+#ifdef OFONO_THREAD
+    pthread_t thread_id;
+
+    pthread_create(&thread_id, NULL, ofono_event_loop_thread, NULL);
+    pthread_setname_np(thread_id, "ofono_manager");
+
+#else
+
+    ret = ofono_mamager_init();
+
+#endif
+
+    return ret;
+}
+
+/*
+ * Quit the ofono manager
+ */
+int OfonoManagerQuit(void)
+{
+    LOGD("\n");
+
+    if (TRUE != OfonoManager.inited)
+    {
+        LOGW("Ofono Manager is not inited\n");
+        return -1;
+
+    }
+#ifdef OFONO_THREAD
+    g_main_loop_quit(OfonoLoop);
+#endif
+
+    memset(&ofono_RegisterCallback, 0, sizeof(Ofono_RegisterCallback_t));
+
+    g_object_unref(OfonoManager.proxy);
+
+    modem_list_lock();
+    modem_list_cleanup();
+    modem_list_unlock();
+
+    g_mutex_clear (&(OfonoManager.m));
+
+    g_object_unref(OfonoManager.system_conn);
+
+    OfonoManager.inited = FALSE;
+
+    return 0;
+
+}
+
+/*
+ * Register ofono Callback function
+ */
+void OfonoModemAPIRegister(const Ofono_RegisterCallback_t* pstRegisterCallback)
+{
+    LOGD("\n");
+
+    if (NULL != pstRegisterCallback)
+    {
+        if (NULL != pstRegisterCallback->modem_added)
+        {
+            ofono_RegisterCallback.modem_added =
+                pstRegisterCallback->modem_added;
+        }
+
+        if (NULL != pstRegisterCallback->modem_removed)
+        {
+            ofono_RegisterCallback.modem_removed =
+                pstRegisterCallback->modem_removed;
+        }
+
+        if (NULL != pstRegisterCallback->modem_propertyies_changed)
+        {
+            ofono_RegisterCallback.modem_propertyies_changed =
+                pstRegisterCallback->modem_propertyies_changed;
+        }
+
+    }
+
+}
+
diff --git a/binding-bluetooth/ofono-client.h b/binding-bluetooth/ofono-client.h
new file mode 100644 (file)
index 0000000..8c6b0a2
--- /dev/null
@@ -0,0 +1,74 @@
+/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
+*
+*   Licensed under the Apache License, Version 2.0 (the "License");
+*   you may not use this file except in compliance with the License.
+*   You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*   Unless required by applicable law or agreed to in writing, software
+*   distributed under the License is distributed on an "AS IS" BASIS,
+*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*   See the License for the specific language governing permissions and
+*   limitations under the License.
+*/
+
+
+#ifndef OFONO_CLIENT_H
+#define OFONO_CLIENT_H
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+
+#include "lib_ofono.h"
+#include "lib_ofono_modem.h"
+
+#include "bluetooth-manager.h"
+
+//#define OFONO_THREAD
+
+struct ofono_modem {
+    gchar   *path;
+    OFONOMODEMOrgOfonoModem *proxy;
+
+    //gboolean online;
+    gboolean powered;
+    //gboolean lockdown;
+    //gboolean emergency;
+    //GVariant *interfaces;
+    //GVariant *features;
+    //gchar   *name;
+    //gchar   *type;
+
+};
+
+typedef struct {
+    gboolean inited;
+    GMutex m;
+    GSList * modem;
+    OFONOOrgOfonoManager *proxy;
+    GDBusConnection *system_conn;
+} stOfonoManager;
+
+typedef struct tagOfono_RegisterCallback
+{
+    void (*modem_added)(struct ofono_modem *modem);
+    void (*modem_removed)(struct ofono_modem *modem);
+    void (*modem_propertyies_changed)(struct ofono_modem *modem);
+}Ofono_RegisterCallback_t;
+
+/* --- PUBLIC FUNCTIONS --- */
+void OfonoModemAPIRegister(const Ofono_RegisterCallback_t* pstRegisterCallback);
+
+int OfonoManagerInit(void) ;
+int OfonoManagerQuit(void) ;
+
+gboolean getOfonoModemPoweredByPath (gchar* path);
+
+
+#endif /* OFONO_CLIENT_H */
+
+
+/****************************** The End Of File ******************************/
+