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 +4 -4
- data/.gitignore +1 -0
- data/lib/LazGem/device.rb +143 -2
- data/lib/LazGem/version.rb +1 -1
- data/sample/sample_rxBin.rb +74 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a6b7695ed6a72efd75da15ce2dcfe395c254330
|
4
|
+
data.tar.gz: fa335a47e4699024c185f6b3c3ab7c6323a44896
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac308c0aefe25db25a77b6a7f9a3b8024d64eeb5ecc2d5d1f886bbbe7c47a4d3caf2dda360e568d5a5e20b788448881182cb28a9fc3e47a8cb6e587213dab91f
|
7
|
+
data.tar.gz: 0aaff4a10e5ecb6fb0e2fddd76aaefbba680c61b0ca5d66ada18bdcf69626136c4c63e4de1b7d19c4e272261f89e5bf8d808af9fdd85d86e0794f3e3c7ded69f
|
data/.gitignore
CHANGED
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)
|
data/lib/LazGem/version.rb
CHANGED
@@ -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.
|
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-
|
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.
|
105
|
+
rubygems_version: 2.5.2
|
105
106
|
signing_key:
|
106
107
|
specification_version: 4
|
107
108
|
summary: Lazurite ruby gem
|