[Firebug-cvs] fireboard/beta/tos/lib/SiRF SiRFC.nc,NONE,1.1 SiRFM.nc,NONE,1.1 sirf.h,NONE,1.1
Brought to you by:
doolin
From: David M. D. <do...@us...> - 2005-08-01 19:53:11
|
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 */ |