LazGem 0.1.1 → 0.1.2

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: f7a8d7dac05ffcb6c0bf725000a26eaf203f6359
4
- data.tar.gz: 1b0ef77cc92e7f31995676a9f0d485ded976f998
3
+ metadata.gz: 9a6b7695ed6a72efd75da15ce2dcfe395c254330
4
+ data.tar.gz: fa335a47e4699024c185f6b3c3ab7c6323a44896
5
5
  SHA512:
6
- metadata.gz: 93c879be719de4f2fdfbda59ce9a740dd6c2153f1ab60d94473f5cc124d3ce14291dc979d1e47a245ed84f5fe7168be3a591c71393e05a102e097b3eb20a452a
7
- data.tar.gz: 448b5ea510c8f318920fc97859108ddb969d5ee1bde3dd5a99ad3646d04511fc101a4f6bbe51a0f3d58a3fd5af00440e2496d368037bf56cba3c24a6f3315bd6
6
+ metadata.gz: ac308c0aefe25db25a77b6a7f9a3b8024d64eeb5ecc2d5d1f886bbbe7c47a4d3caf2dda360e568d5a5e20b788448881182cb28a9fc3e47a8cb6e587213dab91f
7
+ data.tar.gz: 0aaff4a10e5ecb6fb0e2fddd76aaefbba680c61b0ca5d66ada18bdcf69626136c4c63e4de1b7d19c4e272261f89e5bf8d808af9fdd85d86e0794f3e3c7ded69f
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  tags
11
+ tags.lock
data/lib/LazGem/device.rb CHANGED
@@ -73,6 +73,148 @@ class LazGem::Device
73
73
  return size
74
74
  end
75
75
 
