/usr/include/libgarmin.h is in libgarmin-dev 0~svn320-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | /*
Copyright (C) 2007,2008 Alexander Atanasov <aatanasov@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <sys/types.h>
#ifdef __cplusplus
extern "C" {
#endif
enum {
L_LBL,
L_NET,
L_POI,
L_MDR,
};
struct gcoord {
int x;
int y;
};
#define GS_COUNTRY 1
#define GS_REGION 2
#define GS_CITY 3
#define GS_ZIP 4
#define GS_ROAD 5
#define GS_INTERSECT 6
#define GS_HOUSENUMBER 7
#define GS_POI 8
#define GM_EXACT 0
#define GM_START 1
#define GM_ANY 2
struct gar_subfile;
struct gar_search_res {
struct gar_subfile *sub;
unsigned fileid;
unsigned countryid;
unsigned regionid;
unsigned cityid;
unsigned zipid;
unsigned roadid;
unsigned poiid;
};
struct gar_search {
unsigned char type;
unsigned char match;
char *needle;
struct gar_search_res fromres;
};
#define GO_POINT 1
// GO_POI is now unused leave for compat
#define GO_POI 1
#define GO_POLYLINE 3
#define GO_POLYGON 4
#define GO_ROAD 5
#define GO_SEARCH 6
struct gar_subfile;
struct gar_objdraworder;
struct gmap {
struct gar_objdraworder *draworder;
int subfiles;
int lastsub;
struct gar_subfile **subs;
int zoomlevels;
int basebits;
int minlevel;
int maxlevel;
};
struct gobject {
int type;
void *gptr;
void *priv_data;
struct gobject *next;
};
struct gar_rect {
double lulat;
double lulong;
double rllat;
double rllong;
};
/* Walk and parse all data */
#define OPM_PARSE (1<<0)
/* Call a callback w/ every object */
#define OPM_DUMP (1<<1)
/* Work as a map backend */
#define OPM_GPS (1<<2)
typedef void (*dump_fn)(struct gobject *obj);
#define DBGM_LBLS (1<<0)
#define DBGM_OBJSRC (1<<1)
#define DBGM_DUMP (1<<2)
#define DBGM_NTMAP (1<<3)
struct gar_config {
int opm;
int maxsubdivs; /* Load max N subdivs for OPM_GPS */
dump_fn cb; /* Callback function for OPM_DUMP */
unsigned debugmask; /* Debuging aid */
int debuglevel; /* Debug level */
};
struct gimg;
struct gar;
typedef void (*log_fn)(char *file, int line, int level, char *fmt, ...)
__attribute__ ((format(printf,4,5)));
/* Default init w/ config, keep for the latest navit release */
struct gar *gar_init(char *tbd, log_fn l);
struct gar *gar_init_cfg(char *tbd, log_fn l, struct gar_config *cfg);
void gar_free(struct gar *g);
int gar_img_load(struct gar *gar, char *file, int data);
struct gmap *gar_find_subfiles(struct gar *gar, void *select, int flags);
void gar_free_gmap(struct gmap *g);
int gar_get_zoomlevels(struct gar_subfile *sub);
#define GO_GET_SORTED (1<<0)
#define GO_GET_ROUTABLE (1<<1)
#define GO_GET_SEARCH (1<<2)
struct gobject *gar_get_object(struct gar *gar, void *ptr);
int gar_get_objects(struct gmap *gm, int level, void *select,
struct gobject **ret, int flags);
void gar_free_objects(struct gobject *g);
unsigned short gar_obj_type(struct gobject *o);
int gar_object_group(struct gobject *o);
int gar_get_object_position(struct gobject *o, struct gcoord *ret);
int gar_object_subtype(struct gobject *o);
int gar_get_object_dcoord(struct gmap *gm, struct gobject *o, int ndelta, struct gcoord *ret);
int gar_get_object_coord(struct gmap *gm, struct gobject *o, struct gcoord *ret);
int gar_is_object_dcoord_node(struct gmap *gm, struct gobject *o, int ndelta);
int gar_get_object_deltas(struct gobject *o);
/* Get lbl as strdup'ed string */
char *gar_get_object_lbl(struct gobject *o);
int gar_get_object_intlbl(struct gobject *o);
/* Code page for labels */
char *gar_obj_codepage(struct gobject *o);
int gar_object_get_draw_order(struct gobject *o);
char *gar_object_debug_str(struct gobject *o);
/* Object index is (subdividx << 16) | (idx << 8) | otype */
int gar_object_index(struct gobject *o);
/* Object mapid is the id of the file containing the object */
int gar_object_mapid(struct gobject *o);
struct gobject *gar_get_object_by_id(struct gar *gar, unsigned int mapid,
unsigned int objid);
int gar_fat_file2fd(struct gimg *g, char *name, int fd);
/* Get ptr to a dskimg file */
struct gimg *gar_get_dskimg(struct gar *gar, char *file);
#define F_ONEWAY (1<<0)
#define F_SEGMENTED (1<<1)
#define F_LOCKONROAD (1<<2)
int gar_object_flags(struct gobject *o);
#define GARDEG(x) ((x) < 0x800000 ? (double)(x) * 360.0 / 16777216.0 : -(double)((x) - 0x100000) * 360.0 / 16777216.0)
#define GARRAD(x) ((x) < 0x800000 ? (double)(x) * TWOPI / 16777216.0 : -(double)((x) - 0x100000) * TWOPI / 16777216.0)
#define DEGGAR(x) ((x) * (1/(360.0/(1<<24))))
#define FEET2METER(x) ((x)/3.28084)
#define POI_STREET_NUM (1<<0)
#define POI_STREET (1<<1)
#define POI_CITY (1<<2)
#define POI_ZIP (1<<3)
#define POI_PHONE (1<<4)
#define POI_EXIT (1<<5)
#define POI_TIDE_PREDICT (1<<6)
#define POI_UNKNOW (1<<7)
unsigned int gar_srch_get_countryid(struct gobject *o);
char *gar_srch_get_country(struct gobject *o);
unsigned int gar_srch_get_regionid(struct gobject *o);
char *gar_srch_get_region(struct gobject *o);
unsigned int gar_srch_get_cityid(struct gobject *o);
char *gar_srch_get_city(struct gobject *o);
unsigned int gar_srch_get_zipid(struct gobject *o);
char *gar_srch_get_zip(struct gobject *o);
unsigned int gar_srch_get_roadid(struct gobject *o);
char *gar_srch_get_roadname(struct gobject *o);
/* Routing */
struct gar_route;
struct gar_route_request {
struct gar_route *route;
unsigned int posmapid;
unsigned int posobjid;
int posidx;
unsigned int dstmapid;
unsigned int dstobjid;
int dstidx;
int route_flags;
int vehicle_type;
};
struct gar_route *gar_route(struct gar *gar, struct gar_route_request *grr);
#ifdef __cplusplus
}
#endif
|