summaryrefslogtreecommitdiffabout
path: root/gammu/emb/common/phone/nokia/dct4/dct4func.c
Side-by-side diff
Diffstat (limited to 'gammu/emb/common/phone/nokia/dct4/dct4func.c') (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/common/phone/nokia/dct4/dct4func.c115
1 files changed, 115 insertions, 0 deletions
diff --git a/gammu/emb/common/phone/nokia/dct4/dct4func.c b/gammu/emb/common/phone/nokia/dct4/dct4func.c
new file mode 100644
index 0000000..9fa931f
--- a/dev/null
+++ b/gammu/emb/common/phone/nokia/dct4/dct4func.c
@@ -0,0 +1,115 @@
+/* (c) 2002-2003 by Marcin Wiacek */
+
+#include "../../../gsmstate.h"
+
+#include <string.h>
+#include <time.h>
+
+#include "../../../gsmcomon.h"
+#include "../../../misc/coding/coding.h"
+#include "../../../service/gsmlogo.h"
+#include "../nfunc.h"
+#include "../nfuncold.h"
+#include "../../pfunc.h"
+#include "dct4func.h"
+
+#ifdef GSM_ENABLE_NOKIA_DCT4
+
+GSM_Error DCT4_ReplyGetPhoneMode(GSM_Protocol_Message msg, GSM_StateMachine *s)
+{
+ s->Phone.Data.PhoneString[0] = msg.Buffer[4];
+ return ERR_NONE;
+}
+
+GSM_Error DCT4_GetPhoneMode(GSM_StateMachine *s)
+{
+ unsigned char req[] = {N6110_FRAME_HEADER, 0x02, 0x00, 0x00};
+
+ smprintf(s,"Getting phone mode\n");
+
+ return GSM_WaitFor (s, req, 6, 0x15, 4, ID_Reset);
+}
+
+GSM_Error DCT4_ReplySetPhoneMode(GSM_Protocol_Message msg, GSM_StateMachine *s)
+{
+ return ERR_NONE;
+}
+
+GSM_Error DCT4_SetPhoneMode(GSM_StateMachine *s, DCT4_PHONE_MODE mode)
+{
+ unsigned char PhoneMode[10];
+ int i;
+ GSM_Error error;
+ unsigned char req[] = {N6110_FRAME_HEADER, 0x01,
+ 0x04, /* phone mode */
+ 0x00};
+
+ if (s->ConnectionType != GCT_FBUS2) return ERR_OTHERCONNECTIONREQUIRED;
+
+ s->Phone.Data.PhoneString = PhoneMode;
+ req[4] = mode;
+
+ while (1) {
+ smprintf(s,"Going to phone mode %i\n",mode);
+ error = GSM_WaitFor (s, req, 6, 0x15, 4, ID_Reset);
+ if (error != ERR_NONE) return error;
+ for (i=0;i<20;i++) {
+ error=DCT4_GetPhoneMode(s);
+ if (error != ERR_NONE) return error;
+ if (PhoneMode[0] == mode) return ERR_NONE;
+ my_sleep(500);
+ }
+ }
+ return ERR_NONE;
+}
+
+GSM_Error DCT4_ReplyGetIMEI(GSM_Protocol_Message msg, GSM_StateMachine *s)
+{
+ memcpy(s->Phone.Data.IMEI,msg.Buffer + 10, 16);
+ smprintf(s, "Received IMEI %s\n",s->Phone.Data.IMEI);
+ return ERR_NONE;
+}
+
+GSM_Error DCT4_GetIMEI (GSM_StateMachine *s)
+{
+ unsigned char req[5] = {N6110_FRAME_HEADER, 0x00, 0x41};
+
+ smprintf(s, "Getting IMEI\n");
+ return GSM_WaitFor (s, req, 5, 0x1B, 2, ID_GetIMEI);
+}
+
+GSM_Error DCT4_GetHardware(GSM_StateMachine *s, char *value)
+{
+ return NOKIA_GetPhoneString(s,"\x00\x03\x02\x07\x00\x02",6,0x1b,value,ID_GetHardware,10);
+}
+
+GSM_Error DCT4_GetProductCode(GSM_StateMachine *s, char *value)
+{
+ return NOKIA_GetPhoneString(s,"\x00\x03\x04\x0b\x00\x02",6,0x1b,value,ID_GetProductCode,10);
+}
+
+GSM_Error DCT4_Reset(GSM_StateMachine *s, bool hard)
+{
+ unsigned char req[] = {N6110_FRAME_HEADER, 0x05,
+ 0x80, /* 0x80 - reset, 0x00 - off */
+ 0x00};
+// unsigned char TimeReq[] = {N6110_FRAME_HEADER, 0x0E, 0x00, 0x00};
+
+ if (hard) return ERR_NOTSUPPORTED;
+
+// error = DCT4_SetPhoneMode(s, DCT4_MODE_TEST);
+// if (error != ERR_NONE) return error;
+// error = DCT4_SetPhoneMode(s, DCT4_MODE_NORMAL);
+// if (error != ERR_NONE) return error;
+
+ s->Phone.Data.EnableIncomingSMS = false;
+ s->Phone.Data.EnableIncomingCB = false;
+
+ return GSM_WaitFor (s, req, 6, 0x15, 2, ID_Reset);
+}
+
+#endif
+
+/* How should editor hadle tabs in this file? Add editor commands here.
+ * vim: noexpandtab sw=8 ts=8 sts=8:
+ */