vi er her !!!

02120

DifferentielGPS
home

Klasserne til RTCM signalet

Vi har valgt, at bygge programmet op, så der er nogle fælles klasser, som håndterer informationen, som modtages. Informationen vi modtages skal kunne læses som bits, hvilket vores Bits-klasse står for. Vi har tre klasser til at håndterer GPS-dataen: GPSWord, GPSMessage og Satellite.

Bits.java

Denne klasse indeholder en række procedure, som bruges til at håndtere arrays af boolske værdier som bitstrenge. Alle metoderne er statiske og det er ikke meningen, at klassen skal instantisieres. Vi gør opmærksom på, at indekseringen af bitsene er som man læser dem. Det vil sige, at den mest betydende bit har indeks 0. Klassen kan duplikere et bitarray (copy), tage en delmængde af et bitarray (subset), sammensætte to bitarrays (concat) og sammenligne to bitarrays (compare) om de er identiske.
Klassen indeholder også en metode (rollByteToBits), som konverterer en byte til bits. Denne procedure tager hensyn til, at byte skal rulles og de to første bits skal smides væk. Dermed får man 6 bits ud af byte.
Fra bits kan man konvertere til heltal igen (bitsToInt). Her er det alle bits i et bitarray af vilkårligt længde konverteret til et heltal uden fortegn. Man kan også bruge 2's komplementærmetoden (twoComplements) til at konvertere til heltal med fortegn.
Desuden indeholder klassen en metode (bitsToString) til at konvertere et bitarray til en tekstreng af 0'er og 1 taller.

GPSWord.java

En instans af GPSWord indeholder de 30 bits, der er i et enkelt ord samt to ekstra bits, som bruges til paritetstjekket. Constructoren til GPSWord skal kaldes med disse data repræsenteret som bitsarray. Når klassen er instantieret køres der et parititesttjek med det samme (parityCheck. Resultatet gemmes og kan hentes frem igen (parityStatus). Der er også lavet en metode (isFirstWord), som undersøger om det aktuelle ord er det første i en type 1 besked. Dette gøres ved at sammenligne de første bits med preamble (01100110), samt identifikatoren for type 1 besked (000001). Klassen kan dog også instantiseres med data, som allerede har været igennem parititestschekket. I såfald er der ingen ekstra parititetsbits gemt.
Parititetstjekket følger algoritmen angivet i IDC-gps-200. Det komplementerer alle databits, hvis den sidste af de to parititetsbits er sand. Herefter udregnes de sidste 6 parititetsbits som givet i algoritmen og de sammenlignes med de modtagne bits. Det kan bemærkes, at hvis databitsene skal komplementeres, er det de komplementerede, man sammenligner de udregnede med.

GPSMessage.java

Dette er klassen, som indeholder data for en hel besked. Dataen er gemt som et array af GPSWord. Når en message er givet alle GPSWords i beskeden, konverteres dataet til satellit objekter. Herved konverteres bitdataen til dens endelige form og er herefter unødvendig.

Satellit.java

Denne klasse indeholder korrektionerne for en enkelt satellit. De er gemt i deres endelige format. Således er korrektionerne gemt som doubles, da det er kommatal. Af hensyn til den objektorienterede tankegang, lavede vi klassen med privat adgang til dataene og en række indstil data og hent data metoder. Dette tjener dog intet formål, da vi ikke kan se noget formål med, at ændre den indre datarepræsentation. Derfor har klassen både public adgang og metoder til at hente og ændre. Da der er forskellige skaleringsfaktorer i de enkelte beskeder, kan en satellit dog ikke betragtes uafhængigt af den message den er i. Derfor Må satellitterne altid være tilknyttet en message.


home