[PATCH 08/12] gatchat: fix gatsyntax to support +CPOS

2011-03-24 Thread Jarko Poutiainen
---
 gatchat/gatsyntax.c |   27 +++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c
index 2fc70b8..469ffc3 100644
--- a/gatchat/gatsyntax.c
+++ b/gatchat/gatsyntax.c
@@ -44,6 +44,7 @@ enum GSMV1_STATE {
GSMV1_STATE_PROMPT,
GSMV1_STATE_ECHO,
GSMV1_PPP_DATA,
+   GSMV1_STATE_SHORT_PROMPT,
 };
 
 enum GSM_PERMISSIVE_STATE {
@@ -53,6 +54,7 @@ enum GSM_PERMISSIVE_STATE {
GSM_PERMISSIVE_STATE_GUESS_PDU,
GSM_PERMISSIVE_STATE_PDU,
GSM_PERMISSIVE_STATE_PROMPT,
+   GSM_PERMISSIVE_STATE_SHORT_PROMPT,
 };
 
 static void gsmv1_hint(GAtSyntax *syntax, GAtSyntaxExpectHint hint)
@@ -64,6 +66,9 @@ static void gsmv1_hint(GAtSyntax *syntax, GAtSyntaxExpectHint 
hint)
case G_AT_SYNTAX_EXPECT_MULTILINE:
syntax-state = GSMV1_STATE_GUESS_MULTILINE_RESPONSE;
break;
+   case G_AT_SYNTAX_EXPECT_SHORT_PROMPT:
+   syntax-state = GSMV1_STATE_SHORT_PROMPT;
+   break;
default:
break;
};
@@ -200,6 +205,16 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
syntax-state = GSMV1_STATE_RESPONSE;
return G_AT_SYNTAX_RESULT_UNSURE;
 
