I am facing some strange problem with cc2541.
I am designing some application based in BLE in which I am using limited advertising mode. I have setup all the required things to enable power saving mode. So after starting advertising if the cc2541 is not connected after some time(for example after 5 min) then I am increasing its advertising interval adaptively from 1s to 10s(as the maximum advertising interval 10.24s). Everything seems fine if I am increasing advertising interval upto 2s. But when I am increasing the advertising interval beyond that (2.5s or more) then cc2541 is coming out of power-saving mode randomly and i am not able to achieve enough power saving.
Can anyone please help me that why the cc2541 is coming out of power saving mode. when I am putting the debug at power saving api's then it is showing me that link layer is calling the "osal_pwrmgr_task_state( uint8 task_id, uint8 state )" function to hold the power saving.
Looking for the positive response....
Have you disabled the periodic event and these things?
Please click the Verify Answer button on a post if it answers your question! :)
Yes i have disabled the periodic event.
Which other things you are talking about.
I am using limited advertising mode and when it comes into waiting state then i am starting the advertising again. i am using
bool new_adv_enabled_status = false;GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8), &new_adv_enabled_status);
GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MIN, advertInterval); GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MAX, advertInterval);
new_adv_enabled_status = true;GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8), &new_adv_enabled_status);
functions to increase the interval and i am giving the values between 1600 to 16000 in advertInterval as the times goes on for the adaptive interval but as i am crossing the value from 3200 to 4000 then i am facing the problems in power saving.
And before setting these values i am calling
and after again making these true and calling the same function.
let me know if i am missing something or i am doing something wrong.
Check out this thread, the answer lies within.
Thanks for you reply.
I tried out this thing but unfortunately it is not working.
It is still coming out of power saving mode.
Is this possible that it is a bug from the link layer side. i mean that llDivide31By16To16() is the function of the stack so is it possible that link layer itself is using this function to calculate its timings and that's why cc2541 is coming out of the power saving mode unexpectedly?
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.