scan_beacon 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/scan_beacon/ble112_device.rb +13 -5
- data/lib/scan_beacon/ble112_scanner.rb +9 -2
- data/lib/scan_beacon/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62a197cb71f842cb63b20f4971cc3bcd18a954d0
|
4
|
+
data.tar.gz: baa10f94b8b9e79fdd5e7e02963f6804a9a38285
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75a02758bf83671e5897e5e46053898d992dbc3eb47d19f47d64021623ec1c700792939e30c381b181f0e9020a9d7ac1f395c4be26cd63adb70dda9ca546b1d0
|
7
|
+
data.tar.gz: 5c1a5792324e66b1e9ae33bcd8169c1f0f32f8d10d833e737ed10c63c21ee5a039e66019ac0b57f17fcd00416ef1431133bf8b0028bf98a19278e0e3a3dfea67
|
@@ -57,7 +57,9 @@ module ScanBeacon
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def get_addr
|
60
|
-
|
60
|
+
# use a timeout here because we're using this to detect BLE112s and if it
|
61
|
+
# isn't one, it may not respond right away
|
62
|
+
response = bg_command(@file, BG_MSG_CLASS_SYSTEM, BG_GET_ADDRESS,nil,nil,0.2)
|
61
63
|
response[4..-1].reverse.unpack("H2:H2:H2:H2:H2:H2").join(":") if response.length == 10
|
62
64
|
end
|
63
65
|
|
@@ -112,7 +114,9 @@ module ScanBeacon
|
|
112
114
|
end
|
113
115
|
|
114
116
|
def read
|
115
|
-
|
117
|
+
data = bg_read(@file, 0.2)
|
118
|
+
return nil if data.nil?
|
119
|
+
BLE112Response.new( data )
|
116
120
|
end
|
117
121
|
|
118
122
|
def reset
|
@@ -126,6 +130,7 @@ module ScanBeacon
|
|
126
130
|
|
127
131
|
class BLE112Response
|
128
132
|
def initialize(data)
|
133
|
+
data ||= ""
|
129
134
|
@data = data.force_encoding("ASCII-8BIT")
|
130
135
|
end
|
131
136
|
|
@@ -172,7 +177,7 @@ module ScanBeacon
|
|
172
177
|
|
173
178
|
private
|
174
179
|
|
175
|
-
def bg_command(port, msg_class, msg, data=nil, data_format=nil)
|
180
|
+
def bg_command(port, msg_class, msg, data=nil, data_format=nil, timeout=nil)
|
176
181
|
data = [data].compact unless data.is_a? Array
|
177
182
|
if data_format.nil?
|
178
183
|
data = data.pack('C*')
|
@@ -181,10 +186,13 @@ module ScanBeacon
|
|
181
186
|
end
|
182
187
|
cmd = [0, data.size, msg_class, msg].flatten.pack('C*') + data
|
183
188
|
port.write(cmd)
|
184
|
-
bg_read(port)
|
189
|
+
bg_read(port, timeout)
|
185
190
|
end
|
186
191
|
|
187
|
-
def bg_read(port)
|
192
|
+
def bg_read(port, timeout = nil)
|
193
|
+
if !timeout.nil?
|
194
|
+
return nil if IO.select([port],nil,nil, timeout).nil?
|
195
|
+
end
|
188
196
|
response = port.read(1) while response.nil? || ![0x00, 0x80].include?(response.unpack('C')[0])
|
189
197
|
response << port.read(3)
|
190
198
|
payload_length = response[1].unpack('C')[0]
|
@@ -16,16 +16,23 @@ module ScanBeacon
|
|
16
16
|
keep_scanning = true
|
17
17
|
while keep_scanning do
|
18
18
|
response = device.read
|
19
|
-
if response.advertisement?
|
19
|
+
if response && response.advertisement?
|
20
20
|
if response.manufacturer_ad?
|
21
21
|
keep_scanning = false if yield(response.advertisement_data, response.mac, response.rssi) == false
|
22
22
|
else
|
23
23
|
keep_scanning = false if yield(response.advertisement_data[4..-1], response.mac, response.rssi, 0x03) == false
|
24
24
|
end
|
25
|
+
else
|
26
|
+
keep_scanning = false if yield(nil, nil, nil) == false
|
25
27
|
end
|
26
28
|
end
|
27
29
|
ensure
|
28
|
-
|
30
|
+
begin
|
31
|
+
device.stop_scan
|
32
|
+
rescue StandardError
|
33
|
+
# don't crash trying to stop scan - it may be that the device was
|
34
|
+
# unplugged
|
35
|
+
end
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
data/lib/scan_beacon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scan_beacon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Radius Networks
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
127
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.2.2
|
129
129
|
signing_key:
|
130
130
|
specification_version: 4
|
131
131
|
summary: Provides Beacon scanning functionality
|