LazGem 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|