Module: Ant::Channel::EventCallbacks
- Extended by:
- DataUtilities, Loggability
- Defined in:
- lib/ant/channel/event_callbacks.rb
Overview
A module that contains logging event callbacks for an ANT::Channel.
Refs:
-
9.5.6.1 Channel Response / Event (0x40) [ANT Message Protocol and Usage, Rev 5.1]
Constant Summary collapse
- HANDLER_METHODS =
Mapping of response message IDs to handler methods
{ Ant::EVENT_CHANNEL_CLOSED => :on_event_channel_closed, Ant::EVENT_CHANNEL_COLLISION => :on_event_channel_collision, Ant::EVENT_RX_ACKNOWLEDGED => :on_event_rx_acknowledged, Ant::EVENT_RX_BROADCAST => :on_event_rx_broadcast, Ant::EVENT_RX_BURST_PACKET => :on_event_rx_burst_packet, Ant::EVENT_RX_EXT_ACKNOWLEDGED => :on_event_rx_ext_acknowledged, Ant::EVENT_RX_EXT_BROADCAST => :on_event_rx_ext_broadcast, Ant::EVENT_RX_EXT_BURST_PACKET => :on_event_rx_ext_burst_packet, Ant::EVENT_RX_FAIL => :on_event_rx_fail, Ant::EVENT_RX_FAIL_GO_TO_SEARCH => :on_event_rx_fail_go_to_search, Ant::EVENT_RX_FLAG_ACKNOWLEDGED => :on_event_rx_flag_acknowledged, Ant::EVENT_RX_FLAG_BROADCAST => :on_event_rx_flag_broadcast, Ant::EVENT_RX_FLAG_BURST_PACKET => :on_event_rx_flag_burst_packet, Ant::EVENT_RX_SEARCH_TIMEOUT => :on_event_rx_search_timeout, Ant::EVENT_TRANSFER_RX_FAILED => :on_event_transfer_rx_failed, Ant::EVENT_TRANSFER_TX_COMPLETED => :on_event_transfer_tx_completed, Ant::EVENT_TRANSFER_TX_FAILED => :on_event_transfer_tx_failed, Ant::EVENT_TRANSFER_TX_START => :on_event_transfer_tx_start, Ant::EVENT_TX => :on_event_tx, }
- CHANNEL_NUMBER_MASK =
The mask of the channel number in buffer data
0x1F
- SEQUENCE_NUMBER_MASK =
The mask of the sequence number in buffer data
0xE0
Constants included from DataUtilities
Class Method Summary collapse
-
.log_event_callback(channel_num, handler_method, event_id, data) ⇒ Object
Log the channel event by default.
Instance Method Summary collapse
-
#handle_event_callback(channel_num, event_id, data) ⇒ Object
Default callback hook – handles event callbacks.
-
#on_event_channel_closed(channel_num) ⇒ Object
Handle a CHANNEL_CLOSED event.
-
#on_event_channel_collision(channel_num) ⇒ Object
Handle a CHANNEL_COLLISION event.
- #on_event_rx_acknowledged(channel_num, data) ⇒ Object
- #on_event_rx_broadcast(channel_num, data) ⇒ Object
- #on_event_rx_burst_packet(channel_num, data) ⇒ Object
-
#on_event_rx_fail(channel_num) ⇒ Object
Handle a RX_FAIL event.
-
#on_event_rx_fail_go_to_search(channel_num) ⇒ Object
Handle a RX_FAIL_GO_TO_SEARCH event.
- #on_event_rx_flag_acknowledged(channel_num, data) ⇒ Object
- #on_event_rx_flag_broadcast(channel_num, data) ⇒ Object
- #on_event_rx_flag_burst_packet(channel_num, data) ⇒ Object
-
#on_event_rx_search_timeout(channel_num) ⇒ Object
Handle a RX_SEARCH_TIMEOUT event.
-
#on_event_transfer_rx_failed(channel_num) ⇒ Object
Handle a TRANSFER_RX_FAILED event.
-
#on_event_transfer_tx_completed(channel_num) ⇒ Object
Handle a TRANSFER_TX_COMPLETED event.
-
#on_event_transfer_tx_failed(channel_num) ⇒ Object
Handle a TRANSFER_TX_FAILED event.
-
#on_event_transfer_tx_start(channel_num) ⇒ Object
Handle a TRANSFER_TX_START event.
-
#on_event_tx(channel_num, data) ⇒ Object
Handle an TX event.
Methods included from DataUtilities
Class Method Details
.log_event_callback(channel_num, handler_method, event_id, data) ⇒ Object
Log the channel event by default.
55 56 57 58 59 60 61 62 |
# File 'lib/ant/channel/event_callbacks.rb', line 55 def self::log_event_callback( channel_num, handler_method, event_id, data ) self.log.debug "Event on channel %d: %#0x (%s): %s" % [ channel_num, event_id, handler_method, Ant::DataUtilities.hexdump( data[ 0..3 ] ) ] end |
Instance Method Details
#handle_event_callback(channel_num, event_id, data) ⇒ Object
Default callback hook – handles event callbacks.
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/ant/channel/event_callbacks.rb', line 66 def handle_event_callback( channel_num, event_id, data ) handler_method = Ant::Channel::EventCallbacks::HANDLER_METHODS[ event_id ] or raise "Unhandled channel event %p" % [ event_id ] if self.respond_to?( handler_method ) self.public_send( handler_method, channel_num, data ) else Ant::Channel::EventCallbacks.log_event_callback( channel_num, handler_method, event_id, data ) end end |
#on_event_channel_closed(channel_num) ⇒ Object
Handle a CHANNEL_CLOSED event.
118 119 120 |
# File 'lib/ant/channel/event_callbacks.rb', line 118 def on_event_channel_closed( channel_num, * ) self.log.warn "Channel %d was closed." % [ channel_num ] end |
#on_event_channel_collision(channel_num) ⇒ Object
Handle a CHANNEL_COLLISION event.
130 131 132 |
# File 'lib/ant/channel/event_callbacks.rb', line 130 def on_event_channel_collision( channel_num, * ) self.log.warn "Channel collision on channel %d." % [ channel_num ] end |
#on_event_rx_acknowledged(channel_num, data) ⇒ Object
183 184 185 |
# File 'lib/ant/channel/event_callbacks.rb', line 183 def on_event_rx_acknowledged( channel_num, data ) self.log.debug "Acknowledged: Rx [%d]:\n%s" % [ data.bytes[0], Ant::DataUtilities.hexdump(data[1..9]) ] end |
#on_event_rx_broadcast(channel_num, data) ⇒ Object
196 197 198 |
# File 'lib/ant/channel/event_callbacks.rb', line 196 def on_event_rx_broadcast( channel_num, data ) self.log.debug "Broadcast: Rx [%d]:\n%s" % [ data.bytes[0], Ant::DataUtilities.hexdump(data[1..9]) ] end |
#on_event_rx_burst_packet(channel_num, data) ⇒ Object
188 189 190 191 192 193 |
# File 'lib/ant/channel/event_callbacks.rb', line 188 def on_event_rx_burst_packet( channel_num, data ) channel = (data.bytes[0] & CHANNEL_NUMBER_MASK) >> 5 sequence_num = data.bytes[0] & SEQUENCE_NUMBER_MASK self.log.debug "Burst (0x%02x): Rx: %d:\n%s" % [ channel, sequence_num, Ant::DataUtilities.hexdump(data[1..9]) ] end |
#on_event_rx_fail(channel_num) ⇒ Object
Handle a RX_FAIL event.
94 95 96 |
# File 'lib/ant/channel/event_callbacks.rb', line 94 def on_event_rx_fail( channel_num, * ) self.log.warn "Receive failed on channel %d." % [ channel_num ] end |
#on_event_rx_fail_go_to_search(channel_num) ⇒ Object
Handle a RX_FAIL_GO_TO_SEARCH event.
124 125 126 |
# File 'lib/ant/channel/event_callbacks.rb', line 124 def on_event_rx_fail_go_to_search( channel_num, * ) self.log.warn "Channel %d dropped; resume search." % [ channel_num ] end |
#on_event_rx_flag_acknowledged(channel_num, data) ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/ant/channel/event_callbacks.rb', line 141 def on_event_rx_flag_acknowledged( channel_num, data ) flags = data.bytes[ 9 ] if flags & Ant::ANT_EXT_MESG_BITFIELD_DEVICE_ID usDeviceNumber = data.bytes[10] | (data.bytes[11] << 8) ucDeviceType = data.bytes[12] ucTransmissionType = data.bytes[13] self.log.debug "Got an acknowledge on Chan ID(%d/%d/%d)" % [usDeviceNumber, ucDeviceType, ucTransmissionType] end self.on_event_rx_acknowledged( channel_num, data ) end |
#on_event_rx_flag_broadcast(channel_num, data) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/ant/channel/event_callbacks.rb', line 169 def on_event_rx_flag_broadcast( channel_num, data ) flags = data.bytes[ 9 ] if flags & Ant::ANT_EXT_MESG_BITFIELD_DEVICE_ID usDeviceNumber = data.bytes[10] | (data.bytes[11] << 8) ucDeviceType = data.bytes[12] ucTransmissionType = data.bytes[13] self.log.debug "Got a broadcast on Chan ID(%d/%d/%d)" % [usDeviceNumber, ucDeviceType, ucTransmissionType] end self.on_event_rx_broadcast( channel_num, data ) end |
#on_event_rx_flag_burst_packet(channel_num, data) ⇒ Object
155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/ant/channel/event_callbacks.rb', line 155 def on_event_rx_flag_burst_packet( channel_num, data ) flags = data.bytes[ 9 ] if flags & Ant::ANT_EXT_MESG_BITFIELD_DEVICE_ID usDeviceNumber = data.bytes[10] | (data.bytes[11] << 8) ucDeviceType = data.bytes[12] ucTransmissionType = data.bytes[13] self.log.debug "Got a burst on Chan ID(%d/%d/%d)" % [usDeviceNumber, ucDeviceType, ucTransmissionType] end self.on_event_rx_burst_packet( channel_num, data ) end |
#on_event_rx_search_timeout(channel_num) ⇒ Object
Handle a RX_SEARCH_TIMEOUT event.
88 89 90 |
# File 'lib/ant/channel/event_callbacks.rb', line 88 def on_event_rx_search_timeout( channel_num, * ) self.log.warn "Search timeout on channel %d." % [ channel_num ] end |
#on_event_transfer_rx_failed(channel_num) ⇒ Object
Handle a TRANSFER_RX_FAILED event.
100 101 102 |
# File 'lib/ant/channel/event_callbacks.rb', line 100 def on_event_transfer_rx_failed( channel_num, * ) self.log.warn "Receive failed on channel %d." % [ channel_num ] end |
#on_event_transfer_tx_completed(channel_num) ⇒ Object
Handle a TRANSFER_TX_COMPLETED event.
106 107 108 |
# File 'lib/ant/channel/event_callbacks.rb', line 106 def on_event_transfer_tx_completed( channel_num, * ) self.log.warn "Transfer completed on channel %d." % [ channel_num ] end |
#on_event_transfer_tx_failed(channel_num) ⇒ Object
Handle a TRANSFER_TX_FAILED event.
112 113 114 |
# File 'lib/ant/channel/event_callbacks.rb', line 112 def on_event_transfer_tx_failed( channel_num, * ) self.log.warn "Transfer failed on channel %d." % [ channel_num ] end |
#on_event_transfer_tx_start(channel_num) ⇒ Object
Handle a TRANSFER_TX_START event.
136 137 138 |
# File 'lib/ant/channel/event_callbacks.rb', line 136 def on_event_transfer_tx_start( channel_num, * ) self.log.warn "Burst transfer started on channel %d." % [ channel_num ] end |
#on_event_tx(channel_num, data) ⇒ Object
Handle an TX event.
79 80 81 82 83 84 |
# File 'lib/ant/channel/event_callbacks.rb', line 79 def on_event_tx( channel_num, data ) channel = Ant::Channel.registry[ channel_num ] self.log.debug "%p ready for transmission." % [ channel ] ident = [ 1, 33 ].pack( "CC" ) channel.send_broadcast_data( ident ) end |