+   case GSMV1_STATE_SHORT_PROMPT:
+   if (byte == '\r')
+   break;
+   else if (byte == '\n') {
+   syntax-state = GSMV1_STATE_IDLE;
+   i += 1;
+   res = G_AT_SYNTAX_RESULT_PROMPT;
+   goto out;
+   }
+
case GSMV1_STATE_ECHO:
/* This handles the case of echo of the PDU terminated
 * by CtrlZ character
@@ -239,6 +254,8 @@ static void gsm_permissive_hint(GAtSyntax *syntax, 
GAtSyntaxExpectHint hint)
 {
if (hint == G_AT_SYNTAX_EXPECT_PDU)
syntax-state = GSM_PERMISSIVE_STATE_GUESS_PDU;
+   else if (hint == G_AT_SYNTAX_EXPECT_SHORT_PROMPT)
+   syntax-state = GSM_PERMISSIVE_STATE_SHORT_PROMPT;
 }
 
 static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax,
@@ -303,6 +320,16 @@ static GAtSyntaxResult gsm_permissive_feed(GAtSyntax 
*syntax,
syntax-state = GSM_PERMISSIVE_STATE_RESPONSE;
return G_AT_SYNTAX_RESULT_UNSURE;
 
+   case GSM_PERMISSIVE_STATE_SHORT_PROMPT:
+   if (byte == '\r')
+   break;
+   else if (byte == '\n') {
+   syntax-state = GSM_PERMISSIVE_STATE_IDLE;
+   i += 1;
+   res = G_AT_SYNTAX_RESULT_PROMPT;
+   goto out;
+   }
+
default:
break;
};
-- 
1.7.0.4

___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: [PATCH 08/12] gatchat: fix gatsyntax to support +CPOS

2011-03-18 Thread Jarko Poutiainen
Hi Denis,

On Fri, 2011-03-18 at 06:53 +0200, Denis Kenzior wrote:
 Hi Jarko,
 
 On 03/11/2011 06:23 AM, Jarko Poutiainen wrote:
  ---
   gatchat/gatsyntax.c |   19 +++
   1 files changed, 19 insertions(+), 0 deletions(-)
  
  diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c
  index 2fc70b8..f1d896b 100644
  --- a/gatchat/gatsyntax.c
  +++ b/gatchat/gatsyntax.c
  @@ -64,6 +64,9 @@ static void gsmv1_hint(GAtSyntax *syntax, 
  GAtSyntaxExpectHint hint)
  case G_AT_SYNTAX_EXPECT_MULTILINE:
  syntax-state = GSMV1_STATE_GUESS_MULTILINE_RESPONSE;
  break;
  +   case G_AT_SYNTAX_EXPECT_SHORT_PROMPT:
  +   syntax-state = GSMV1_STATE_PROMPT;
  +   break;
  default:
  break;
  };
  @@ -195,6 +198,13 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
  i += 1;
  res = G_AT_SYNTAX_RESULT_PROMPT;
  goto out;
  +   } else if (byte == '\r')
  +   break;
  +   else if (byte == '\n') {
  +   syntax-state = GSMV1_STATE_IDLE;
  +   i += 1;
  +   res = G_AT_SYNTAX_RESULT_PROMPT;
  +   goto out;
 
 Please just create a dedicated state for this one and don't hack the
 PROMPT state.
 
Ok, good point.

  }
   
  syntax-state = GSMV1_STATE_RESPONSE;
  @@ -239,6 +249,8 @@ static void gsm_permissive_hint(GAtSyntax *syntax, 
  GAtSyntaxExpectHint hint)
   {
  if (hint == G_AT_SYNTAX_EXPECT_PDU)
  syntax-state = GSM_PERMISSIVE_STATE_GUESS_PDU;
  +   else if (hint == G_AT_SYNTAX_EXPECT_SHORT_PROMPT)
  +   syntax-state = GSM_PERMISSIVE_STATE_PROMPT;
   }
   
   static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax,
  @@ -298,6 +310,13 @@ static GAtSyntaxResult gsm_permissive_feed(GAtSyntax 
  *syntax,
  i += 1;
  res = G_AT_SYNTAX_RESULT_PROMPT;
  goto out;
  +   } else if (byte == '\r')
  +   break;
  +   else if (byte == '\n') {
  +   syntax-state = GSM_PERMISSIVE_STATE_IDLE;
  +   i += 1;
  +   res = G_AT_SYNTAX_RESULT_PROMPT;
  +   goto out;
 
 Same comment here, and man you better pray that your modem doesn't
 insert unsolicited notifications between you sending a CPOSR and you
 receiving a prompt ;)
 
Yep. Btw now that I think about it, shouldn't the patch that I proposed
to ste.c help? I know it's ste specific solution but still..

  }
   
  syntax-state = GSM_PERMISSIVE_STATE_RESPONSE;
 
 Regards,
 -Denis
Br,
Jarko


___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: [PATCH 08/12] gatchat: fix gatsyntax to support +CPOS

2011-03-18 Thread Denis Kenzior
Hi Jarko,

 @@ -298,6 +310,13 @@ static GAtSyntaxResult gsm_permissive_feed(GAtSyntax 
 *syntax,
 i += 1;
 res = G_AT_SYNTAX_RESULT_PROMPT;
 goto out;
 +   } else if (byte == '\r')
 +   break;
 +   else if (byte == '\n') {
 +   syntax-state = GSM_PERMISSIVE_STATE_IDLE;
 +   i += 1;
 +   res = G_AT_SYNTAX_RESULT_PROMPT;
 +   goto out;

 Same comment here, and man you better pray that your modem doesn't
 insert unsolicited notifications between you sending a CPOSR and you
 receiving a prompt ;)

 Yep. Btw now that I think about it, shouldn't the patch that I proposed
 to ste.c help? I know it's ste specific solution but still..

If you mean running GNSS on a dedicated mux channel, then yes it will
help ;)

But really, using a proper prompt would be way better.

Regards,
-Denis
___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: [PATCH 08/12] gatchat: fix gatsyntax to support +CPOS

2011-03-17 Thread Denis Kenzior
Hi Jarko,

On 03/11/2011 06:23 AM, Jarko Poutiainen wrote:
 ---
  gatchat/gatsyntax.c |   19 +++
  1 files changed, 19 insertions(+), 0 deletions(-)
 
 diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c
 index 2fc70b8..f1d896b 100644
 --- a/gatchat/gatsyntax.c
 +++ b/gatchat/gatsyntax.c
 @@ -64,6 +64,9 @@ static void gsmv1_hint(GAtSyntax *syntax, 
 GAtSyntaxExpectHint hint)
   case G_AT_SYNTAX_EXPECT_MULTILINE:
   syntax-state = GSMV1_STATE_GUESS_MULTILINE_RESPONSE;
   break;
 + case G_AT_SYNTAX_EXPECT_SHORT_PROMPT:
 + syntax-state = GSMV1_STATE_PROMPT;
 + break;
   default:
   break;
   };
 @@ -195,6 +198,13 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
   i += 1;
   res = G_AT_SYNTAX_RESULT_PROMPT;
   goto out;
 + } else if (byte == '\r')
 + break;
 + else if (byte == '\n') {
 + syntax-state = GSMV1_STATE_IDLE;
 + i += 1;
 + res = G_AT_SYNTAX_RESULT_PROMPT;
 + goto out;

Please just create a dedicated state for this one and don't hack the
PROMPT state.

   }
  
   syntax-state = GSMV1_STATE_RESPONSE;
 @@ -239,6 +249,8 @@ static void gsm_permissive_hint(GAtSyntax *syntax, 
 GAtSyntaxExpectHint hint)
  {
   if (hint == G_AT_SYNTAX_EXPECT_PDU)
   syntax-state = GSM_PERMISSIVE_STATE_GUESS_PDU;
 + else if (hint == G_AT_SYNTAX_EXPECT_SHORT_PROMPT)
 + syntax-state = GSM_PERMISSIVE_STATE_PROMPT;
  }
  
  static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax,
 @@ -298,6 +310,13 @@ static GAtSyntaxResult gsm_permissive_feed(GAtSyntax 
 *syntax,
   i += 1;
   res = G_AT_SYNTAX_RESULT_PROMPT;
   goto out;
 + } else if (byte == '\r')
 + break;
 + else if (byte == '\n') {
 + syntax-state = GSM_PERMISSIVE_STATE_IDLE;
 + i += 1;
 + res = G_AT_SYNTAX_RESULT_PROMPT;
 + goto out;

Same comment here, and man you better pray that your modem doesn't
insert unsolicited notifications between you sending a CPOSR and you
receiving a prompt ;)

   }
  
   syntax-state = GSM_PERMISSIVE_STATE_RESPONSE;

Regards,
-Denis
___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


[PATCH 08/12] gatchat: fix gatsyntax to support +CPOS

2011-03-11 Thread Jarko Poutiainen
---
 gatchat/gatsyntax.c |   19 +++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c
index 2fc70b8..f1d896b 100644
--- a/gatchat/gatsyntax.c
+++ b/gatchat/gatsyntax.c
@@ -64,6 +64,9 @@ static void gsmv1_hint(GAtSyntax *syntax, GAtSyntaxExpectHint 
hint)
case G_AT_SYNTAX_EXPECT_MULTILINE:
syntax-state = GSMV1_STATE_GUESS_MULTILINE_RESPONSE;
break;
+   case G_AT_SYNTAX_EXPECT_SHORT_PROMPT:
+   syntax-state = GSMV1_STATE_PROMPT;
+   break;
default:
break;
};
@@ -195,6 +198,13 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
i += 1;
res = G_AT_SYNTAX_RESULT_PROMPT;
goto out;
+   } else if (byte == '\r')
+   break;
+   else if (byte == '\n') {
+   syntax-state = GSMV1_STATE_IDLE;
+   i += 1;
+   res = G_AT_SYNTAX_RESULT_PROMPT;
+   goto out;
}
 
syntax-state = GSMV1_STATE_RESPONSE;
@@ -239,6 +249,8 @@ static void gsm_permissive_hint(GAtSyntax *syntax, 
GAtSyntaxExpectHint hint)
 {
if (hint == G_AT_SYNTAX_EXPECT_PDU)
syntax-state = GSM_PERMISSIVE_STATE_GUESS_PDU;
+   else if (hint == G_AT_SYNTAX_EXPECT_SHORT_PROMPT)
+   syntax-state = GSM_PERMISSIVE_STATE_PROMPT;
 }
 
 static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax,
@@ -298,6 +310,13 @@ static GAtSyntaxResult gsm_permissive_feed(GAtSyntax 
*syntax,
i += 1;
res = G_AT_SYNTAX_RESULT_PROMPT;
goto out;
+   } else if (byte == '\r')
+   break;
+   else if (byte == '\n') {
+   syntax-state = GSM_PERMISSIVE_STATE_IDLE;
+   i += 1;
+   res = G_AT_SYNTAX_RESULT_PROMPT;
+   goto out;
}
 
syntax-state = GSM_PERMISSIVE_STATE_RESPONSE;
-- 
1.7.0.4

___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono