Hello all Devs,
I'm not an expert on Bluetooth 4.0 Low Engergy or the OSAL or the BLE Stack. But I have found some additional resources which have helped me come to terms with the CC2540/41 and the BLE stack. I see many posts by Developers struggling to get their heads around TI's BLE implementation. The amount I've had to learn is sizable so I can't dump it on this forum (and my Supervisor wouldn't consider this a productive use of my time) but I can point people in the right direction.
BLE is my first wireless protocol. So this was an educational experience, it doesn't work how I thought it would work and importantly it isn't and should not be confused with normal Bluetooth. BLE appears to be intended for Low Power, Low Performance applications. Don't expect it to remain Low Energy if you try to stream data. In fact, kiss your coin cell goodbye.
I recommend Heydon, R., 2012, "Bluetooth Low Energy, The Developer's Handbook", 1st ed, Prentice Hall, Crawsfordville.
Heydon worked on the product Wibree which later became Bluetooth 4.0. Robin Heydon is a member of Bluetooth SIG's Hall of Fame. He covers the lower levels in more detail than most of us will need but his chapters on Services, Servers, Profiles and Clients will be useful to those new to BLE. Understanding the concepts of Attributes, Services, Servers, Profiles and Clients is critical to understanding BLE.
I used this book to understand the Keyfob Project. From making small changes to Keyfob I was able to experiment with making new Attributes and Services. I am currently working to interface an EEPROM to read/write data over the BLE link. There are still a few bugs to work out... the CC2541 times-out after disabling the EEPROM.
If anyone else has found some decent resources, post them here. I'll get around to posting my code when I've ironed out the bugs and the hardware set-up. I'll ensure the code is annotated to assist in comprehension.
Happy Coding,
-Morgan