LazGem 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7a8d7dac05ffcb6c0bf725000a26eaf203f6359
4
- data.tar.gz: 1b0ef77cc92e7f31995676a9f0d485ded976f998
3
+ metadata.gz: 9a6b7695ed6a72efd75da15ce2dcfe395c254330
4
+ data.tar.gz: fa335a47e4699024c185f6b3c3ab7c6323a44896
5
5
  SHA512:
6
- metadata.gz: 93c879be719de4f2fdfbda59ce9a740dd6c2153f1ab60d94473f5cc124d3ce14291dc979d1e47a245ed84f5fe7168be3a591c71393e05a102e097b3eb20a452a
7
- data.tar.gz: 448b5ea510c8f318920fc97859108ddb969d5ee1bde3dd5a99ad3646d04511fc101a4f6bbe51a0f3d58a3fd5af00440e2496d368037bf56cba3c24a6f3315bd6
6
+ metadata.gz: ac308c0aefe25db25a77b6a7f9a3b8024d64eeb5ecc2d5d1f886bbbe7c47a4d3caf2dda360e568d5a5e20b788448881182cb28a9fc3e47a8cb6e587213dab91f
7
+ data.tar.gz: 0aaff4a10e5ecb6fb0e2fddd76aaefbba680c61b0ca5d66ada18bdcf69626136c4c63e4de1b7d19c4e272261f89e5bf8d808af9fdd85d86e0794f3e3c7ded69f
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  tags
11
+ tags.lock
data/lib/LazGem/device.rb CHANGED
@@ -73,6 +73,148 @@ class LazGem::Device
73
73
  return size
74
74
  end
75
75
 
