LazGem 0.0.8 → 0.1.0
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 +73 -46
- data/lib/LazGem/ioctl.rb +70 -54
- data/lib/LazGem/version.rb +1 -1
- data/sample/sample_promiscuous.rb +71 -0
- data/sample/sample_rx.rb +34 -13
- data/sample/sample_tx.rb +36 -19
- data/sample/sample_tx64.rb +71 -0
- data/sample/tags +6 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0a2dbdff41f22ce85f74cde685dd75d6995077c
|
4
|
+
data.tar.gz: d24cb261ced991ed7f76894c19bda074676ee96f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf77d1003affcac84d8f759e695617a02e681d23887f07aef71cb748e39b8b406a9831a44d89f728ed75a24af4e9d58e2e1697519377f30e64fe90dff3f2f483
|
7
|
+
data.tar.gz: 95b2f285d1a555187b5edf03474cd250a6c1dfbbe907ca9fcbdfec62196f45c11f4bd7244cdfff6620ee40ccd524c93c9797674257aec72d8a79f08246a09d7a
|
data/.gitignore
CHANGED
data/lib/LazGem/device.rb
CHANGED
@@ -19,8 +19,8 @@ class LazGem::Device
|
|
19
19
|
@@device_rd=nil
|
20
20
|
@@device_wr=nil
|
21
21
|
|
22
|
-
def init()
|
23
|
-
cmd = "sudo insmod /home/pi/driver/LazDriver/lazdriver.ko"
|
22
|
+
def init(module_test=0x0000)
|
23
|
+
cmd = "sudo insmod /home/pi/driver/LazDriver/lazdriver.ko module_test="+module_test.to_s
|
24
24
|
p cmd
|
25
25
|
result = system(cmd)
|
26
26
|
lzgw_dev = "/dev/lzgw"
|
@@ -69,6 +69,7 @@ class LazGem::Device
|
|
69
69
|
if ((len == "") || (len == nil)) then # read result is empty
|
70
70
|
return 0
|
71
71
|
end
|
72
|
+
size = len.unpack("S*")[0]
|
72
73
|
return size
|
73
74
|
end
|
74
75
|
|
@@ -89,9 +90,9 @@ class LazGem::Device
|
|
89
90
|
len = raw.length
|
90
91
|
header = raw.unpack("S*")[0]
|
91
92
|
|
92
|
-
|
93
|
+
dst_addr_type = (header>>14) & 0x03
|
93
94
|
frame_ver = (header >> 12) & 0x03
|
94
|
-
|
95
|
+
src_addr_type = (header >> 10) & 0x03
|
95
96
|
ielist = (header >> 9) & 0x01
|
96
97
|
seq_comp = (header >> 8) & 0x01
|
97
98
|
panid_comp = (header >> 6) & 0x01
|
@@ -107,63 +108,81 @@ class LazGem::Device
|
|
107
108
|
offset = offset + 1
|
108
109
|
end
|
109
110
|
|
110
|
-
if
|
111
|
+
if dst_addr_type == 0 && src_addr_type == 0 && panid_comp == 0 then
|
111
112
|
addr_type = 0
|
112
|
-
|
113
|
-
|
114
|
-
elsif
|
113
|
+
dst_panid = nil
|
114
|
+
src_panid = nil
|
115
|
+
elsif dst_addr_type == 0 && src_addr_type == 0 && panid_comp != 0 then
|
115
116
|
addr_type = 1
|
116
|
-
|
117
|
+
dst_panid = raw[offset..offset+2].unpack("S*")[0]
|
117
118
|
offset = offset + 2
|
118
|
-
|
119
|
-
elsif
|
119
|
+
dst_panid = nil
|
120
|
+
elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp == 0 then
|
120
121
|
addr_type = 2
|
121
|
-
|
122
|
-
|
122
|
+
dst_panid = nil
|
123
|
+
src_panid = raw[offset..offset+2].unpack("S*")[0]
|
123
124
|
offset = offset + 2
|
124
|
-
elsif
|
125
|
+
elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp != 0 then
|
125
126
|
addr_type = 3
|
126
|
-
|
127
|
-
|
128
|
-
elsif
|
127
|
+
dst_panid = nil
|
128
|
+
src_panid = nil
|
129
|
+
elsif dst_addr_type != 0 && src_addr_type == 0 && panid_comp == 0 then
|
129
130
|
addr_type = 4
|
130
|
-
|
131
|
+
dst_panid = raw[offset..offset+2].unpack("S*")[0]
|
131
132
|
offset = offset + 2
|
132
|
-
|
133
|
-
elsif
|
133
|
+
src_panid = nil
|
134
|
+
elsif dst_addr_type != 0 && src_addr_type == 0 && panid_comp != 0 then
|
134
135
|
addr_type = 5
|
135
|
-
|
136
|
-
|
137
|
-
elsif
|
136
|
+
dst_panid = nil
|
137
|
+
src_panid = nil
|
138
|
+
elsif dst_addr_type != 0 && src_addr_type != 0 && panid_comp == 0 then
|
138
139
|
addr_type = 6
|
139
|
-
|
140
|
+
dst_panid = raw[offset..offset+2].unpack("S*")[0]
|
140
141
|
offset = offset + 2
|
141
|
-
|
142
|
-
elsif
|
142
|
+
src_panid = nil
|
143
|
+
elsif dst_addr_type != 0 && src_addr_type != 0 && panid_comp != 0 then
|
143
144
|
addr_type = 7
|
144
|
-
|
145
|
-
|
145
|
+
dst_panid = nil
|
146
|
+
src_panid = nil
|
146
147
|
end
|
147
148
|
|
148
|
-
if
|
149
|
-
|
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]
|
150
153
|
offset = offset+1
|
151
|
-
elsif
|
152
|
-
|
154
|
+
elsif dst_addr_type == 2 then
|
155
|
+
dst_addr = raw[offset..offset+1].unpack("S*")[0]
|
153
156
|
offset = offset+2
|
154
157
|
else
|
155
|
-
|
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]
|
156
166
|
offset = offset+8
|
157
167
|
end
|
158
168
|
|
159
|
-
if
|
160
|
-
|
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]
|
161
173
|
offset = offset+1
|
162
|
-
elsif
|
163
|
-
|
174
|
+
elsif src_addr_type == 2 then
|
175
|
+
src_addr = raw[offset..offset+1].unpack("S")[0]
|
164
176
|
offset = offset+2
|
165
177
|
else
|
166
|
-
|
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]
|
167
186
|
offset = offset+8
|
168
187
|
end
|
169
188
|
|
@@ -172,9 +191,9 @@ class LazGem::Device
|
|
172
191
|
rcv = Hash.new()
|
173
192
|
|
174
193
|
rcv["header"] = header
|
175
|
-
rcv["
|
194
|
+
rcv["dst_addr_type"] = dst_addr_type
|
176
195
|
rcv["frame_ver"] = frame_ver
|
177
|
-
rcv["
|
196
|
+
rcv["src_addr_type"] = src_addr_type
|
178
197
|
rcv["ielist"] = ielist
|
179
198
|
rcv["seq_comp"] = seq_comp
|
180
199
|
rcv["panid_comp"] = panid_comp
|
@@ -183,10 +202,10 @@ class LazGem::Device
|
|
183
202
|
rcv["sec_enb"] = sec_enb
|
184
203
|
rcv["frame_type"] = frame_type
|
185
204
|
rcv["addr_type"] = addr_type
|
186
|
-
rcv["
|
187
|
-
rcv["
|
188
|
-
rcv["
|
189
|
-
rcv["
|
205
|
+
rcv["dst_panid"] = dst_panid
|
206
|
+
rcv["src_panid"] = src_panid
|
207
|
+
rcv["dst_addr"] = dst_addr
|
208
|
+
rcv["src_addr"] = src_addr
|
190
209
|
rcv["seq_num"] = seq_num
|
191
210
|
rcv["payload"] = payload
|
192
211
|
sec,nsec = get_rx_time()
|
@@ -196,9 +215,17 @@ class LazGem::Device
|
|
196
215
|
|
197
216
|
return rcv
|
198
217
|
end
|
218
|
+
def send64(addr,payload)
|
219
|
+
set_dst_addr0((addr >> 0)&0x000000000000ffff)
|
220
|
+
set_dst_addr1((addr >> 16)&0x000000000000ffff)
|
221
|
+
set_dst_addr2((addr >> 32)&0x000000000000ffff)
|
222
|
+
set_dst_addr3((addr >> 48)&0x000000000000ffff)
|
223
|
+
@@device_wr.write(payload)
|
224
|
+
sleep 0.001
|
225
|
+
end
|
199
226
|
def send(panid,addr,payload)
|
200
|
-
|
201
|
-
|
227
|
+
set_dst_panid(panid)
|
228
|
+
set_dst_addr0(addr)
|
202
229
|
@@device_wr.write(payload)
|
203
230
|
sleep 0.001
|
204
231
|
end
|
data/lib/LazGem/ioctl.rb
CHANGED
@@ -12,6 +12,7 @@ class LazGem::Device
|
|
12
12
|
IOCTL_SET_CLOSE= IOCTL_CMD+0x17
|
13
13
|
IOCTL_GET_SEND_MODE= IOCTL_CMD+0x18
|
14
14
|
IOCTL_SET_SEND_MODE= IOCTL_CMD+0x19
|
15
|
+
IOCTL_SET_AES= IOCTL_CMD+0x1a
|
15
16
|
IOCTL_PARAM= 0x1000
|
16
17
|
IOCTL_GET_CH= IOCTL_PARAM+0x02
|
17
18
|
IOCTL_SET_CH= IOCTL_PARAM+0x03
|
@@ -21,24 +22,22 @@ class LazGem::Device
|
|
21
22
|
IOCTL_SET_BPS= IOCTL_PARAM+0x07
|
22
23
|
IOCTL_GET_MY_PANID= IOCTL_PARAM+0x08
|
23
24
|
IOCTL_SET_MY_PANID= IOCTL_PARAM+0x09
|
24
|
-
|
25
|
-
|
25
|
+
IOCTL_GET_DST_PANID= IOCTL_PARAM+0x0a
|
26
|
+
IOCTL_SET_DST_PANID= IOCTL_PARAM+0x0b
|
26
27
|
IOCTL_GET_MY_ADDR0= IOCTL_PARAM+0x0c
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
IOCTL_GET_TX_ADDR3= IOCTL_PARAM+0x1a
|
41
|
-
IOCTL_SET_TX_ADDR3= IOCTL_PARAM+0x1b
|
28
|
+
IOCTL_GET_MY_ADDR1= IOCTL_PARAM+0x0d
|
29
|
+
IOCTL_GET_MY_ADDR2= IOCTL_PARAM+0x0e
|
30
|
+
IOCTL_GET_MY_ADDR3= IOCTL_PARAM+0x0f
|
31
|
+
IOCTL_SET_MY_SHORT_ADDR=IOCTL_PARAM+0x10
|
32
|
+
IOCTL_GET_MY_SHORT_ADDR=IOCTL_PARAM+0x11
|
33
|
+
IOCTL_GET_DST_ADDR0= IOCTL_PARAM+0x14
|
34
|
+
IOCTL_SET_DST_ADDR0= IOCTL_PARAM+0x15
|
35
|
+
IOCTL_GET_DST_ADDR1= IOCTL_PARAM+0x16
|
36
|
+
IOCTL_SET_DST_ADDR1= IOCTL_PARAM+0x17
|
37
|
+
IOCTL_GET_DST_ADDR2= IOCTL_PARAM+0x18
|
38
|
+
IOCTL_SET_DST_ADDR2= IOCTL_PARAM+0x19
|
39
|
+
IOCTL_GET_DST_ADDR3= IOCTL_PARAM+0x1a
|
40
|
+
IOCTL_SET_DST_ADDR3= IOCTL_PARAM+0x1b
|
42
41
|
IOCTL_GET_ADDR_TYPE= IOCTL_PARAM+0x1c
|
43
42
|
IOCTL_SET_ADDR_TYPE= IOCTL_PARAM+0x1d
|
44
43
|
IOCTL_GET_ADDR_SIZE= IOCTL_PARAM+0x1e
|
@@ -59,6 +58,9 @@ class LazGem::Device
|
|
59
58
|
IOCTL_GET_RX_NSEC1= IOCTL_PARAM+0x30
|
60
59
|
IOCTL_GET_RX_RSSI= IOCTL_PARAM+0x32
|
61
60
|
IOCTL_GET_TX_RSSI= IOCTL_PARAM+0x34
|
61
|
+
IOCTL_SET_PROMISCUOUS= IOCTL_PARAM+0x35
|
62
|
+
IOCTL_SET_ACK_REQ= IOCTL_PARAM+0x37
|
63
|
+
IOCTL_SET_BROADCAST= IOCTL_PARAM+0x39
|
62
64
|
IOCTL_RF= 0x2000
|
63
65
|
IOCTL_RF_READ= IOCTL_RF+0x0000
|
64
66
|
IOCTL_RF_WRITE= IOCTL_RF+0x8000
|
@@ -74,8 +76,25 @@ class LazGem::Device
|
|
74
76
|
set_pwr(pwr)
|
75
77
|
return set_begin()
|
76
78
|
end
|
79
|
+
def setMyAddress(addr)
|
80
|
+
ret = @@device_wr.ioctl(IOCTL_SET_MY_SHORT_ADDR,addr)
|
81
|
+
return ret
|
82
|
+
end
|
77
83
|
def getMyAddress()
|
78
|
-
|
84
|
+
addr = 0;
|
85
|
+
ret = @@device_wr.ioctl(IOCTL_GET_MY_SHORT_ADDR,addr)
|
86
|
+
return ret
|
87
|
+
end
|
88
|
+
def getMyAddr64()
|
89
|
+
data = get_my_addr0();
|
90
|
+
addr = data << 48;
|
91
|
+
data = get_my_addr1();
|
92
|
+
addr = addr | (data << 32);
|
93
|
+
data = get_my_addr2();
|
94
|
+
addr = addr | (data << 16);
|
95
|
+
data = get_my_addr3();
|
96
|
+
addr = addr | (data << 0);
|
97
|
+
return addr;
|
79
98
|
end
|
80
99
|
def rxDisable()
|
81
100
|
rxon = 0;
|
@@ -87,6 +106,15 @@ class LazGem::Device
|
|
87
106
|
ret = @@device_wr.ioctl(IOCTL_SET_RXON,rxon)
|
88
107
|
return ret
|
89
108
|
end
|
109
|
+
def setPromiscuous(on)
|
110
|
+
ret = @@device_wr.ioctl(IOCTL_SET_PROMISCUOUS,on)
|
111
|
+
end
|
112
|
+
def setAckReq(on)
|
113
|
+
ret = @@device_wr.ioctl(IOCTL_SET_ACK_REQ,on)
|
114
|
+
end
|
115
|
+
def setBroadcastEnb(on)
|
116
|
+
ret = @@device_wr.ioctl(IOCTL_SET_BROADCAST,on)
|
117
|
+
end
|
90
118
|
def close()
|
91
119
|
data = 0
|
92
120
|
ret = @@device_wr.ioctl(IOCTL_SET_CLOSE,data)
|
@@ -139,6 +167,10 @@ class LazGem::Device
|
|
139
167
|
ret = @@device_wr.ioctl(IOCTL_SET_SEND_MODE,data)
|
140
168
|
return ret
|
141
169
|
end
|
170
|
+
def setAes(key)
|
171
|
+
ret = @@device_wr.ioctl(IOCTL_SET_AES,key)
|
172
|
+
return ret
|
173
|
+
end
|
142
174
|
|
143
175
|
def getAddrType()
|
144
176
|
ret = @@device_wr.ioctl(IOCTL_GET_SEND_MODE,0)
|
@@ -203,13 +235,13 @@ class LazGem::Device
|
|
203
235
|
ret = @@device_wr.ioctl(IOCTL_SET_MY_PANID,panid)
|
204
236
|
return ret
|
205
237
|
end
|
206
|
-
def
|
238
|
+
def get_dst_panid()
|
207
239
|
panid = 0;
|
208
|
-
ret = @@device_wr.ioctl(
|
240
|
+
ret = @@device_wr.ioctl(IOCTL_GET_DST_PANID,panid)
|
209
241
|
return ret
|
210
242
|
end
|
211
|
-
def
|
212
|
-
ret = @@device_wr.ioctl(
|
243
|
+
def set_dst_panid(panid)
|
244
|
+
ret = @@device_wr.ioctl(IOCTL_SET_DST_PANID,panid)
|
213
245
|
return ret
|
214
246
|
end
|
215
247
|
def get_my_addr0()
|
@@ -217,71 +249,55 @@ class LazGem::Device
|
|
217
249
|
ret = @@device_wr.ioctl(IOCTL_GET_MY_ADDR0,addr)
|
218
250
|
return ret
|
219
251
|
end
|
220
|
-
def set_my_addr0(addr)
|
221
|
-
ret = @@device_wr.ioctl(IOCTL_SET_MY_ADDR0,addr)
|
222
|
-
return ret
|
223
|
-
end
|
224
252
|
def get_my_addr1()
|
225
253
|
addr = 0;
|
226
254
|
ret = @@device_wr.ioctl(IOCTL_GET_MY_ADDR1,addr)
|
227
255
|
return ret
|
228
256
|
end
|
229
|
-
def set_my_addr1(addr)
|
230
|
-
ret = @@device_wr.ioctl(IOCTL_SET_MY_ADDR1,addr)
|
231
|
-
return ret
|
232
|
-
end
|
233
257
|
def get_my_addr2()
|
234
258
|
addr = 0;
|
235
259
|
ret = @@device_wr.ioctl(IOCTL_GET_MY_ADDR2,addr)
|
236
260
|
return ret
|
237
261
|
end
|
238
|
-
def set_my_addr2(addr)
|
239
|
-
ret = @@device_wr.ioctl(IOCTL_SET_MY_ADDR2,addr)
|
240
|
-
return ret
|
241
|
-
end
|
242
262
|
def get_my_addr3()
|
243
263
|
addr = 0;
|
244
264
|
ret = @@device_wr.ioctl(IOCTL_GET_MY_ADDR3,addr)
|
245
265
|
return ret
|
246
266
|
end
|
247
|
-
def
|
248
|
-
ret = @@device_wr.ioctl(IOCTL_SET_MY_ADDR3,addr)
|
249
|
-
return ret
|
250
|
-
end
|
251
|
-
def get_tx_addr0()
|
267
|
+
def get_dst_addr0()
|
252
268
|
addr = 0;
|
253
|
-
ret = @@device_wr.ioctl(
|
269
|
+
ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR0,addr)
|
254
270
|
return ret
|
255
271
|
end
|
256
|
-
def
|
257
|
-
ret = @@device_wr.ioctl(
|
272
|
+
def set_dst_addr0(addr)
|
273
|
+
ret = @@device_wr.ioctl(IOCTL_SET_DST_ADDR0,addr)
|
258
274
|
return ret
|
259
275
|
end
|
260
|
-
def
|
276
|
+
def get_dst_addr1()
|
261
277
|
addr = 0;
|
262
|
-
ret = @@device_wr.ioctl(
|
278
|
+
ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR1,addr)
|
263
279
|
return ret
|
264
280
|
end
|
265
|
-
def
|
266
|
-
ret = @@device_wr.ioctl(
|
281
|
+
def set_dst_addr1(addr)
|
282
|
+
ret = @@device_wr.ioctl(IOCTL_SET_DST_ADDR1,addr)
|
267
283
|
return ret
|
268
284
|
end
|
269
|
-
def
|
285
|
+
def get_dst_addr2()
|
270
286
|
addr = 0;
|
271
|
-
ret = @@device_wr.ioctl(
|
287
|
+
ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR2,addr)
|
272
288
|
return ret
|
273
289
|
end
|
274
|
-
def
|
275
|
-
ret = @@device_wr.ioctl(
|
290
|
+
def set_dst_addr2(addr)
|
291
|
+
ret = @@device_wr.ioctl(IOCTL_SET_DST_ADDR2,addr)
|
276
292
|
return ret
|
277
293
|
end
|
278
|
-
def
|
294
|
+
def get_dst_addr3()
|
279
295
|
addr = 0;
|
280
|
-
ret = @@device_wr.ioctl(
|
296
|
+
ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR3,addr)
|
281
297
|
return ret
|
282
298
|
end
|
283
|
-
def
|
284
|
-
ret = @@device_wr.ioctl(
|
299
|
+
def set_dst_addr3(addr)
|
300
|
+
ret = @@device_wr.ioctl(IOCTL_SET_DST_ADDR3,addr)
|
285
301
|
return ret
|
286
302
|
end
|
287
303
|
def get_addr_type()
|
data/lib/LazGem/version.rb
CHANGED
@@ -0,0 +1,71 @@
|
|
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
|
+
exit 0
|
21
|
+
end
|
22
|
+
|
23
|
+
# open device deriver
|
24
|
+
laz.init()
|
25
|
+
|
26
|
+
dst_addr = 0xffff
|
27
|
+
ch = 36
|
28
|
+
panid = 0xabcd
|
29
|
+
baud = 100
|
30
|
+
pwr = 20
|
31
|
+
|
32
|
+
if ARGV.size > 0
|
33
|
+
ch=Integer(ARGV[0])
|
34
|
+
end
|
35
|
+
if ARGV.size > 1
|
36
|
+
panid = Integer(ARGV[1])
|
37
|
+
end
|
38
|
+
if ARGV.size > 2
|
39
|
+
baud = Integer(ARGV[2])
|
40
|
+
end
|
41
|
+
if ARGV.size > 3
|
42
|
+
pwr = Integer(ARGV[3])
|
43
|
+
end
|
44
|
+
|
45
|
+
print(sprintf("myAddress=0x%016x\n",laz.getMyAddr64()))
|
46
|
+
print(sprintf("myAddress=0x%04x\n",laz.getMyAddress()))
|
47
|
+
print(sprintf("ch=%d, panid = %04x, baud= %d, pwr=%d\n",ch,panid,baud,pwr))
|
48
|
+
laz.begin(ch,panid,baud,pwr)
|
49
|
+
laz.setPromiscuous(true)
|
50
|
+
laz.rxEnable()
|
51
|
+
|
52
|
+
# printing header of receiving log
|
53
|
+
print(sprintf("time\t\t\t\t\t[ns]\trxPanid\trxAddr\ttxAddr\trssi\tpayload\n"))
|
54
|
+
print(sprintf("------------------------------------------------------------------------------------------\n"))
|
55
|
+
|
56
|
+
# main routine
|
57
|
+
while finish_flag == 0 do
|
58
|
+
if laz.available() <= 0
|
59
|
+
next
|
60
|
+
end
|
61
|
+
rcv = laz.read()
|
62
|
+
# printing data
|
63
|
+
p rcv
|
64
|
+
end
|
65
|
+
laz.rxDisable()
|
66
|
+
laz.setPromiscuous(false)
|
67
|
+
|
68
|
+
# finishing process
|
69
|
+
laz.remove()
|
70
|
+
|
71
|
+
|
data/sample/sample_rx.rb
CHANGED
@@ -12,23 +12,45 @@ finish_flag=0
|
|
12
12
|
Signal.trap(:INT){
|
13
13
|
finish_flag=1
|
14
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
|
+
exit 0
|
21
|
+
end
|
22
|
+
|
15
23
|
# open device deriver
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
|
25
|
+
dst_addr = 0xffff
|
26
|
+
ch = 36
|
27
|
+
panid = 0xabcd
|
28
|
+
baud = 100
|
29
|
+
pwr = 20
|
30
|
+
|
31
|
+
if ARGV.size > 0
|
32
|
+
ch=Integer(ARGV[0])
|
33
|
+
end
|
34
|
+
if ARGV.size > 1
|
35
|
+
panid = Integer(ARGV[1])
|
36
|
+
end
|
37
|
+
if ARGV.size > 2
|
38
|
+
baud = Integer(ARGV[2])
|
39
|
+
end
|
40
|
+
if ARGV.size > 3
|
41
|
+
pwr = Integer(ARGV[3])
|
42
|
+
end
|
43
|
+
|
25
44
|
laz.init()
|
26
|
-
|
45
|
+
|
46
|
+
print(sprintf("myAddress=0x%016x\n",laz.getMyAddr64()))
|
27
47
|
print(sprintf("myAddress=0x%04x\n",laz.getMyAddress()))
|
48
|
+
|
49
|
+
laz.begin(ch,panid,baud,pwr)
|
28
50
|
laz.rxEnable()
|
29
51
|
|
30
52
|
# printing header of receiving log
|
31
|
-
print(sprintf("time\t\t\t\trxPanid\trxAddr\ttxAddr\trssi\tpayload\n"))
|
53
|
+
print(sprintf("time\t\t\t\t\t[ns]\trxPanid\trxAddr\ttxAddr\trssi\tpayload\n"))
|
32
54
|
print(sprintf("------------------------------------------------------------------------------------------\n"))
|
33
55
|
|
34
56
|
# main routine
|
@@ -38,8 +60,7 @@ while finish_flag == 0 do
|
|
38
60
|
end
|
39
61
|
rcv = laz.read()
|
40
62
|
# printing data
|
41
|
-
|
42
|
-
print(sprintf("rx_time= %s\trx_nsec=%d\trssi=%d %s\n",Time.at(rcv["sec"]),rcv["nsec"],rcv["rssi"],rcv["payload"]));
|
63
|
+
p rcv
|
43
64
|
end
|
44
65
|
|
45
66
|
# finishing process
|
data/sample/sample_tx.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
# Function:
|
4
4
|
# Lazurite Sub-GHz/Lazurite Pi Gateway Sample program
|
5
5
|
# SerialMonitor.rb
|
6
|
+
#require 'LazGem'
|
6
7
|
require 'LazGem'
|
7
8
|
|
8
9
|
laz = LazGem::Device.new
|
@@ -12,40 +13,56 @@ finish_flag=0
|
|
12
13
|
Signal.trap(:INT){
|
13
14
|
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_tx.rb ch panid dst_short_addr baud pwr\n")
|
20
|
+
exit 0
|
21
|
+
end
|
22
|
+
|
15
23
|
# open device deriver
|
16
|
-
#
|
17
|
-
# LAZURITE.open(ch=36,panid=0xabcd,pwr=20,rate=100),mode=2)
|
18
|
-
# parameter
|
19
|
-
# ch: frequency 24-61. 36 is in default
|
20
|
-
# panid: pan id
|
21
|
-
# pwr: tx power
|
22
|
-
# rate: bit rate 50 or 100
|
23
|
-
# pwr: tx power 1 or 20
|
24
|
-
# mode: must be 2
|
25
24
|
laz.init()
|
26
|
-
|
25
|
+
|
26
|
+
dst_short_addr = 0x6670
|
27
|
+
ch = 36
|
28
|
+
panid = 0xabcd
|
29
|
+
baud = 100
|
30
|
+
pwr = 20
|
31
|
+
|
32
|
+
if ARGV.size > 0
|
33
|
+
ch=Integer(ARGV[0])
|
34
|
+
end
|
35
|
+
if ARGV.size > 1
|
36
|
+
panid = Integer(ARGV[1])
|
37
|
+
end
|
38
|
+
if ARGV.size > 2
|
39
|
+
dst_short_addr = Integer(ARGV[2])
|
40
|
+
end
|
41
|
+
if ARGV.size > 3
|
42
|
+
baud = Integer(ARGV[3])
|
43
|
+
end
|
44
|
+
if ARGV.size > 4
|
45
|
+
pwr = Integer(ARGV[4])
|
46
|
+
end
|
47
|
+
|
27
48
|
i = 0
|
28
49
|
# main routine
|
29
50
|
while finish_flag == 0 do
|
30
51
|
begin
|
31
|
-
laz.begin(
|
52
|
+
laz.begin(ch,panid,baud,pwr)
|
32
53
|
rescue Exception => e
|
33
54
|
p "file io error!! reset driver"
|
34
55
|
laz.remove()
|
35
56
|
laz.init()
|
36
57
|
end
|
37
58
|
begin
|
38
|
-
|
39
|
-
p payload
|
40
|
-
laz.send(0xabcd,0x5fba,payload)
|
41
|
-
p laz.get_tx_rssi()
|
42
|
-
laz.close()
|
59
|
+
laz.send(panid,dst_short_addr,"LAPIS Lazurite RF system")
|
43
60
|
rescue Exception => e
|
44
|
-
|
45
|
-
|
61
|
+
p e
|
62
|
+
sleep 1
|
46
63
|
end
|
64
|
+
laz.close()
|
47
65
|
sleep 1.000
|
48
|
-
i = i + 1
|
49
66
|
end
|
50
67
|
|
51
68
|
# finishing process
|
@@ -0,0 +1,71 @@
|
|
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
|
+
require 'LazGem'
|
8
|
+
|
9
|
+
laz = LazGem::Device.new
|
10
|
+
|
11
|
+
# Halt process when CTRL+C is pushed.
|
12
|
+
finish_flag=0
|
13
|
+
Signal.trap(:INT){
|
14
|
+
finish_flag=1
|
15
|
+
}
|
16
|
+
if ARGV.size < 1
|
17
|
+
printf("please input argument of ch at least 1\n")
|
18
|
+
printf("command format is shown below...\n")
|
19
|
+
printf("./sample_tx.rb ch panid ieee_addr baud pwr\n")
|
20
|
+
exit 0
|
21
|
+
end
|
22
|
+
|
23
|
+
# open device deriver
|
24
|
+
laz.init()
|
25
|
+
|
26
|
+
ieee_addr = 0x001D129000045F6B
|
27
|
+
ch = 36
|
28
|
+
panid = 0xabcd
|
29
|
+
baud = 100
|
30
|
+
pwr = 20
|
31
|
+
|
32
|
+
if ARGV.size > 0
|
33
|
+
ch=Integer(ARGV[0])
|
34
|
+
end
|
35
|
+
if ARGV.size > 1
|
36
|
+
panid = Integer(ARGV[1])
|
37
|
+
end
|
38
|
+
if ARGV.size > 2
|
39
|
+
ieee_addr = Integer(ARGV[2])
|
40
|
+
end
|
41
|
+
if ARGV.size > 3
|
42
|
+
baud = Integer(ARGV[3])
|
43
|
+
end
|
44
|
+
if ARGV.size > 4
|
45
|
+
pwr = Integer(ARGV[4])
|
46
|
+
end
|
47
|
+
|
48
|
+
i = 0
|
49
|
+
# main routine
|
50
|
+
while finish_flag == 0 do
|
51
|
+
begin
|
52
|
+
laz.begin(ch,panid,baud,pwr)
|
53
|
+
rescue Exception => e
|
54
|
+
p "file io error!! reset driver"
|
55
|
+
laz.remove()
|
56
|
+
laz.init()
|
57
|
+
end
|
58
|
+
begin
|
59
|
+
laz.send64(ieee_addr,"LAPIS Lazurite RF system")
|
60
|
+
rescue Exception => e
|
61
|
+
p e
|
62
|
+
sleep 1
|
63
|
+
end
|
64
|
+
laz.close()
|
65
|
+
sleep 1.000
|
66
|
+
end
|
67
|
+
|
68
|
+
# finishing process
|
69
|
+
laz.remove()
|
70
|
+
|
71
|
+
|
data/sample/tags
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
|
2
|
+
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
|
3
|
+
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
|
4
|
+
!_TAG_PROGRAM_NAME Exuberant Ctags //
|
5
|
+
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
|
6
|
+
!_TAG_PROGRAM_VERSION 5.9~svn20110310 //
|
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.0
|
4
|
+
version: 0.1.0
|
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:
|
12
|
+
date: 2017-05-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -76,8 +76,11 @@ files:
|
|
76
76
|
- lib/LazGem/ioctl.rb
|
77
77
|
- lib/LazGem/version.rb
|
78
78
|
- release.log
|
79
|
+
- sample/sample_promiscuous.rb
|
79
80
|
- sample/sample_rx.rb
|
80
81
|
- sample/sample_tx.rb
|
82
|
+
- sample/sample_tx64.rb
|
83
|
+
- sample/tags
|
81
84
|
homepage: https://github.com/LAPIS-Lazurite/LazGem
|
82
85
|
licenses:
|
83
86
|
- MIT
|