Sha256: 2183b1393cc9aec873276d6267ee137507193fdde0addb8617eccce3d0a3327d

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

# encoding: utf-8
require 'dbus'
require 'network_manager/modem'

class NetworkManager
  attr_reader :modem_service, :modem_bus_path

  MODEM_MANAGER_BUS_PATH              = '/org/freedesktop/ModemManager'
  DBUS_PROPERTIES                     = 'freedesktop.DBus.Properties'
  MM_DBUS_SERVICE                     = 'org.freedesktop.ModemManager'
  MM_DBUS_INTERFACE_MODEM             = 'org.freedesktop.ModemManager.Modem'
  MM_DBUS_INTERFACE_MODEM_CDMA        = 'org.freedesktop.ModemManager.Modem.Cdma'
  MM_DBUS_INTERFACE_MODEM_GSM_CARD    = 'org.freedesktop.ModemManager.Modem.Gsm.Card'
  MM_DBUS_INTERFACE_MODEM_GSM_NETWORK = 'org.freedesktop.ModemManager.Modem.Gsm.Network'
  MM_DBUS_INTERFACE_MODEM_SIMPLE      = 'org.freedesktop.ModemManager.Modem.Simple'
  MM_DBUS_INTERFACE_MODEM_GSM_USSD    = 'org.freedesktop.ModemManager.Modem.Gsm.Ussd'

  def initialize(opts = {})
    set_options opts
    @bus        = DBus::SystemBus.instance
  end

  # Discover all enabled devices
  def modems(opts = {})
    @mm_service = @bus.service(@modem_service)
    @mm_object  = @mm_service.object(@modem_bus_path)
    @mm_object.introspect
    NetworkManager::Modem.fetch(@mm_object.EnumerateDevices()[0], service: @mm_service)
  end

  # def on_device_add(&block)
  #   @bus        = DBus::SystemBus.instance
  #   @mm_service = @bus.service('org.freedesktop.ModemManager')
  #   @mm_object  = @mm_service.object('/org/freedesktop/ModemManager')
  #   @mm_object.introspect

  #   @properties = @mm_object.dup
  #   @properties.default_iface = DBUS_PROPERTIES
  #   @properties.introspect

  #   @properties.on_signal('DeviceAdded') {|x| puts x}
  # end

  protected

  def set_options(opts = {})
    @modem_service  ||= MM_DBUS_SERVICE
    @modem_bus_path ||= MODEM_MANAGER_BUS_PATH

    opts.each do |k,v|
      instance_variable_set("@#{k}", v) unless v.nil?
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-network-manager-1.0.16 lib/ruby-network-manager.rb