Class: GPS_PVT::UBX
- Inherits:
-
Object
- Object
- GPS_PVT::UBX
- Defined in:
- lib/gps_pvt/ubx.rb
Constant Summary collapse
- GNSS_ID =
{ :GPS => 0, :SBAS => 1, :Galileo => 2, :BeiDou => 3, :QZSS => 5, :GLONASS => 6, }
- SIGNAL_ID =
{ :GPS => {:L1CA => 0, :L2CL => 3, :L2CM => 4}, :SBAS => {:L1CA => 0}, :Galileo => {:E1C => 0, :E1B => 1, :E5_bI => 5, :E5_bQ => 6}, :BeiDou => {:B1I_D1 => 0, :B1I_D2 => 1, :B2I_D1 => 2, :B2I_D2 => 3}, :QZSS => {:L1CA => 0, :L2CL => 4, :L2CM => 5}, :GLONASS => {:L1OF => 0, :L2OF => 2}, }
Instance Method Summary collapse
- #each_packet(&b) ⇒ Object
-
#initialize(io) ⇒ UBX
constructor
A new instance of UBX.
- #read_packet ⇒ Object
- #read_packets ⇒ Object
Constructor Details
#initialize(io) ⇒ UBX
Returns a new instance of UBX.
34 35 36 37 |
# File 'lib/gps_pvt/ubx.rb', line 34 def initialize(io) @io = io @buf = [] end |
Instance Method Details
#each_packet(&b) ⇒ Object
99 100 101 102 103 104 105 106 |
# File 'lib/gps_pvt/ubx.rb', line 99 def each_packet(&b) res = Enumerator::new{|y| while packet = read_packet y << packet end } b ? res.each(&b) : res end |
#read_packet ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/gps_pvt/ubx.rb', line 64 def read_packet while !@io.eof? if @buf.size < 8 then @buf += @io.read(8 - @buf.size).unpack('C*') return nil if @buf.size < 8 end if @buf[0] != 0xB5 then @buf.shift next elsif @buf[1] != 0x62 then @buf = @buf[2..-1] next end len = (@buf[5] << 8) + @buf[4] if @buf.size < len + 8 then @buf += @io.read(len + 8 - @buf.size).unpack('C*') return nil if @buf.size < len + 8 end ck_a, ck_b = UBX::checksum(@buf, 2..(len + 5)) if (@buf[len + 6] != ck_a) || (@buf[len + 7] != ck_b) then @buf = @buf[2..-1] next end packet = @buf[0..(len + 7)] @buf = @buf[(len + 8)..-1] return packet end return nil end |
#read_packets ⇒ Object
108 109 110 |
# File 'lib/gps_pvt/ubx.rb', line 108 def read_packets each_packet.to_a end |