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 RTCM dataene vi modtager. Informationen vi modtages skal kunne læses som bits, hvilket vores Bits-klasse står for. Vi har tre klasser til at håndtere GPS-dataene: GPSWord, GPSMessage og Satellite.

Bits.java

Denne klasse indeholder en række metoder, som bruges til at håndtere arrays af booleske værdier som bitstrenge. Alle metoderne er statiske, og det er ikke meningen, at klassen skal instantieres. Vi gør opmærksom på, at indekseringen af bittene er på samme mæde som nær 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å metoden 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., så man får 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 komplementmetoden (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

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 paritetstjek 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å instantieres med data, som allerede har været igennem paritetstjekket. I såfald er der ikke behov for de to ekstra parititetsbits.
Parititetstjekket følger algoritmen angivet i IDC-gps-200 (vedlagt som BILAG C), som er beskrevet under Paritetsalgoritmen.

GPSMessage.java

Dette er klassen, som indeholder data for en hel besked. Som nævnt under Analyse var det oprindeligt tanken, at denne klasse skulle opbevarer dataene. Dette er ikke tilfældet alligevel, men vi har ikke ændret klassen, så den opbevarer dem stadigvæk.
Constructoren tager ordene ind, som integers og konverterer dem til GPSWords. Constructoren bruger metoden readSatellites til at hente satellitdataene ud af ordene. Herefter er de gemte ord overflødige. Men da GPSMessage'er alligevel ikke bliver gemt nogen steder og selv bliver smidt væk, når satellitdataene er læst, har vi ikke valgt at bruge kræfter på at smide dem væk.

InvalidGPSMessageException.java

Denne exception bruges af GPSMessage. Hvis der er paritetsfejl i de ord, som modtages i constructoren, eller hvis der modtages et ugyldigt antal ord, vil denne exception blive kastet.

Satellit.java

Denne klasse indeholder korrektionerne for en enkelt satellit. De er gemt i deres endelige format. Således er range rate 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 regner med, at ændre den indre datarepræsentation. Da vi har brugt metoderne nogle steder i koden og ikke ønskede at ændre koden der, har vi bibeholdt metoderne og har samtidig offentlig adgang til variablene.


home