tag-it 0.1.1 → 0.2.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.
data/Gemfile CHANGED
@@ -2,6 +2,10 @@ source 'http://rubygems.org'
2
2
 
3
3
  gem 'jeweler'
4
4
  gem 'ruby-serialport'
5
- gem 'mocha'
6
- gem 'test-unit'
7
- gem 'thoughtbot-shoulda'
5
+
6
+ group :development do
7
+ gem 'test-unit'
8
+ gem 'mocha'
9
+ gem 'thoughtbot-shoulda'
10
+ gem 'timecop'
11
+ end
data/Gemfile.lock CHANGED
@@ -16,6 +16,7 @@ GEM
16
16
  json_pure (>= 1.1.7)
17
17
  test-unit (2.1.1)
18
18
  thoughtbot-shoulda (2.11.1)
19
+ timecop (0.3.5)
19
20
 
20
21
  PLATFORMS
21
22
  ruby
@@ -26,3 +27,4 @@ DEPENDENCIES
26
27
  ruby-serialport
27
28
  test-unit
28
29
  thoughtbot-shoulda
30
+ timecop
data/README.rdoc CHANGED
@@ -32,6 +32,8 @@ Typical usage involves building an observer like this:
32
32
  # do something because a tag has come into range
33
33
  elsif event == :tag_departed
34
34
  # do something because a tag has gone out of range
35
+ elsif even == :pulse
36
+ # let something know the client is still active
35
37
  end
36
38
  end
37
39
  end
@@ -45,7 +47,9 @@ And then attaching it to a tag-it tag_tracker like this:
45
47
  tracher.add_observer(watcher)
46
48
  tracker.start!
47
49
 
48
- the tracker will run indefinately, pulling in tag ids as they come into range and leave the area, and dispatch the necessary events. Right now there are 2 events -- :tag_arrived when the tag comes into range, and :tag_departed when it leaves. The other parameters to the update method are the tag id ("1nrw") and the Relative Signal Strength (an integer: 34, 86, etc) indicating how close to the source the tag is.
50
+ the tracker will run indefinately, pulling in tag ids as they come into range and leave the area, and dispatch the necessary events. It also will dispatch a "pulse" event every 3 minutes so you know that the client is still running. Right now there are 3 events -- :tag_arrived when the tag comes into range, :tag_departed when it leaves, and the :pulse event every three minutes. The other parameters to the update method are the tag id ("1nrw") and the Relative Signal Strength (an integer: 34, 86, etc) indicating how close to the source the tag is.
51
+
52
+ ATTENTION!: In the "pulse" event, the tag parameter will actually be an array of currently in-range tags
49
53
 
50
54
  Happy Tagging!
51
55
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.1
@@ -9,6 +9,7 @@ module TagIt
9
9
  def initialize(port)
10
10
  @port = port
11
11
  @tag_map ||= {}
12
+ @last_pulse = Time.now
12
13
  end
13
14
 
14
15
  def start!
@@ -38,6 +39,9 @@ module TagIt
38
39
  rescue Timeout::Error
39
40
  depart_all_tags!
40
41
  end
42
+ if ((Time.now - 180) > @last_pulse)
43
+ pulse!
44
+ end
41
45
  end
42
46
  end
43
47
 
@@ -74,5 +78,11 @@ module TagIt
74
78
  def split_tag_data(tag_name)
75
79
  [tag_name[0,4],tag_name[4,tag_name.size - 4].to_i]
76
80
  end
81
+
82
+ def pulse!
83
+ changed
84
+ notify_observers(@tag_map.keys.sort,0,:pulse)
85
+ @last_pulse = Time.now
86
+ end
77
87
  end
78
88
  end
Binary file
data/tag-it.gemspec ADDED
@@ -0,0 +1,61 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{tag-it}
8
+ s.version = "0.2.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["evizitei"]
12
+ s.date = %q{2010-10-23}
13
+ s.description = %q{Interacting with RFID receivers through serial ports is not much fun. This makes it a little better. tag-it provides a class that will monitor a serial port for you, and will dispatch events through ruby's standard "observer" functionality when a tag comes into range and leaves.}
14
+ s.email = %q{ethan.vizitei@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".bundle/config",
21
+ ".document",
22
+ ".gitignore",
23
+ "Gemfile",
24
+ "Gemfile.lock",
25
+ "LICENSE",
26
+ "README.rdoc",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "lib/tag_it.rb",
30
+ "lib/tag_it/tag_tracker.rb",
31
+ "pkg/tag-it-0.1.0.gem",
32
+ "tag-it.gemspec",
33
+ "test/helper.rb",
34
+ "test/mock_serial_port.rb",
35
+ "test/test_tag_tracker.rb"
36
+ ]
37
+ s.homepage = %q{http://github.com/evizitei/tag-it}
38
+ s.rdoc_options = ["--charset=UTF-8"]
39
+ s.require_paths = ["lib"]
40
+ s.rubygems_version = %q{1.3.7}
41
+ s.summary = %q{interaction with RFID receiver through a serial port.}
42
+ s.test_files = [
43
+ "test/helper.rb",
44
+ "test/mock_serial_port.rb",
45
+ "test/test_tag_tracker.rb"
46
+ ]
47
+
48
+ if s.respond_to? :specification_version then
49
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
50
+ s.specification_version = 3
51
+
52
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
54
+ else
55
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
56
+ end
57
+ else
58
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
59
+ end
60
+ end
61
+
data/test/helper.rb CHANGED
@@ -3,6 +3,7 @@ require 'test/unit'
3
3
  require 'shoulda'
4
4
  require 'mocha'
5
5
  require 'mock_serial_port'
6
+ require 'timecop'
6
7
 
7
8
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
9
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -44,6 +44,24 @@ class TestTagTracker < Test::Unit::TestCase
44
44
  watcher.expects(:update).with("1nri",0,:tag_departed).times(1)
45
45
  check_data_extract(data,watcher,PacingSerialPort)
46
46
  end
47
+
48
+ should "dispatch a heartbeat event every 180 seconds" do
49
+ start_time = Time.local(2008, 9, 1, 12, 0, 0)
50
+ end_time = start_time + 300
51
+ Timecop.freeze(start_time)
52
+ data = " 1nri85 1nwP79 "
53
+ watcher = TagObserver.new
54
+ watcher.expects(:update).with("1nri",85,:tag_arrived).times(1)
55
+ watcher.expects(:update).with("1nwP",79,:tag_arrived).times(1)
56
+ watcher.expects(:update).with(["1nri","1nwP"],0,:pulse).times(1)
57
+ port = MockSerialPort.new(data)
58
+ tracker = TagIt::TagTracker.new(port)
59
+ tracker.add_observer(watcher)
60
+ tracker.start!
61
+ Timecop.travel(end_time)
62
+ tracker.start!
63
+ Timecop.return
64
+ end
47
65
  end
48
66
 
49
67
  def check_data_extract(data,watcher,port_mocker = MockSerialPort)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tag-it
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 2
8
9
  - 1
9
- - 1
10
- version: 0.1.1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - evizitei
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-18 00:00:00 -05:00
18
+ date: 2010-10-23 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -53,6 +53,8 @@ files:
53
53
  - VERSION
54
54
  - lib/tag_it.rb
55
55
  - lib/tag_it/tag_tracker.rb
56
+ - pkg/tag-it-0.1.0.gem
57
+ - tag-it.gemspec
56
58
  - test/helper.rb
57
59
  - test/mock_serial_port.rb
58
60
  - test/test_tag_tracker.rb