[Xastir] HSP Problem

Stephen West-Fisher steve at coastaldatasystems.com
Sun Jul 13 12:11:10 EDT 2003


There are two problems, but I haven't come up with a fix yet. The minor 
one is that you are correct, timings are a problem. I have found that 
setting the GPS timing at 20 seconds will cause DTR to switch back and 
forth, but 60 seconds will hold DTR low all the time.

Now for the major problem, I'm trying to come up with something that 
will work for me until you can properly correct it. The problem is in
interface.c in channel_data:
         switch(port_data[port].device_type) {

             case DEVICE_SERIAL_GPS:
             case DEVICE_SERIAL_TNC_HSP_GPS:
             case DEVICE_NET_GPSD:

                 // One of the three types of interfaces that might
                 // send in a lot of GPS data constantly.  Save only
                 // GPRMC and GPGGA strings into global variables.
                 // Drop other GPS strings on the floor.
                 //
                 if ( (length > 7) && (strncmp(string,"$GPRMC,",7) == 0) ) {
                     strncpy(gprmc_save_string,string,MAX_LINE_SIZE);
                     gps_port_save = port;
                 }
                 else if ( (length > 7) && (strncmp(string,"$GPGGA,",7) 
== 0) ) {
                     strncpy(gpgga_save_string,string,MAX_LINE_SIZE);
                     gps_port_save = port;
                 }
                 else {  // Else drop the string on the floor.
                 }
                 break;
// We need to make sure that the variables stating that a string is
// available are reset in any case.  Look at how/where data_avail is
// reset.  We may not care if we just wait for data_avail to be
// cleared before writing to the string again.

             default:    // Not one of the above three types, decode
                         // the string normally.
                 incoming_data = string;
                 incoming_data_length = length;
                 data_port = port;
                 data_avail = 1;
                 //fprintf(stderr,"data_avail\n");
                 break;
         }

Since DEVICE_SERIAL_TNC_HSP_GPS is true, all data is considered GPS 
data. So the needed GPS strings are OK, but all other data received on 
the port goes into the bit bucket, including received packets!

Packets are never moved to incomming_data and data_avail is never true, 
so they are never parsed in main.c.
-- 
Stephen West-Fisher
Coastal Data Systems
727.418.9774
http://www.coastaldatasystems.com/



More information about the Xastir mailing list