Add:vehicle_file:Added attribute to get direction of a magnetic compass
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 28 Dec 2008 16:02:55 +0000 (16:02 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 28 Dec 2008 16:02:55 +0000 (16:02 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@1862 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/attr_def.h
navit/navit/vehicle/file/vehicle_file.c

index 7619ee0..0bcf4f6 100644 (file)
@@ -115,6 +115,7 @@ ATTR(district_id) /* fixme? */
 ATTR(drag_bitmap)
 ATTR(use_mousewheel)
 ATTR(fullscreen)
+ATTR(position_magnetic_direction)
 ATTR2(0x0002ffff,type_int_end)
 ATTR2(0x00030000,type_string_begin)
 ATTR(type)
index 7ddc3e1..9c57af5 100644 (file)
@@ -87,6 +87,7 @@ struct vehicle_priv {
        struct attr ** attrs;
        char fixiso8601[128];
        int checksum_ignore;
+       int magnetic_direction;
 };
 
 #ifdef _WIN32
@@ -411,6 +412,20 @@ vehicle_file_parse(struct vehicle_priv *priv, char *buffer)
                        priv->fixyear = atoi(item[4]);
                }
        }
+       if (!strncmp(buffer, "$IISMD", 6)) {
+       /*
+               0      1   2     3      4   
+               $IISMD,dir,press,height,temp*CC"
+                       dir       Direction (0-359)
+                       press     Pressure (hpa, i.e. 1032)
+                       height    Barometric height above ground (meter)
+                       temp      Temperature (Degree Celsius)
+       */
+               if (item[1]) {
+                       priv->magnetic_direction = g_ascii_strtod( item[1], NULL );
+                       dbg(0,"magnetic %d\n", priv->magnetic_direction);
+               }
+       }
        return ret;
 }
 
@@ -520,6 +535,9 @@ vehicle_file_position_attr_get(struct vehicle_priv *priv,
        case attr_position_direction:
                attr->u.numd = &priv->direction;
                break;
+       case attr_position_magnetic_direction:
+               attr->u.num = priv->magnetic_direction;
+               break;
        case attr_position_hdop:
                attr->u.numd = &priv->hdop;
                break;