- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
---------------------------------------------------------------------------------------------------
SDK: 2.2.2
Hardware: Tag3(Master) + Our Custom PCB-BCM20737S(Slave)
Firmware: hello_client + hello_sensor
---------------------------------------------------------------------------------------------------
Hi BRCM FAE,
As a continuation of this thread: Transmission times of connection event?
I'm sorry about my poor English,but I will describe my problem as much as possible.
I can got 1~4 packets in each connection event. The results are shown in fig. 1. You can see that the master send 4 packets to the slave in one connection event. The slave send 1 or 4 packets to the master . This is the result after I download the hello_client and hello_sensor to the chip.
fig.1 After download the firmware
But when I reset the master and slave, and I got different result. The results are shown in fig. 2. You can see that the master just send 1 packet in connection event, and some connection event didn't send any packet.
fig.2 After reset the MCU
The result of fig.1 and fig.2 is the same firmware. But I got different packet amount in connection event. Why has this phenomenon?
Hello_client firmware:
1. add GATT service
2. add auto scan(Because I disable GPIO interrupt)
3.change connection parameter in hello_client_create.
4.add puart function
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Hello_sensor firmware:
1. add GATT service
2. add notification callback function
3. send 15 notification packets to hello_client
4.change the Connection parameter update requeset
5. add puart function
Solved! Go to Solution.
- Labels:
-
MasterSlave
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My colleague from Avnet (Taipei) will get in touch with you on this query.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
All I can say at this juncture is that Fig 1 and 2 do make sense to me. Take the 4-packet transmission in Fig 1 for example, the MD bit was 1 from M to S for the first three packets and 0 in the 4th and last packet. This implied that the master must maintain the connection event and slave shall listen (and not by default end the connection) after sending its packet. Then, in Fig 2, the reason that only one packet was transmitted was because the MD bit was absent from both M and S. S will end the connection after sending its packet and that will be one complete connection event.
As to why only one packet (instead of four) was sent after performing a reset, it is not obvious to me. I will dig a little deeper into the speed_test app.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi boont,
Thanks for the quick response. The speed_test is a good sample so that we can know data rate of bcm20737s. But the master and slave isn't same chip(Mater-BCM20702 & Slave-BCM20737S in my test). I do not know that the different hardware(chip)will not affect the packet amount in connection event. So I use the hello_client and hello_sensor to test packet amount in connection event because both sides are the same hardware(chip).
We can call API to send the notification packet, and the BRCM BLE stack will store the packet into the TX queue. But we can't use the API to set the MD bit. The MD bit is set by BRCM BLE stack. So in what situation the MD will be set to "1"?
The attached is my code. I hope the situation(different packet amount in connection event) can be copied. Maybe you can found the reason.
Michelle,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is there a reason why you are investigating this issue of 4-packet per connection event? Are you trying to send a long characteristic?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi boont,
Thanks for the quick response.^^
Is there a reason why you are investigating this issue of 4-packet per connection event?
>I need a higher transmission speed in my application, and my project is base on hello_client and hello_sensor. How many packets that you can send in the connection event, it will affect the transmission speed. This is the reason why I investigating this issue.
Are you trying to send a long characteristic?
>I know sample code(long_char_big_mtu & long_characteristic) can send bulk data.
Michelle,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I tried out on my PC setup with a 20702 dongle and a tag3 eval board with the speed test app and I consistently get about 80kbps. FYI.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi boont,
Thank you for the test. ^^
But I would like to know why MD bit will set different pattern after reset.
As to why only one packet (instead of four) was sent after performing a reset, it is not obvious to me
>Can you find the reason? Is the firmware bug? Is the BLE stack limit the packet amout?
Michelle,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The speed test application represents the best case scenario for throughput that we can support in the broad market. There are probably ways in which the throughput could be improved upon, but it would require customizations and development support that is not available.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi mwf_mmfae,
I still want to know the reason. Why the MD bit will set different pattern after performing a reset?
Is the bug in my firmware? Incorrect connection parameters or the other reasons cause this problem? 😕
Michelle,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi mwf_mmfae,
According to Michelle's previous test:
Tag3(Master, hello_client) <==BLE==> Custom PCB-BCM20737S(Slave, hello_sensor)
(1) Both applications are run immediately after they are downloaded to the boards by WICED smart SDK => 4 packets in one connection event.
(2) Then, power cycle both boards => 1 packet in one connection event.
It doesn't make sense. Is there any solution to the problem?
Bruce
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Any solution to solve my problem?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I honestly do not know the answer.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi mwf_mmfae,
Can you ask the development team to find the answer?
Thank you.
Michelle,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Are you using "notification" as opposed to "indication"? As there is no acknowledgement required, this can speed up things a little.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi boont,
Thank you for comment.
Are you using "notification" as opposed to "indication"?
>Yes, I use writeCmd or notification to send the packet. I got same result(4 packets before reset,1 packet after reset) in my experiment.
Michelle,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My colleague from Avnet (Taipei) will get in touch with you on this query.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content