msr 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81af545812e6fab9ed1c61e8b69d1e82b961b068
4
- data.tar.gz: fcd4c2cd3216794423db08a215db459739f2a7a0
3
+ metadata.gz: 23d6988a2d59a42e9eb5c923d392e59d1ae186ef
4
+ data.tar.gz: 52d9c1e5eb38d71a7bae4a114cad60e053989de6
5
5
  SHA512:
6
- metadata.gz: 4179c29875a10c5d015a27ffffc80e1297a67e829385a8de3166aa903287d2640635c26242120e9982a05447bc6a3d8adb83a5af16bc698eb1851d894265aa73
7
- data.tar.gz: a398a654f8304bdc7ad1dec138917d9bf29fb95fcfe34b7e4c5a86a4890f533e07ae7e06101e0e193b67f461945a302fb4e9b362dee3ce2e17e928defe616a16
6
+ metadata.gz: f2d87225574756678fc7b19f4deb5fe8babb5941b0160caec2b6ee3dbacc65f5e9205e1db8090ab16fa0eb597b897fa8c89af415a396311af4bb94068b5b8500
7
+ data.tar.gz: e0e3ac7659268b2c6e82c904b7854ab91f5b2941b92089aea468fed7fbca844b657ed3b38d3205cb2c4dfaf4924f099fad8d65b23b9680ac1fcab9876ce6ee1b
data/README.md CHANGED
@@ -1,11 +1,22 @@
1
1
  msr
2
2
  ===
3
3
 
