A POC Code of doing ANCS with nrf51822-mKit. See README.txt for details.

Dependencies:   BLE_API mbed nRF51822

A sample code implementing ANCS client accessory with nRF51822-mKit. This is just a proof that this thing is indeed doable.

The code itself is complete mess. I'm not planing to furnish this, as the purpose (make sure it is doable) was achieved.

The next step possible step is (no timeline) 1. Implementing Gatt Client API in BLE API (forking?) 2. Do ANCS with that.

Please see README.txt for details.

Revision:
0:1f985a7c0a8b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.txt	Tue Jun 03 04:25:33 2014 +0000
@@ -0,0 +1,122 @@
+INTRODUCTION
+============
+This is a POC (Proof of Concept) for implementing
+ANCS (Apple Notification Center Service)with 
+NRF51822-mKit (mbed) platform.
+
+The code is not meant to be use for implementation,
+whatsoever.
+
+I'm not intent to further enhancing this code.
+The sole purpose is to show that we can use
+SoftDevice client api for doing ANCS with NRF51822-mkit.
+(At this time, BLE API doesn't expose Gatt Client API)
+
+This program code are bypassing mbed BLE API and use
+Soft Device (S110) Gatt Client API directly.
+
+If you want to explore the code, S110 API Reference will
+be handy.
+
+I know, there are many bugs, and things not implemented
+correctly. But again, the purpose of this code is just
+to show thant Gatt Client API is indeed doable. 
+
+
+WHAT NEXT?
+==========
+Since with this code, ANCS with mbed (NRF51822-mkit) is
+doable, the next step is to implement GATT CLIENT API on 
+mbed BLE API. 
+That should make programming more understandable (and
+perhaps portable to other platform) than using SD API
+directly.
+
+
+HOW TO TEST THIS OUT?
+=====================
+You gonna need:
+1. iOS7 (iPhone/iPad)
+   *recomended: iPush Test, free app to generate test notification.
+    but if you can generate notification by yourself
+    anything will be sufficient.
+2. NRF51822-mKIT, connected to PC
+   (debug log and the notification itself will
+     be print out via usb com port).
+   *teraterm etc is needed to access com port.
+    (depend on your platform) 
+     
+Ready for the action!
+1. Compile the code, transfer the binary file to mkit.
+2. Use teraterm etc, to connect to mkit com port. 
+3. Press reset. LED1(advertise) should turn on.
+   You should see Appendix 1 Log.
+4. On iOS7, select "Settings", "Bluetooth".
+   You should see "ANCC" on the devices list.
+   Click it to connect. LED2(connected) should turn on.
+5. A Dialog will appear: "Bluetooth Pairing Request"
+   Press "Pair"
+   You should see Appendix 2 Log.
+
+   That's it you ready to receive notification.
+   There's a free app on app store for generating
+   push notification. Search "push test" on app store.
+ 
+6. Run iPush Test app
+7. Click "Local Push Test"
+8. You will receive notification in about 1 minute.
+
+ 
+
+Appendix 1 (Program Start Log)
+==============================
+Program started
+timers_init()
+ble_stack_init()
+gap_params_init()
+set_128_uuid()
+advertising_init()
+conn_params_init()
+sec_params_init()
+advertising_start()
+
+Appendix 2 (iOS Connect and Pairing)
+====================================
+Event: BLE_GAP_EVT_CONNECTED (Connection established.)
+Event: BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP  (Primary Service Discovery Response event.)
+Found ANCS service, start handle: 15, end handle: 24
+Event: BLE_GATTC_EVT_CHAR_DISC_RSP  (Characteristic Discovery Response event.)
+Found char: Control PointEvent: BLE_GATTS_EVT_WRITE  (Write operation performed.)
+Event: BLE_GATTC_EVT_CHAR_DISC_RSP  (Characteristic Discovery Response event.)
+Found char: Notification SourceEvent: BLE_GATTC_EVT_CHAR_DISC_RSP  (Characteristic Discovery Response event.)
+Found char: Data SourceEvent: BLE_GATTC_EVT_CHAR_DISC_RSP  (Characteristic Discovery Response event.)
+Event: BLE_GATTC_EVT_DESC_DISC_RSP  (Descriptor Discovery Response event.)
+Found NS CCC
+Event: BLE_GATTC_EVT_DESC_DISC_RSP  (Descriptor Discovery Response event.)
+Found DS CCC
+Event: BLE_GAP_EVT_SEC_PARAMS_REQUEST  (Request to provide security parameters.)
+Event: BLE_GAP_EVT_AUTH_STATUS  (Authentication procedure completed with status.)
+Event: BLE_GAP_EVT_CONN_SEC_UPDATE  (Connection security updated.)
+Event: BLE_GATTC_EVT_WRITE_RSP (Write Response event.)
+NS subscribe success.
+Event: BLE_GATTC_EVT_WRITE_RSP (Write Response event.)
+DS subscribe success.
+
+Appendix 3 (Receiving Notification)
+===================================
+Event: BLE_GATTC_EVT_HVX  (Handle Value Notification or Indication event.)
+Event ID: 0 (Notification Added)
+Event Flags: 0 ((no flags))
+Category ID: 0 (Other)
+Category Count: 1
+Notification ID: 6 0 0 0
+Event: BLE_GATTC_EVT_WRITE_RSP (Write Response event.)
+CP write success.
+Event: BLE_GATTC_EVT_HVX  (Handle Value Notification or Indication event.)
+Title:(10)iPush Test
+
+Link
+====
+1. ANCS
+   https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Introduction/Introduction.html
+