diff options
author | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2017-05-12 21:51:59 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@automotivelinux.org> | 2017-05-12 21:51:59 +0000 |
commit | fa4479274ac0b6b5ce0652c7f758041c52a509aa (patch) | |
tree | 2e5150acc62b0d9f3fc2af20a4487f5daf51171e | |
parent | 7be5ebd1174af9b695c39b2cf66f77cb171b99e7 (diff) | |
parent | aa872a08e289d3c3240ec93c8b70b061e260bd83 (diff) |
Merge "BT: Update to support WebSocket"
-rw-r--r-- | app/bluetooth/Bluetooth.qml | 890 | ||||
-rw-r--r-- | binding-bluetooth/binding-bluetooth.pro | 6 | ||||
-rw-r--r-- | binding-bluetooth/bluetooth-agent.c | 736 | ||||
-rw-r--r-- | binding-bluetooth/bluetooth-agent.h | 67 | ||||
-rw-r--r-- | binding-bluetooth/bluetooth-api.c | 724 | ||||
-rw-r--r-- | binding-bluetooth/bluetooth-api.h | 34 | ||||
-rw-r--r-- | binding-bluetooth/bluetooth-manager.c | 1853 | ||||
-rw-r--r-- | binding-bluetooth/bluetooth-manager.h | 120 | ||||
-rw-r--r-- | binding-bluetooth/bluez-client.c | 956 | ||||
-rw-r--r-- | binding-bluetooth/bluez-client.h | 76 | ||||
-rw-r--r-- | binding-bluetooth/lib_agent.c | 2504 | ||||
-rw-r--r-- | binding-bluetooth/lib_agent.h | 409 | ||||
-rw-r--r-- | binding-bluetooth/lib_bluez.c | 630 | ||||
-rw-r--r-- | binding-bluetooth/lib_bluez.h | 170 | ||||
-rw-r--r-- | binding-bluetooth/lib_ofono.c | 5615 | ||||
-rw-r--r-- | binding-bluetooth/lib_ofono.h | 981 | ||||
-rw-r--r-- | binding-bluetooth/lib_ofono_modem.c | 11664 | ||||
-rw-r--r-- | binding-bluetooth/lib_ofono_modem.h | 1941 | ||||
-rw-r--r-- | binding-bluetooth/ofono-client.c | 672 | ||||
-rw-r--r-- | binding-bluetooth/ofono-client.h | 74 |
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 (¶mv[0], AGENT_TYPE_ORG_BLUEZ_AGENT1); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], AGENT_TYPE_ORG_BLUEZ_AGENT1); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_TYPE_ORG_OFONO_MANAGER); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_TYPE_ORG_OFONO_MANAGER); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_TYPE_ORG_OFONO_HANDSFREE_AUDIO_MANAGER); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_TYPE_ORG_OFONO_PHONESIM_MANAGER); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_MODEM_TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_MODEM_TYPE_ORG_OFONO_MODEM); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_MODEM_TYPE_ORG_OFONO_MODEM); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_TIME); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_MODEM_TYPE_ORG_OFONO_NETWORK_REGISTRATION); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_MODEM_TYPE_ORG_OFONO_HANDSFREE); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_MODEM_TYPE_ORG_OFONO_CALL_VOLUME); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], OFONO_MODEM_TYPE_ORG_OFONO_VOICE_CALL_MANAGER); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 ******************************/ + |