blink_tm 0.4.0 → 1.0.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/ext/baudrate/baudrate.c +9 -4
- data/ext/crc32/crc32.c +33 -0
- data/ext/crc32/extconf.rb +2 -0
- data/lib/blink_tm.rb +4 -2
- data/lib/blink_tm/blink_tm.rb +26 -3
- data/lib/blink_tm/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '080b57c4c4dac231dbb6353428aaaf7be86bd47e4da2379308c23d9ca5315aaa'
|
|
4
|
+
data.tar.gz: e13ccff20189b8e1e944230b0c27ce87272677a9d50ee2c289098800f1860fe9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1ae79bb6028b57c8046e1cf68ccd62fcac30ae38a75579d6402855e9dce94d012877cd358bd0b4a99dc6ddd1376ba3548a3ac88aa59867ea54d9c7bdd7e5f16c
|
|
7
|
+
data.tar.gz: 4cc14d89f98e59675fa2071005cda0b44a4c41f421c5ea0ba850193363b33c922c623187c939f9ed48bd152277732ceb7022e3ccedc88cc13ba710c2d52157f4
|
data/ext/baudrate/baudrate.c
CHANGED
|
@@ -7,7 +7,7 @@ VALUE setBaudRate(volatile VALUE obj, volatile VALUE dev, volatile VALUE speed)
|
|
|
7
7
|
char *device = StringValuePtr(dev) ;
|
|
8
8
|
unsigned int spd = NUM2UINT(speed) ;
|
|
9
9
|
|
|
10
|
-
int serial_port = open(device, O_RDWR) ;
|
|
10
|
+
int serial_port = open(device, O_RDWR | O_NOCTTY) ;
|
|
11
11
|
struct termios tty ;
|
|
12
12
|
|
|
13
13
|
char status = tcgetattr(serial_port, &tty) ;
|
|
@@ -22,7 +22,10 @@ VALUE setBaudRate(volatile VALUE obj, volatile VALUE dev, volatile VALUE speed)
|
|
|
22
22
|
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
-
if(status != 0)
|
|
25
|
+
if(status != 0) {
|
|
26
|
+
close(serial_port) ;
|
|
27
|
+
return Qnil ;
|
|
28
|
+
}
|
|
26
29
|
|
|
27
30
|
tty.c_cflag &= ~CSIZE ;
|
|
28
31
|
tty.c_cflag |= CS8 ;
|
|
@@ -46,18 +49,20 @@ VALUE setBaudRate(volatile VALUE obj, volatile VALUE dev, volatile VALUE speed)
|
|
|
46
49
|
cfsetospeed(&tty, spd) ;
|
|
47
50
|
status = tcsetattr(serial_port, TCSANOW, &tty) ;
|
|
48
51
|
|
|
49
|
-
|
|
52
|
+
close(serial_port) ;
|
|
50
53
|
|
|
54
|
+
if (status == 0) return Qtrue ;
|
|
51
55
|
return Qfalse ;
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
VALUE getBaudRate(volatile VALUE obj, volatile VALUE dev) {
|
|
55
59
|
char *device = StringValuePtr(dev) ;
|
|
56
60
|
|
|
57
|
-
int serial_port = open(device, O_RDWR) ;
|
|
61
|
+
int serial_port = open(device, O_RDWR | O_NOCTTY | O_NONBLOCK) ;
|
|
58
62
|
struct termios tty ;
|
|
59
63
|
|
|
60
64
|
char status = tcgetattr(serial_port, &tty) ;
|
|
65
|
+
close(serial_port) ;
|
|
61
66
|
|
|
62
67
|
if(status == 0) {
|
|
63
68
|
unsigned int in = cfgetispeed(&tty) ;
|
data/ext/crc32/crc32.c
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Source:
|
|
3
|
+
https://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art008
|
|
4
|
+
|
|
5
|
+
Note that this obeys the standard and matches with Ruby's Zlib.crc32(...)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#define CRC32_DIVISOR 0xEDB88320
|
|
9
|
+
#include "ruby.h"
|
|
10
|
+
|
|
11
|
+
static VALUE getCRC(volatile VALUE obj, volatile VALUE str) {
|
|
12
|
+
char *input = StringValuePtr(str) ;
|
|
13
|
+
unsigned char len = strlen(input) ;
|
|
14
|
+
unsigned long crc = 0xFFFFFFFF ;
|
|
15
|
+
|
|
16
|
+
for (unsigned char i = 0 ; i < len ; ++i) {
|
|
17
|
+
crc ^= input[i] ;
|
|
18
|
+
|
|
19
|
+
for (unsigned char k = 8 ; k ; --k) {
|
|
20
|
+
crc = crc & 1 ? (crc >> 1) ^ CRC32_DIVISOR : crc >> 1 ;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
char buffer[11] ;
|
|
25
|
+
sprintf(buffer, "%lu", crc ^ 0xFFFFFFFF) ;
|
|
26
|
+
|
|
27
|
+
return rb_str_new_cstr(buffer) ;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void Init_crc32() {
|
|
31
|
+
VALUE blinktm = rb_define_module("BlinkTM") ;
|
|
32
|
+
rb_define_module_function(blinktm, "crc32", getCRC, 1) ;
|
|
33
|
+
}
|
data/lib/blink_tm.rb
CHANGED
|
@@ -6,18 +6,19 @@ $-v = true
|
|
|
6
6
|
|
|
7
7
|
module BlinkTM
|
|
8
8
|
# Important Constants
|
|
9
|
-
BAUDRATE = BlinkTM::
|
|
9
|
+
BAUDRATE = BlinkTM::B38400
|
|
10
10
|
SCANID = 'BTM'
|
|
11
11
|
|
|
12
12
|
# POLLING time, how often should CPU, Net, IO usages should be updated.
|
|
13
13
|
# Should always be a float.
|
|
14
|
-
POLLING = 0.
|
|
14
|
+
POLLING = 0.250
|
|
15
15
|
|
|
16
16
|
# Refresh time, how often the main loop should run
|
|
17
17
|
REFRESH = 0.5
|
|
18
18
|
|
|
19
19
|
# Errors
|
|
20
20
|
NoDeviceError = Class.new(StandardError)
|
|
21
|
+
SyncError = Class.new(StandardError)
|
|
21
22
|
DeviceNotReady = Class.new(StandardError)
|
|
22
23
|
|
|
23
24
|
# Units
|
|
@@ -47,3 +48,4 @@ end
|
|
|
47
48
|
require 'blink_tm/version'
|
|
48
49
|
require 'fcntl'
|
|
49
50
|
require 'blink_tm/blink_tm'
|
|
51
|
+
require 'blink_tm/crc32'
|
data/lib/blink_tm/blink_tm.rb
CHANGED
|
@@ -102,18 +102,25 @@ module BlinkTM
|
|
|
102
102
|
end
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
prev_crc32 = ''
|
|
106
|
+
|
|
105
107
|
begin
|
|
106
108
|
raise NoDeviceError unless device
|
|
107
109
|
|
|
108
110
|
in_sync = false
|
|
109
|
-
|
|
111
|
+
|
|
112
|
+
fd = IO.sysopen(
|
|
113
|
+
device,
|
|
114
|
+
Fcntl::O_RDWR | Fcntl::O_NOCTTY | Fcntl::O_NONBLOCK | Fcntl::O_TRUNC
|
|
115
|
+
)
|
|
116
|
+
|
|
110
117
|
file = IO.open(fd)
|
|
111
118
|
|
|
112
119
|
until in_sync
|
|
113
120
|
# Clear out any extra zombie bits
|
|
114
|
-
file.syswrite(
|
|
121
|
+
file.syswrite(?~.freeze)
|
|
115
122
|
# Start the device
|
|
116
|
-
file.syswrite(
|
|
123
|
+
file.syswrite(?#.freeze)
|
|
117
124
|
file.flush
|
|
118
125
|
|
|
119
126
|
sleep 0.125
|
|
@@ -129,7 +136,10 @@ module BlinkTM
|
|
|
129
136
|
end
|
|
130
137
|
end
|
|
131
138
|
|
|
139
|
+
sync_error_count = 0
|
|
140
|
+
|
|
132
141
|
puts "#{BlinkTM::BOLD}#{BlinkTM::GREEN}:: #{Time.now.strftime('%H:%M:%S.%2N')}: Device ready!#{BlinkTM::RESET}"
|
|
142
|
+
file.read
|
|
133
143
|
|
|
134
144
|
while true
|
|
135
145
|
# cpu(01234) memUsed(999993) swapUsed(999992) io_active(0)
|
|
@@ -161,7 +171,16 @@ module BlinkTM
|
|
|
161
171
|
# Rescuing from suspend
|
|
162
172
|
file.syswrite(str)
|
|
163
173
|
file.flush
|
|
174
|
+
crc32 = file.read.scrub![/\d+/]
|
|
164
175
|
|
|
176
|
+
unless crc32 == prev_crc32 || prev_crc32.empty?
|
|
177
|
+
raise SyncError if sync_error_count > 1
|
|
178
|
+
sync_error_count += 1
|
|
179
|
+
else
|
|
180
|
+
sync_error_count = 0 unless sync_error_count == 0
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
prev_crc32 = BlinkTM.crc32(str[2..-2])
|
|
165
184
|
sleep REFRESH
|
|
166
185
|
end
|
|
167
186
|
rescue Interrupt, SystemExit, SignalException
|
|
@@ -176,6 +195,10 @@ module BlinkTM
|
|
|
176
195
|
sleep 0.1
|
|
177
196
|
end
|
|
178
197
|
|
|
198
|
+
retry
|
|
199
|
+
rescue BlinkTM::SyncError
|
|
200
|
+
file &.close
|
|
201
|
+
sleep 0.005
|
|
179
202
|
retry
|
|
180
203
|
rescue BlinkTM::DeviceNotReady
|
|
181
204
|
file &.close
|
data/lib/blink_tm/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: blink_tm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sourav Goswami
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-07-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: linux_stat
|
|
@@ -31,11 +31,14 @@ executables:
|
|
|
31
31
|
- blink-tm
|
|
32
32
|
extensions:
|
|
33
33
|
- ext/baudrate/extconf.rb
|
|
34
|
+
- ext/crc32/extconf.rb
|
|
34
35
|
extra_rdoc_files: []
|
|
35
36
|
files:
|
|
36
37
|
- exe/blink-tm
|
|
37
38
|
- ext/baudrate/baudrate.c
|
|
38
39
|
- ext/baudrate/extconf.rb
|
|
40
|
+
- ext/crc32/crc32.c
|
|
41
|
+
- ext/crc32/extconf.rb
|
|
39
42
|
- lib/blink_tm.rb
|
|
40
43
|
- lib/blink_tm/blink_tm.rb
|
|
41
44
|
- lib/blink_tm/version.rb
|
|
@@ -58,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
58
61
|
- !ruby/object:Gem::Version
|
|
59
62
|
version: '0'
|
|
60
63
|
requirements: []
|
|
61
|
-
rubygems_version: 3.2.
|
|
64
|
+
rubygems_version: 3.2.21
|
|
62
65
|
signing_key:
|
|
63
66
|
specification_version: 4
|
|
64
67
|
summary: A controller for Arduino OLED System Monitor, Blink Task Manager
|