pebblewatch 0.0.2 → 0.0.3

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # pebble-ruby
1
+ # pebblewatch
2
2
 
3
3
  A Ruby library for communicating with your Pebble smartwatch.
4
4
 
@@ -21,7 +21,7 @@ gem install pebblewatch
21
21
 
22
22
  ## Usage
23
23
 
24
- Make sure your Pebble is paired to your computer and set up as a serial port. We're going to need the path or index of the port, which in the case of OS X looks like `/dev/tty.Pebble7F30-SerialPortSe` for Pebble ID `7F30`.
24
+ Make sure your Pebble is paired with your computer and set up as a serial port. We're going to need the path or index of the port, which in the case of OS X looks like `/dev/tty.Pebble7F30-SerialPortSe` for Pebble ID `7F30`.
25
25
 
26
26
  ```ruby
27
27
  require "pebble"
@@ -56,11 +56,11 @@ handler = watch.on_event(:media_control) do |event|
56
56
  end
57
57
  end
58
58
 
59
- # Suddenly got a change of heart? Just cover your ears.
59
+ # Suddenly had a change of heart? Just cover your ears.
60
60
  watch.stop_listening(:media_control, handler)
61
61
 
62
62
  # To make sure we don't miss any events, we haven't connected yet.
63
- # To be able to *send* stuff to the watch, we will now.
63
+ # Because we also want to *send* stuff to the watch, we will now.
64
64
  watch.connect
65
65
 
66
66
 
@@ -116,8 +116,18 @@ watch.listen_for_events
116
116
  watch.disconnect
117
117
  ```
118
118
 
119
+ Oh, and if you want to do some lower level stuff, have a look at [`Pebble::Protocol`](lib/pebble/protocol.rb) which you can access through `watch.protocol`.
120
+
121
+ ```ruby
122
+ watch.protocol.on_receive(endpoint) do |message|
123
+ # Do whatever
124
+ end
125
+
126
+ watch.protocol.send_message(endpoint, message)
127
+ ```
128
+
119
129
  ## Examples
120
- Check out the `examples/` folder for two examples that I actually use myself. They're kind of similar, but should give you an idea of how this whole thing works.
130
+ Check out the [`examples/`](examples) folder for two examples that I actually use myself. They're kind of similar, but should give you an idea of how this whole thing works.
121
131
 
122
132
  ## License
123
133
  Copyright (c) 2013 Douwe Maan
@@ -1,3 +1,22 @@
1
+ require "logger"
2
+
3
+ module Pebble
4
+ def self.logger=(new_logger)
5
+ @@logger = new_logger
6
+ end
7
+
8
+ def self.logger
9
+ return @@logger if defined?(@@logger)
10
+ @@logger = default_logger
11
+ end
12
+
13
+ def self.default_logger
14
+ logger = Logger.new(STDOUT)
15
+ logger.level = Logger::INFO
16
+ logger
17
+ end
18
+ end
19
+
1
20
  require "pebble/version"
2
21
  require "pebble/endpoints"
3
22
  require "pebble/capabilities"
@@ -32,13 +32,11 @@ module Pebble
32
32
  end
33
33
 
34
34
  def connect
35
- puts "Connecting with port #{@port}"
36
-
37
35
  @serial_port = SerialPort.new(@port, baudrate: 115200)
38
36
  @serial_port.read_timeout = 500
39
37
 
40
38
  @connected = true
41
- puts "Connected"
39
+ Pebble.logger.debug "Connected to port #{@port}"
42
40
 
43
41
  @receive_messages_thread = Thread.new(&method(:receive_messages))
44
42
 
@@ -79,7 +77,7 @@ module Pebble
79
77
 
80
78
  message ||= ""
81
79
 
82
- puts "Sending #{Endpoints.for_code(endpoint)}: #{message.inspect}"
80
+ Pebble.logger.debug "Sending #{Endpoints.for_code(endpoint)}: #{message.inspect}"
83
81
 
84
82
  data = [message.size, endpoint].pack("S>S>") + message
85
83
 
@@ -119,7 +117,7 @@ module Pebble
119
117
 
120
118
  private
121
119
  def receive_messages
122
- puts "Waiting for messages"
120
+ Pebble.logger.debug "Waiting for messages"
123
121
  while @connected
124
122
  header = @serial_port.read(4)
125
123
  next unless header
@@ -129,18 +127,18 @@ module Pebble
129
127
  size, endpoint = header.unpack("S>S>")
130
128
  message = @serial_port.read(size)
131
129
 
