This commit was manufactured by cvs2svn to create branch 'lace'.
[gnokii.git] / common / phones / ateric.c
diff --git a/common/phones/ateric.c b/common/phones/ateric.c
new file mode 100644 (file)
index 0000000..edd48c7
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+
+  $Id$
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for mobile phones.
+
+  Copyright 2001 Manfred Jonsson <manfred.jonsson@gmx.de>
+
+  Released under the terms of the GNU GPL, see file COPYING for more details.
+
+  This file provides functions specific to at commands on ericsson
+  phones. See README for more details on supported mobile phones.
+
+  $Log$
+  Revision 1.1.1.1  2001/11/25 21:59:14  short
+  :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001
+
+  Revision 1.1  2001/11/19 13:03:18  pkot
+  nk3110.c cleanup
+
+*/
+
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#include "misc.h"
+#include "gsm-common.h"
+#include "gsm-statemachine.h"
+#include "phones/generic.h"
+#include "phones/atgen.h"
+#include "phones/ateric.h"
+#include "links/atbus.h"
+#include "links/cbus.h"
+
+
+static GSM_Error GetMemoryStatus(GSM_Data *data,  GSM_Statemachine *state)
+{
+        char req[128];
+        GSM_Error ret;
+        ret = AT_SetMemoryType(data->MemoryStatus->MemoryType,  state);
+        if (ret != GE_NONE)
+                return ret;
+        sprintf(req, "AT+CPBR=?\r\n");
+        if (SM_SendMessage(state, 11, GOP_GetMemoryStatus, req) != GE_NONE)
+                return GE_NOTREADY;
+        ret = SM_Block(state, data, GOP_GetMemoryStatus);
+        return ret;
+}
+
+
+static GSM_Error ReplyMemoryStatus(int messagetype, unsigned char *buffer, int length, GSM_Data *data)
+{
+       AT_LineBuffer buf;
+        char *pos;
+       buf.line1 = buffer;
+       buf.length= length;
+       splitlines(&buf);
+       if (buf.line1 == NULL)
+                return GE_INVALIDMEMORYTYPE;
+        if (data->MemoryStatus) {
+                if (strstr(buf.line2,"+CPBR")) {
+                        pos = strchr(buf.line2, '-');
+                        if (pos) {
+                                data->MemoryStatus->Used = atoi(++pos);
+                                data->MemoryStatus->Free = 0;
+                        } else {
+                                return GE_NOTSUPPORTED;
+                        }
+                }
+        }
+        return GE_NONE;
+} 
+
+
+void AT_InitEricsson(GSM_Statemachine *state, char *foundmodel, char *setupmodel) {
+       AT_InsertRecvFunction(GOP_GetMemoryStatus, ReplyMemoryStatus);
+       AT_InsertSendFunction(GOP_GetMemoryStatus, GetMemoryStatus);
+}