76
+ def readBin()
77
+ size = 2
78
+ len = @@device_rd.read(size)
79
+ if ((len == "") || (len == nil)) then # read result is empty
80
+ return 0
81
+ end
82
+ size = len.unpack("S*")[0]
83
+
84
+ # The received data is read
85
+ raw = @@device_rd.read(size)
86
+ if ((raw == "") || (raw == nil)) then # read result is empty
87
+ return -1
88
+ end
89
+
90
+ len = raw.length
91
+ header = raw.unpack("S*")[0]
92
+
93
+ dst_addr_type = (header>>14) & 0x03
94
+ frame_ver = (header >> 12) & 0x03
95
+ src_addr_type = (header >> 10) & 0x03
96
+ ielist = (header >> 9) & 0x01
97
+ seq_comp = (header >> 8) & 0x01
98
+ panid_comp = (header >> 6) & 0x01
99
+ ack_req = (header >> 5) & 0x01
100
+ pending = (header >> 4) & 0x01
101
+ sec_enb = (header >> 3) & 0x01
102
+ frame_type = (header >> 0) & 0x07
103
+
104
+ offset = 2
105
+
106
+ if seq_comp == 0 then
107
+ seq_num = raw[offset..offset+1].unpack("C")[0]
108
+ offset = offset + 1
109
+ end
110
+
111
+ if dst_addr_type == 0 && src_addr_type == 0 && panid_comp == 0 then
112
+ addr_type = 0
113
+ dst_panid = nil
114
+ src_panid = nil
115
+ elsif dst_addr_type == 0 && src_addr_type == 0 && panid_comp != 0 then
116
+ addr_type = 1
117
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
118
+ offset = offset + 2
119
+ dst_panid = nil
120
+ elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp == 0 then
121
+ addr_type = 2
122
+ dst_panid = nil
123
+ src_panid = raw[offset..offset+2].unpack("S*")[0]
124
+ offset = offset + 2
125
+ elsif dst_addr_type == 0 && src_addr_type != 0 && panid_comp != 0 then
126
+ addr_type = 3
127
+ dst_panid = nil
128
+ src_panid = nil
129
+ elsif dst_addr_type != 0 && src_addr_type == 0 && panid_comp == 0 then
130
+ addr_type = 4
131
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
132
+ offset = offset + 2
133
+ src_panid = nil
134
+ elsif dst_addr_type != 0 && src_addr_type == 0 && panid_comp != 0 then
135
+ addr_type = 5
136
+ dst_panid = nil
137
+ src_panid = nil
138
+ elsif dst_addr_type != 0 && src_addr_type != 0 && panid_comp == 0 then
139
+ addr_type = 6
140
+ dst_panid = raw[offset..offset+2].unpack("S*")[0]
141
+ offset = offset + 2
142
+ src_panid = nil
143
+ elsif dst_addr_type != 0 && src_addr_type != 0 && panid_comp != 0 then
144
+ addr_type = 7
145
+ dst_panid = nil
146
+ src_panid = nil
147
+ end
148
+
149
+ if dst_addr_type == 0 then
150
+ dst_addr = nil
151
+ elsif dst_addr_type == 1 then
152
+ dst_addr = raw[offset].unpack("C")[0]
153
+ offset = offset+1
154
+ elsif dst_addr_type == 2 then
155
+ dst_addr = raw[offset..offset+1].unpack("S*")[0]
156
+ offset = offset+2
157
+ else
158
+ dst_addr = raw[offset+7].unpack("H2")[0] +
159
+ raw[offset+6].unpack("H2")[0] +
160
+ raw[offset+5].unpack("H2")[0] +
161
+ raw[offset+4].unpack("H2")[0] +
162
+ raw[offset+3].unpack("H2")[0] +
163
+ raw[offset+2].unpack("H2")[0] +
164
+ raw[offset+1].unpack("H2")[0] +
165
+ raw[offset+0].unpack("H2")[0]
166
+ offset = offset+8
167
+ end
168
+
169
+ if src_addr_type == 0 then
170
+ src_addr = nil
171
+ elsif src_addr_type == 1 then
172
+ src_addr = raw[offset].unpack("C")[0]
173
+ offset = offset+1
174
+ elsif src_addr_type == 2 then
175
+ src_addr = raw[offset..offset+1].unpack("S")[0]
176
+ offset = offset+2
177
+ else
178
+ src_addr = raw[offset+7].unpack("H2")[0] +
179
+ raw[offset+6].unpack("H2")[0] +
180
+ raw[offset+5].unpack("H2")[0] +
181
+ raw[offset+4].unpack("H2")[0] +
182
+ raw[offset+3].unpack("H2")[0] +
183
+ raw[offset+2].unpack("H2")[0] +
184
+ raw[offset+1].unpack("H2")[0] +
185
+ raw[offset+0].unpack("H2")[0]
186
+ offset = offset+8
187
+ end
188
+
189
+ payload = raw[offset..len-1]
190
+
191
+ rcv = Hash.new()
192
+
193
+ rcv["header"] = header
194
+ rcv["dst_addr_type"] = dst_addr_type
195
+ rcv["frame_ver"] = frame_ver
196
+ rcv["src_addr_type"] = src_addr_type
197
+ rcv["ielist"] = ielist
198
+ rcv["seq_comp"] = seq_comp
199
+ rcv["panid_comp"] = panid_comp
200
+ rcv["ack_req"] = ack_req
201
+ rcv["pending"] = pending
202
+ rcv["sec_enb"] = sec_enb
203
+ rcv["frame_type"] = frame_type
204
+ rcv["addr_type"] = addr_type
205
+ rcv["dst_panid"] = dst_panid
206
+ rcv["src_panid"] = src_panid
207
+ rcv["dst_addr"] = dst_addr
208
+ rcv["src_addr"] = src_addr
209
+ rcv["seq_num"] = seq_num
210
+ rcv["payload"] = payload
211
+ sec,nsec = get_rx_time()
212
+ rcv["sec"]=sec
213
+ rcv["nsec"]=nsec
214
+ rcv["rssi"]=get_rx_rssi()
215
+ return rcv
216
+ end
217
+
76
218
  def read()
77
219
  size = 2
78
220
  len = @@device_rd.read(size)
@@ -212,8 +354,7 @@ class LazGem::Device
212
354
  rcv["sec"]=sec
213
355
  rcv["nsec"]=nsec
214
356
  rcv["rssi"]=get_rx_rssi()
215
-
216
- return rcv
357
+ return rcv
217
358
  end
218
359
  def send64(addr,payload)
219
360
  set_dst_addr0((addr >> 0)&0x000000000000ffff)
@@ -1,3 +1,3 @@
1
1
  module LazGem
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,74 @@
1
+ #! /usr/bin/ruby
2
+ # -*- coding: utf-8; mode: ruby -*-
3
+ # Function:
4
+ # Lazurite Sub-GHz/Lazurite Pi Gateway Sample program
5
+ # SerialMonitor.rb
6
+ require 'LazGem'
7
+
8
+ laz = LazGem::Device.new
9
+
10
+ # Halt process when CTRL+C is pushed.
11
+ finish_flag=0
12
+ Signal.trap(:INT){
13
+ finish_flag=1
14
+ }
15
+
16
+ if ARGV.size == 0
17
+ printf("please input argument of ch at least\n")
18
+ printf("command format is shown below...\n")
19
+ printf("./sample_rx.rb ch panid baud pwr\n")
20
+ printf(" ch: 24-61\n")
21
+ printf(" panid: 0-0xffff\n")
22
+ printf(" baud: 50 or 100\n")
23
+ printf(" pwr: 1 or 20\n")
24
+ exit 0
25
+ end
26
+
27
+ # open device deriver
28
+
29
+ dst_addr = 0xffff
30
+ ch = 36
31
+ panid = 0xabcd
32
+ baud = 100
33
+ pwr = 20
34
+
35
+ if ARGV.size > 0
36
+ ch=Integer(ARGV[0])
37
+ end
38
+ if ARGV.size > 1
39
+ panid = Integer(ARGV[1])
40
+ end
41
+ if ARGV.size > 2
42
+ baud = Integer(ARGV[2])
43
+ end
44
+ if ARGV.size > 3
45
+ pwr = Integer(ARGV[3])
46
+ end
47
+
48
+ laz.init()
49
+
50
+ print(sprintf("myAddress=0x%016x\n",laz.getMyAddr64()))
51
+ print(sprintf("myAddress=0x%04x\n",laz.getMyAddress()))
52
+
53
+ laz.begin(ch,panid,baud,pwr)
54
+ laz.rxEnable()
55
+
56
+ # printing header of receiving log
57
+ print(sprintf("time\t\t\t\t\t[ns]\trxPanid\trxAddr\ttxAddr\trssi\tpayload\n"))
58
+ print(sprintf("------------------------------------------------------------------------------------------\n"))
59
+
60
+ # main routine
61
+ while finish_flag == 0 do
62
+ if laz.available() <= 0
63
+ sleep 0.01
64
+ next
65
+ end
66
+ rcv = laz.readBin()
67
+ # printing data
68
+ p rcv
69
+ end
70
+
71
+ # finishing process
72
+ laz.remove()
73
+
74
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: LazGem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - NaotakaSaito
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-08-18 00:00:00.000000000 Z
12
+ date: 2017-09-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -78,6 +78,7 @@ files:
78
78
  - release.log
79
79
  - sample/sample_promiscuous.rb
80
80
  - sample/sample_rx.rb
81
+ - sample/sample_rxBin.rb
81
82
  - sample/sample_tx.rb
82
83
  - sample/sample_tx64.rb
83
84
  - sample/tags
@@ -101,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
102
  version: '0'
102
103
  requirements: []
103
104
  rubyforge_project:
104
- rubygems_version: 2.2.2
105
+ rubygems_version: 2.5.2
105
106
  signing_key:
106
107
  specification_version: 4
107
108
  summary: Lazurite ruby gem