summaryrefslogtreecommitdiffstats
path: root/hacks/glx/sonar.h
diff options
context:
space:
mode:
Diffstat (limited to 'hacks/glx/sonar.h')
-rw-r--r--hacks/glx/sonar.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/hacks/glx/sonar.h b/hacks/glx/sonar.h
new file mode 100644
index 0000000..d6473e0
--- /dev/null
+++ b/hacks/glx/sonar.h
@@ -0,0 +1,71 @@
+/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifndef __SONAR_XSCREENSAVER_H__
+#define __SONAR_XSCREENSAVER_H__
+
+typedef struct sonar_sensor_data sonar_sensor_data;
+typedef struct sonar_bogie sonar_bogie;
+
+struct sonar_bogie {
+ void *closure;
+ char *name; /* bogie name, e.g., host name */
+ char *desc; /* second line of text, e.g., ping time */
+ double r; /* distance, 0 - 1.0 */
+ double th; /* heading, 0 - 2 pi */
+ double ttl; /* time to live, 0 - 2 pi */
+ sonar_bogie *next; /* next one in the list */
+};
+
+struct sonar_sensor_data {
+ void *closure;
+
+ /* Called frequently (every time the sweep moves).
+ Returns a list of new bogies to be added to the display list
+ once the sweep comes around to their position.
+ */
+ sonar_bogie *(*scan_cb) (sonar_sensor_data *);
+
+ /* Called when a bogie is freed, to free bogie->closure */
+ void (*free_bogie_cb) (sonar_sensor_data *, void *closure);
+
+ /* Called at exit, to free ssd->closure */
+ void (*free_data_cb) (sonar_sensor_data *, void *closure);
+};
+
+/* frees bogie and its contents, including calling the free_bogie_cb. */
+extern void sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b);
+
+/* makes a copy of the bogie, not including the 'closure' data. */
+extern sonar_bogie *sonar_copy_bogie (sonar_sensor_data *,
+ const sonar_bogie *);
+
+
+/* Set up and return sensor state for ICMP pings. */
+extern sonar_sensor_data *sonar_init_ping (Display *dpy,
+ char **error_ret,
+ char **desc_ret,
+ const char *subnets,
+ int ping_timeout,
+ Bool resolve_p, Bool times_p,
+ Bool debug_p);
+
+/* Set up and return sensor state for the simulation. */
+extern sonar_sensor_data *sonar_init_simulation (Display *dpy,
+ char **error_ret,
+ char **desc_ret,
+ const char *team_a_name,
+ const char *team_b_name,
+ int team_a_count,
+ int team_b_count,
+ Bool debug_p);
+
+#endif /* __SONAR_XSCREENSAVER_H__ */