Added draft libgps vapi
[gregoa/zavai.git] / src / libgps.vapi
1 [CCode (lower_case_cprefix="", cprefix="", cheader_filename="gps.h")]
2 namespace libgps
3 {
4     public const int MAXCHANNELS;
5
6     [SimpleType]
7     [IntegerType (rank = 9)]
8     public struct mask_t {}
9
10     [CCode (cname = "struct gps_fix_t")]
11     public struct fix_t
12     {
13         double time;    /* Time of update, seconds since Unix epoch */
14         int    mode;    /* Mode of fix */
15         double ept;             /* Expected time uncertainty */
16         double latitude;        /* Latitude in degrees (valid if mode >= 2) */
17         double epy;     /* Latitude position uncertainty, meters */
18         double longitude;       /* Longitude in degrees (valid if mode >= 2) */
19         double epx;     /* Longitude position uncertainty, meters */
20         double altitude;        /* Altitude in meters (valid if mode == 3) */
21         double epv;     /* Vertical position uncertainty, meters */
22         double track;   /* Course made good (relative to true north) */
23         double epd;             /* Track uncertainty, degrees */
24         double speed;   /* Speed over ground, meters/sec */
25         double eps;             /* Speed uncertainty, meters/sec */
26         double climb;   /* Vertical speed, meters/sec */
27         double epc;             /* Vertical speed uncertainty */
28     }
29     public const int MODE_NOT_SEEN; /* mode update not seen yet */
30     public const int MODE_NO_FIX;   /* none */
31     public const int MODE_2D;       /* good for latitude/longitude */
32     public const int MODE_3D;       /* good for altitude/climb too */
33
34     [CCode (cname = "struct dop_t")]
35     public struct dop_t
36     {
37         /* Dilution of precision factors */
38         double xdop;
39         double ydop;
40         double pdop;
41         double hdop;
42         double vdop;
43         double tdop;
44         double gdop;
45     }
46
47     [CCode (cname = "struct gps_data_t", destroy_function = "")]
48     public struct data_t
49     {
50         mask_t set;
51         double online;
52         int gps_fd;
53         fix_t fix;
54         double separation;
55         int    status;
56         int satellites_used;        /* Number of satellites used in solution */
57         int[] used;      /* PRNs of satellites used in solution */
58         dop_t dop;
59         /* redundant with the estimate elements in the fix structure */
60         double epe;  /* spherical position error, 95% confidence (meters)  */
61
62         /* satellite status -- valid when satellites_visible > 0 */
63         double skyview_time;        /* skyview timestamp */
64         int satellites_visible;     /* # of satellites in view */
65         int[] PRN;       /* PRNs of satellite */
66         int[] elevation; /* elevation of satellite */
67         int[] azimuth;   /* azimuth */
68         double[] ss;     /* signal-to-noise ratio (dB) */
69
70         //struct devconfig_t dev;     /* device that shipped last update */
71
72         //struct policy_t policy;     /* our listening policy */
73
74         //char tag[MAXTAGLEN+1];      /* tag of last sentence processed */
75     }
76
77     public const int STATUS_NO_FIX;   /* no */
78     public const int STATUS_FIX;      /* yes, without DGPS */
79     public const int STATUS_DGPS_FIX; /* yes, with DGPS */
80
81     [CCode (cname = "gps_open_r")]
82     public int open_r(string server, string port, ref data_t gpsdata);
83
84     [CCode (cname = "gps_close")]
85     public int close(ref data_t gpsdata);
86
87     [CCode (cname = "gps_errstr")]
88     public weak string errstr(int err);
89
90     [CCode (cname = "gps_poll")]
91     public int poll(ref data_t gpsdata);
92
93     [CCode (cname = "gps_waiting")]
94     public bool waiting(ref data_t gpsdata);
95
96     [CCode (cname = "gps_send")]
97     public int send(ref data_t gpsdata, string fmt, ...);
98
99     [CCode (cname = "gps_stream")]
100     public int stream(ref data_t gpsdata, uint flags, void* data);
101
102     /* mode flags for gps_stream() */
103     public int WATCH_DISABLE;   /* disable watching */
104     public int WATCH_ENABLE;    /* enable streaming */
105     public int WATCH_JSON;      /* enable JSON output */
106     public int WATCH_NMEA;      /* enable output in NMEA */
107     public int WATCH_RARE;      /* enable output of packets in hex */
108     public int WATCH_RAW;       /* enable output of raw packets */
109     public int WATCH_SCALED;    /* scale output to floats, when applicable */ 
110     public int WATCH_NEWSTYLE;  /* force JSON streaming */
111     public int WATCH_OLDSTYLE;  /* force old-style streaming */
112     public int WATCH_DEVICE;    /* watch specific device */
113     public int POLL_NONBLOCK;   /* set non-blocking poll */
114
115     /*
116         [CCode (cname = "struct input_event")]
117         public struct Event
118         {
119                 public Posix.timeval time;
120                 public uint16 type;
121                 public uint16 code;
122                 [CCode (cname="value")]
123                 public int32 val;
124         }
125
126         [CCode (cprefix="KEY_")]
127         public enum Key
128         {
129                 POWER
130         }
131
132         [CCode (cprefix="EV_")]
133         public enum Type
134         {
135                 SYN,
136                 KEY,
137                 REL,
138                 ABS,
139                 MSC,
140                 SW,
141                 LED,
142                 SND,
143                 REP,
144                 FF,
145                 PWR,
146                 FF_STATUS
147         }
148 }
149 [CCode (cprefix="", cheader_filename="omhacks/all.h")]
150 namespace Omhacks
151 {
152     [CCode (cname = "struct om_led", cheader_filename = "omhacks/led.h", destroy_function = "")]
153     public struct Led
154     {
155         public char name[255];
156         public string dir;
157         public int dir_len;
158         public int brightness;
159         public char trigger[255];
160         public int delay_on;
161         public int delay_off;
162
163         [CCode (cname = "om_led_init")]
164         public int init(string name);
165         [CCode (cname = "om_led_get")]
166         public int get();
167         [CCode (cname = "om_led_set")]
168         public int set();
169     }
170
171     namespace Screen
172     {
173         namespace Brightness
174         {
175             [CCode (cname = "om_screen_brightness_get")]
176             public int get();
177             [CCode (cname = "om_screen_brightness_get_max")]
178             public int get_max();
179             [CCode (cname = "om_screen_brightness_set")]
180             public int set(int val);
181         }
182     }
183
184     namespace UEvent
185     {
186         [CCode (cname = "struct om_uevent", cheader_filename = "omhacks/uevent.h", destroy_function = "")]
187         public struct Event
188         {
189             public string buffer;
190             size_t buflen;
191             weak string action;
192             weak string devpath;
193             weak string[] envp;
194         }
195
196         [CCode (cname = "om_uevent_open")]
197         public int open();
198         [CCode (cname = "om_uevent_read")]
199         public int read(int sock, ref Event ou);
200         [CCode (cname = "om_uevent_parse")]
201         public int parse(ref Event ou);
202     }
203     */
204 }