Hi Henrik,
Thanks much for your help.  Got the data call up and running, seems stable.
Seems like you just can't put the response[2] pointer into the property_get
call for some reason. Thought I had it initialized large enough also.  Oh
well.

Now the web browser seems to hang, log msgs indicate it gets no response
when searching for a web site.  Looking into apn settings, and if we have
the ip address correct.  You did say the local-ip should be passed back in
the response to setup_data_call, correct?  Not the remote-ip?  Actually
neither seems to work at this point.

Mike

On Tue, May 18, 2010 at 2:19 AM, Uhrenfeldt Henrik <
henrik.uhrenfe...@ixonos.com> wrote:

> Hi Mike,
>
> I suspect I have had the same problems. I can see that I use a two-step
> solution to ensure that the string containing the IP is sufficiently big and
> does not get overwritten when the function exits (as would normally be the
> case with variables local to a function).
>
> static char address_ip[PROPERTY_VALUE_MAX];
>
> err = property_get("net.gprs.local-ip", address_ip ,"");
> response[2] = address_ip;
>
> I suppose that property_get writes more into the response[2] char* than
> initially allocated, OR response[2]'s area on the stack is used for
> something else immediately after the function exits...
>
> - Henrik
>
> -----Original Message-----
> From: M&M stich [mailto:mstic...@gmail.com]
> Sent: 17. maj 2010 22:50
> To: Uhrenfeldt Henrik; android-porting
> Subject: Re: Data connection via cell modem (GPRS)
>
> Hi Henrik,
> Removing all variables from the LOGD calls did not change anything.
>
> After multiple experiments with the placement of LOGD's, I believe it is
> crashing whenever property_get is executed.  Can never get by that:
>
>        len = property_get("net.gprs.local-ip",response[2], NULL);
>
> I printed out response[0], [1], and [2], before this call and they look
> correct..
> Mike
>
>
> On Mon, May 17, 2010 at 8:06 AM, Uhrenfeldt Henrik <
> henrik.uhrenfe...@ixonos.com> wrote:
>
>
>        Hi Mike,
>
>        I still think the RIL crashes if you get the two lines:
>
>
>               E/RILJ    (  929): Hit EOS reading message length
>               I/RILJ    (  929): Disconnected from 'rild' socket
>
>
>        The log message is confusing because the java process somehow
> finishes its ongoing function call through JNI when the lowlevel RIL
> crashes. If changing the invalid index did not do the trick, then we have to
> look for something else. Try modifying your debug line not to reference any
> variables at all - we need to make sure that RIL does not crash..
>
>        Regarding the setting of local-ip in ip-down, I thought about the
> very same thing, but you end up in trouble waiting for local-ip being set if
> fx. ppp fails to initialize (this happens in my setup from time to time). In
> that case you need to wait for both ppp exit code AND local-ip. Thus I ended
> up making one single property which was being set from both ppp-init script
> (after PPP exit) as well as ip-up and ip-down.
>
>
>        - Henrik
>
>        -----Original Message-----
>        From: M&M stich [mailto:mstic...@gmail.com]
>
>        Sent: 17. maj 2010 14:57
>        To: Uhrenfeldt Henrik; android-porting
>        Subject: Re: Data connection via cell modem (GPRS)
>
>        Yes, I noticed that shortly after I sent the message.  Fixing it did
> not change anything.
>
>        It appears that readRilMessage in RIL.java is executing before the
> response is sent.  I don't understand why this should happen.
>
>        I was going to clear the net.gprs.local-ip property in the ip-down
> script so that it would work multiple times.  Then it could be reset in the
> ip-up script like it currently is.  Would that not work similarly to another
> property?
>
>        Thanks much for the help.
>        Mike
>
>
>        On Mon, May 17, 2010 at 2:27 AM, Uhrenfeldt Henrik <
> henrik.uhrenfe...@ixonos.com> wrote:
>
>
>               Hi Stich,
>
>               Please keep the list on copy - then everybody will learn from
> this :-)
>
>               Anyway, I think your problem is in the line:
>
>
>               LOGD(" --- PPPD started successfully; IP local : %s  Retry
> count : %d",response[3],retry);
>
>
>               In fact response[] is only three elements big, and you refer
> to index 3 instead of 2. I bet the code successfully exits the loop and
> attempts to execute the debug print, hits a NULL pointer and the low-level
> part of RIL crashes. This is confirmed by the debug lines
>
>
>               E/RILJ    (  929): Hit EOS reading message length
>               I/RILJ    (  929): Disconnected from 'rild' socket
>
>
>               I have crashed the low-level RIL many times, and every time I
> get this message :-)
>
>               I bet that if you change response[3] to response[2] it will
> be working. That being said this will work only once, since next time you
> attempt connection, local-ip will be set already. I introduced yet another
> property which I set to a kind of state information (ie.
> down/initializing/up). Again this synchronization through properties really
> is the worst part of this setup, and I have been able to stabilize it
> 100%...
>
>               - Henrik
>
>
>               -----Original Message-----
>               From: M&M stich [mailto:mstic...@gmail.com]
>               Sent: 14. maj 2010 21:44
>               To: Robert Greenwalt; Uhrenfeldt Henrik
>               Subject: Data connection via cell modem (GPRS)
>
>               Made some progress.  When SETUP_DATA_CALL is called, my ril
> starts the pppd via ctl.start, and that seems to work.  The deamon does seem
> to start and the associated properties seem to be set. (Doing a "start
> service" from the console works)   I've put log messages at each step, when
> it starts, when it waits for the local-ip property to be set (which is set
> in ip-up), when that completes, and when it does the RilRequestComplete
> call.
>
>               It never gets  to the end.  RIL.java seems to think it has a
> response  before the request completes, then errors out because it reached
> "EOS"   Here is a snippet of the radio logcat.  Messages that have "---" are
> ones I put in the reference-ril in the SETUP_DATA_CALL.  There should be the
> 4 mentioned above.  It never finishes the wait for the local-ip property.
>
>               I can't figure out why RIL.java thinks it should go read a
> response before there has been a reply to the request.
>               Thanks.
>               Mike
>
> ------------------------------------------------------------------
>               D/GSM     (  929): [GsmSimCard] Broadcasting intent
> SIM_STATE_CHANGED_ACTION LOADED reason null
>               D/GSM     (  929): Get PreferredAPN
>               D/GSM     (  929): [GsmDataConnectionTracker] ***trySetupData
> due to simLoaded
>               D/GSM     (  929): [DSAC DEB] trySetupData with
> mIsPsRestricted=false
>               D/GSM     (  929): [GsmDataConnectionTracker] Create from
> allApns : [ATT, 1, 310410, wap.cingular,  wireless.cingular.com,
> http://mmsc.cingular.com, null, null, 80, *]
>               D/GSM     (  929): [GsmDataConnectionTracker] Setup
> watingApns : [ATT, 1, 310410, wap.cingular,  wireless.cingular.com,
> http://mmsc.cingular.com, null, null, 80, *]
>               D/GSM     (  929): [PdpConnection] DataConnection.getState()
>               D/GSM     (  929): [PdpConnection] Connecting to carrier:
> 'ATT' APN: 'wap.cingular' proxy: ' wireless.cingular.com' port: '80
>               D/RILJ    (  929): [0060]> SETUP_DATA_CALL wap.cingular
>               D/RIL     (  811): onRequest: SETUP_DATA_CALL
>               D/RIL     (  811): requesting data connection to APN
> 'wap.cingular'
>               D/RIL     (  811):  ---- Starting service pppd_gprs -----
>               D/RIL     (  811):  ---- starting wait for property -----
>  prop set return code is 0
>               D/GSM     (  929): [GsmDataConnectionTracker] setState:
> INITING
>               E/RILJ    (  929): Hit EOS reading message length
>               I/RILJ    (  929): Disconnected from 'rild' socket
>
>               Here is the code:
>                      err = property_set("ctl.start","pppd_gprs");    //
> Tell init to start the pppd_gprs service
>                      LOGD(" ---- Starting service pppd_gprs ----- ");
>                      if(err<0)
>                      {
>                          LOGD("####  error in starting service pppd_gprs;
>  err :  %d",err);
>                          goto error;
>                      }
>                      retry = 100;
>                      LOGD(" ---- starting wait for property -----  prop set
> return code is %d",err);
>                      while((property_get("net.gprs.local-ip",response[2],
> "") <= 0) && --retry)
>                      {
>                          usleep(5*1000);        // sleep 5ms
>                      }
>
>                      LOGD(" --- PPPD started successfully; IP local : %s
>  Retry count : %d",response[3],retry);
>                      ......
>                  LOGD(" --- Returning from setup data call, response length
> is %d",sizeof(response));
>                  RIL_onRequestComplete(t, RIL_E_SUCCESS, response,
> sizeof(response));
>
>
>
>
>
>
>
>
>
>
>
>

-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting

Reply via email to