Keyboard data in Advertising packet for LowPower

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
GiSe_3918726
Level 1
Level 1
First question asked First reply posted Welcome!

We are currently designing a BLE 4.2 Low Power application using CYBLE212020-01 powered by 3V battery. My software sets the WDT to wake-up the application from Deep Sleep every 200ms to read some capacitive buttons and goes back to Deep Sleep if the button is not pressed. The BLE module, to reach very low power consumption, is configured as Peripheral with connection parameters (set by Central device that we are also developing) set as following:

Min Connection Interval: 4000ms

Max Connection Interval: 4000ms

Connection Timeout: 30sec

This provides a very low power consumption undoubtedly.

Once a touch button is pressed, the Core wakes up and sets the notification request to be sent to the Central containing the touch buttons information, unfortunately this notification is sent when the Radio wakes up for connection, that is every 4sec. This is of course not acceptable because of the late reaction of the user key.

To solve this issue, we have suppose to send an Advertising Data Packet containing touch button data once the core wakes up due to a key pressed and setting the Advertising interval as fast as possible. Once the Advertising Packet (CyBle_GappSetNumOfAdvPkts().) has been sent, the Core can go back to sleep again.

So, we have two questions:

Q1: Is it the correct way to reach our goal? If yes, how we do it? Otherwise, what is the correct solution (and its implementation)?

Q2: What we have to do on the Central device?

Thanks in advance

Gianluca

0 Likes
1 Solution
VenkataD_41
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi,

We would like to say that setting connection interval of 4 seconds is not a good idea in your case. Because in your case the peripheral has the information about touch sensor whether it is touched or not. Since peripheral peripheral does not initiate data transaction, it has to wait for the next connection interval to send the actual notification data to the central device.

Since your application involves BLE data transfer with very low power consumption and preferably fast connection interval, please go through following application note. It tells you about how BLE low power APIS are used to get lowest power consumption with reasonably small connection interval.

https://www.cypress.com/documentation/application-notes/an92584-designing-low-power-and-estimating-b...

You can also go through the code example present in the same link.

Thanks and regards

Ganesh

View solution in original post

0 Likes
1 Reply
VenkataD_41
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi,

We would like to say that setting connection interval of 4 seconds is not a good idea in your case. Because in your case the peripheral has the information about touch sensor whether it is touched or not. Since peripheral peripheral does not initiate data transaction, it has to wait for the next connection interval to send the actual notification data to the central device.

Since your application involves BLE data transfer with very low power consumption and preferably fast connection interval, please go through following application note. It tells you about how BLE low power APIS are used to get lowest power consumption with reasonably small connection interval.

https://www.cypress.com/documentation/application-notes/an92584-designing-low-power-and-estimating-b...

You can also go through the code example present in the same link.

Thanks and regards

Ganesh

0 Likes