Class: NetworkManager::Modem

Inherits:
Object
  • Object
show all
Defined in:
lib/network_manager/modem.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Modem

Returns a new instance of Modem.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/network_manager/modem.rb', line 6

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[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
end

Instance Attribute Details

#bus_pathObject (readonly) Also known as: dbus_path

Returns the value of attribute bus_path.



4
5
6
# File 'lib/network_manager/modem.rb', line 4

def bus_path
  @bus_path
end

#serviceObject (readonly)

Returns the value of attribute service.



4
5
6
# File 'lib/network_manager/modem.rb', line 4

def service
  @service
end

Class Method Details

.fetch(paths_array, opts = {}) ⇒ Object



131
132
133
134
135
136
137
# File 'lib/network_manager/modem.rb', line 131

def fetch(paths_array, opts = {})
  devices = []
  paths_array.compact.reject {|x| x && x.size <= 0 }.each do |path|
    devices << self.new(opts.merge({bus_path: path}))
  end
  devices
end

Instance Method Details

#deviceObject



95
96
97
98
99
100
101
102
103
# File 'lib/network_manager/modem.rb', line 95

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!Object



39
40
41
# File 'lib/network_manager/modem.rb', line 39

def disable!
  @modem.Enable(false) == [] if enabled?
end

#disabled?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/network_manager/modem.rb', line 35

def disabled?
  !enabled?
end

#enable!Object



31
32
33
# File 'lib/network_manager/modem.rb', line 31

def enable!
  @modem.Enable(true) == [] if disabled?
end

#imeiObject



68
69
70
# File 'lib/network_manager/modem.rb', line 68

def imei
  @properties.GetImei[0] rescue nil
end

#imsiObject



72
73
74
# File 'lib/network_manager/modem.rb', line 72

def imsi
  @properties.GetImsi[0] rescue nil
end

#inspectObject



109
110
111
112
113
114
115
# File 'lib/network_manager/modem.rb', line 109

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

#modelObject



43
44
45
# File 'lib/network_manager/modem.rb', line 43

def model
  @device_info[1] rescue nil
end

#operator_codeObject



52
53
54
# File 'lib/network_manager/modem.rb', line 52

def operator_code
  status["operator_code"] rescue nil
end

#scanObject



76
77
78
# File 'lib/network_manager/modem.rb', line 76

def scan
  @network.Scan[0] rescue nil
end

#send_ussd(message) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/network_manager/modem.rb', line 80

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

#signalObject



64
65
66
# File 'lib/network_manager/modem.rb', line 64

def signal
  @properties.GetSignalQuality[0] rescue 0
end

#statusObject Also known as: enabled?



47
48
49
# File 'lib/network_manager/modem.rb', line 47

def status
  @properties['org.freedesktop.ModemManager.Modem']['Enabled'] rescue false
end

#to_hObject



117
118
119
120
121
122
123
124
125
126
# File 'lib/network_manager/modem.rb', line 117

def to_h
  {
    imei: imei,
    imsi: imsi,
    signal: signal,
    operator_code: operator_code, 
    device: device,
    status: (enabled? ? :enabled : :disabled )
  }
end

#ussd_stateObject



105
106
107
# File 'lib/network_manager/modem.rb', line 105

def ussd_state
  @properties['org.freedesktop.ModemManager.Modem.Gsm.Ussd']['State']
end

#vendorObject



56
57
58
# File 'lib/network_manager/modem.rb', line 56

def vendor
  @device_info[0] rescue nil
end

#versionObject



60
61
62
# File 'lib/network_manager/modem.rb', line 60

def version
  @device_info[2] rescue nil
end