Changeset 293 in ntrip for trunk/BNC/RTIGS/rtigs.h


Ignore:
Timestamp:
Nov 12, 2006, 3:32:52 PM (18 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/RTIGS/rtigs.h

    r67 r293  
    1 
    2 #ifndef RTIGS_H
    3 #define RTIGS_H
    4 
    5 #include <QByteArray>
    6 
    7 #include "../RTCM/GPSDecoder.h"
    8 #include "cgps_transform.h"
    9 
    10 class rtigs : public GPSDecoder {
    11 public:
    12   rtigs();
    13   ~rtigs();
    14   void Decode(char* buffer = 0, int bufLen = 0);
    15 private:
    16   CGPS_Transform _GPSTrans;
    17   QByteArray     _buffer;
    18 } ;
     1/* Defines for the RTIGS <--> Raw Converter
     2 * - Source functions
     3 *
     4 * Copyright (c) 2006
     5 * Geoscience Australia
     6 *
     7 * Written by James Stewart
     8 * E-mail: James.Stewart@ga.gov.au
     9 *
     10 * Enquiries contact
     11 * Michael Moore
     12 * E-mail: Michael.Moore@ga.gov.au
     13 *
     14 * Based on the GNU General Public License published Icecast 1.3.12
     15 *
     16 * This program is free software; you can redistribute it and/or
     17 * modify it under the terms of the GNU General Public License
     18 * as published by the Free Software Foundation; either version 2
     19 * of the License, or (at your option) any later version.
     20 *
     21 * This program is distributed in the hope that it will be useful,
     22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     24 * GNU General Public License for more details.
     25 *
     26 * You should have received a copy of the GNU General Public License
     27 * along with this program; if not, write to the Free Software
     28 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
     29 */
     30#ifndef __RTIGS_H_INCLUDED__
     31#define __RTIGS_H_INCLUDED__ 1
     32
     33typedef unsigned int    u_int32_t;
     34typedef unsigned short  u_int16_t;
     35typedef unsigned char   u_int8_t;
     36typedef unsigned char   u_char;
     37
     38#define  C                      ((double)299792458.00)          /* speed of light in vaccuum  */
     39#define  F1                     ((double)1575.42E+06)           /* GPS L1 frequency        */
     40#define  F2                     ((double)1227.60E+06)           /* GPS L2 frequency        */
     41#define  F1_SQUARE      (F1 * F1)               /* GPS L1 frequency squared   */
     42#define  F2_SQUARE      (F2 * F2)               /* GPS L2 frequency squared   */
     43#define  W1                     ((double)(C / F1))              /* GPS L1 wavelength          */
     44#define  W2                     ((double)(C / F2))              /* GPS L2 wavelength          */
     45#define  F1ION          (F2_SQUARE / (F1_SQUARE - F2_SQUARE)) /* L1 iono scale factor */
     46#define  F2ION          (F1_SQUARE / (F1_SQUARE - F2_SQUARE)) /* L2 iono scale factor */
     47#define  SF1            (F1ION + F2ION)
     48#define  SF2            (F1ION * 2)
     49#define  SF3            (F2ION * 2)
     50#define  MAXCYCLEOSL1 374               // changed to fit 83.88 metres 441 Feb. 24/2004 ~100m in cycles was 526
     51#define  MAXCYCLEOSL2 291               // changed to fit 83.88 metres 343 Feb. 24/2004 was ~100m in cycles 410
     52
     53/* RTIGSH_T Structure -> RTIGS Header structure, Used For Working Out What Sort Of Packet We Got */
     54struct RTIGSH_T
     55        {
     56        u_int16_t       rec_id;
     57        u_int16_t       sta_id;
     58        u_int32_t       GPSTime;
     59        u_int16_t       num_bytes;
     60        u_int8_t        IODS;
     61        u_int8_t        misc;
     62        };
     63
     64
     65/* RTIGSS_T Structure -> RTIGS Station structure, normally rec_id = 100 */
     66struct RTIGSS_T
     67        {
     68        u_int16_t       rec_id;
     69        u_int16_t       sta_id;
     70        u_int32_t       GPSTime;
     71        u_int16_t       num_bytes;
     72        u_int8_t        IODS;
     73        u_int8_t        sta_rec_type;
     74        u_char          IGS_UniqueID[8];
     75        };
     76
     77
     78/* RTIGSO_T Structure -> RTIGS Observation structure, normally rec_id = 200 */
     79struct RTIGSO_T
     80        {
     81        u_int16_t       rec_id;
     82        u_int16_t       sta_id;
     83        u_int32_t       GPSTime;
     84        u_int16_t       num_bytes;
     85        u_int8_t        IODS;
     86        u_int8_t        num_obs;
     87        u_char          data[12][21];
     88        };
     89
     90/* RTIGSE_T Structure -> RTIGS Ephemeris structure, normally rec_id = 300 */
     91struct RTIGSE_T
     92        {
     93        u_int16_t       rec_id;
     94        u_int16_t       sta_id;
     95        u_int32_t       GPSTime;
     96        u_int16_t       num_bytes;
     97        u_int8_t        IODS;
     98        u_int8_t        prn;
     99        u_char          data[72];
     100        };
     101
     102
     103/* RTIGSM_T Structure -> RTIGS Met structure, normally rec_id = 400 */
     104struct RTIGSM_T
     105        {
     106        u_int16_t       rec_id;
     107        u_int16_t       sta_id;
     108        u_int32_t       GPSTime;
     109        u_int16_t       num_bytes;
     110        u_int8_t        IODS;
     111        u_int8_t        num_obs;
     112        long            temp;
     113        long            press;
     114        long            humid;
     115        };
     116
     117/* The 21 Byte SOC Compressed Observation Structure per SV */
     118struct JPL_COMP_OBS_T
     119        {
     120        unsigned char prn;                      // satellite ID
     121        unsigned short epoch_sequence;  // like Ashtech seq number of phase epochs
     122                                                                        // was like this, now modulo 10 hours,
     123                                                                        // each digit is now 1 sec, not .05 secs like before
     124        unsigned char ca_range[5];                      // ca range in millimeters
     125                                                                // first 4 bits are status bits, as follows
     126                                                                // if bit 7 on, sucessful packing of ca_range
     127                                                                // if bit 6 on, Z track mode or AS is on
     128                                                                // if bit 5 on, overflow of L2_block phase
     129                                                                // if bit 4 on, overflow of L1_block phase
     130                                                                // next 36 bits are the observable
     131                                                                // 68719.476735 is the max allowable obsev.
     132                                                                // if not packed, L2_block and L1_block is
     133                                                                // just then packed with 0s
     134
     135        unsigned char CA_snr;           // receiver snr for ca  in dbHz KML the SNR is (DBHz * 4.25) rounded to an int  (max is 60.0)
     136        unsigned char L2_range_phase[5];
     137                                                                // first 2 bytes and 2 bits is for the range, next 6 bits and 2 bytes are for phase.
     138                                                                //
     139                                                                // range units are in millimeters, from -131071 to 131071   (2^17 - 1)
     140                                                                // 0000 0000 0000 0000 01 would be +1 mm
     141                                                                // 100000000000000001 would be -1 mm
     142                                                                // 0100 0000 0000 0000 00 would be  65536 mm
     143                                                                // 1100 0000 0000 0000 00 would be -65536 mm
     144                                                                // 0111 1111 1111 1111 11 would be  131071 mm
     145                                                                // 111111111111111111 woule be -131071 mm
     146                                                                // dynamic range must be <= 131.071 meters
     147                                                                //
     148                                                                // phase units are in 2/100 millimeters from -4194304 to 4194304
     149                                                                // 00 0000 0000 0000 0000 0001  would be +.02 mm
     150                                                                // 10 0000 0000 0000 0000 0001  would be -.02 mm
     151                                                                // 01 1111 1111 1111 1111 1111  ( 2097151) would be  41943.02 mm
     152                                                                // 11 1111 1111 1111 1111 1111  (-2097151) would be -41943.02 mm
     153                                                                //                              (2^21 - 1)*2 mm
     154                                                                // dynamic range must be <= 41.94302 meters
     155                                                                //
     156                                                                // note if the limits are exceded, a -0 (minus zero) is returned
     157                                                                // indicating not a number
     158                                                                //
     159                                                                // Note however, we extended this dynamic range to 83.88606 meters as
     160                                                                // below with the spare bits in the ca_range field. If this limit
     161                                                                // is exceeded we return a -0 ( minus zero )
     162        unsigned char L2_snr;           // snr for this data type  in dbHz, the SNR is (DBHz * 4.25) rounded to an int (max is 60.0 )
     163        unsigned char L1_range_phase[5];                // same as format for L2_range_phase
     164        unsigned char L1_snr;           // snr for this data type  in dbHz, the SNR is (DBHz * 4.25) rounded to an int (max is 60.0 )
     165        };
     166
     167
     168/* GPSSatellite Structure -> 44 Byte raw SV Structure */
     169struct GPSSatellite
     170        {
     171        unsigned char prn;
     172        unsigned char CASnr;
     173        unsigned char L1Snr;
     174        unsigned char L2Snr;
     175        double  CARange;
     176        double  P1Range;
     177        double  L1Phase;
     178        double  P2Range;
     179        double  L2Phase;
     180        unsigned short locktime;
     181        };
     182
     183/* GPSEpoch Structure -> raw epoch Structure */
     184struct GPSEpoch_T
     185        {
     186        unsigned int    GPSTime;
     187        unsigned short  sta_id;
     188        unsigned char   num_sv;
     189        unsigned char   padding;
     190        struct GPSSatellite sv[12];
     191        };
     192
     193struct GPSMet_T
     194        {
     195        unsigned int GPSTime;
     196        unsigned short sta_id;
     197        long temperature;
     198        long humidity;
     199        long pressure;
     200        };
     201
     202typedef struct RTIGSO_T RTIGSO;
     203typedef struct RTIGSE_T RTIGSE;
     204typedef struct RTIGSS_T RTIGSS;
     205typedef struct RTIGSM_T RTIGSM;
     206typedef struct RTIGSH_T RTIGSH;
     207typedef struct GPSEpoch_T GPSEpoch;
     208typedef struct GPSMet_T GPSMet;
     209
     210
     211/* Function Declarations */
     212extern void bytes_to_rtigsh(RTIGSH *rtigsh, unsigned char *packet);
     213extern int rtigso_to_raw(RTIGSO *rtigso, GPSEpoch *gpse);
     214extern int rtigsm_to_raw(RTIGSM *rtigsm, GPSMet *met);
     215
     216
     217void revbytes(unsigned char *buf, unsigned char size);
    19218
    20219#endif
     220
     221
Note: See TracChangeset for help on using the changeset viewer.