76
+ def readBin()
77
+ size = 2
78
+ len = @@device_rd.read(size)
79
+ if ((len == "") || (len == nil)) then # read result is empty
80
+ return 0
81
+ end
82
+ size = len.unpack("S*")[0]
83
+
84
+ # The received data is read
85
+ raw = @@device_rd.read(size)
86
+ if ((raw == "") || (raw == nil)) then # read result is empty
87
+ return -1
88
+ end
89
+
90
+ len = raw.length
91
+ header = raw.unpack("S*")[0]
92
+
93
+ dst_addr_type = (header>>14) & 0x03
94
+ frame_ver = (header >> 12) & 0x03
95
+ src_addr_type = (header >> 10) & 0x03
96
+ ielist = (header >> 9) & 0x01
97
+ seq_comp = (header >> 8) & 0x01
98
+ panid_comp = (header >> 6) & 0x01
99
+ ack_req = (header >> 5) & 0x01
100
+ pending = (header >> 4) & 0x01
101
+ sec_enb = (header >> 3) & 0x01
102
+ frame_type = (header >> 0) & 0x07
103
+
104
+ offset = 2
105
+
106
+ if seq_comp == 0 then
107
+ seq_num = raw[offset..offset+1].unpack("C")[0]
108
+ offset = offset + 1
109
+ end
110
+
111
+ if dst_addr_type == 0 && src_addr_type == 0 && panid_comp == 0 then
112
+ addr_type = 0
113
+ dst_panid = nil
114
+ src_panid = nil
115
+ elsif dst_addr_type == 0 && src_addr_type == 0 && panid_comp != 0 then
116
+ addr_type = 1
117
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
118
+ offset = offset + 2
119
+ dst_panid = nil
120
+ elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp == 0 then
121
+ addr_type = 2
122
+ dst_panid = nil
123
+ src_panid = raw[offset..offset+2].unpack("S*")[0]
124
+ offset = offset + 2
125
+ elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp != 0 then
126
+ addr_type = 3
127
+ dst_panid = nil
128
+ src_panid = nil
129
+ elsif dst_addr_type != 0 && src_addr_type == 0 && panid_comp == 0 then
130
+ addr_type = 4
131
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
132
+ offset = offset + 2
133
+ src_panid = nil
134
+ elsif dst_addr_type != 0 && src_addr_type == 0 && panid_comp != 0 then
135
+ addr_type = 5
136
+ dst_panid = nil
137
+ src_panid = nil
138
+ elsif dst_addr_type != 0 && src_addr_type != 0 && panid_comp == 0 then
139
+ addr_type = 6
140
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
141
+ offset = offset + 2
142
+ src_panid = nil
143
+ elsif dst_addr_type != 0 && src_addr_type != 0 && panid_comp != 0 then
144
+ addr_type = 7
145
+ dst_panid = nil
146
+ src_panid = nil
147
+ end
148
+
149
+ if dst_addr_type == 0 then
150
+ dst_addr = nil
151
+ elsif dst_addr_type == 1 then
152
+ dst_addr = raw[offset].unpack("C")[0]
153
+ offset = offset+1
154
+ elsif dst_addr_type == 2 then
155
+ dst_addr = raw[offset..offset+1].unpack("S*")[0]
156
+ offset = offset+2
157
+ else
158
+ dst_addr = raw[offset+7].unpack("H2")[0] +
159
+ raw[offset+6].unpack("H2")[0] +
160
+ raw[offset+5].unpack("H2")[0] +
161
+ raw[offset+4].unpack("H2")[0] +
162
+ raw[offset+3].unpack("H2")[0] +
163
+ raw[offset+2].unpack("H2")[0] +
164
+ raw[offset+1].unpack("H2")[0] +
165
+ raw[offset+0].unpack("H2")[0]
166
+ offset = offset+8
167
+ end
168
+
169
+ if src_addr_type == 0 then
170
+ src_addr = nil
171
+ elsif src_addr_type == 1 then
172
+ src_addr = raw[offset].unpack("C")[0]
173
+ offset = offset+1
174
+ elsif src_addr_type == 2 then
175
+ src_addr = raw[offset..offset+1].unpack("S")[0]
176
+ offset = offset+2
177
+ else
178
+ src_addr = raw[offset+7].unpack("H2")[0] +
179
+ raw[offset+6].unpack("H2")[0] +
180
+ raw[offset+5].unpack("H2")[0] +
181
+ raw[offset+4].unpack("H2")[0] +
182
+ raw[offset+3].unpack("H2")[0] +
183
+ raw[offset+2].unpack("H2")[0] +
184
+ raw[offset+1].unpack("H2")[0] +
185
+ raw[offset+0].unpack("H2")[0]
186
+ offset = offset+8
187
+ end
188
+
189
+ payload = raw[offset..len-1]
190
+
191
+ rcv = Hash.new()
192
+
193
+ rcv["header"] = header
194
+ rcv["dst_addr_type"] = dst_addr_type
195
+ rcv["frame_ver"] = frame_ver
196
+ rcv["src_addr_type"] = src_addr_type
197
+ rcv["ielist"] = ielist
198
+ rcv["seq_comp"] = seq_comp
199
+ rcv["panid_comp"] = panid_comp
200
+ rcv["ack_req"] = ack_req
201
+ rcv["pending"] = pending
202
+ rcv["sec_enb"] = sec_enb
203
+ rcv["frame_type"] = frame_type
204
+ rcv["addr_type"] = addr_type
205
+ rcv["dst_panid"] = dst_panid
206
+ rcv["src_panid"] = src_panid
207
+ rcv["dst_addr"] = dst_addr
208
+ rcv["src_addr"] = src_addr
209
+ rcv["seq_num"] = seq_num
210
+ rcv["payload"] = payload
211
+ sec,nsec = get_rx_time()
212
+ rcv["sec"]=sec
213
+ rcv["nsec"]=nsec
214
+ rcv["rssi"]=get_rx_rssi()
215
+ return rcv
216
+ end
217
+
76
218
  def read()
77
219
  size = 2
