Anyone has ideas?

Basically, the question is why I cannot write data to the device
/dev/pts/1 after this device is taken by PPP daemon.

Thanks

2011/3/11 Jacky.Seraph Mun <[email protected]>:
> Hello,
>
>
> I use the virtual channel daemon and the multiplex mode to create 2
> channels to connect to GSM modem. One is for AT command and the other
> one is for gprs connection.
> The moment the APN is set, it will try to switch to data mode on the
> GPRS channel by sending some related AT commands and start the PPP
> daemon with it. Then the ppp net device is created and i am able to
> send and receive data by java socket over this device.
>
> But when I try to disconnect the gprs connection by changing APN, I
> got a problem that I can't send any at command to GPRS channel and
> always get writing error code 11 (EAGAIN).
>
> Actually most of my code is based on freerunner froyo.
>
> My GSM modem is SIM900A.
>
> The gprs channel is opened by
>
>
>                fd_gprs = open ("/dev/pts/1", O_RDWR | O_NONBLOCK);
>                if ( fd_gprs >= 0 ) {
>                    struct termios  ios;
>                    tcgetattr(fd_gprs, &ios);
>                    ios.c_lflag = 0;
>                    cfsetispeed(&ios, B115200);
>                    cfsetospeed(&ios, B115200);
>                    tcsetattr(fd_gprs, TCSANOW, &ios );
>                }
>
> The pppd is started with the options:
>
> /dev/pts/1
> user
> password
> unit 1
> noauth
> nodetach
> default-asyncmap
> ipcp-accept-local
> ipcp-accept-remote
> usepeerdns
> defaultroute
>
>
>
> The disconnecting AT command I sent is
>
>
> int at_deactivate_modem(struct ATChannels *ATch)
> {
>    ...
>    ioctl(ATch->s_fd, TIOCSBRK, 0);
>    ioctl(ATch->s_fd, TIOCSBRK, 0);
>    ioctl(ATch->s_fd, TIOCSBRK, 0);
>
>    err = at_send_command_full_nolock (ATch, "+++AT", NO_RESULT,
>                                       NULL, NULL, CLOSE_TIMEOUT_MSEC,
>                                       NULL);
>
>    /* some stacks start with verbose off */
>    err = at_send_command_full_nolock (ATch, "ATH", NO_RESULT,
>                                       NULL, NULL, CLOSE_TIMEOUT_MSEC,
>                                       NULL);
>
>    err = at_send_command_full_nolock (ATch, "AT+CGACT=0", NO_RESULT,
>                                       NULL, NULL, CLOSE_TIMEOUT_MSEC,
>                                       NULL);
>
>    err = at_send_command_full_nolock (ATch, "AT+CGATT=0", NO_RESULT,
>                                       NULL, NULL, CLOSE_TIMEOUT_MSEC,
>                                       NULL);
>    ...
> }
>
> The err is always -1 and the errno is set to 11 accordingly.
>
> Could anyone has any ideas on this issue?
>
>
>
> Thanks,
>
> Jack
>

-- 
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting

Reply via email to