132
- puts "Received #{Endpoints.for_code(endpoint)}: #{message.inspect}"
130
+ Pebble.logger.debug "Received #{Endpoints.for_code(endpoint)}: #{message.inspect}"
133
131
 
134
132
  trigger_received(endpoint, message)
135
133
  end
136
134
  rescue IOError => e
137
135
  if @connected
138
- puts "Lost connection"
136
+ Pebble.logger.debug "Lost connection"
139
137
  @connected = false
140
138
  raise Errors::LostConnection
141
139
  end
142
140
  ensure
143
- puts "Finished waiting for messages"
141
+ Pebble.logger.debug "Finished waiting for messages"
144
142
  end
145
143
 
146
144
  def trigger_received(endpoint, message)
@@ -1,3 +1,3 @@
1
1
  module Pebble
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -9,14 +9,14 @@ module Pebble
9
9
  def self.autodetect
10
10
  return nil unless RUBY_PLATFORM =~ /darwin/
11
11
 
12
- devices = Dir.glob("/dev/tty.Pebble????-SerialPortSe")
12
+ watches = Dir.glob("/dev/tty.Pebble????-SerialPortSe")
13
13
 
14
- raise NoWatchesFound if devices.length == 0
15
- puts "Found multiple watches" if devices.length > 1
14
+ raise Errors::NoWatchesFound if watches.length == 0
15
+ Pebble.logger.debug "Found multiple watches: #{watches}" if watches.length > 1
16
16
 
17
- port = devices.first
17
+ port = watches.first
18
18
  id = port[15, 4]
19
- puts "Found watch with ID #{id}"
19
+ Pebble.logger.debug "Detected watch with ID #{id}"
20
20
 
21
21
  return new(id, port)
22
22
  end
@@ -50,8 +50,8 @@ module Pebble
50
50
  @client_capabilities = Capabilities::Client::TELEPHONY | Capabilities::Client::SMS | Capabilities::Client::ANDROID
51
51
 
52
52
  answer_phone_version_message
53
-
54
53
  receive_event_messages
54
+ log_log_events
55
55
  end
56
56
 
57
57
  def connect
@@ -177,7 +177,7 @@ module Pebble
177
177
  end
178
178
 
179
179
  def system_message(code)
180
- puts "Sending system message #{SystemMessages.for_code(code)}"
180
+ Pebble.logger.debug "Sending system message #{SystemMessages.for_code(code)}"
181
181
 
182
182
  message = [code].pack("S>")
183
183
 
@@ -213,8 +213,25 @@ module Pebble
213
213
  end
214
214
  end
215
215
 
216
+ def log_log_events
217
+ on_event(:log) do |event|
218
+ case event.level
219
+ when :error
220
+ Pebble.logger.error event.message
221
+ when :warning
222
+ Pebble.logger.warn event.message
223
+ when :info
224
+ Pebble.logger.info event.message
225
+ when :debug, :verbose
226
+ Pebble.logger.debug event.message
227
+ else
228
+ Pebble.logger.info event.message
229
+ end
230
+ end
231
+ end
232
+
216
233
  def trigger_event(name, event)
217
- puts "Event '#{name}': #{event.inspect}"
234
+ Pebble.logger.debug "Triggering event '#{name}': #{event.inspect}"
218
235
 
219
236
  @event_handlers[:any].each do |handler|
220
237
  Thread.new(handler) do |handler|
@@ -1,7 +1,9 @@
1
1
  module Pebble
2
2
  class Watch
3
3
  class Event
4
-
4
+ def self.parse(message)
5
+ new
6
+ end
5
7
  end
6
8
  end
7
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pebblewatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: serialport
16
- requirement: &70119208390380 !ruby/object:Gem::Requirement
16
+ requirement: &70177874616340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70119208390380
24
+ version_requirements: *70177874616340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70119208388900 !ruby/object:Gem::Requirement
27
+ requirement: &70177874615460 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70119208388900
35
+ version_requirements: *70177874615460
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70119208388220 !ruby/object:Gem::Requirement
38
+ requirement: &70177874613320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70119208388220
46
+ version_requirements: *70177874613320
47
47
  description: A Ruby library for communicating with your Pebble smartwatch.
48
48
  email: douwe@selenight.nl
49
49
  executables: []
@@ -81,7 +81,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
81
  version: '0'
82
82
  segments:
83
83
  - 0
84
- hash: 4433695980679618883
84
+ hash: -467314085737445579
85
85
  required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
90
  version: '0'
91
91
  segments:
92
92
  - 0
93
- hash: 4433695980679618883
93
+ hash: -467314085737445579
94
94
  requirements: []
95
95
  rubyforge_project:
96
96
  rubygems_version: 1.8.6