summaryrefslogtreecommitdiffstats
path: root/gatchat/gsm0710.h
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-09-06 00:25:16 +0200
committerMarcel Holtmann <marcel@holtmann.org>2009-09-06 00:25:16 +0200
commitc9ba0e7df580a0e1f262077441652f4d5b3d6cff (patch)
tree4a55f6fb17d5dfe791d620e363e688cc679a6737 /gatchat/gsm0710.h
parent62c0583f67ea48feb1ef80d061881d8dcf325396 (diff)
downloadofono-c9ba0e7df580a0e1f262077441652f4d5b3d6cff.tar.bz2
Integrate the multiplexer into the AT chat library
Diffstat (limited to 'gatchat/gsm0710.h')
-rw-r--r--gatchat/gsm0710.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/gatchat/gsm0710.h b/gatchat/gsm0710.h
new file mode 100644
index 00000000..e94ff5ab
--- /dev/null
+++ b/gatchat/gsm0710.h
@@ -0,0 +1,84 @@
+/*
+ *
+ * AT chat library with GLib integration
+ *
+ * Copyright (C) 2009 Intel Corporation. All rights reserved.
+ * Copyright (C) 2009 Trolltech ASA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef GSM0710_P_H
+#define GSM0710_P_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define GSM0710_BUFFER_SIZE 4096
+#define GSM0710_DEFAULT_FRAME_SIZE 31
+#define GSM0710_MAX_CHANNELS 63
+
+#define GSM0710_MODE_BASIC 0
+#define GSM0710_MODE_ADVANCED 1
+
+struct gsm0710_context
+{
+ /* GSM 07.10 implementation details */
+ int mode;
+ int frame_size;
+ int port_speed;
+ int server;
+ unsigned char buffer[GSM0710_BUFFER_SIZE];
+ int buffer_used;
+ unsigned long used_channels[(GSM0710_MAX_CHANNELS + 31) / 32];
+ const char *reinit_detect;
+ int reinit_detect_len;
+
+ /* Hooks to other levels */
+ void *user_data;
+ int fd;
+ int (*at_command)(struct gsm0710_context *ctx, const char *cmd);
+ int (*read)(struct gsm0710_context *ctx, void *data, int len);
+ int (*write)(struct gsm0710_context *ctx, const void *data, int len);
+ void (*deliver_data)(struct gsm0710_context *ctx, int channel,
+ const void *data, int len);
+ void (*deliver_status)(struct gsm0710_context *ctx,
+ int channel, int status);
+ void (*debug_message)(struct gsm0710_context *ctx, const char *msg);
+ void (*open_channel)(struct gsm0710_context *ctx, int channel);
+ void (*close_channel)(struct gsm0710_context *ctx, int channel);
+ void (*terminate)(struct gsm0710_context *ctx);
+ int (*packet_filter)(struct gsm0710_context *ctx, int channel,
+ int type, const unsigned char *data, int len);
+};
+
+void gsm0710_initialize(struct gsm0710_context *ctx);
+void gsm0710_set_reinit_detect(struct gsm0710_context *ctx, const char *str);
+int gsm0710_startup(struct gsm0710_context *ctx, int send_cmux);
+void gsm0710_shutdown(struct gsm0710_context *ctx);
+int gsm0710_open_channel(struct gsm0710_context *ctx, int channel);
+void gsm0710_close_channel(struct gsm0710_context *ctx, int channel);
+int gsm0710_is_channel_open(struct gsm0710_context *ctx, int channel);
+void gsm0710_ready_read(struct gsm0710_context *ctx);
+void gsm0710_write_data(struct gsm0710_context *ctx, int channel,
+ const void *data, int len);
+void gsm0710_set_status(struct gsm0710_context *ctx, int channel, int status);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif