X-Git-Url: http://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fphones%2Fatgen.c;h=436523f9fd0d0e6f779a4377f18040f7fd9c505c;hp=48d39bbddf9145f774468b293b86a1504a1919a5;hb=6ea3cef1bb136cd56741cc56bdb5b2fc7051e032;hpb=24e1c79324b43b4f376f823da8406b777b6094c8 diff --git a/common/phones/atgen.c b/common/phones/atgen.c index 48d39bb..436523f 100644 --- a/common/phones/atgen.c +++ b/common/phones/atgen.c @@ -13,34 +13,6 @@ This file provides functions specific to generic at command compatible phones. See README for more details on supported mobile phones. - $Log$ - Revision 1.1.1.1.2.1 2001/11/27 04:37:59 short - Update: orig2001_11_25_22_56 -> orig2001_11_27_05_17 - - Revision 1.1.1.2 2001/11/27 04:19:30 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 05:17 CET 2001 - - Revision 1.7 2001/11/26 18:06:08 pkot - Checking for *printf functions, N_(x) for localization, generic ARRAY_LEN, SAFE_STRNCPY, G_GNUC_PRINTF (Jan Kratochvil) - - Revision 1.6 2001/11/19 13:03:18 pkot - nk3110.c cleanup - - Revision 1.5 2001/11/08 16:49:19 pkot - Cleanups - - Revision 1.4 2001/08/20 23:36:27 pkot - More cleanup in AT code (Manfred Jonsson) - - Revision 1.3 2001/08/20 23:27:37 pkot - Add hardware shakehand to the link layer (Manfred Jonsson) - - Revision 1.2 2001/08/09 11:51:39 pkot - Generic AT support updates and cleanup (Manfred Jonsson) - - Revision 1.1 2001/07/27 00:02:21 pkot - Generic AT support for the new structure (Manfred Jonsson) - */ #include @@ -68,6 +40,7 @@ static GSM_Error ReplyGetRFLevel(int messagetype, unsigned char *buffer, int len static GSM_Error ReplyGetBattery(int messagetype, unsigned char *buffer, int length, GSM_Data *data); static GSM_Error ReplyReadPhonebook(int messagetype, unsigned char *buffer, int length, GSM_Data *data); static GSM_Error ReplyMemoryStatus(int messagetype, unsigned char *buffer, int length, GSM_Data *data); +static GSM_Error ReplyCallDivert(int messagetype, unsigned char *buffer, int length, GSM_Data *data); static GSM_Error AT_Identify(GSM_Data *data, GSM_Statemachine *state); static GSM_Error AT_GetModel(GSM_Data *data, GSM_Statemachine *state); @@ -78,6 +51,7 @@ static GSM_Error AT_GetBattery(GSM_Data *data, GSM_Statemachine *state); static GSM_Error AT_GetRFLevel(GSM_Data *data, GSM_Statemachine *state); static GSM_Error AT_GetMemoryStatus(GSM_Data *data, GSM_Statemachine *state); static GSM_Error AT_ReadPhonebook(GSM_Data *data, GSM_Statemachine *state); +static GSM_Error AT_CallDivert(GSM_Data *data, GSM_Statemachine *state); typedef struct { int gop; @@ -101,6 +75,7 @@ static AT_FunctionInitType AT_FunctionInit[] = { { GOP_GetRFLevel, AT_GetRFLevel, ReplyGetRFLevel }, { GOP_GetMemoryStatus, AT_GetMemoryStatus, ReplyMemoryStatus }, { GOP_ReadPhonebook, AT_ReadPhonebook, ReplyReadPhonebook }, + { GOP_CallDivert, AT_CallDivert, ReplyCallDivert } }; @@ -366,6 +341,48 @@ static GSM_Error AT_ReadPhonebook(GSM_Data *data, GSM_Statemachine *state) } +static GSM_Error AT_CallDivert(GSM_Data *data, GSM_Statemachine *state) +{ + char req[64]; + + if (!data->CallDivert) return GE_UNKNOWN; + + sprintf(req, "AT+CCFC="); + + switch (data->CallDivert->DType) { + case GSM_CDV_AllTypes: + strcat(req, "4"); + break; + case GSM_CDV_Busy: + strcat(req, "1"); + break; + case GSM_CDV_NoAnswer: + strcat(req, "2"); + break; + case GSM_CDV_OutOfReach: + strcat(req, "3"); + break; + default: + dprintf("3. %d\n", data->CallDivert->DType); + return GE_NOTIMPLEMENTED; + } + if (data->CallDivert->Operation == GSM_CDV_Register) + sprintf(req, "%s,%d,\"%s\",%d,,,%d", req, + data->CallDivert->Operation, + data->CallDivert->Number.number, + data->CallDivert->Number.type, + data->CallDivert->Timeout); + else + sprintf(req, "%s,%d", req, data->CallDivert->Operation); + + strcat(req, "\r\n"); + + dprintf("%s", req); + if (SM_SendMessage(state, strlen(req), GOP_CallDivert, req) != GE_NONE) + return GE_NOTREADY; + return SM_WaitFor(state, data, GOP_CallDivert); +} + static GSM_Error Functions(GSM_Operation op, GSM_Data *data, GSM_Statemachine *state) { if (op == GOP_Init) @@ -540,6 +557,15 @@ static GSM_Error ReplyIdentify(int messagetype, unsigned char *buffer, int lengt return GE_NONE; } +static GSM_Error ReplyCallDivert(int messagetype, unsigned char *buffer, int length, GSM_Data *data) +{ + int i; + for (i = 0; i < length; i++) { + dprintf("%02x ", buffer[i]); + } + dprintf("\n"); + return GE_NONE; +} static GSM_Error Reply(int messagetype, unsigned char *buffer, int length, GSM_Data *data) {