ruby-network-manager 0.14.1 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,7 +1,4 @@
1
1
  source "https://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
2
 
6
3
  gem 'ruby-dbus', require: 'dbus', git: 'git://github.com/mvidner/ruby-dbus.git'
7
4
 
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  GIT
2
2
  remote: git://github.com/mvidner/ruby-dbus.git
3
- revision: f25a6953df050ea53dd3bd455660ffabaa5dae75
3
+ revision: 617fb1a53a1ade138f1d7845e1937a901c302442
4
4
  specs:
5
- ruby-dbus (0.9.0)
5
+ ruby-dbus (0.9.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
data/README.rdoc CHANGED
@@ -12,10 +12,27 @@ To fetch all available modems call:
12
12
 
13
13
  require 'ruby-network-manager'
14
14
  @network_mgr = NetworkManager.new
15
- @devices = @network_mgr.modem_devices
15
+ @devices = @network_mgr.modems
16
16
 
17
17
  *modem_devices* method returns array of *NetworkManager::Modem#Object*.
18
18
 
19
+ Available methods on *NetworkManager::Modem#Object*:
20
+ * status
21
+ * enabled? / disabled?
22
+ * enable! / disable!
23
+ * model
24
+ * operator_code
25
+ * vendor
26
+ * version
27
+ * signal
28
+ * imei
29
+ * imsi
30
+ * scan
31
+ * send_ussd
32
+ * device
33
+ * ussd_state
34
+ * to_h
35
+
19
36
  == Contributing to ruby-network-manager
20
37
 
21
38
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.14.1
1
+ 1.0.10
@@ -8,6 +8,11 @@ class NetworkManager
8
8
  instance_variable_set("@#{k}", v) unless v.nil?
9
9
  end
10
10
 
11
+ unless defined?(@service)
12
+ @bus ||= DBus::SystemBus.instance
13
+ @service = @bus.service(NetworkManager::MM_DBUS_SERVICE)
14
+ end
15
+
11
16
  # Set DBUS proxy
12
17
  @proxy = @service.object(@bus_path)
13
18
  @proxy.introspect
@@ -24,16 +29,6 @@ class NetworkManager
24
29
  @device_info = @properties.GetInfo[0] rescue nil
25
30
  end
26
31
 
27
- def enabled?
28
- begin
29
- status
30
- return true
31
- rescue => e
32
- return !e.message.include?('device is not enabled')
33
- end
34
- nil
35
- end
36
-
37
32
  def enable!
38
33
  @modem.Enable(true) == [] if disabled?
39
34
  end
@@ -51,8 +46,9 @@ class NetworkManager
51
46
  end
52
47
 
53
48
  def status
54
- @s_modem.GetStatus[0]
49
+ @properties['org.freedesktop.ModemManager.Modem']['Enabled']
55
50
  end
51
+ alias :enabled? :status
56
52
 
57
53
  def operator_code
58
54
  status["operator_code"] rescue nil
@@ -83,14 +79,55 @@ class NetworkManager
83
79
  end
84
80
 
85
81
  def send_ussd(message)
86
- @ussd.Cancel
87
- @ussd.Initiate(message)
82
+ rsp = case ussd_state
83
+ when 'idle'
84
+ @ussd.Initiate(message)
85
+ when 'active'
86
+ @ussd.Cancel rescue nil
87
+ @ussd.Initiate(message)
88
+ when 'user-response'
89
+ @ussd.Respond(message)
90
+ end
91
+
92
+ # @ussd.Cancel rescue nil
93
+ rsp[0] if rsp.is_a?(Array)
94
+ end
95
+
96
+ def device
97
+ {
98
+ model: model,
99
+ port: @properties[MM_DBUS_INTERFACE_MODEM]['Device'],
100
+ unlock_required: @properties[MM_DBUS_INTERFACE_MODEM]['UnlockRequired'],
101
+ master_device: @properties[MM_DBUS_INTERFACE_MODEM]['MasterDevice'],
102
+ dbus_path: @bus_path
103
+ }
104
+ end
105
+
106
+ def ussd_state
107
+ @properties['org.freedesktop.ModemManager.Modem.Gsm.Ussd']['State']
88
108
  end
89
109
 
90
110
  def inspect
91
- "#<NetworkManager::Modem##{object_id} IMEI: #{imei} Device: #{vendor} #{model} #{version} >"
111
+ if enabled?
112
+ "#<NetworkManager::Modem##{object_id} IMEI: #{imei} Device: #{vendor} #{model} #{version} USSD_STATE: #{ussd_state}>"
113
+ else
114
+ "#<NetworkManager::Modem##{object_id} DISABLED Device: #{vendor} #{model} #{version}"
115
+ end
92
116
  end
93
117
 
118
+ def to_h
119
+ {
120
+ imei: imei,
121
+ imsi: imsi,
122
+ signal: signal,
123
+ operator_code: operator_code,
124
+ device: device,
125
+ status: (enabled? ? :enabled : :disabled )
126
+ }
127
+ end
128
+
129
+ alias :dbus_path :bus_path
130
+
94
131
  class << self
95
132
  def fetch(paths_array, opts = {})
96
133
  devices = []
@@ -5,6 +5,7 @@ require 'network_manager/modem'
5
5
  class NetworkManager
6
6
  attr_reader :modem_service, :modem_bus_path
7
7
 
8
+ MODEM_MANAGER_BUS_PATH = '/org/freedesktop/ModemManager'
8
9
  DBUS_PROPERTIES = 'freedesktop.DBus.Properties'
9
10
  MM_DBUS_SERVICE = 'org.freedesktop.ModemManager'
10
11
  MM_DBUS_INTERFACE_MODEM = 'org.freedesktop.ModemManager.Modem'
@@ -17,26 +18,34 @@ class NetworkManager
17
18
  def initialize(opts = {})
18
19
  set_options opts
19
20
  @bus = DBus::SystemBus.instance
21
+ @mm_service = @bus.service(@modem_service)
22
+ @mm_object = @mm_service.object(@modem_bus_path)
20
23
  end
21
24
 
22
25
  # Discover all enabled devices
23
- def modem_devices(opts = {})
24
- @mm_service ||= @bus[@modem_service]
25
- @mm_object ||= @mm_service.object(@modem_bus_path)
26
+ def modems(opts = {})
26
27
  @mm_object.introspect
27
-
28
28
  NetworkManager::Modem.fetch(@mm_object.EnumerateDevices()[0], service: @mm_service)
29
29
  end
30
30
 
31
- class << self
31
+ # def on_device_add(&block)
32
+ # @bus = DBus::SystemBus.instance
33
+ # @mm_service = @bus.service('org.freedesktop.ModemManager')
34
+ # @mm_object = @mm_service.object('/org/freedesktop/ModemManager')
35
+ # @mm_object.introspect
32
36
 
33
- end
37
+ # @properties = @mm_object.dup
38
+ # @properties.default_iface = DBUS_PROPERTIES
39
+ # @properties.introspect
40
+
41
+ # @properties.on_signal('DeviceAdded') {|x| puts x}
42
+ # end
34
43
 
35
44
  protected
36
45
 
37
46
  def set_options(opts = {})
38
- @modem_service ||= MM_DBUS_SERVICE || 'org.freedesktop.ModemManager'
39
- @modem_bus_path ||= '/org/freedesktop/ModemManager'
47
+ @modem_service ||= MM_DBUS_SERVICE
48
+ @modem_bus_path ||= MODEM_MANAGER_BUS_PATH
40
49
 
41
50
  opts.each do |k,v|
42
51
  instance_variable_set("@#{k}", v) unless v.nil?
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "ruby-network-manager"
8
- s.version = "0.14.1"
8
+ s.version = "1.0.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ernest Bursa"]
12
- s.date = "2013-04-20"
12
+ s.date = "2013-05-02"
13
13
  s.description = "This gem is simple binding for NetworkManager that aims to be tool for managing network interfaces such as 3G modems."
14
14
  s.email = "ernest@bzdury.pl"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-network-manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 1.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-20 00:00:00.000000000 Z
12
+ date: 2013-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-dbus
@@ -143,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
143
  version: '0'
144
144
  segments:
145
145
  - 0
146
- hash: 1807363723534505497
146
+ hash: -4413202439074915028
147
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  none: false
149
149
  requirements: