extface 0.1.8 → 0.1.9

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: 900544046448abb9c9c713e46a328fb7024a6d7b
4
- data.tar.gz: bb25d5f73e3cc268ee61178863c9a40768afa006
3
+ metadata.gz: fc59569d61b550e245d115c0542d9803bc9ded4c
4
+ data.tar.gz: 16607248a89cc5776e47a9145eed8a4a68389509
5
5
  SHA512:
6
- metadata.gz: f8e3ab792ef789a4a5ae4999ce42837b53b1c898a8f588306f660bf8f59a9707427177b962932800ead930d957f30df9ad0ed1c628cddc40ce16b82cab1d95b1
7
- data.tar.gz: 77251dc8768f3ad7645a46d740a8d0b89cbc5082e97129116a59fa47f62de4822f7a51228fd6612ccd838577ab339dfe10c655f0a445bb76b1700d393d7f4857
6
+ metadata.gz: 981cd2238ba9611ea66f5375af2e34d4f33272bdc303109910e8407c979c59946881a17c234150b2275ad878e0b77df4104a6abf52b3ca6a4722870e9af3b700
7
+ data.tar.gz: a11e17b3b21d4600915fc7181898258a0eb28961da58d5c0bffaeb8b0d571e0819fca358037a90f573e61bbe5e0e03a6d26e3aa3f135dbd578896646e07fd538
@@ -21,7 +21,7 @@ module Extface
21
21
  ensure
22
22
  response.stream.close
23
23
  end
24
-
24
+
25
25
  def push
26
26
  # get request.body.read
27
27
  # if it is push message, process it
@@ -35,10 +35,10 @@ module Extface
35
35
  end
36
36
  if bytes_porcessed = device.driver.handle(@full_buffer.b)
37
37
  Extface.redis_block do |r|
38
- r.set device.uuid, r.get(device.uuid)[bytes_porcessed]
38
+ r.set device.uuid, @full_buffer.b[bytes_porcessed..-1]
39
39
  end
40
40
  end
41
- stream_job # stream right now :)
41
+ #stream_job # stream right now :)
42
42
  status = :ok
43
43
  end
44
44
  rescue => e
@@ -23,7 +23,7 @@ module Extface
23
23
  FISCAL = true #cash registers, fiscal printers
24
24
  REPORT = false #only transmit data that must be parsed by handler, CDR, report devices
25
25
 
26
- RESPONSE_TIMEOUT = 6 #seconds
26
+ RESPONSE_TIMEOUT = 3 #seconds
27
27
  INVALID_FRAME_RETRIES = 6 #seconds
28
28
 
29
29
  TAX_GROUPS_MAP = {
@@ -53,7 +53,6 @@ module Extface
53
53
  return 0 #no bytes processed
54
54
  end
55
55
  end
56
- return buffer.length
57
56
  end
58
57
 
59
58
  def autocut(partial = true) # return "P" - success, "F" - failed
@@ -70,7 +69,7 @@ module Extface
70
69
  s.fsend Sales::PRINT_NON_FISCAL_TEXT, "********************************"
71
70
  s.fsend Printer::MOVE, "1"
72
71
  s.fsend Sales::PRINT_NON_FISCAL_TEXT, "Driver: " + "#{self.class::NAME}".truncate(24)
73
- s.fsend(Sales::END_NON_FISCAL_DOC)
72
+ s.fsend Sales::END_NON_FISCAL_DOC
74
73
  s.notify "Printing finished"
75
74
  end
76
75
  end
@@ -97,7 +96,7 @@ module Extface
97
96
  def sale_and_pay_items_session(items = [], operator = "1", password = "1")
98
97
  device.session("Fiscal Doc") do |s|
99
98
  s.notify "Fiscal Doc Start"
100
- s.fsend Sales::START_FISCAL_DOC, "#{operator},#{password},00001"
99
+ s.fsend Sales::START_FISCAL_DOC, "#{operator || "1"},#{password || "1"},00001"
101
100
  items.each do |item|
102
101
  s.fsend Sales::SALE_AND_SHOW, build_sale_data(item[:price], item[:text1], item[:text2], item[:tax_group], item[:qty], item[:percent], item[:neto])
103
102
  end
@@ -185,7 +184,7 @@ module Extface
185
184
  end
186
185
  end
187
186
 
188
- #private
187
+ private
189
188
  def bcc(buffer)
190
189
  sum = 0
191
190
  buffer.each_byte do |byte|
@@ -264,15 +263,17 @@ module Extface
264
263
  attr_reader :frame, :len, :seq, :cmd, :data, :status, :bcc
265
264
 
266
265
  validates_presence_of :frame
267
- #validate :bcc_validation
268
- #validate :len_validation
266
+ validate :bcc_validation
267
+ validate :len_validation
269
268
 
270
269
  def initialize(buffer)
271
270
  # test Extface::Driver::DaisyFx1200::RespFrame.new("\x16\x16\x01\x2c\x20\x2dP\x04SSSSSS\x05\BBBB\x03")
272
271
  # LEN SEQ CMD DATA STATUS BCC
273
272
  if match = buffer.match(/\x01(.{1})(.{1})(.{1})(.*)\x04(.{6})\x05(.{4})\x03/n)
274
- @frame = match.string[match.pre_match.length..-1]
273
+ @frame = match.to_a.first
275
274
  @len, @seq, @cmd, @data, @status, @bcc = match.captures
275
+ else
276
+ #TODO look for NAK
276
277
  end
277
278
  end
278
279
 
@@ -42,6 +42,16 @@ module Extface
42
42
  OPEN_DRAWER_1 = 0x7b
43
43
  OPEN_DRAWER_2 = 0x7c
44
44
  end
45
+
46
+ def handle(buffer)
47
+ bytes_processed = 0
48
+ if frame_match = buffer.match(/\x02.*\x03.{4}/n)
49
+ frame_data = frame_match.to_s
50
+ rpush frame_data
51
+ bytes_processed = frame_match.pre_match.length + frame_data.length
52
+ end
53
+ return bytes_processed
54
+ end
45
55
 
46
56
  def build_packet(cmd, fields = [])
47
57
  String.new.tap() do |frame|
@@ -71,6 +81,19 @@ module Extface
71
81
  @seq += 1 if increment
72
82
  @seq = 0x20 if @seq == 0x7f
73
83
  @seq
74
- end
84
+ end
85
+
86
+ class Frame
87
+ include ActiveModel::Validations
88
+ attr_reader :frame, :seq, :cmd, :fields_data, :fields, :bcc
89
+
90
+ def initialize(buffer)
91
+ if match = buffer.match(/\x02([\x20-\x7F])([\x30-\xaf])\x1c(.*)\x03(.{4})/n)
92
+ @frame = match.to_a.first
93
+ @seq, @cmd, @fileds_data, @bcc = match.captures
94
+ @fields = @fields_data.split("\x1c")
95
+ end
96
+ end
97
+ end
75
98
  end
76
99
  end
@@ -1,3 +1,3 @@
1
1
  module Extface
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extface
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Vangelov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-17 00:00:00.000000000 Z
11
+ date: 2014-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails