RbGps 0.1 → 0.2
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.
- data/rb_gps.c +42 -1
- data/test.rb +18 -2
- metadata +3 -3
data/rb_gps.c
CHANGED
@@ -33,7 +33,14 @@ struct _symbols {
|
|
33
33
|
VALUE fix_longitude;
|
34
34
|
VALUE fix_altitude;
|
35
35
|
VALUE fix_speed;
|
36
|
-
|
36
|
+
VALUE fix_heading;
|
37
|
+
VALUE fix_climb;
|
38
|
+
|
39
|
+
VALUE sat_prn;
|
40
|
+
VALUE sat_elevation;
|
41
|
+
VALUE sat_azimuth;
|
42
|
+
VALUE sat_ss;
|
43
|
+
VALUE sat_used;
|
37
44
|
};
|
38
45
|
|
39
46
|
static struct _symbols symbolTable;
|
@@ -159,15 +166,19 @@ static VALUE rbGps_get_fix(VALUE self) {
|
|
159
166
|
if (fix->mode==MODE_2D || fix->mode==MODE_3D) {
|
160
167
|
rb_hash_aset(ret,symbolTable.fix_latitude,rb_float_new(fix->latitude));
|
161
168
|
rb_hash_aset(ret,symbolTable.fix_longitude,rb_float_new(fix->longitude));
|
169
|
+
rb_hash_aset(ret,symbolTable.fix_heading,rb_float_new(fix->track));
|
162
170
|
} else {
|
163
171
|
rb_hash_aset(ret,symbolTable.fix_latitude,Qnil);
|
164
172
|
rb_hash_aset(ret,symbolTable.fix_longitude,Qnil);
|
173
|
+
rb_hash_aset(ret,symbolTable.fix_heading,Qnil);
|
165
174
|
}
|
166
175
|
|
167
176
|
if (fix->mode==MODE_3D) {
|
168
177
|
rb_hash_aset(ret,symbolTable.fix_altitude,rb_float_new(fix->altitude));
|
178
|
+
rb_hash_aset(ret,symbolTable.fix_climb,rb_float_new(fix->climb));
|
169
179
|
} else {
|
170
180
|
rb_hash_aset(ret,symbolTable.fix_altitude,Qnil);
|
181
|
+
rb_hash_aset(ret,symbolTable.fix_climb,Qnil);
|
171
182
|
}
|
172
183
|
rb_hash_aset(ret,symbolTable.fix_speed,rb_float_new(fix->speed));
|
173
184
|
|
@@ -175,6 +186,26 @@ static VALUE rbGps_get_fix(VALUE self) {
|
|
175
186
|
}
|
176
187
|
|
177
188
|
|
189
|
+
static VALUE rbGps_get_sat(VALUE self) {
|
190
|
+
rb_Gps_cls *obj=0;
|
191
|
+
Data_Get_Struct(self, rb_Gps_cls, obj);
|
192
|
+
struct gps_data_t *data=obj->gps_data;
|
193
|
+
if (!obj->gps_data)
|
194
|
+
eturn Qnil;
|
195
|
+
|
196
|
+
VALUE ret=rb_ary_new();
|
197
|
+
int sat=0;
|
198
|
+
for (sat=0;sat<data->satellites;sat++) {
|
199
|
+
VALUE sat_elem=rb_hash_new();
|
200
|
+
rb_hash_aset(sat_elem,symbolTable.sat_prn,INT2NUM(data->PRN[sat]));
|
201
|
+
rb_hash_aset(sat_elem,symbolTable.sat_elevation,INT2NUM(data->elevation[sat]));
|
202
|
+
rb_hash_aset(sat_elem,symbolTable.sat_azimuth,INT2NUM(data->azimuth[sat]));
|
203
|
+
rb_hash_aset(sat_elem,symbolTable.sat_ss,INT2NUM(data->ss[sat]));
|
204
|
+
rb_hash_aset(sat_elem,symbolTable.sat_used,data->used[sat]?Qtrue:Qfalse);
|
205
|
+
rb_ary_push(ret,sat_elem);
|
206
|
+
}
|
207
|
+
return ret;
|
208
|
+
}
|
178
209
|
|
179
210
|
static void fill_symbol_table() {
|
180
211
|
symbolTable.online=ID2SYM(rb_intern("online"));
|
@@ -196,6 +227,15 @@ static void fill_symbol_table() {
|
|
196
227
|
symbolTable.fix_longitude=ID2SYM(rb_intern("longitude"));
|
197
228
|
symbolTable.fix_altitude=ID2SYM(rb_intern("altitude"));
|
198
229
|
symbolTable.fix_speed=ID2SYM(rb_intern("speed"));
|
230
|
+
symbolTable.fix_heading=ID2SYM(rb_intern("heading"));
|
231
|
+
symbolTable.fix_climb=ID2SYM(rb_intern("climb"));
|
232
|
+
|
233
|
+
symbolTable.sat_prn=ID2SYM(rb_intern("PRN"));
|
234
|
+
symbolTable.sat_elevation=ID2SYM(rb_intern("elevation"));
|
235
|
+
symbolTable.sat_azimuth=ID2SYM(rb_intern("azimuth"));
|
236
|
+
symbolTable.sat_ss=ID2SYM(rb_intern("ss"));
|
237
|
+
symbolTable.sat_used=ID2SYM(rb_intern("used"));
|
238
|
+
|
199
239
|
|
200
240
|
}
|
201
241
|
|
@@ -211,6 +251,7 @@ void Init_RbGps() {
|
|
211
251
|
rb_define_method(cRbGps, "poll" , rbGps_poll , 0);
|
212
252
|
rb_define_method(cRbGps, "get" , rbGps_get , 0);
|
213
253
|
rb_define_method(cRbGps, "get_fix" , rbGps_get_fix , 0);
|
254
|
+
rb_define_method(cRbGps, "get_sat" , rbGps_get_sat , 0);
|
214
255
|
rb_define_method(cRbGps, "query" , rbGps_query , 1);
|
215
256
|
|
216
257
|
}
|
data/test.rb
CHANGED
@@ -1,9 +1,25 @@
|
|
1
1
|
require 'RbGps'
|
2
2
|
require 'yaml'
|
3
3
|
|
4
|
+
def dump_sats(sats)
|
5
|
+
count=0
|
6
|
+
sats.each do |sat|
|
7
|
+
count=count+1
|
8
|
+
line=sat.keys.collect { |key| "#{key} #{sat[key]}" }
|
9
|
+
puts "#{count} "+line.join(' ')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def dump_fix(fix)
|
14
|
+
line=fix.keys.collect { |key| "#{key} #{fix[key]}" }
|
15
|
+
puts line.join(' ')
|
16
|
+
end
|
17
|
+
|
18
|
+
|
4
19
|
gps=RbGps.new('localhost','2947')
|
5
20
|
|
6
21
|
gps.query("w+x\n")
|
22
|
+
|
7
23
|
puts "begin loop"
|
8
24
|
loop do
|
9
25
|
gps.query("O=?")
|
@@ -12,8 +28,8 @@ loop do
|
|
12
28
|
puts "get"
|
13
29
|
res=gps.get
|
14
30
|
puts res.to_yaml
|
15
|
-
|
16
|
-
puts fix.to_yaml
|
31
|
+
dump_fix(gps.get_fix)
|
17
32
|
puts "next"
|
33
|
+
dump_sats(gps.get_sat)
|
18
34
|
sleep 1
|
19
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RbGps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "0.
|
4
|
+
version: "0.2"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jurgen Van Ham
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-02-
|
12
|
+
date: 2009-02-22 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -23,8 +23,8 @@ extra_rdoc_files: []
|
|
23
23
|
|
24
24
|
files:
|
25
25
|
- ./rb_gps.c
|
26
|
-
- ./extconf.rb
|
27
26
|
- ./test.rb
|
27
|
+
- ./extconf.rb
|
28
28
|
has_rdoc: false
|
29
29
|
homepage: http://gpsd.berlios.de/
|
30
30
|
post_install_message:
|