hcitools_wrapper 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 50e1e641ad84e259b22ee677b9045add9cae7917
4
+ data.tar.gz: 6af14659f5fa556785a08e2c8aa286ac467ade9e
5
+ SHA512:
6
+ metadata.gz: 1d4b7e74aec8c194b8203510728ed6820c4094346a256cd3effe2fab3af7cbd5c76a0a048d28318121c74ba8b2f1d22a30cd174b8d24925ba716f3d1c305a0bd
7
+ data.tar.gz: f4f44d66ad5891e12f7c06e083b96f12ecc547f882ba0d9ad16dd9acb08b6e45fdbd2cabb4c4665a437d2cd49d2711ea8f210a196d38e7bc9c8763474b05ddb4
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ A��T�Ⱦ
2
+ �y��{0�bt+@t�21g���p���_�˛&�O@K��:R�NȦ%a�059C��&�KOݽNy�������P��ĕ�B�:�b[�3��=,�e^+��@���#�"���=:5Ë�ȔF��e�
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: hcitools_wrapper.rb
4
+
5
+ require 'run_every'
6
+
7
+
8
+ module HcitoolsWrapper
9
+
10
+ class Scan
11
+
12
+ # options interval and duration are in seconds
13
+ #
14
+ def self.start(runinterval: 10, scanduration: 2)
15
+
16
+ RunEvery.new(seconds: runinterval) do
17
+ pid = spawn("sudo hcitool lescan", :err=>"log")
18
+ sleep scanduration
19
+ `sudo hciconfig hci0 reset `
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ class Detect
27
+
28
+ def initialize(bd_address: '', interval: 0, verbose: false)
29
+
30
+ @bd_address = bd_address
31
+ @interval = interval
32
+ @verbose = verbose
33
+
34
+ end
35
+
36
+ def start()
37
+
38
+ id = @bd_address.split(':').reverse.join(' ')
39
+ found = false
40
+ a = []
41
+
42
+ t3 = Time.now + @interval
43
+
44
+ IO.popen('sudo hcidump --raw').each_line do |x|
45
+
46
+ found = if found then
47
+
48
+ rssi = (x.split.last.hex - 256)
49
+ a << rssi.to_i unless a.include? rssi.to_i
50
+ h = {bdaddress: @bd_address, rssi: rssi.inspect}
51
+
52
+ if t3 < Time.now then
53
+
54
+ avg = a.max + (a.min - a.max) / 2
55
+
56
+ if @verbose then
57
+ puts Time.now.inspect + ': ' + h.inspect
58
+ puts "max: %s, min: %s, average: %s, a: %s" % \
59
+ [a.max, a.min, avg, a.sort.inspect]
60
+ puts 'changed!' if avg != a.max + (a.min - a.max) / 2
61
+ end
62
+
63
+ # the RSSI will vary by up to 10 when the device is stationary
64
+ if a.length > 10 or rssi > (a.max + 10) or rssi < (a.min + 10) then
65
+
66
+ if block_given? then
67
+ yield a, avg
68
+ end
69
+
70
+ a = []
71
+ end
72
+
73
+ t3 = Time.now + @interval
74
+ end
75
+
76
+ false
77
+
78
+ else
79
+ x.include?(id)
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+ end
86
+
87
+ end
88
+
89
+ if __FILE__ == $0 then
90
+
91
+ hw = HcitoolsWrapper::Scan.start
92
+ #hw = HcitoolsWrapper::Detect.new bd_address: 'FF:FF:00:00:FD:1D', verbose: true
93
+ #hw.start
94
+ end
data.tar.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ �؅jP/���|Q�������!�}��:����Km�5"�(s�K��%���0h͝P�ץl������61��� _�o�5i>���<i�_t�"ߥW����~����
2
+ �W��)O�c��:‚��<AL��~x�v�dغ�WO��(~���J�F��Lj�0�Ҽ����S�;��.z��}��7 ?��<�@��U<���eB
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hcitools_wrapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTE1MDcxODE2MjY0MloXDTE2MDcxNzE2MjY0MlowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBAKj3jDW8rGJH7SIP6GKQWpaEucFlfkvPX4LtuxOJg6hYS57+zUUKO+5GPPHW
19
+ 8XnlMN74sGrwT7dPd7s7hNSIRtxQ1amzYaT590jumOT/gLaOD+0DbqzKIKvfrFpD
20
+ B+3NSr+6RbJFnVj/cfKWc1E87azMbZ08T2zC9Qc/NZ99qjlQeCE1GCvCtlJqsPVQ
21
+ mjJP040thzRLYzIHd6P+eQjml/mP7MVtpU628QvUgAVVqMDYxAZnLqS2jL50likE
22
+ DAvF/K8HmqMAApGxIWxiC61otcO9jcys7uvm4bARP1hfxDdvVvN19L2eI1mR1Z+I
23
+ IuqnCXIaWh/tUNt2QVzBCqj9Ja0CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQUEO8gAPWPPEaK267fqLNgUWnOl1cwJgYDVR0RBB8w
25
+ HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
+ c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAEYsxYj+C
27
+ AOi5pasoUX2xKu6Gqnn3i2tUsGmg6Z6uA/0lJtxkmElLoizZaj02yLA/EQpTZ0hN
28
+ 7hXGcP5q8q/mtPACq1ziLCz6s5EQNksatShrTmjsVJCrZmLdMSpAo1ULRveNtfD7
29
+ Ms9/yasQaopa/tYT8F7TQgDhu00+jxVgvrkZnslJkRaduv1Wk1OhtNH40cWlNEdC
30
+ Ffv1UR4qqqKFONh5iM3aHQOgYGEeKgTeKCwd9ygtwWbO5840IMvbv+ohVjbQgW9z
31
+ zUSFf/yp8K6i0NNL6umy/xpv+2v4DFJo/OxVeDHpyyaJnVVKM/70sw8VQZYjiiYU
32
+ 31I/k3v2LBoYwA==
33
+ -----END CERTIFICATE-----
34
+ date: 2015-07-18 00:00:00.000000000 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: run_every
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.1'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 0.1.9
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.1'
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.1.9
56
+ description:
57
+ email: james@r0bertson.co.uk
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/hcitools_wrapper.rb
63
+ homepage: https://github.com/jrobertson/hcitools_wrapper
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.4.8
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: Uses hcitool lescan + hcidump --r to fetch the RSSI values from a Bluetooth
87
+ device address.
88
+ test_files: []
metadata.gz.sig ADDED
Binary file