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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3656381c62a56251075c9f8a2100fa659d9f9df
4
- data.tar.gz: b166421e3ca0a2f91d03873e18958bf13331ba1e
3
+ metadata.gz: e0a2dbdff41f22ce85f74cde685dd75d6995077c
4
+ data.tar.gz: d24cb261ced991ed7f76894c19bda074676ee96f
5
5
  SHA512:
6
- metadata.gz: b3b0402b79744b9c2a1636aed88739311c1f07fb0c7c7a3d6b0e6b9f9e02ed255209c893aa4d396653015eff0259496bc75796c4355101f6ad1131ef080f662e
7
- data.tar.gz: 1e2a2ed8fd02d8eb2b6ac7ee0be18ae95bfa3f8569168dc8ecaa471a7aaa2637032090892434c6ec1554a0c1fbb5c50f872f698e347efdae7b1be0f62e01f2e3
6
+ metadata.gz: cf77d1003affcac84d8f759e695617a02e681d23887f07aef71cb748e39b8b406a9831a44d89f728ed75a24af4e9d58e2e1697519377f30e64fe90dff3f2f483
7
+ data.tar.gz: 95b2f285d1a555187b5edf03474cd250a6c1dfbbe907ca9fcbdfec62196f45c11f4bd7244cdfff6620ee40ccd524c93c9797674257aec72d8a79f08246a09d7a
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ tags
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
- rx_addr_type = (header>>14) & 0x03
93
+ dst_addr_type = (header>>14) & 0x03
93
94
  frame_ver = (header >> 12) & 0x03
94
- tx_addr_type = (header >> 10) & 0x03
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 rx_addr_type == 0 && tx_addr_type == 0 && panid_comp == 0 then
111
+ if dst_addr_type == 0 && src_addr_type == 0 && panid_comp == 0 then
111
112
  addr_type = 0
112
- rx_panid = nil
113
- tx_panid = nil
114
- elsif rx_addr_type == 0 && tx_addr_type == 0 && panid_comp != 0 then
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
- rx_panid = raw[offset..offset+2].unpack("S*")[0]
117
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
117
118
  offset = offset + 2
118
- tx_panid = nil
119
- elsif rx_addr_type == 0 && tx_addr_type != 0 && panid_comp == 0 then
119
+ dst_panid = nil
120
+ elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp == 0 then
120
121
  addr_type = 2
121
- rx_panid = nil
122
- tx_panid = raw[offset..offset+2].unpack("S*")[0]
122
+ dst_panid = nil
123
+ src_panid = raw[offset..offset+2].unpack("S*")[0]
123
124
  offset = offset + 2
124
- elsif rx_addr_type == 0 && tx_addr_type != 0 && panid_comp != 0 then
125
+ elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp != 0 then
125
126
  addr_type = 3
126
- rx_panid = nil
127
- tx_panid = nil
128
- elsif rx_addr_type != 0 && tx_addr_type == 0 && panid_comp == 0 then
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
- rx_panid = raw[offset..offset+2].unpack("S*")[0]
131
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
131
132
  offset = offset + 2
132
- tx_panid = nil
133
- elsif rx_addr_type != 0 && tx_addr_type == 0 && panid_comp != 0 then
133
+ src_panid = nil
134
+ elsif dst_addr_type != 0 && src_addr_type == 0 && panid_comp != 0 then
134
135
  addr_type = 5
135
- rx_panid = nil
136
- tx_panid = nil
137
- elsif rx_addr_type != 0 && tx_addr_type != 0 && panid_comp == 0 then
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
- rx_panid = raw[offset..offset+2].unpack("S*")[0]
140
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
140
141
  offset = offset + 2
141
- tx_panid = nil
142
- elsif rx_addr_type != 0 && tx_addr_type != 0 && panid_comp != 0 then
142
+ src_panid = nil
143
+ elsif dst_addr_type != 0 && src_addr_type != 0 && panid_comp != 0 then
143
144
  addr_type = 7
144
- rx_panid = nil
145
- tx_panid = nil
145
+ dst_panid = nil
146
+ src_panid = nil
146
147
  end
147
148
 
148
- if rx_addr_type == 1 then
149
- rx_addr = raw[offset..offset+1].unpack("C")[0]
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 rx_addr_type == 2 then
152
- rx_addr = raw[offset..offset+2].unpack("S*")[0]
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
- rx_addr = raw[offset..offset+8].unpack("H*")[0]
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 tx_addr_type == 1 then
160
- tx_addr = raw[offset..offset+1].unpack("C")[0]
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 tx_addr_type == 2 then
163
- tx_addr = raw[offset..offset+2].unpack("S")[0]
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
- tx_addr = raw[offset..offset+8].unpack("H*")[0]
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["rx_addr_type"] = rx_addr_type
194
+ rcv["dst_addr_type"] = dst_addr_type
176
195
  rcv["frame_ver"] = frame_ver
