rs_232 2.0.7 → 2.2.0
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/Rakefile +9 -43
- data/ext/rs_232/constants.c +0 -2
- data/ext/rs_232/constants.h +0 -3
- data/ext/rs_232/extconf.rb +15 -19
- data/ext/rs_232/initializer.c +0 -1
- data/lib/rs_232/version.rb +1 -6
- data/lib/rs_232.rb +2 -171
- data/rs_232.gemspec +29 -31
- metadata +46 -96
- data/Gemfile.lock +0 -57
- data/README.md +0 -205
- data/atlassian-ide-plugin.xml +0 -5
- data/cucumber.yml +0 -24
- data/features/config/config.yml +0 -2
- data/features/connection.feature +0 -10
- data/features/step_definitions/connection_steps.rb +0 -33
- data/features/support/after.rb +0 -4
- data/features/support/env.rb +0 -68
- data/gem_tasks/cov.rake +0 -5
- data/gem_tasks/cucumber.rake +0 -23
- data/gem_tasks/doc.rake +0 -12
- data/gem_tasks/environment.rake +0 -7
- data/gem_tasks/rspec.rake +0 -6
- data/rs_232.iml +0 -30
- data/spec/simplecov_setup.rb +0 -15
- data/spec/spec_helper.rb +0 -15
- data/spec/support/adapter/dev.rb +0 -162
- data/spec/support/adapter/generic.rb +0 -77
- data/spec/support/adapter.rb +0 -4
- data/spec/support/fixtures.rb +0 -23
data/spec/support/adapter/dev.rb
DELETED
@@ -1,162 +0,0 @@
|
|
1
|
-
class Adapter::Dev < Adapter::Generic
|
2
|
-
attr_reader :interface
|
3
|
-
# == Top level module ::CommPort constants
|
4
|
-
#
|
5
|
-
# :VERSION,
|
6
|
-
#
|
7
|
-
# :BAUD_110,
|
8
|
-
# :BAUD_300,
|
9
|
-
# :BAUD_600,
|
10
|
-
# :BAUD_1200,
|
11
|
-
# :BAUD_2400,
|
12
|
-
# :BAUD_4800,
|
13
|
-
# :BAUD_9600,
|
14
|
-
# :BAUD_19200,
|
15
|
-
# :BAUD_38400,
|
16
|
-
# :BAUD_57600,
|
17
|
-
# :BAUD_115200,
|
18
|
-
#
|
19
|
-
# :DATA_BITS_5,
|
20
|
-
# :DATA_BITS_6,
|
21
|
-
# :DATA_BITS_7,
|
22
|
-
# :DATA_BITS_8,
|
23
|
-
#
|
24
|
-
# :PAR_NONE,
|
25
|
-
# :PAR_ODD,
|
26
|
-
# :PAR_EVEN,
|
27
|
-
#
|
28
|
-
# :STOP_BITS_1,
|
29
|
-
# :STOP_BITS_3,
|
30
|
-
#
|
31
|
-
# :FLOW_OFF,
|
32
|
-
# :FLOW_HARDWARE,
|
33
|
-
# :FLOW_XONXOFF,
|
34
|
-
#
|
35
|
-
# :Impl
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
# == constructor with default params
|
40
|
-
#
|
41
|
-
def initialize(port, &block)
|
42
|
-
@interface = CommPort::Rs232.new(port)
|
43
|
-
super
|
44
|
-
connect
|
45
|
-
end
|
46
|
-
|
47
|
-
# Open and configure interface
|
48
|
-
#
|
49
|
-
# @return [Bool]
|
50
|
-
#
|
51
|
-
def connect
|
52
|
-
@interface.open
|
53
|
-
|
54
|
-
notify_with '%s has been received call to %s...' % [self, __method__]
|
55
|
-
|
56
|
-
@interface.baud_rate = CommPort::BAUD_115200
|
57
|
-
@interface.data_bits = CommPort::DATA_BITS_8
|
58
|
-
@interface.parity = CommPort::PAR_NONE
|
59
|
-
@interface.stop_bits = CommPort::STOP_BITS_1
|
60
|
-
@interface.flow_control = CommPort::FLOW_OFF
|
61
|
-
|
62
|
-
@open = open?
|
63
|
-
end
|
64
|
-
|
65
|
-
# == Write function implementation
|
66
|
-
#
|
67
|
-
# @param [String] bytes
|
68
|
-
# @return [Int]
|
69
|
-
#
|
70
|
-
def write(bytes)
|
71
|
-
@interface.write(bytes)
|
72
|
-
end
|
73
|
-
|
74
|
-
# == Closing interface and freeing structures
|
75
|
-
#
|
76
|
-
# @return [Bool]
|
77
|
-
#
|
78
|
-
def close
|
79
|
-
notify_with '%s has been received call to %s...' % [self, __method__]
|
80
|
-
|
81
|
-
@interface.close
|
82
|
-
@open = open?
|
83
|
-
!open?
|
84
|
-
end
|
85
|
-
|
86
|
-
# == Flashing buffer function
|
87
|
-
#
|
88
|
-
def flush
|
89
|
-
notify_with '%s has been received call to %s...' % [self, __method__]
|
90
|
-
|
91
|
-
@interface.flush
|
92
|
-
end
|
93
|
-
|
94
|
-
# @return [Bool]
|
95
|
-
#
|
96
|
-
def open?
|
97
|
-
@interface && !@interface.closed?
|
98
|
-
end
|
99
|
-
|
100
|
-
# == read() implementation example
|
101
|
-
#
|
102
|
-
# @param +count+ [Int]
|
103
|
-
# @param +blocking+ [Bool]
|
104
|
-
#
|
105
|
-
# @return [String]
|
106
|
-
#
|
107
|
-
# === Alternative implementation:
|
108
|
-
# @usage:
|
109
|
-
#
|
110
|
-
# +timeout+ = blocking_value ? 15000 : 0
|
111
|
-
# +@interface.timeout+ = +timeout+
|
112
|
-
# +@interface.read( +count+ )+
|
113
|
-
#
|
114
|
-
def read(count, blocking = false)
|
115
|
-
array = []
|
116
|
-
|
117
|
-
bytes_count = (count == -1) ? @interface.available? : count
|
118
|
-
|
119
|
-
if blocking
|
120
|
-
bytes = read_io_until(count, count)
|
121
|
-
array.push bytes if bytes
|
122
|
-
else
|
123
|
-
bytes_count.times do
|
124
|
-
byte = @interface.read(1)
|
125
|
-
array.push byte if byte
|
126
|
-
end
|
127
|
-
end
|
128
|
-
array.empty? ? nil : array.join
|
129
|
-
end
|
130
|
-
|
131
|
-
private
|
132
|
-
|
133
|
-
# == simulate blocking function
|
134
|
-
#
|
135
|
-
# @param +count+ [Int]
|
136
|
-
# @param +up_to+ [Int]
|
137
|
-
#
|
138
|
-
# no direct ruby usage
|
139
|
-
#
|
140
|
-
def block_io_until(count, up_to)
|
141
|
-
while @interface.available? < count && up_to > 0
|
142
|
-
up_to -= 1
|
143
|
-
end
|
144
|
-
up_to > 0
|
145
|
-
end
|
146
|
-
|
147
|
-
# == simulate blocking function
|
148
|
-
#
|
149
|
-
# @param +count+ [Int]
|
150
|
-
# @param +up_to+ [Int]
|
151
|
-
#
|
152
|
-
# no direct ruby usage
|
153
|
-
#
|
154
|
-
def read_io_until(count, up_to)
|
155
|
-
until block_io_until(count, up_to)
|
156
|
-
sleep 0.001
|
157
|
-
end
|
158
|
-
read(count)
|
159
|
-
end
|
160
|
-
|
161
|
-
end
|
162
|
-
|
@@ -1,77 +0,0 @@
|
|
1
|
-
require 'monitor'
|
2
|
-
|
3
|
-
module Adapter
|
4
|
-
|
5
|
-
class Generic
|
6
|
-
include MonitorMixin
|
7
|
-
|
8
|
-
DEFAULT_NOTIFIER = ->(message) { $stdout.puts message }
|
9
|
-
|
10
|
-
attr_accessor :notifier
|
11
|
-
|
12
|
-
def initialize(*args, &block)
|
13
|
-
Thread.abort_on_exception = true
|
14
|
-
@rxd = true unless instance_variables.include?(:@rxd)
|
15
|
-
@notifier = block || DEFAULT_NOTIFIER
|
16
|
-
super()
|
17
|
-
run
|
18
|
-
end
|
19
|
-
|
20
|
-
def notifier=(value)
|
21
|
-
@notifier = value
|
22
|
-
end
|
23
|
-
|
24
|
-
def notifier
|
25
|
-
@notifier
|
26
|
-
end
|
27
|
-
|
28
|
-
def reading_allowed?
|
29
|
-
@rxd
|
30
|
-
end
|
31
|
-
|
32
|
-
def defer_reading
|
33
|
-
@rxd = false
|
34
|
-
!reading_allowed?
|
35
|
-
end
|
36
|
-
|
37
|
-
def allow_reading
|
38
|
-
@rxd = true
|
39
|
-
end
|
40
|
-
|
41
|
-
def rx(int, blocking = false)
|
42
|
-
byte = read(int, blocking)
|
43
|
-
if byte
|
44
|
-
notify_with "RX [#{byte.length}]: #{byte.inspect}"
|
45
|
-
end
|
46
|
-
byte
|
47
|
-
end
|
48
|
-
|
49
|
-
def tx(bytes)
|
50
|
-
int = write(bytes)
|
51
|
-
notify_with "TX [#{int}]: #{bytes.inspect}"
|
52
|
-
int
|
53
|
-
end
|
54
|
-
|
55
|
-
def restart_rx_thread
|
56
|
-
allow_reading
|
57
|
-
run
|
58
|
-
end
|
59
|
-
|
60
|
-
def run
|
61
|
-
Thread.new do
|
62
|
-
loop do
|
63
|
-
rx(1, false) if reading_allowed?
|
64
|
-
sleep(0.005)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
private
|
70
|
-
|
71
|
-
def notify_with(message)
|
72
|
-
@notifier[message]
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
data/spec/support/adapter.rb
DELETED
data/spec/support/fixtures.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
|
3
|
-
module Fixtures
|
4
|
-
def fixture_path(name)
|
5
|
-
File.join '../fixtures', name
|
6
|
-
end
|
7
|
-
|
8
|
-
def absolute_fixture_path(name)
|
9
|
-
File.expand_path fixture_path(name), File.dirname(__FILE__)
|
10
|
-
end
|
11
|
-
|
12
|
-
def fixture(name)
|
13
|
-
File.read absolute_fixture_path(name)
|
14
|
-
end
|
15
|
-
|
16
|
-
def binary_fixture(name)
|
17
|
-
File.open(absolute_fixture_path(name), "rb") { |f| f.read }
|
18
|
-
end
|
19
|
-
|
20
|
-
def fixtures_path
|
21
|
-
Pathname(absolute_fixture_path '')
|
22
|
-
end
|
23
|
-
end
|