X-Git-Url: https://git.toastfreeware.priv.at/gregoa/zavai.git/blobdiff_plain/ec503392ddba6000fac8ac18dea94a0e2ba860c1..43677c8ab39c540121af5fdfaecf14ff2275556c:/src/gps.vala diff --git a/src/gps.vala b/src/gps.vala index 17e7642..64037ce 100644 --- a/src/gps.vala +++ b/src/gps.vala @@ -52,42 +52,39 @@ public class GPS: zavai.ScriptService protected bool on_input_data(IOChannel source, IOCondition condition) { - while (libgps.waiting(ref data)) + int res = libgps.poll(ref data); + if (res != 0) + zavai.log.error(libgps.errstr(res)); + + if (data.status != old_fix_status) + { + fix_status_changed(data.status); + old_fix_status = data.status; + } + + uint cur_time = (uint)data.fix.time; + if (data.status != libgps.STATUS_NO_FIX && old_time != cur_time) + { + time_changed(cur_time); + old_time = cur_time; + } + + double lat = (data.status == libgps.STATUS_NO_FIX ? 1000 : data.fix.latitude); + double lon = (data.status == libgps.STATUS_NO_FIX ? 1000 : data.fix.longitude); + if (lat != old_lat || lon != old_lon) + pos_changed(); + + /* + stderr.printf("GPSMSG %d %d\n", (int)data.set, data.status); + stderr.printf("SATUSED %d\n", data.satellites_used); + stderr.printf("SWT %f\n", data.skyview_time); + stderr.printf("SATVIS %d\n", data.satellites_visible); + for (int i = 0; i < data.satellites_visible; ++i) { - int res = libgps.poll(ref data); - if (res != 0) - zavai.log.error(libgps.errstr(res)); - - if (data.status != old_fix_status) - { - fix_status_changed(data.status); - old_fix_status = data.status; - } - - uint cur_time = (uint)data.fix.time; - if (data.status != libgps.STATUS_NO_FIX && old_time != cur_time) - { - time_changed(cur_time); - old_time = cur_time; - } - - double lat = (data.status == libgps.STATUS_NO_FIX ? 1000 : data.fix.latitude); - double lon = (data.status == libgps.STATUS_NO_FIX ? 1000 : data.fix.longitude); - if (lat != old_lat || lon != old_lon) - pos_changed(); - - /* - stderr.printf("GPSMSG %d %d\n", (int)data.set, data.status); - stderr.printf("SATUSED %d\n", data.satellites_used); - stderr.printf("SWT %f\n", data.skyview_time); - stderr.printf("SATVIS %d\n", data.satellites_visible); - for (int i = 0; i < data.satellites_visible; ++i) - { - stderr.printf("PRN %d ELE %d AZI %d SS %f\n", - data.PRN[i], data.elevation[i], data.azimuth[i], data.ss[i]); - } - */ + stderr.printf("PRN %d ELE %d AZI %d SS %f\n", + data.PRN[i], data.elevation[i], data.azimuth[i], data.ss[i]); } + */ return true; }