177
- rcv["tx_addr_type"] = tx_addr_type
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["rx_panid"] = rx_panid
187
- rcv["tx_panid"] = tx_panid
188
- rcv["rx_addr"] = rx_addr
189
- rcv["tx_addr"] = tx_addr
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
- set_tx_panid(panid)
201
- set_tx_addr0(addr)
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
- IOCTL_GET_TX_PANID= IOCTL_PARAM+0x0a
25
- IOCTL_SET_TX_PANID= IOCTL_PARAM+0x0b
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
- IOCTL_SET_MY_ADDR0= IOCTL_PARAM+0x0d
28
- IOCTL_GET_MY_ADDR1= IOCTL_PARAM+0x0e
29
- IOCTL_SET_MY_ADDR1= IOCTL_PARAM+0x0f
30
- IOCTL_GET_MY_ADDR2= IOCTL_PARAM+0x10
31
- IOCTL_SET_MY_ADDR2= IOCTL_PARAM+0x11
32
- IOCTL_GET_MY_ADDR3= IOCTL_PARAM+0x12
33
- IOCTL_SET_MY_ADDR3= IOCTL_PARAM+0x13
34
- IOCTL_GET_TX_ADDR0= IOCTL_PARAM+0x14
35
- IOCTL_SET_TX_ADDR0= IOCTL_PARAM+0x15
36
- IOCTL_GET_TX_ADDR1= IOCTL_PARAM+0x16
37
- IOCTL_SET_TX_ADDR1= IOCTL_PARAM+0x17
38
- IOCTL_GET_TX_ADDR2= IOCTL_PARAM+0x18
39
- IOCTL_SET_TX_ADDR2= IOCTL_PARAM+0x19
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
- return get_my_addr0()
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 get_tx_panid()
238
+ def get_dst_panid()
207
239
  panid = 0;
208
- ret = @@device_wr.ioctl(IOCTL_GET_TX_PANID,panid)
240
+ ret = @@device_wr.ioctl(IOCTL_GET_DST_PANID,panid)
209
241
  return ret
210
242
  end
211
- def set_tx_panid(panid)
212
- ret = @@device_wr.ioctl(IOCTL_SET_TX_PANID,panid)
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 set_my_addr3(addr)
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(IOCTL_GET_TX_ADDR0,addr)
269
+ ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR0,addr)
254
270
  return ret
255
271
  end
256
- def set_tx_addr0(addr)
257
- ret = @@device_wr.ioctl(IOCTL_SET_TX_ADDR0,addr)
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 get_tx_addr1()
276
+ def get_dst_addr1()
261
277
  addr = 0;
262
- ret = @@device_wr.ioctl(IOCTL_GET_TX_ADDR1,addr)
278
+ ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR1,addr)
263
279
  return ret
264
280
  end
265
- def set_tx_addr1(addr)
266
- ret = @@device_wr.ioctl(IOCTL_SET_TX_ADDR1,addr)
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 get_tx_addr2()
285
+ def get_dst_addr2()
270
286
  addr = 0;
271
- ret = @@device_wr.ioctl(IOCTL_GET_TX_ADDR2,addr)
287
+ ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR2,addr)
272
288
  return ret
273
289
  end
274
- def set_tx_addr2(addr)
275
- ret = @@device_wr.ioctl(IOCTL_SET_TX_ADDR2,addr)
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 get_tx_addr3()
294
+ def get_dst_addr3()
279
295
  addr = 0;
280
- ret = @@device_wr.ioctl(IOCTL_GET_TX_ADDR3,addr)
296
+ ret = @@device_wr.ioctl(IOCTL_GET_DST_ADDR3,addr)
281
297
  return ret
282
298
  end
283
- def set_tx_addr3(addr)
284
- ret = @@device_wr.ioctl(IOCTL_SET_TX_ADDR3,addr)
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()
@@ -1,3 +1,3 @@
1
1
  module LazGem
2
- VERSION = "0.0.8"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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
- # 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
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
- laz.begin(36,0xABCD,100,20)
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
- #p rcv
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
- print(sprintf("myAddress=0x%04x\n",laz.getMyAddress()))
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(36,0xABCD,100,20)
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
- payload =sprintf("hello pi gateway %d\n",i)
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
- p e
45
- sleep 1
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.8
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: 2016-09-17 00:00:00.000000000 Z
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