78
220
  len = @@device_rd.read(size)
@@ -212,8 +354,7 @@ class LazGem::Device
212
354
  rcv["sec"]=sec
213
355
  rcv["nsec"]=nsec
214
356
  rcv["rssi"]=get_rx_rssi()
215
-
216
- return rcv
357
+ return rcv
217
358
  end
218
359
  def send64(addr,payload)
219
360
  set_dst_addr0((addr >> 0)&0x000000000000ffff)
@@ -1,3 +1,3 @@
1
1
  module LazGem
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,74 @@
1
+ #! /usr/bin/ruby
2
+ # -*- coding: utf-8; mode: ruby -*-
3
+ # Function:
4
+ # Lazurite Sub-GHz/Lazurite Pi Gateway Sample program
5
+ # SerialMonitor.rb
6
+ require 'LazGem'
7
+
8
+ laz = LazGem::Device.new
9
+
10
+ # Halt process when CTRL+C is pushed.
11
+ finish_flag=0
12
+ Signal.trap(:INT){
13
+ finish_flag=1
14
+ }
15
+
16
+ if ARGV.size == 0
17
+ printf("please input argument of ch at least\n")
18
+ printf("command format is shown below...\n")
19
+ printf("./sample_rx.rb ch panid baud pwr\n")
20
+ printf(" ch: 24-61\n")
21
+ printf(" panid: 0-0xffff\n")
22
+ printf(" baud: 50 or 100\n")
23
+ printf(" pwr: 1 or 20\n")
24
+ exit 0
25
+ end
26
+
27
+ # open device deriver
28
+
29
+ dst_addr = 0xffff
30
+ ch = 36
31
+ panid = 0xabcd
32
+ baud = 100
33
+ pwr = 20
34
+
35
+ if ARGV.size > 0
36
+ ch=Integer(ARGV[0])
37
+ end
38
+ if ARGV.size > 1
39
+ panid = Integer(ARGV[1])
40
+ end
41
+ if ARGV.size > 2
42
+ baud = Integer(ARGV[2])
43
+ end
44
+ if ARGV.size > 3
45
+ pwr = Integer(ARGV[3])
46
+ end
47
+
48
+ laz.init()
49
+
50
+ print(sprintf("myAddress=0x%016x\n",laz.getMyAddr64()))
51
+ print(sprintf("myAddress=0x%04x\n",laz.getMyAddress()))
52
+
53
+ laz.begin(ch,panid,baud,pwr)
54
+ laz.rxEnable()
55
+
56
+ # printing header of receiving log
57
+ print(sprintf("time\t\t\t\t\t[ns]\trxPanid\trxAddr\ttxAddr\trssi\tpayload\n"))
58
+ print(sprintf("------------------------------------------------------------------------------------------\n"))
59
+
60
+ # main routine
61
+ while finish_flag == 0 do
62
+ if laz.available() <= 0
63
+ sleep 0.01
64
+ next
65
+ end
66
+ rcv = laz.readBin()
67
+ # printing data
68
+ p rcv
69
+ end
70
+
71
+ # finishing process
72
+ laz.remove()
73
+
74
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: LazGem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - NaotakaSaito
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-08-18 00:00:00.000000000 Z
12
+ date: 2017-09-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -78,6 +78,7 @@ files:
78
78
  - release.log
79
79
  - sample/sample_promiscuous.rb
80
80
  - sample/sample_rx.rb
81
+ - sample/sample_rxBin.rb
81
82
  - sample/sample_tx.rb
82
83
  - sample/sample_tx64.rb
83
84
  - sample/tags
@@ -101,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
102
  version: '0'
102
103
  requirements: []
103
104
  rubyforge_project:
104
- rubygems_version: 2.2.2
105
+ rubygems_version: 2.5.2
105
106
  signing_key:
106
107
  specification_version: 4
107
108
  summary: Lazurite ruby gem