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 +0 -3
- data/Gemfile.lock +2 -2
- data/README.rdoc +18 -1
- data/VERSION +1 -1
- data/lib/network_manager/modem.rb +51 -14
- data/lib/ruby-network-manager.rb +17 -8
- data/ruby-network-manager.gemspec +2 -2
- metadata +3 -3
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
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.
|
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.
|
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
|
-
@
|
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
|
-
|
87
|
-
|
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
|
-
|
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 = []
|
data/lib/ruby-network-manager.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
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
|
39
|
-
@modem_bus_path ||=
|
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.
|
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-
|
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.
|
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-
|
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:
|
146
|
+
hash: -4413202439074915028
|
147
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
148
|
none: false
|
149
149
|
requirements:
|