Linux bluetooth development
 help / color / mirror / Atom feed
From: david <gangchen@mobilesoft.com.cn>
To: bluez-devel@lists.sourceforge.net
Subject: [Bluez-devel] ttyS0 problem
Date: Tue, 11 Oct 2005 14:39:10 +0800	[thread overview]
Message-ID: <1129012750.2346.33.camel@localhost.localdomain> (raw)
In-Reply-To: <1129010637.2346.1.camel@localhost.localdomain>

Hi marcel,

=D4=DA 2005-10-11=B6=FE=B5=C4 14:03 +0800=A3=ACdavid=D0=B4=B5=C0=A3=BA
>  Hi David,

>  > I want to write some commands to the uart(ttyS0), but it fails.
 >  > The steps are as follows:
 >  > =20
 >  > 1. hciattach ttyS0 texas
 >  > 2. Open ttyS0 device again and get a fd, init ttyS0 with speed,
 >  > flow_ctl and so on,then write a command(0x30) to the fd but return
 >  > 0; That is nothing is written to ttyS0.
 >  > =20
> marcel write,=20
>  > > What commands do you wanna send?
>  > The command is HCI_GO_TO_SLEEP_IND(0x30) which is only one byte. It is=
 a
>  > vendor specific command used to ask the BT device to go to sleep. If B=
T
>  > device receives the command, maybe it would response
>  > HCILL_GO_TO_SLEEP_ACK(0x31) command to the host.
> =20
>  do you have the specification of these vendor commands? Is this command
>  according to the HCI specification or is it an extension of the H:4
>  transport protocol?
> =20
>  > > after step 1, you  must use the HCI raw socket to send commands
>  >=20
>  > Is this means we cannot write command to ttyS0 directly through write(=
)
>  > function?
> =20
>  After calling hciattach the kernel takes over the serial port via the
>  line discipline and the reads and writes are useless.
> =20
>  Regards
> =20
>  Marcel



Now, I can write command(0x30) to ttyS0 driectly after hciattach tty0
texas(assume step 1);
The function is as follows(assume step 2):

static int write_cmd_to_ttyS0()

{
                int fdd;
                int len;
                char cmd[5];
                int temp;
                int dd;
   =20
                fdd =3D open("/dev/ttyS0", O_RDWR | O_NOCTTY);
                if (fdd < 0) {
                        printf("Can't open serial port, fd =3D %d\n",fdd);
                        return -1;
       		  }
                else
                        printf("open serial ok, fd =3D %d\n", fdd);
             =20
		  temp =3D 0;
                if (ioctl(fdd, TIOCSETD, &temp) < 0) {
                        perror("Can't set line discipline");
                        return -1;
                  }

                cmd[0] =3D 0x30;//HCILL_GO_TO_SLEEP_IND

                len =3D write(fdd, cmd, 1);
                printf("write %d byte\n", len);
                len =3D read(fdd, cmd, 1);
                printf("read %d byte cmd[0] =3D %d\n", len, cmd[0]);

                temp =3D N_HCI;
                if (ioctl(fdd, TIOCSETD, &temp) < 0) {
                        perror("Can't set line discipline");
                        return -1;
                }
                if (ioctl(fdd, HCIUARTSETPROTO, 0) < 0) {
                        perror("Can't set device");
                        return -1;
                }
 }            =20

After step 2,  step3 and step 4 run successfully.=20

step 3: hciconfig hci0 up
step 4: hcitool scan

If I change the steps as follows, an error occures in step 4, the error
is "Device is not available". Do you know why? How can I step 4 can run
successfully after step 3?

step 1: hciattach ttyS0 texas
Step 2: hciconfig hci0 up
step 3: write_cmd_to_ttyS0()
step 4: hcitool scan

/*** cmd_scan() ****/
   if (dev_id < 0) {
                dev_id =3D hci_get_route(NULL);
                if (dev_id < 0) {
                        perror("Device is not available");
                        exit(1);
                }
        }
/**********************/




Regards,

David



-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel

       reply	other threads:[~2005-10-11  6:39 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1129010637.2346.1.camel@localhost.localdomain>
2005-10-11  6:39 ` david [this message]
2005-10-11  7:05   ` [Bluez-devel] Re: ttyS0 problem david
     [not found] <1128906830.2417.1.camel@localhost.localdomain>
2005-10-10  1:53 ` [Bluez-devel] " david
2005-10-10  3:19   ` Marcel Holtmann
2005-10-09 16:38 davidgchen
2005-10-09 16:45 ` Marcel Holtmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1129012750.2346.33.camel@localhost.localdomain \
    --to=gangchen@mobilesoft.com.cn \
    --cc=bluez-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox