Add comments

This commit is contained in:
Elara 2021-11-24 12:00:44 -08:00
parent 079c733b60
commit 7a772a5458
1 changed files with 19 additions and 3 deletions

View File

@ -7,17 +7,19 @@ import (
) )
func initCallNotifs(dev *infinitime.Device) error { func initCallNotifs(dev *infinitime.Device) error {
// Connect to dbus session monitorConn // Connect to system bus. This connection is for monitoring.
monitorConn, err := newSystemBusConn() monitorConn, err := newSystemBusConn()
if err != nil { if err != nil {
return err return err
} }
// Connect to system bus. This connection is for method calls.
conn, err := newSystemBusConn() conn, err := newSystemBusConn()
if err != nil { if err != nil {
return err return err
} }
// Add match for new calls to monitor connection
err = monitorConn.AddMatchSignal( err = monitorConn.AddMatchSignal(
dbus.WithMatchSender("org.freedesktop.ModemManager1"), dbus.WithMatchSender("org.freedesktop.ModemManager1"),
dbus.WithMatchInterface("org.freedesktop.ModemManager1.Modem.Voice"), dbus.WithMatchInterface("org.freedesktop.ModemManager1.Modem.Voice"),
@ -27,18 +29,26 @@ func initCallNotifs(dev *infinitime.Device) error {
return err return err
} }
callCh := make(chan *dbus.Message, 10) // Create channel to receive calls
callCh := make(chan *dbus.Message, 5)
// Notify channel upon received message
monitorConn.Eavesdrop(callCh) monitorConn.Eavesdrop(callCh)
go func() { go func() {
// For every message received
for event := range callCh { for event := range callCh {
// Get path to call object
callPath := event.Body[0].(dbus.ObjectPath) callPath := event.Body[0].(dbus.ObjectPath)
// Get call object
callObj := conn.Object("org.freedesktop.ModemManager1", callPath) callObj := conn.Object("org.freedesktop.ModemManager1", callPath)
// Get phone number from call object using method call connection
phoneNum, err := getPhoneNum(conn, callObj) phoneNum, err := getPhoneNum(conn, callObj)
if err != nil { if err != nil {
log.Fatal().Err(err).Send() log.Fatal().Err(err).Send()
} }
// Send call notification to InfiniTime
resCh, err := dev.NotifyCall(phoneNum) resCh, err := dev.NotifyCall(phoneNum)
if err != nil { if err != nil {
continue continue
@ -70,8 +80,10 @@ func initCallNotifs(dev *infinitime.Device) error {
return nil return nil
} }
// getPhoneNum gets a phone number from a call object using a DBus connection
func getPhoneNum(conn *dbus.Conn, callObj dbus.BusObject) (string, error) { func getPhoneNum(conn *dbus.Conn, callObj dbus.BusObject) (string, error) {
var out string var out string
// Get number property on DBus object and store return value in out
err := callObj.StoreProperty("org.freedesktop.ModemManager1.Call.Number", &out) err := callObj.StoreProperty("org.freedesktop.ModemManager1.Call.Number", &out)
if err != nil { if err != nil {
return "", err return "", err
@ -79,7 +91,9 @@ func getPhoneNum(conn *dbus.Conn, callObj dbus.BusObject) (string, error) {
return out, nil return out, nil
} }
// getPhoneNum accepts a call using a DBus connection
func acceptCall(conn *dbus.Conn, callObj dbus.BusObject) error { func acceptCall(conn *dbus.Conn, callObj dbus.BusObject) error {
// Call Accept() method on DBus object
call := callObj.Call("org.freedesktop.ModemManager1.Call.Accept", 0) call := callObj.Call("org.freedesktop.ModemManager1.Call.Accept", 0)
if call.Err != nil { if call.Err != nil {
return call.Err return call.Err
@ -87,10 +101,12 @@ func acceptCall(conn *dbus.Conn, callObj dbus.BusObject) error {
return nil return nil
} }
// getPhoneNum declines a call using a DBus connection
func declineCall(conn *dbus.Conn, callObj dbus.BusObject) error { func declineCall(conn *dbus.Conn, callObj dbus.BusObject) error {
// Call Hangup() method on DBus object
call := callObj.Call("org.freedesktop.ModemManager1.Call.Hangup", 0) call := callObj.Call("org.freedesktop.ModemManager1.Call.Hangup", 0)
if call.Err != nil { if call.Err != nil {
return call.Err return call.Err
} }
return nil return nil
} }