Hi
Why my BT device isn't responding when I'm sending
any commands for example to read BT_ADDR like this: 0x01 0x00 0x09.
It doesn't respond to me, even with an error code -
nothing.
But when I use first code from blueZ hciconfig like
this
int clen = 0,
i;
/* Command len */
static int csr_seq = 0; /*
Sequence number of command */
int
divisor;
/* Try to read the build ID of the CSR chip
*/
clen = 5 + (5 + 6) * 2;
/* HCI header */
cmd[0] = HCI_COMMAND_PKT;
cmd[1] =
0x09; /* CSR command */
cmd[2] = 0xfc; /*
MANUFACTURER_SPEC */
cmd[3] = 1 + (5 + 6) * 2; /* len
*/
/* CSR MSG header
*/
cmd[4] = 0xC2; /* first+last+channel=BCC
*/
/* CSR BCC header
*/
cmd[5] = 0x00; /* type = GET-REQ */
cmd[6] =
0x00; /* - msB */
cmd[7] = 5 + 4; /* len
*/
cmd[8] = 0x00; /* - msB */
cmd[9] = csr_seq
& 0xFF;/* seq num */
cmd[10] = (csr_seq >> 8) &
0xFF; /* - msB */
csr_seq++;
cmd[11] =
0x19; /* var_id = CSR_CMD_BUILD_ID */
cmd[12] =
0x28; /* - msB */
cmd[13] = 0x00; /* status =
STATUS_OK */
cmd[14] = 0x00; /* - msB
*/
/* CSR BCC payload
*/
memset(cmd + 15, 0, 6 * 2);
do{
for (i=0;
i < clen+1; i++) PutByteU0 (cmd[i]);
read_hci_event(resp,100);
}while (resp[1] !=
0xff);
/* Try to read the current speed of the CSR chip */
clen = 5 + (5
+ 4)*2;
/* -- HCI header
*/
cmd[0] = HCI_COMMAND_PKT;
cmd[1] = 0x09; /* CSR
command */
cmd[2] = 0xfc; /* MANUFACTURER_SPEC
*/
cmd[3] = 1 + (5 + 4)*2; /* len
*/
/* -- CSR BCC header
-- */
cmd[9] = csr_seq & 0xFF; /* seq num */
cmd[10]
= (csr_seq >> 8) & 0xFF; /* - msB
*/
csr_seq++;
cmd[11] = 0x02; /* var_id =
CONFIG_UART */
cmd[12] = 0x68; /* - msB
*/
/* Now, create the command that will set the UART speed
*/
/* CSR BCC header
*/
cmd[5] = 0x02; /* type = SET-REQ */
cmd[6]
= 0x00; /* - msB */
cmd[9] = csr_seq &
0xFF; /* seq num */
cmd[10] = (csr_seq >> 8) & 0xFF;/* -
msB */
csr_seq++;
divisor =
(921600*64+7812)/15625;
/* No parity, one
stop bit -> divisor |= 0x0000; */
cmd[15] = (divisor) &
0xFF; /* divider */
cmd[16] = (divisor >> 8) &
0xFF; /* - msB */
/* The rest of the payload will be 0x00
*/
for (i=0; i < clen;
i++) PutByteU0 (cmd[i]);
It answers like this: 04 FF 13 C2 01 00 09 00 02 00
02 68 00 00 BF 0E 00 00 00 00
What is it? Is it kind of special bits of csr chip
or what?
I know it is event but after this BT responds only
for bad commands like this 04 10 01 fe but when I try read BT_ADDR it's
quiet.
What this code is up to?
Please send me UART specification or sth where it's
written how to set this up and howto communicate with csr chip. It's very
important for me !
I spent almost 2 weeks to find out how to
communicate whit it and nothing works good. I don't know where to find some
info. I looked almost everywhere?
Regards
Maciej
Maciej Zubilewicz