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 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