--- /dev/null
+#include "openzap.h"
+
+struct ttmp {
+ int fd;
+};
+
+static int teletone_handler(teletone_generation_session_t *ts, teletone_tone_map_t *map)
+{
+ struct ttmp *tmp = ts->user_data;
+ int wrote;
+
+ wrote = teletone_mux_tones(ts, map);
+ write(tmp->fd, ts->buffer, wrote * 2);
+ return 0;
+}
+
+#if 1
+int main(int argc, char *argv[])
+{
+ teletone_generation_session_t ts;
+ struct ttmp tmp;
+
+ if (argc < 2) {
+ fprintf(stderr, "Arg Error!\n");
+ exit(-1);
+ }
+
+ if ((tmp.fd = open(argv[1], O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR)) < 0) {
+ fprintf(stderr, "File Error!\n", strerror(errno));
+ exit(-1);
+ }
+
+
+
+ teletone_init_session(&ts, 0, teletone_handler, &tmp);
+ ts.rate = 8000;
+ ts.debug = 1;
+ ts.debug_stream = stdout;
+ teletone_run(&ts, argv[2]);
+ close(tmp.fd);
+}
+#else
+int32_t main(int argc, char *argv[])
+{
+ int32_t j, i, fd = -1;
+ int32_t rate = 8000;
+ /* SIT tones and durations */
+ float tones[] = { 913.8, 1370.6, 1776.7, 0 };
+ int32_t durations[] = {274, 274, 380, 0};
+ teletone_dds_state_t dds = {0};
+ int16_t sample;
+
+ if (argc < 2 || (fd = open(argv[1], O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR)) < 0) {
+ fprintf(stderr, "File Error!\n", strerror(errno));
+ exit(-1);
+ }
+
+ for (j = 0; tones[j] && durations[j]; j++) {
+
+ teletone_dds_state_set_tone(&dds, tones[j], rate, -50);
+
+ for(i = 0; i < durations[j] * rate / 1000; i++) {
+ sample = teletone_dds_modulate_sample(&dds) * 20;
+ write(fd, &sample, sizeof(sample));
+ }
+
+ }
+
+ close(fd);
+}
+#endif