* [Bluez-devel] ttyS0 problem [not found] <1128906830.2417.1.camel@localhost.localdomain> @ 2005-10-10 1:53 ` david 2005-10-10 3:19 ` Marcel Holtmann 0 siblings, 1 reply; 5+ messages in thread From: david @ 2005-10-10 1:53 UTC (permalink / raw) To: bluez-devel Hi marcel, =D4=DA 2005-10-10=D2=BB=B5=C4 09:13 +0800=A3=ACdavid=D0=B4=B5=C0=A3=BA > Hi David, > =20 > > 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 > > If I write the same command in the function texas(int fd, struct > > uart_t *u, struct termios *ti), it succeeds. > > From bluez-utiles I see the following code which maybe > > the reason why I can't write the command to ttyS0 after running > > hciattach ttyS0 texas. > > =20 > > /* Set TTY to N_HCI line discipline */ > > i =3D N_HCI; > > if (ioctl(fd, TIOCSETD, &i) < 0) { > > perror("Can't set line discipline"); > > return -1; > > } > > =20 > > It seems the codes is very important ,because if I delete these > > codes, the following codes can't run any more. > > =20 > > Is there any method that I can write the command to the ttyS0 > > successfully after step 1? > =20 > after step 1, you must use the HCI raw socket to send commands. What > commands do you wanna send? > =20 > Regards > =20 > Marcel =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 BT device receives the command, maybe it would response HCILL_GO_TO_SLEEP_ACK(0x31) command to the host. > after step 1, you must use the HCI raw socket to send commands Is this means we cannot write command to ttyS0 directly through write() function? 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Bluez-devel] ttyS0 problem 2005-10-10 1:53 ` [Bluez-devel] ttyS0 problem david @ 2005-10-10 3:19 ` Marcel Holtmann 0 siblings, 0 replies; 5+ messages in thread From: Marcel Holtmann @ 2005-10-10 3:19 UTC (permalink / raw) To: bluez-devel Hi David, > > 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 BT > device receives the command, maybe it would response > HCILL_GO_TO_SLEEP_ACK(0x31) command to the host. 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? > > after step 1, you must use the HCI raw socket to send commands > > Is this means we cannot write command to ttyS0 directly through write() > function? After calling hciattach the kernel takes over the serial port via the line discipline and the reads and writes are useless. Regards Marcel ------------------------------------------------------- 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <1129010637.2346.1.camel@localhost.localdomain>]
* [Bluez-devel] ttyS0 problem [not found] <1129010637.2346.1.camel@localhost.localdomain> @ 2005-10-11 6:39 ` david 0 siblings, 0 replies; 5+ messages in thread From: david @ 2005-10-11 6:39 UTC (permalink / raw) To: bluez-devel 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bluez-devel] ttyS0 problem
@ 2005-10-09 16:38 davidgchen
2005-10-09 16:45 ` Marcel Holtmann
0 siblings, 1 reply; 5+ messages in thread
From: davidgchen @ 2005-10-09 16:38 UTC (permalink / raw)
To: bluez-devel
[-- Attachment #1: Type: text/plain, Size: 940 bytes --]
Hi marcel,
I want to write some commands to the uart(ttyS0), but it fails. The steps are as follows:
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.
If I write the same command in the function texas(int fd, struct uart_t *u, struct termios *ti), it succeeds.
From bluez-utiles I see the following code which maybe the reason why I can't write the command to ttyS0 after running hciattach ttyS0 texas.
/* Set TTY to N_HCI line discipline */
i = N_HCI;
if (ioctl(fd, TIOCSETD, &i) < 0) {
perror("Can't set line discipline");
return -1;
}
It seems the codes is very important ,because if I delete these codes, the following codes can't run any more.
Is there any method that I can write the command to the ttyS0 successfully after step 1?
regurds,
David
[-- Attachment #2: Type: text/html, Size: 2097 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Bluez-devel] ttyS0 problem 2005-10-09 16:38 davidgchen @ 2005-10-09 16:45 ` Marcel Holtmann 0 siblings, 0 replies; 5+ messages in thread From: Marcel Holtmann @ 2005-10-09 16:45 UTC (permalink / raw) To: bluez-devel Hi David, > I want to write some commands to the uart(ttyS0), but it fails. > The steps are as follows: > > 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. > > If I write the same command in the function texas(int fd, struct > uart_t *u, struct termios *ti), it succeeds. > From bluez-utiles I see the following code which maybe > the reason why I can't write the command to ttyS0 after running > hciattach ttyS0 texas. > > /* Set TTY to N_HCI line discipline */ > i = N_HCI; > if (ioctl(fd, TIOCSETD, &i) < 0) { > perror("Can't set line discipline"); > return -1; > } > > It seems the codes is very important ,because if I delete these > codes, the following codes can't run any more. > > Is there any method that I can write the command to the ttyS0 > successfully after step 1? after step 1, you must use the HCI raw socket to send commands. What commands do you wanna send? Regards Marcel ------------------------------------------------------- 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-10-11 6:39 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1128906830.2417.1.camel@localhost.localdomain>
2005-10-10 1:53 ` [Bluez-devel] ttyS0 problem david
2005-10-10 3:19 ` Marcel Holtmann
[not found] <1129010637.2346.1.camel@localhost.localdomain>
2005-10-11 6:39 ` david
2005-10-09 16:38 davidgchen
2005-10-09 16:45 ` Marcel Holtmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).