summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryidongmiao <yidong.miao@cn.alps.com>2017-04-07 17:01:42 +0800
committeryidongmiao <yidong.miao@cn.alps.com>2017-04-19 09:56:40 +0800
commitaa872a08e289d3c3240ec93c8b70b061e260bd83 (patch)
tree24962621a7e4797facfeb862c6929ef1c5a2392b
parent607d2a47e93b721ef9671d62109384a290094b5f (diff)
BT: Update to support WebSocket
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
-rw-r--r--app/bluetooth/Bluetooth.qml890
-rw-r--r--binding-bluetooth/binding-bluetooth.pro6
-rw-r--r--binding-bluetooth/bluetooth-agent.c736
-rw-r--r--binding-bluetooth/bluetooth-agent.h67
-rw-r--r--binding-bluetooth/bluetooth-api.c724
-rw-r--r--binding-bluetooth/bluetooth-api.h34
-rw-r--r--binding-bluetooth/bluetooth-manager.c1853
-rw-r--r--binding-bluetooth/bluetooth-manager.h120
-rw-r--r--binding-bluetooth/bluez-client.c956
-rw-r--r--binding-bluetooth/bluez-client.h76
-rw-r--r--binding-bluetooth/lib_agent.c2504
-rw-r--r--binding-bluetooth/lib_agent.h409
-rw-r--r--binding-bluetooth/lib_bluez.c630
-rw-r--r--binding-bluetooth/lib_bluez.h170
-rw-r--r--binding-bluetooth/lib_ofono.c5615
-rw-r--r--binding-bluetooth/lib_ofono.h981
-rw-r--r--binding-bluetooth/lib_ofono_modem.c11664
-rw-r--r--binding-bluetooth/lib_ofono_modem.h1941
-rw-r--r--binding-bluetooth/ofono-client.c672
-rw-r--r--binding-bluetooth/ofono-client.h74
20 files changed, 28932 insertions, 1190 deletions
diff --git a/app/bluetooth/Bluetooth.qml b/app/bluetooth/Bluetooth.qml
index 0ce01a1..a99d8a0 100644
--- a/app/bluetooth/Bluetooth.qml
+++ b/app/bluetooth/Bluetooth.qml
@@ -1,369 +1,521 @@
-/*
- * 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()
- }
- }
- }
-
+/*
+ * 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 QtWebSockets 1.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
+ property string initDevice: 'N'
+
+ property string address_str: bindingAddressWS
+ property string token_str: ""
+ property string api_str: "Bluetooth-Manager"
+ property string verb_str: ""
+ property var parameterJson: 'None'
+ property string payloadLength: "9999"
+ property var msgid_enu: {
+ "call": 2,
+ "retok": 3,
+ "reterr": 4,
+ "event": 5
+ }
+ property string request_str: ""
+ property string status_str: ""
+
+ WebSocket {
+ id: websocket
+ url: address_str
+ onTextMessageReceived: {
+ var message_json = JSON.parse(message);
+ //console.log("Raw response: " + message)
+ //console.log("JSON response: " + message_json)
+ if (message_json[0] === msgid_enu.reterr) {
+ console.log("Return value is not OK!")
+ return
+ }
+ else if ((message_json[0] === msgid_enu.event)){
+ var eventContent = JSON.parse(JSON.stringify(message_json[2]))
+ if (eventContent.event === "Bluetooth-Manager/device_added"){
+ //jsonObjectBT.add(eventContent.data)
+ //btDeviceList.clear()
+ console.log("BT list refreshed")
+ initDevice = 'Y'
+ btDeviceList.append({
+ deviceAddress: eventContent.data.Address,
+ deviceName: eventContent.data.Name,
+ devicePairable:eventContent.data.Paired,
+ deviceConnect: eventContent.data.Connected,
+ connectAVP: eventContent.data.AVPConnected,
+ connectHFP: eventContent.data.HFPConnected,
+ textToShow: ""
+ })
+ } else if(eventContent.event === "Bluetooth-Manager/device_removed"){
+ if (findDevice(eventContent.data.Address) >= 0){
+ btDeviceList.remove(findDevice(eventContent.data.Address))
+ }
+ } else if(eventContent.event === "Bluetooth-Manager/device_updated"){
+ updateDeviceAttribute(eventContent.data)
+ } else if(eventContent.event === "Bluetooth-Manager/request_confirmation"){
+ request(btAPIpath + "send_confirmation?value=yes", function (o) {
+ console.log(o.responseText)
+ })
+ }
+ }
+ if ((verb_str == "connect") || (verb_str == "refresh")) {
+ token_str = message_json[3]
+ } else if (verb_str == "logout") {
+ token_str = ""
+ websocket.active = false
+ console.log("close socket")
+ }
+ }
+ onStatusChanged: {
+ if (websocket.status == WebSocket.Error) {
+ status_str = "Error: " + websocket.errorString
+ } else if (websocket.status == WebSocket.Open) {
+ status_str = "Socket opened; sending message..."
+ if (verb_str == "connect"){
+ WebSocket.sendTextMessage (request_str)
+ }
+
+ verb_str = "eventadd"
+ parameterJson = {
+ tag: 'device_updated',
+ name: 'device_updated'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ verb_str = "eventsub"
+ parameterJson = {
+ tag: 'device_updated'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ verb_str = "eventadd"
+ parameterJson = {
+ tag: 'device_added',
+ name: 'device_added'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ verb_str = "eventsub"
+ parameterJson = {
+ tag: 'device_added'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ verb_str = "eventadd"
+ parameterJson = {
+ tag: 'device_removed',
+ name: 'device_removed'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ verb_str = "eventsub"
+ parameterJson = {
+ tag: 'device_removed'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ verb_str = "eventadd"
+ parameterJson = {
+ tag: 'request_confirmation',
+ name: 'request_confirmation'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ verb_str = "eventsub"
+ parameterJson = {
+ tag: 'request_confirmation'
+ }
+ sendSocketMesage(verb_str, parameterJson)
+
+ } else if (websocket.status == WebSocket.Closed) {
+ status_str = "Socket closed"
+ }
+ }
+ active: false
+ }
+
+ Text {
+ id: log
+ anchors.fill: parent
+ anchors.margins: 10
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ onCheckedChanged: {
+ console.log("Bluetooth set to", checked)
+ if (checked == true) {
+ initBTlist()
+ request(btAPIpath + 'power?value=1', function (o) {
+ // log the json response
+ console.log(o.responseText)
+ websocket.active = true
+ })
+ request(btAPIpath + 'set_property?Property=Discoverable\&value=true', function (o) {
+ console.log(o.responseText)
+ })
+ request(btAPIpath + 'set_property?Property=Pairable\&value=true', function (o) {
+ 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
+
+ } else {
+ btDeviceList.clear()
+ 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
+ console.log(o.responseText)
+ })
+ buttonScan.text = "SEARCH" //when power off the button should be set to SEARCH
+ currentState = 'idle'
+ btState = 'off' //bt off
+ websocket.active = false
+ }
+ }
+
+ function sendSocketMesage(verb, parameter) {
+ var requestJson = [msgid_enu.call, payloadLength, api_str + '/'
+ + verb, parameter]
+ websocket.sendTextMessage(JSON.stringify(requestJson))
+ }
+
+ 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
+ console.log(o.responseText)
+ })
+ buttonScan.text = "STOP"
+ currentState = 'discovering'
+ }
+ }else{
+ request(btAPIpath + 'stop_discovery', function (o) {
+ // log the json response
+ console.log(o.responseText)
+ })
+ buttonScan.text = "SEARCH"
+ currentState = 'idle'
+ }
+ }
+ }
+ }
+ }
+
+ 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: btStatus
+ property string connectionState:""
+ 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 = connectionState
+ if (initDevice === "Y")
+ {
+ textToShow = text
+ text = deviceAddress + text
+ initDevice = 'N'
+ }
+ else
+ {
+ text = deviceAddress + textToShow
+ }
+ }
+ font.pixelSize: 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)
+ })
+ if (findDevice(deviceAddress) >= 0){
+ btDeviceList.remove(findDevice(deviceAddress))
+ }
+ }
+ }
+ }
+
+ Button {
+ id: connectButton
+ anchors.top:parent.top
+ anchors.topMargin: 15
+ anchors.right: removeButton.left
+ anchors.rightMargin: 10
+
+ text:(deviceConnect == "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_device_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"
+ }
+ }
+ }
+ }
+ }
+
+ 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 < btDeviceList.count; i++) {
+ if (address === btDeviceList.get(i).deviceAddress){
+ return i
+ }
+ }
+ return -1
+ }
+
+ function updateDeviceAttribute(data){
+ var text = ""
+ for (var i = 0; i < btDeviceList.count; i++) {
+ if (data.Address === btDeviceList.get(i).deviceAddress){
+ btDeviceList.get(i).devicePairable = data.Paired
+ if (data.Paired == "True")
+ {
+ console.log("connectButton " + btDeviceList.get(i).btStatus)
+ //ALCZbtDeviceList.get(i).connectButton.text = "Connect"
+ }
+
+ if ((data.Paired === "True")
+ && (data.Connected === "False"))
+ text = ", paired"
+ else if ((data.Paired === "True")
+ && (data.Connected === "True")
+ && (data.AVPConnected === "True")
+ && (data.HFPConnected === "False"))
+ text = "AV Connection, "
+ else if ((data.Paired === "True")
+ && (data.Connected === "True")
+ && (data.HFPConnected === "True")
+ && (data.AVPConnected === "False"))
+ text = "Handsfree Connection, "
+ else if ((data.Paired === "True")
+ && (data.Connected === "True")
+ && (data.HFPConnected === "True")
+ && (data.AVPConnected === "True")) {
+ console.log("all connected!!")
+ text = ", Handsfree & AV Connection"}
+ else
+ text = ""
+
+ btDeviceList.set(i, {
+ textToShow: " " + text
+ })
+ console.log("iamhere" + btDeviceList.get(i).deviceAddress + data.Paired)
+
+ //btDeviceList.get(i).btStatus = text + btDeviceList.get(i).deviceAddress //btDeviceList.get(i).textToShow
+ btDeviceList.layoutChanged()
+
+ btDeviceList.get(i).deviceConnect = data.Connected
+ console.log(data.Connected)
+ }
+ }
+ }
+
+ function initBTlist(){
+ 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++) {
+ initDevice = 'Y'
+ console.log(jsonObjectBT[i].Paired)
+ 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,
+ textToShow: ""
+ })
+ }
+ })
+ }
+ }
+
diff --git a/binding-bluetooth/binding-bluetooth.pro b/binding-bluetooth/binding-bluetooth.pro
index 9dba7a1..600695a 100644
--- a/binding-bluetooth/binding-bluetooth.pro
+++ b/binding-bluetooth/binding-bluetooth.pro
@@ -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
index 0000000..7193ce5
--- /dev/null
+++ b/binding-bluetooth/bluetooth-agent.c
@@ -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
index 0000000..2b4b78a
--- /dev/null
+++ b/binding-bluetooth/bluetooth-agent.h
@@ -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 ******************************/
+
diff --git a/binding-bluetooth/bluetooth-api.c b/binding-bluetooth/bluetooth-api.c
index 487a79f..705e040 100644
--- a/binding-bluetooth/bluetooth-api.c
+++ b/binding-bluetooth/bluetooth-api.c
@@ -22,27 +22,191 @@
#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 ******************************/
diff --git a/binding-bluetooth/bluetooth-api.h b/binding-bluetooth/bluetooth-api.h
index 8a7e593..07e1875 100644
--- a/binding-bluetooth/bluetooth-api.h
+++ b/binding-bluetooth/bluetooth-api.h
@@ -18,33 +18,35 @@
#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 ******************************/
diff --git a/binding-bluetooth/bluetooth-manager.c b/binding-bluetooth/bluetooth-manager.c
index 893760d..91dfa1c 100644
--- a/binding-bluetooth/bluetooth-manager.c
+++ b/binding-bluetooth/bluetooth-manager.c
@@ -18,729 +18,1505 @@
#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 **************************************/
diff --git a/binding-bluetooth/bluetooth-manager.h b/binding-bluetooth/bluetooth-manager.h
index 3602a78..2876552 100644
--- a/binding-bluetooth/bluetooth-manager.h
+++ b/binding-bluetooth/bluetooth-manager.h
@@ -14,15 +14,47 @@
*/
-#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"
@@ -33,18 +65,20 @@
//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"
@@ -71,11 +105,7 @@
#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"
@@ -85,33 +115,29 @@
#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
index 0000000..ddaedbb
--- /dev/null
+++ b/binding-bluetooth/bluez-client.c
@@ -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
index 0000000..2ff50e6
--- /dev/null
+++ b/binding-bluetooth/bluez-client.h
@@ -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
index 0000000..6324dfb
--- /dev/null
+++ b/binding-bluetooth/lib_agent.c
@@ -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
index 0000000..0a355ee
--- /dev/null
+++ b/binding-bluetooth/lib_agent.h
@@ -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
index 0000000..58d844d
--- /dev/null
+++ b/binding-bluetooth/lib_bluez.c
@@ -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
index 0000000..1408bb2
--- /dev/null
+++ b/binding-bluetooth/lib_bluez.h
@@ -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
index 0000000..05ce89b
--- /dev/null
+++ b/binding-bluetooth/lib_ofono.c
@@ -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
index 0000000..bdc946e
--- /dev/null
+++ b/binding-bluetooth/lib_ofono.h
@@ -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
index 0000000..e30eaa0
--- /dev/null
+++ b/binding-bluetooth/lib_ofono_modem.c
@@ -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
index 0000000..de8f6b1
--- /dev/null
+++ b/binding-bluetooth/lib_ofono_modem.h
@@ -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
index 0000000..26b28c7
--- /dev/null
+++ b/binding-bluetooth/ofono-client.c
@@ -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
index 0000000..8c6b0a2
--- /dev/null
+++ b/binding-bluetooth/ofono-client.h
@@ -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 ******************************/
+