4
+ [![Gem Version](https://badge.fury.io/rb/msr.svg)](https://badge.fury.io/rb/msr)
5
+
4
6
  A ruby gem for controlling magnetic stripe reader-writers (on UNIX/UNIX-likes).
5
7
 
6
8
  Uses [libmsr](https://github.com/woodruffw/libmsr).
7
9
 
8
- ## Roadmap
10
+ ## Installation
11
+
12
+ ```
13
+ $ gem install msr # make sure you have libmsr and ruby development headers
14
+ ```
15
+
16
+ ## Example
17
+
18
+ Full documentation is
19
+ [available on RubyDoc](http://www.rubydoc.info/gems/msr/).
9
20
 
10
21
  ```ruby
11
22
  require 'msr'
@@ -15,12 +26,21 @@ msr = MSR::MSR505C.new("/dev/ttyS0") # or your serial device
15
26
  puts "OK" if msr.linked?
16
27
 
17
28
  # control an LED on the reader
18
- msr.led!(:red) # :green, :yellow, :all, :off
29
+ msr.led = :all # :green, :yellow, :red, :all, :none
19
30
 
20
31
  # get and set coercivity
21
32
  msr.coercivity # => :high, :low
22
33
  msr.coercivity = :high # :low
23
34
 
24
- # more to come
35
+ tracks = msr.raw_read # => MSR::Tracks
36
+
37
+ tracks.reverse!
38
+
39
+ msr.raw_write tracks
25
40
  ```
26
41
 
42
+ ## License
43
+
44
+ `ruby-msr` is licensed under the MIT License.
45
+
46
+ For the exact terms, see the [license](./LICENSE) file.
data/ext/msr/msr206.c CHANGED
@@ -33,13 +33,26 @@ static VALUE sensor_test(VALUE self);
33
33
  */
34
34
  static VALUE ram_test(VALUE self);
35
35
 
36
-
37
36
  /*
38
37
  Reset the device to a ready state.
39
38
  @note This method pauses for 100ms.
40
39
  */
41
40
  static VALUE reset(VALUE self);
42
41
 
42
+ /*
43
+ Get the device's firmware version.
44
+ @return [String] the firmware version, in "REV?X.XX" format
45
+ @raise [RuntimeError] if the device returns a bad response
46
+ */
47
+ static VALUE firmware(VALUE self);
48
+
49
+ /*
50
+ Get the device's model.
51
+ @return [String] the model, in "MSR-206-?" format
52
+ @raise [RuntimeError] if the device returns a bad response
53
+ */
54
+ static VALUE model(VALUE self);
55
+
43
56
  /*
44
57
  Get the device's current coercivity level.
45
58
  @return [Symbol] `:hi` if the device is in Hi-Co mode, `:lo` if Lo-Co
@@ -106,7 +119,6 @@ static VALUE raw_write(VALUE self, VALUE tks_obj);
106
119
  */
107
120
  static VALUE iso_write(VALUE self, VALUE tks_obj);
108
121
 
109
-
110
122
  void Init_msr_msr206()
111
123
  {
112
124
  cMSR_MSR206 = rb_define_class_under(mMSR, "MSR206", rb_cObject);
@@ -117,6 +129,8 @@ void Init_msr_msr206()
117
129
  rb_define_method(cMSR_MSR206, "sensor_test!", sensor_test, 0);
118
130
  rb_define_method(cMSR_MSR206, "ram_test!", ram_test, 0);
119
131
  rb_define_method(cMSR_MSR206, "reset!", reset, 0);
132
+ rb_define_method(cMSR_MSR206, "firmware", firmware, 0);
133
+ rb_define_method(cMSR_MSR206, "model", model, 0);
120
134
  rb_define_method(cMSR_MSR206, "coercivity", get_coercivity, 0);
121
135
  rb_define_method(cMSR_MSR206, "coercivity=", set_coercivity, 1);
122
136
  rb_define_method(cMSR_MSR206, "bpi=", set_bpi, 1);
@@ -237,6 +251,40 @@ static VALUE reset(VALUE self)
237
251
  return self;
238
252
  }
239
253
 
254
+ static VALUE firmware(VALUE self)
255
+ {
256
+ msr206_ctx_t *ctx;
257
+ uint8_t buf[9];
258
+ int ret;
259
+
260
+ Data_Get_Struct(self, msr206_ctx_t, ctx);
261
+
262
+ ret = msr_fwrev(ctx->fd, buf);
263
+
264
+ if (ret != LIBMSR_ERR_OK) {
265
+ rb_raise(rb_eRuntimeError, "Couldn't get device firmware (%d)", ret);
266
+ }
267
+
268
+ return rb_str_new_cstr(buf);
269
+ }
270
+
271
+ static VALUE model(VALUE self)
272
+ {
273
+ msr206_ctx_t *ctx;
274
+ uint8_t buf[10];
275
+ int ret;
276
+
277
+ Data_Get_Struct(self, msr206_ctx_t, ctx);
278
+
279
+ ret = msr_model(ctx->fd, buf);
280
+
281
+ if (ret != LIBMSR_ERR_OK) {
282
+ rb_raise(rb_eRuntimeError, "Couldn't get device model (%d)", ret);
283
+ }
284
+
285
+ return rb_str_new_cstr(buf);
286
+ }
287
+
240
288
  static VALUE get_coercivity(VALUE self)
241
289
  {
242
290
  VALUE hi_co = ID2SYM(rb_intern("hi"));
data/ext/msr/tracks.c CHANGED
@@ -30,6 +30,8 @@ void Init_msr_tracks()
30
30
  {
31
31
  c_MSR_Tracks = rb_define_class_under(mMSR, "Tracks", rb_cObject);
32
32
 
33
+ rb_define_const(c_MSR_Tracks, "MAX_TRACKS", INT2NUM(MSR_MAX_TRACKS));
34
+
33
35
  rb_define_method(c_MSR_Tracks, "initialize", msr_tracks_initialize, 3);
34
36
  rb_define_method(c_MSR_Tracks, "track1", msr_tracks_track1, 0);
35
37
  rb_define_method(c_MSR_Tracks, "track2", msr_tracks_track2, 0);
data/lib/msr.rb CHANGED
@@ -5,5 +5,5 @@ require_relative "msr/msr206"
5
5
  require_relative "msr/msr505c"
6
6
 
7
7
  module MSR
8
- VERSION = "0.0.3".freeze
8
+ VERSION = "0.0.4".freeze
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Woodruff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-03 00:00:00.000000000 Z
11
+ date: 2016-11-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A library for controlling magnetic stripe reader/writers.
14
14
  email: william@tuffbizz.com