Update of /cvsroot/firebug/fireboard/beta/tos/lib/SiRF
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12668
Added Files:
SiRFC.nc SiRFM.nc sirf.h
Log Message:
Start of sirf parsing implementation.
--- NEW FILE: SiRFM.nc ---
/**
* Module for parsing SiRF - 0183 sentences.
*
* This code is part of the NSF-ITR funded
* FireBug project:
* @url http://firebug.sourceforge.net
*
* @author David M. Doolin
*
* $Id: SiRFM.nc,v 1.1 2005/08/01 19:52:58 doolin Exp $
*/
#define extract_num_sats_m(data) (10*(data[0]-'0') + (data[1]-'0'))
#define extract_hours_m(data) (10*(data[0]-'0') + (data[1]-'0'))
#define extract_minutes_m(data) (10*(data[2]-'0') + (data[3]-'0'))
#define extract_dec_sec_m(data) (10*(data[4]-'0') + (data[5]-'0') + 0.1*(data[7]-'0') \
+ 0.01*(data[8]-'0') \
+ 0.001*(data[9]-'0'))
#define extract_Lat_deg_m(data) (10*(data[0]-'0') + (data[1]-'0'))
#define extract_Lat_dec_min_m(data) (10*(data[2]-'0') + (data[3]-'0') + 0.1*(data[5]-'0') \
+ 0.01*(data[6]-'0') + 0.001*(data[7]-'0') + 0.0001*(data[8]-'0'))
#define extract_Long_deg_m(data) (100*(data[0]-'0') + 10*(data[1]-'0') + (data[2]-'0'))
#define extract_Long_dec_min_m(data) (10*(data[3]-'0') + (data[4]-'0') + 0.1*(data[6]-'0') \
+ 0.01*(data[7]-'0') + 0.001*(data[8]-'0') + 0.0001*(data[9]-'0'))
#define GGA_NS_m(foo) ((foo[28]=='N') ? 1 : 0)
#define GGA_EW_m(foo) ((foo[41]=='W') ? 1 : 0)
#define extract_GGA_NSEWind_m(foo) ((GGA_EW_m(foo)) | ((GGA_NS_m(foo))<<4))
includes sirf;
module SiRFM {
provides interface SiRF;
}
implementation {
command uint8_t SiRF.get_type (const char * sirfstring) {
return 0;
}
}
--- NEW FILE: SiRFC.nc ---
/**
* Configuration for NMEA - 0183 parser.
*
* This code is part of the NSF-ITR funded
* FireBug project:
* @url http://firebug.sourceforge.net
*
* @author David M. Doolin
*
* $Id: SiRFC.nc,v 1.1 2005/08/01 19:52:58 doolin Exp $
*/
configuration SiRFC {
provides interface SiRF;
}
implementation {
components SiRFM;
SiRF = SiRFM;
}
--- NEW FILE: sirf.h ---
/** SiRF message processing.
*
* @author David M. Doolin
*/
#ifndef FB_SIRF_H
#define FB_SIRF_H
//#include <sys/types.h>
#ifndef FB_HEADER
#define FB_HEADER
typedef struct _fb_header {
uint8_t seqno;
uint8_t am_type;
uint8_t rsrvd1;
uint8_t rsrvd2;
} fb_header;
#endif
typedef struct SiRF_ID2_1 {
fb_header header;
int32_t xpos;
int32_t ypos;
int32_t zpos;
uint16_t xvel;
uint16_t yvel;
uint16_t zvel;
uint8_t mode1;
uint8_t dop;
uint8_t mode2;
uint16_t gps_week;
} SiRF_ID2_1;
enum {
AM_SIRF_ID2_1 = 150
};
typedef struct SiRF_ID2_2 {
fb_header header;
uint32_t gps_tow;
uint8_t sv_in_fix;
uint8_t ch1;
uint8_t ch2;
uint8_t ch3;
uint8_t ch4;
uint8_t ch5;
uint8_t ch6;
uint8_t ch7;
uint8_t ch8;
uint8_t ch9;
uint8_t ch10;
uint8_t ch11;
uint8_t ch12;
} SiRF_ID2_2;
enum {
AM_SIRF_ID2_2 = 151
};
typedef struct SiRF_ID28_1 {
fb_header header;
uint8_t channel;
uint32_t time_tag;
uint8_t sat_id;
uint32_t gps_sw_time[2];
} SiRF_ID28_1;
enum {
AM_SIRF_ID28_1 = 152
};
typedef struct SiRF_ID28_2 {
fb_header header;
uint32_t pseudo_range[2];
uint32_t carrier_freq;
uint32_t carrier_phase[2];
uint16_t time_in_track;
} SiRF_ID28_2;
enum {
AM_SIRF_ID28_2 = 153
};
typedef struct SiRF_ID28_3 {
fb_header header;
uint8_t sync_flags;
uint8_t cno1;
uint8_t cno2;
uint8_t cno3;
uint8_t cno4;
uint8_t cno5;
uint8_t cno6;
uint8_t cno7;
uint8_t cno8;
uint8_t cno9;
uint8_t cno10;
uint16_t delta_range_interval;
uint16_t mean_delta_range_time;
uint16_t extrapolation_time;
uint8_t phase_error_count;
uint8_t low_power_count;
} SiRF_ID28_3;
enum {
AM_SIRF_ID28_3 = 154
};
#endif /* FB_SIRF_H */
|