class NetworkManager::Modem

Attributes

bus_path[R]
dbus_path[R]
service[R]

Public Class Methods

fetch(paths_array, opts = {}) click to toggle source
# File lib/network_manager/modem.rb, line 141
def fetch(paths_array, opts = {})
  devices = []
  paths_array.compact.reject {|x| x && x.size <= 0 }.each do |path|
    begin
      devices << self.new(opts.merge({bus_path: path}))
    rescue NetworkManager::Modem::NotValid => e 
      puts "Bus #{path} contains empty object, skipping"
    end
  end
  devices
end
new(opts = {}) click to toggle source
# File lib/network_manager/modem.rb, line 10
def initialize(opts = {})
  opts.each do |k,v|
    instance_variable_set("@#{k}", v) unless v.nil?
  end

  unless defined?(@service)
    @bus        ||= DBus::SystemBus.instance
    @service    = @bus.service(NetworkManager::MM_DBUS_SERVICE) 
  end

  # Set DBUS proxy
  @proxy = @service.object(@bus_path)
  @proxy.introspect

  @properties = @proxy.dup
  @properties.default_iface = NetworkManager::DBUS_PROPERTIES
  @properties.introspect

  @s_modem = @proxy[NetworkManager::MM_DBUS_INTERFACE_MODEM_SIMPLE]
  @modem   = @proxy[NetworkManager::MM_DBUS_INTERFACE_MODEM]
  @network = @proxy[NetworkManager::MM_DBUS_INTERFACE_MODEM_GSM_NETWORK]
  @ussd    = @proxy[NetworkManager::MM_DBUS_INTERFACE_MODEM_GSM_USSD]

  @device_info = @properties.GetInfo[0] rescue nil
  raise NetworkManager::Modem::NotValid unless valid?
end

Public Instance Methods

device() click to toggle source
# File lib/network_manager/modem.rb, line 105
def device
  {
    model: model,
    port: @properties[MM_DBUS_INTERFACE_MODEM]['Device'],
    unlock_required: @properties[MM_DBUS_INTERFACE_MODEM]['UnlockRequired'],
    master_device: @properties[MM_DBUS_INTERFACE_MODEM]['MasterDevice'],
    dbus_path: @bus_path
  }
end
disable!() click to toggle source
# File lib/network_manager/modem.rb, line 49
def disable!
  @modem.Enable(false) == [] if enabled?
end
disabled?() click to toggle source
# File lib/network_manager/modem.rb, line 45
def disabled?
  !enabled?
end
enable!() click to toggle source
# File lib/network_manager/modem.rb, line 41
def enable!
  @modem.Enable(true) == [] if disabled?
end
enabled?()
Alias for: status
imei() click to toggle source
# File lib/network_manager/modem.rb, line 78
def imei
  @properties.GetImei[0] rescue nil
end
imsi() click to toggle source
# File lib/network_manager/modem.rb, line 82
def imsi
  @properties.GetImsi[0] rescue nil
end
inspect() click to toggle source
# File lib/network_manager/modem.rb, line 119
def inspect
  if enabled?
    "#<NetworkManager::Modem##{object_id} IMEI: #{imei} Device: #{vendor} #{model} #{version} USSD_STATE: #{ussd_state}>"
  else
    "#<NetworkManager::Modem##{object_id} DISABLED Device: #{vendor} #{model} #{version}"
  end
end
model() click to toggle source
# File lib/network_manager/modem.rb, line 53
def model
  @device_info[1] rescue nil
end
operator_code() click to toggle source
# File lib/network_manager/modem.rb, line 62
def operator_code
  status["operator_code"] rescue nil
end
scan() click to toggle source
# File lib/network_manager/modem.rb, line 86
def scan
  @network.Scan[0] rescue nil
end
send_ussd(message) click to toggle source
# File lib/network_manager/modem.rb, line 90
def send_ussd(message)
  rsp = case ussd_state
  when 'idle'
    @ussd.Initiate(message)
  when 'active'
    @ussd.Cancel rescue nil
    @ussd.Initiate(message)
  when 'user-response'
    @ussd.Respond(message)
  end

  # @ussd.Cancel rescue nil
  rsp[0] if rsp.is_a?(Array)
end
signal() click to toggle source
# File lib/network_manager/modem.rb, line 74
def signal
  @properties.GetSignalQuality[0] rescue 0
end
status() click to toggle source
# File lib/network_manager/modem.rb, line 57
def status
  @properties['org.freedesktop.ModemManager.Modem']['Enabled'] rescue false
end
Also aliased as: enabled?
to_h() click to toggle source
# File lib/network_manager/modem.rb, line 127
def to_h
  {
    imei: imei,
    imsi: imsi,
    signal: signal,
    operator_code: operator_code, 
    device: device,
    status: (enabled? ? :enabled : :disabled )
  }
end
ussd_state() click to toggle source
# File lib/network_manager/modem.rb, line 115
def ussd_state
  @properties['org.freedesktop.ModemManager.Modem.Gsm.Ussd']['State']
end
valid?() click to toggle source
# File lib/network_manager/modem.rb, line 37
def valid?
  @properties.interfaces.size > 0
end
vendor() click to toggle source
# File lib/network_manager/modem.rb, line 66
def vendor
  @device_info[0] rescue nil
end
version() click to toggle source
# File lib/network_manager/modem.rb, line 70
def version
  @device_info[2] rescue nil
end