LazGem 0.0.8 → 0.1.0
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 +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
|