I'm trying to update my project to use the latest S110 softdevice release. The trouble is that I have written many of my own hardware abstraction layers and they are conflicting with the hardware abstraction layers that have been introduced in the later SDK release. I'm finding it very difficult to resolve these conflicts, as the BLE_Modules in the SDK libraries have dependencies on the nRF_Drivers modules. If I want to use my own hardware abstraction layers, then I can't use any of the BLE_Modules libraries in my project. To be honest, I don't really have a good understanding of what these BLE_Modules libraries actually do.
I am considering not using any of the SDK libraries and instead interfacing directly with the softdevice. Before I head down this path, I was wondering if anyone else is doing the same and was it difficult? Does it require an in-depth understanding of the different layers of the BLE stack (GATT, GAP, L2CAP, etc)?