diff --git a/nordic/nrf-sdk/s110/ble.h b/nordic/nrf-sdk/s110/ble.h
index 49c1831..37795b8 100644
--- a/nordic/nrf-sdk/s110/ble.h
+++ b/nordic/nrf-sdk/s110/ble.h
@@ -26,28 +26,6 @@
 #include "ble_gattc.h"
 #include "ble_gatts.h"
 
-/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations
- * @{ */
-
-/**
- * @brief Common API SVC numbers.
- */
-enum BLE_COMMON_SVCS
-{
-  SD_BLE_ENABLE = BLE_SVC_BASE,         /**< Enable and initialize the BLE stack */
-  SD_BLE_EVT_GET,                       /**< Get an event from the pending events queue. */
-  SD_BLE_TX_BUFFER_COUNT_GET,           /**< Get the total number of available application transmission buffers from the stack. */
-  SD_BLE_UUID_VS_ADD,                   /**< Add a Vendor Specific UUID. */
-  SD_BLE_UUID_DECODE,                   /**< Decode UUID bytes. */
-  SD_BLE_UUID_ENCODE,                   /**< Encode UUID bytes. */
-  SD_BLE_VERSION_GET,                   /**< Get the local version information (company id, Link Layer Version, Link Layer Subversion). */
-  SD_BLE_USER_MEM_REPLY,                /**< User Memory Reply. */
-  SD_BLE_OPT_SET,                       /**< Set a BLE option. */
-  SD_BLE_OPT_GET,                       /**< Get a BLE option. */
-};
-
-/** @} */
-
 /** @addtogroup BLE_COMMON_DEFINES Defines
  * @{ */
 
@@ -164,7 +142,7 @@ typedef union
  */
 typedef struct
 {
-  ble_gatts_enable_params_t  gatts_enable_params; /**< GATTS init options @ref ble_gatts_enable_params_t. */  
+  ble_gatts_enable_params_t  gatts_enable_params; /**< GATTS init options @ref ble_gatts_enable_params_t. */
 } ble_enable_params_t;
 
 /** @} */
@@ -188,16 +166,16 @@ SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(ble_enable_params_t * p_ble_enable
  * @param[in] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. This buffer <b>must be 4-byte aligned in memory</b>.
  * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length.
  *
- * @details This call allows the application to pull a BLE event from the BLE stack. The application is signalled that an event is 
+ * @details This call allows the application to pull a BLE event from the BLE stack. The application is signalled that an event is
  * available from the BLE Stack by the triggering of the SD_EVT_IRQn interrupt (mapped to IRQ 22).
  * The application is free to choose whether to call this function from thread mode (main context) or directly from the Interrupt Service Routine
  * that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher priority than the application, this function should be called
- * in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the stack. 
+ * in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the stack.
  * Failure to do so could potentially leave events in the internal queue without the application being aware of this fact.
  * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to be copied into
  * application memory. If the buffer provided is not large enough to fit the entire contents of the event, @ref NRF_ERROR_DATA_SIZE will be returned
  * and the application can then call again with a larger buffer size.
- * Please note that because of the variable length nature of some events, sizeof(ble_evt_t) will not always be large enough to fit certain events, 
+ * Please note that because of the variable length nature of some events, sizeof(ble_evt_t) will not always be large enough to fit certain events,
  * and so it is the application's responsability to provide an amount of memory large enough so that the relevant event is copied in full.
  * The application may "peek" the event length by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return.
  *
@@ -219,7 +197,7 @@ SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t* p_dest, uint16_t *p_len
  *          The application has two options to handle its own application transmission buffers:
  *          - Use a simple arithmetic calculation: at boot time the application should use this function
  *          to find out the total amount of buffers available to it and store it in a variable.
- *          Every time a packet that consumes an application buffer is sent using any of the 
+ *          Every time a packet that consumes an application buffer is sent using any of the
  *          exposed functions in this BLE API, the application should decrement that variable.
  *          Conversely, whenever a @ref BLE_EVT_TX_COMPLETE event is received by the application
  *          it should retrieve the count field in such event and add that number to the same
@@ -228,11 +206,11 @@ SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t* p_dest, uint16_t *p_len
  *          application packets available in the BLE stack's internal buffers, and therefore
  *          it can know with certainty whether it is possible to send more data or it has to
  *          wait for a @ref BLE_EVT_TX_COMPLETE event before it proceeds.
- *          - Choose to simply not keep track of available buffers at all, and instead handle the 
- *          @ref BLE_ERROR_NO_TX_BUFFERS error by queueing the packet to be transmitted and 
+ *          - Choose to simply not keep track of available buffers at all, and instead handle the
+ *          @ref BLE_ERROR_NO_TX_BUFFERS error by queueing the packet to be transmitted and
  *          try again as soon as a @ref BLE_EVT_TX_COMPLETE event arrives.
  *
- *          The API functions that <b>may</b> consume an application buffer depending on 
+ *          The API functions that <b>may</b> consume an application buffer depending on
  *          the parameters supplied to them can be found below:
  *
  *          - @ref sd_ble_gattc_write (write witout response only)
@@ -253,15 +231,15 @@ SVCALL(SD_BLE_TX_BUFFER_COUNT_GET, uint32_t, sd_ble_tx_buffer_count_get(uint8_t*
  * @details This call enables the application to add a vendor specific UUID to the BLE stack's table,
  *          for later use all other modules and APIs. This then allows the application to use the shorter,
  *          24-bit @ref ble_uuid_t format when dealing with both 16-bit and 128-bit UUIDs without having to
- *          check for lengths and having split code paths. The way that this is accomplished is by extending the 
- *          grouping mechanism that the Bluetooth SIG standard base UUID uses for all other 128-bit UUIDs. The 
- *          type field in the @ref ble_uuid_t structure is an index (relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN) 
- *          to the table populated by multiple calls to this function, and the uuid field in the same structure 
- *          contains the 2 bytes at indices 12 and 13. The number of possible 128-bit UUIDs available to the 
- *          application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, 
+ *          check for lengths and having split code paths. The way that this is accomplished is by extending the
+ *          grouping mechanism that the Bluetooth SIG standard base UUID uses for all other 128-bit UUIDs. The
+ *          type field in the @ref ble_uuid_t structure is an index (relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN)
+ *          to the table populated by multiple calls to this function, and the uuid field in the same structure
+ *          contains the 2 bytes at indices 12 and 13. The number of possible 128-bit UUIDs available to the
+ *          application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536,
  *          although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array.
  *
- * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by 
+ * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by
  * the 16-bit uuid field in @ref ble_uuid_t.
  *
  *
@@ -278,11 +256,11 @@ SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const * co
 
 
 /** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure.
- * 
- * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared 
- * to the corresponding ones in each entry of the table of vendor specific UUIDs pouplated with @ref sd_ble_uuid_vs_add 
- * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index 
- * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. 
+ *
+ * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared
+ * to the corresponding ones in each entry of the table of vendor specific UUIDs pouplated with @ref sd_ble_uuid_vs_add
+ * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index
+ * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type.
  *
  * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE.
  *
@@ -294,7 +272,7 @@ SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const * co
  * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
  * @return @ref NRF_ERROR_INVALID_LENGTH Invalid UUID length.
  * @return @ref NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs.
- */                                                 
+ */
 SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const * const p_uuid_le, ble_uuid_t * const p_uuid));
 
 
diff --git a/nordic/nrf-sdk/s110/ble_gap.h b/nordic/nrf-sdk/s110/ble_gap.h
index a0f3a1e..ab46c00 100644
--- a/nordic/nrf-sdk/s110/ble_gap.h
+++ b/nordic/nrf-sdk/s110/ble_gap.h
@@ -18,38 +18,6 @@
 #include "ble_ranges.h"
 #include "nrf_svc.h"
 
-
-/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations
- * @{ */
-
-/**@brief GAP API SVC numbers.
- */
-enum BLE_GAP_SVCS
-{
-  SD_BLE_GAP_ADDRESS_SET  = BLE_GAP_SVC_BASE,  /**< Set own Bluetooth Address. */
-  SD_BLE_GAP_ADDRESS_GET,                      /**< Get own Bluetooth Address. */
-  SD_BLE_GAP_ADV_DATA_SET,                     /**< Set Advertisement Data. */
-  SD_BLE_GAP_ADV_START,                        /**< Start Advertising. */
-  SD_BLE_GAP_ADV_STOP,                         /**< Stop Advertising. */
-  SD_BLE_GAP_CONN_PARAM_UPDATE,                /**< Connection Parameter Update. */
-  SD_BLE_GAP_DISCONNECT,                       /**< Disconnect. */
-  SD_BLE_GAP_TX_POWER_SET,                     /**< Set TX Power. */
-  SD_BLE_GAP_APPEARANCE_SET,                   /**< Set Appearance. */
-  SD_BLE_GAP_APPEARANCE_GET,                   /**< Get Appearance. */
-  SD_BLE_GAP_PPCP_SET,                         /**< Set PPCP. */
-  SD_BLE_GAP_PPCP_GET,                         /**< Get PPCP. */
-  SD_BLE_GAP_DEVICE_NAME_SET,                  /**< Set Device Name. */
-  SD_BLE_GAP_DEVICE_NAME_GET,                  /**< Get Device Name. */
-  SD_BLE_GAP_AUTHENTICATE,                     /**< Initiate Pairing/Bonding. */
-  SD_BLE_GAP_SEC_PARAMS_REPLY,                 /**< Reply with Security Parameters. */
-  SD_BLE_GAP_AUTH_KEY_REPLY,                   /**< Reply with an authentication key. */
-  SD_BLE_GAP_SEC_INFO_REPLY,                   /**< Reply with Security Information. */
-  SD_BLE_GAP_CONN_SEC_GET,                     /**< Obtain connection security level. */
-  SD_BLE_GAP_RSSI_START,                       /**< Start reporting of changes in RSSI. */
-  SD_BLE_GAP_RSSI_STOP,                        /**< Stop reporting of changes in RSSI. */
-};
-/**@} */
-
 /**@addtogroup BLE_GAP_DEFINES Defines
  * @{ */
 
diff --git a/nordic/nrf-sdk/s110/ble_gatts.h b/nordic/nrf-sdk/s110/ble_gatts.h
index 5b1235c..c54f6c8 100644
--- a/nordic/nrf-sdk/s110/ble_gatts.h
+++ b/nordic/nrf-sdk/s110/ble_gatts.h
@@ -21,29 +21,6 @@
 #include "ble_gatt.h"
 #include "nrf_svc.h"
 
-/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations
- * @{ */
-
-/**
- * @brief GATTS API SVC numbers.
- */
-enum BLE_GATTS_SVCS
-{
-  SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */
-  SD_BLE_GATTS_INCLUDE_ADD,                      /**< Add an included service. */
-  SD_BLE_GATTS_CHARACTERISTIC_ADD,               /**< Add a characteristic. */
-  SD_BLE_GATTS_DESCRIPTOR_ADD,                   /**< Add a generic attribute. */
-  SD_BLE_GATTS_VALUE_SET,                        /**< Set an attribute value. */
-  SD_BLE_GATTS_VALUE_GET,                        /**< Get an attribute value. */
-  SD_BLE_GATTS_HVX,                              /**< Handle Value Notification or Indication. */
-  SD_BLE_GATTS_SERVICE_CHANGED,                  /**< Perform a Service Changed Indication to one or more peers. */
-  SD_BLE_GATTS_RW_AUTHORIZE_REPLY,               /**< Reply to an authorization request for a read or write operation on one or more attributes. */ 
-  SD_BLE_GATTS_SYS_ATTR_SET,                     /**< Set the persistent system attributes for a connection. */  
-  SD_BLE_GATTS_SYS_ATTR_GET,                     /**< Get updated persistent system attributes after terminating a connection. */
-};
-
-/** @} */
-
 /** @addtogroup BLE_GATTS_DEFINES Defines
  * @{ */
 
@@ -59,7 +36,7 @@ enum BLE_GATTS_SVCS
 /** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths
  * @{ */
 #define BLE_GATTS_FIX_ATTR_LEN_MAX (510)  /**< Maximum length for fixed length Attribute Values. */
-#define BLE_GATTS_VAR_ATTR_LEN_MAX (512)  /**< Maximum length for variable length Attribute Values. */ 
+#define BLE_GATTS_VAR_ATTR_LEN_MAX (512)  /**< Maximum length for variable length Attribute Values. */
 /** @} */
 
 /** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types
@@ -130,7 +107,7 @@ typedef struct
   ble_gap_conn_sec_mode_t write_perm;      /**< Write permissions. */
   uint8_t                 vlen       :1;   /**< Variable length attribute. */
   uint8_t                 vloc       :2;   /**< Value location, see @ref BLE_GATTS_VLOCS.*/
-  uint8_t                 rd_auth    :1;   /**< Read Authorization and value will be requested from the application on every read operation. */ 
+  uint8_t                 rd_auth    :1;   /**< Read Authorization and value will be requested from the application on every read operation. */
   uint8_t                 wr_auth    :1;   /**< Write Authorization will be requested from the application on every Write Request operation (but not Write Command). */
 } ble_gatts_attr_md_t;
 
@@ -144,7 +121,7 @@ typedef struct
   uint16_t             init_offs;       /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */
   uint16_t             max_len;         /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */
   uint8_t*             p_value;         /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer
-                                             that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. 
+                                             that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location.
                                              The stack may access that memory directly without the application's knowledge. */
 } ble_gatts_attr_t;
 
@@ -179,7 +156,7 @@ typedef struct
   ble_gatt_char_ext_props_t   char_ext_props;           /**< Characteristic Extended Properties. */
   uint8_t*                    p_char_user_desc;         /**< Pointer to a UTF-8, NULL if the descriptor is not required. */
   uint16_t                    char_user_desc_max_size;  /**< The maximum size in bytes of the user description descriptor. */
-  uint16_t                    char_user_desc_size;      /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ 
+  uint16_t                    char_user_desc_size;      /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */
   ble_gatts_char_pf_t*        p_char_pf;                /**< Pointer to a presentation format structure or NULL if the descriptor is not required. */
   ble_gatts_attr_md_t*        p_user_desc_md;           /**< Attribute metadata for the User Description descriptor, or NULL for default values. */
   ble_gatts_attr_md_t*        p_cccd_md;                /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */
@@ -336,7 +313,7 @@ SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type
 
 /**@brief Add an include declaration to the local server ATT table.
  *
- * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential addition is supported at this time). 
+ * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential addition is supported at this time).
  *
  * @note The included service must already be present in the ATT table prior to this call.
  *
@@ -357,7 +334,7 @@ SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t ser
 
 /**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the local server ATT table.
  *
- * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential addition is supported at this time). 
+ * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential addition is supported at this time).
  *
  * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writeable auxiliaries bits,
  *       readable (no security) and writeable (selectable) CCCDs and SCCDs and valid presentation format values.
@@ -382,7 +359,7 @@ SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_ad
 
 /**@brief Add a descriptor to the local server ATT table.
  *
- * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential addition is supported at this time). 
+ * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential addition is supported at this time).
  *
  * @param[in] char_handle   Handle of the characteristic where the descriptor is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially.
  * @param[in] p_attr        Pointer to the attribute structure.
@@ -425,7 +402,7 @@ SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t handle,
  *                       p_len will return the total attribute value length (excluding offset),
  *                       and not the number of bytes actually returned in p_data.
  *                       The application may use this information to allocate a suitable buffer size.
- * 
+ *
  * @return @ref NRF_SUCCESS Successfully retrieved the value of the attribute.
  * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
  * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
@@ -440,14 +417,14 @@ SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t handle,
  *          If the application chooses to indicate an attribute value, a @ref BLE_GATTS_EVT_HVC will be sent up as soon as the confirmation arrives from
  *          the peer.
  *
- * @note    The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. 
- *          When receiveing the error codes @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and 
+ * @note    The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution.
+ *          When receiveing the error codes @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and
  *          @ref BLE_ERROR_NO_TX_BUFFERS the ATT table has been updated.
  *          The caller can check whether the value has been updated by looking at the contents of *(p_hvx_params->p_len).
  *
- * @note    It is important to note that a notification will <b>consume an application buffer</b>, and will therefore 
- *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. An indication on the other hand will use the 
- *          standard server internal buffer and thus will only generate a @ref BLE_GATTS_EVT_HVC event as soon as the confirmation 
+ * @note    It is important to note that a notification will <b>consume an application buffer</b>, and will therefore
+ *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. An indication on the other hand will use the
+ *          standard server internal buffer and thus will only generate a @ref BLE_GATTS_EVT_HVC event as soon as the confirmation
  *          has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
  *
  * @param[in] conn_handle  Connection handle.
@@ -511,7 +488,7 @@ SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_repl
 /**@brief Update persistent system attribute information.
  *
  * @details Supply to the stack information about persistent system attributes.
- *          This call is legal in the connected state only, and is usually 
+ *          This call is legal in the connected state only, and is usually
  *          made immediately after a connection is established and the bond identified.
  *          usually as a response to a BLE_GATTS_EVT_SYS_ATTR_MISSING.
  *
@@ -519,7 +496,7 @@ SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_repl
  *          If the pointer is NULL, the system attribute info is initialized, assuming that
  *          the application does not have any previously saved data for this bond.
  *
- * @note The state of persistent system attributes is reset upon connection and then remembered for its duration. 
+ * @note The state of persistent system attributes is reset upon connection and then remembered for its duration.
  *
  * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially.
  *       This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or
@@ -527,16 +504,16 @@ SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_repl
  *
  * @param[in]  conn_handle        Connection handle.
  * @param[in]  p_sys_attr_data    Pointer to a saved copy of system attributes supplied to the stack, or NULL.
- * @param[in]  len                Size of data pointed by p_sys_attr_data, in octets. 
+ * @param[in]  len                Size of data pointed by p_sys_attr_data, in octets.
  *
  * @return @ref NRF_SUCCESS Successfully set the system attribute information.
  * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
  * @return @ref NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get.
  * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- */ 
-SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const*const p_sys_attr_data, uint16_t len)); 
+ */
+SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const*const p_sys_attr_data, uint16_t len));
+
 
- 
 /**@brief Retrieve persistent system attribute information from the stack.
  *
  * @details This call is used to retrieve information about values to be stored perisistently by the application
@@ -546,7 +523,7 @@ SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t c
  *          the previous now defunct connection will remain valid until a new one is created to allow this API call to refer to it.
  *
  * @param[in]     conn_handle       Connection handle of the recently terminated connection.
- * @param[in]     p_sys_attr_data   Pointer to a buffer where updated information about system attributes will be filled in. NULL can be provided to 
+ * @param[in]     p_sys_attr_data   Pointer to a buffer where updated information about system attributes will be filled in. NULL can be provided to
  *                                  obtain the length of the data
  * @param[in,out] p_len             Size of application buffer if p_sys_attr_data is not NULL. Unconditially updated to actual length of system attribute data.
  *
@@ -554,8 +531,8 @@ SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t c
  * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
  * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
  * @return @ref NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer.
- */ 
-SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t * const p_sys_attr_data, uint16_t* const p_len)); 
+ */
+SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t * const p_sys_attr_data, uint16_t* const p_len));
 
 /** @} */
 
diff --git a/nordic/nrf-sdk/s110/ble_l2cap.h b/nordic/nrf-sdk/s110/ble_l2cap.h
index bda5b76..ab514db 100644
--- a/nordic/nrf-sdk/s110/ble_l2cap.h
+++ b/nordic/nrf-sdk/s110/ble_l2cap.h
@@ -12,26 +12,13 @@
  */
 
 #ifndef BLE_L2CAP_H__
-#define BLE_L2CAP_H__ 
+#define BLE_L2CAP_H__
 
 #include "ble_types.h"
 #include "ble_ranges.h"
 #include "ble_err.h"
 #include "nrf_svc.h"
 
-/**@addtogroup BLE_L2CAP_ENUMERATIONS Enumerations
- * @{ */
-
-/**@brief L2CAP API SVC numbers. */
-enum BLE_L2CAP_SVCS 
-{
-  SD_BLE_L2CAP_CID_REGISTER = BLE_L2CAP_SVC_BASE,  /**< Register a CID. */
-  SD_BLE_L2CAP_CID_UNREGISTER,                     /**< Unregister a CID. */
-  SD_BLE_L2CAP_TX                                  /**< Transmit a packet. */
-};
-
-/** @} */
-
 /**@addtogroup BLE_L2CAP_DEFINES Defines
  * @{ */
 
@@ -41,16 +28,16 @@ enum BLE_L2CAP_SVCS
 /** @} */
 
 /**@brief Default L2CAP MTU. */
-#define BLE_L2CAP_MTU_DEF           (23)    
+#define BLE_L2CAP_MTU_DEF           (23)
 
 /**@brief Invalid Channel Identifier. */
-#define BLE_L2CAP_CID_INVALID       (0x0000) 
+#define BLE_L2CAP_CID_INVALID       (0x0000)
 
 /**@brief Dynamic Channel Identifier base. */
-#define BLE_L2CAP_CID_DYN_BASE      (0x0040) 
+#define BLE_L2CAP_CID_DYN_BASE      (0x0040)
 
 /**@brief Maximum amount of dynamic CIDs. */
-#define BLE_L2CAP_CID_DYN_MAX       (8) 
+#define BLE_L2CAP_CID_DYN_MAX       (8)
 
 /** @} */
 
@@ -65,7 +52,7 @@ typedef struct
 } ble_l2cap_header_t;
 
 /**@brief L2CAP Event IDs. */
-enum BLE_L2CAP_EVTS 
+enum BLE_L2CAP_EVTS
 {
   BLE_L2CAP_EVT_RX  = BLE_L2CAP_EVT_BASE          /**< L2CAP packet received. */
 };
@@ -93,7 +80,7 @@ typedef struct
 /**@brief Register a CID with L2CAP.
  *
  * @details This registers a higher protocol layer with the L2CAP multiplexer, and is requried prior to all operations on the CID.
- *          
+ *
  * @param[in] cid L2CAP CID.
  *
  * @return @ref NRF_SUCCESS Successfully registered a CID with the L2CAP layer.
@@ -106,7 +93,7 @@ SVCALL(SD_BLE_L2CAP_CID_REGISTER, uint32_t, sd_ble_l2cap_cid_register(uint16_t c
 /**@brief Unregister a CID with L2CAP.
  *
  * @details This unregisters a previously registerd higher protocol layer with the L2CAP multiplexer.
- *          
+ *
  * @param[in] cid L2CAP CID.
  *
  * @return @ref NRF_SUCCESS Successfully unregistered the CID.
@@ -117,8 +104,8 @@ SVCALL(SD_BLE_L2CAP_CID_UNREGISTER, uint32_t, sd_ble_l2cap_cid_unregister(uint16
 
 /**@brief Transmit an L2CAP packet.
  *
- * @note    It is important to note that a call to this function will <b>consume an application buffer</b>, and will therefore 
- *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. 
+ * @note    It is important to note that a call to this function will <b>consume an application buffer</b>, and will therefore
+ *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted.
  *          Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
  *
  * @param[in] conn_handle Connection Handle.
diff --git a/nordic/nrf-sdk/s110/ble_ranges.h b/nordic/nrf-sdk/s110/ble_ranges.h
index 1c2867c..09fe8d1 100644
--- a/nordic/nrf-sdk/s110/ble_ranges.h
+++ b/nordic/nrf-sdk/s110/ble_ranges.h
@@ -29,21 +29,67 @@
 #define BLE_RANGES_H__
 
 #define BLE_SVC_BASE           0x60
+    #define SD_BLE_ENABLE              0x60 /**< Enable and initialize the BLE stack */
+    #define SD_BLE_EVT_GET             0x61 /**< Get an event from the pending events queue. */
+    #define SD_BLE_TX_BUFFER_COUNT_GET 0x62 /**< Get the total number of available application transmission buffers from the stack. */
+    #define SD_BLE_UUID_VS_ADD         0x63 /**< Add a Vendor Specific UUID. */
+    #define SD_BLE_UUID_DECODE         0x64 /**< Decode UUID bytes. */
+    #define SD_BLE_UUID_ENCODE         0x65 /**< Encode UUID bytes. */
+    #define SD_BLE_VERSION_GET         0x66 /**< Get the local version information (company id, Link Layer Version, Link Layer Subversion). */
+    #define SD_BLE_USER_MEM_REPLY      0x67 /**< User Memory Reply. */
+    #define SD_BLE_OPT_SET             0x68 /**< Set a BLE option. */
+    #define SD_BLE_OPT_GET             0x69 /**< Get a BLE option. */
 #define BLE_SVC_LAST           0x6B       /* Total: 12. */
 
 #define BLE_RESERVED_SVC_BASE  0x6C
 #define BLE_RESERVED_SVC_LAST  0x6F       /* Total: 4. */
 
-#define BLE_GAP_SVC_BASE       0x70
-#define BLE_GAP_SVC_LAST       0x8F       /* Total: 32. */
+#define BLE_GAP_SVC_BASE              0x70
+    #define SD_BLE_GAP_ADDRESS_SET        0x70   /**< Set own Bluetooth Address. */
+    #define SD_BLE_GAP_ADDRESS_GET        0x71   /**< Get own Bluetooth Address. */
+    #define SD_BLE_GAP_ADV_DATA_SET       0x72   /**< Set Advertisement Data. */
+    #define SD_BLE_GAP_ADV_START          0x73   /**< Start Advertising. */
+    #define SD_BLE_GAP_ADV_STOP           0x74   /**< Stop Advertising. */
+    #define SD_BLE_GAP_CONN_PARAM_UPDATE  0x75   /**< Connection Parameter Update. */
+    #define SD_BLE_GAP_DISCONNECT         0x76   /**< Disconnect. */
+    #define SD_BLE_GAP_TX_POWER_SET       0x77   /**< Set TX Power. */
+    #define SD_BLE_GAP_APPEARANCE_SET     0x78   /**< Set Appearance. */
+    #define SD_BLE_GAP_APPEARANCE_GET     0x79   /**< Get Appearance. */
+    #define SD_BLE_GAP_PPCP_SET           0x7A   /**< Set PPCP. */
+    #define SD_BLE_GAP_PPCP_GET           0x7B   /**< Get PPCP. */
+    #define SD_BLE_GAP_DEVICE_NAME_SET    0x7C   /**< Set Device Name. */
+    #define SD_BLE_GAP_DEVICE_NAME_GET    0x7D   /**< Get Device Name. */
+    #define SD_BLE_GAP_AUTHENTICATE       0x7E   /**< Initiate Pairing/Bonding. */
+    #define SD_BLE_GAP_SEC_PARAMS_REPLY   0x7F   /**< Reply with Security Parameters. */
+    #define SD_BLE_GAP_AUTH_KEY_REPLY     0x80   /**< Reply with an authentication key. */
+    #define SD_BLE_GAP_SEC_INFO_REPLY     0x81   /**< Reply with Security Information. */
+    #define SD_BLE_GAP_CONN_SEC_GET       0x82   /**< Obtain connection security level. */
+    #define SD_BLE_GAP_RSSI_START         0x83   /**< Start reporting of changes in RSSI. */
+    #define SD_BLE_GAP_RSSI_STOP          0x84   /**< Stop reporting of changes in RSSI. */
+#define BLE_GAP_SVC_LAST              0x8F   /* Total: 32. */
 
 #define BLE_GATTC_SVC_BASE     0x90
 #define BLE_GATTC_SVC_LAST     0x9F       /* Total: 16. */
 
 #define BLE_GATTS_SVC_BASE     0xA0
+    #define SD_BLE_GATTS_SERVICE_ADD        0xA0 /**< Add a service. */
+    #define SD_BLE_GATTS_INCLUDE_ADD        0xA1 /**< Add an included service. */
+    #define SD_BLE_GATTS_CHARACTERISTIC_ADD 0xA2 /**< Add a characteristic. */
+    #define SD_BLE_GATTS_DESCRIPTOR_ADD     0xA3 /**< Add a generic attribute. */
+    #define SD_BLE_GATTS_VALUE_SET          0xA4 /**< Set an attribute value. */
+    #define SD_BLE_GATTS_VALUE_GET          0xA5 /**< Get an attribute value. */
+    #define SD_BLE_GATTS_HVX                0xA6 /**< Handle Value Notification or Indication. */
+    #define SD_BLE_GATTS_SERVICE_CHANGED    0xA7 /**< Perform a Service Changed Indication to one or more peers. */
+    #define SD_BLE_GATTS_RW_AUTHORIZE_REPLY 0xA8 /**< Reply to an authorization request for a read or write operation on one or
+                                                  *   more attributes.*/
+    #define SD_BLE_GATTS_SYS_ATTR_SET       0xA9 /**< Set the persistent system attributes for a connection. */
+    #define SD_BLE_GATTS_SYS_ATTR_GET       0xAA /**< Get updated persistent system attributes after terminating a connection. */
 #define BLE_GATTS_SVC_LAST     0xAF       /* Total: 16. */
 
 #define BLE_L2CAP_SVC_BASE     0xB0
+    #define SD_BLE_L2CAP_CID_REGISTER   BLE_L2CAP_SVC_BASE  /**< Register a CID. */
+    #define SD_BLE_L2CAP_CID_UNREGISTER 0xB1                /**< Unregister a CID. */
+    #define SD_BLE_L2CAP_TX             0xB2                /**< Transmit a packet. */
 #define BLE_L2CAP_SVC_LAST     0xBF       /* Total: 16. */
 
 
diff --git a/nordic/nrf-sdk/s110/nrf_sdm.h b/nordic/nrf-sdk/s110/nrf_sdm.h
index ae4e162..e79ed76 100644
--- a/nordic/nrf-sdk/s110/nrf_sdm.h
+++ b/nordic/nrf-sdk/s110/nrf_sdm.h
@@ -9,9 +9,9 @@
 /**
   @defgroup nrf_sdm_api SoftDevice Manager API
   @{
-     
+
   @brief APIs for SoftDevice management.
- 
+
 */
 
 /* Header guard */
@@ -28,22 +28,17 @@
 
 /**@brief SoftDevice Manager SVC Base number. */
 #define SDM_SVC_BASE  (0x10)
+#define SD_SOFTDEVICE_ENABLE                0x10 /**< ::sd_softdevice_enable */
+#define SD_SOFTDEVICE_DISABLE               0x11 /**< ::sd_softdevice_disable */
+#define SD_SOFTDEVICE_IS_ENABLED            0x12 /**< ::sd_softdevice_is_enabled */
+#define SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET 0x13 /**< ::sd_softdevice_vector_table_base_set */
+#define SVC_SDM_LAST                        0x14 /**< Placeholder for last SDM SVC */
 
 /** @} */
 
 /** @addtogroup NRF_SDM_ENUMS Enumerations
  * @{ */
 
-/**@brief nRF SoftDevice Manager API SVC numbers. */
-enum NRF_SD_SVCS
-{
-  SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */
-  SD_SOFTDEVICE_DISABLE,               /**< ::sd_softdevice_disable */
-  SD_SOFTDEVICE_IS_ENABLED,            /**< ::sd_softdevice_is_enabled */
-  SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */
-  SVC_SDM_LAST                         /**< Placeholder for last SDM SVC */
-};
-
 /**@brief Possible lfclk oscillator sources. */
 enum NRF_CLOCK_LFCLKSRCS
 {
@@ -85,7 +80,7 @@ typedef uint32_t nrf_clock_lfclksrc_t;
  * perform a reset, using e.g. CMSIS NVIC_SystemReset().
  *
  * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the SoftDevice assert callback.
- *       
+ *
  * @param[in] pc The program counter of the failed assert.
  * @param[in] line_number Line number where the assert failed.
  * @param[in] file_name File name where the assert failed.
@@ -107,7 +102,7 @@ typedef void (*softdevice_assertion_handler_t)(uint32_t pc, uint16_t line_number
  *
  * @note This function has no effect when returning with an error.
  *
- * @post If return code is ::NRF_SUCCESS 
+ * @post If return code is ::NRF_SUCCESS
  *       - SoC library and protocol stack APIs are made available
  *       - A portion of RAM will be unavailable (see relevant SDS documentation)
  *       - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation)
@@ -126,7 +121,7 @@ typedef void (*softdevice_assertion_handler_t)(uint32_t pc, uint16_t line_number
 SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lfclksrc_t clock_source, softdevice_assertion_handler_t assertion_handler));
 
 /**@brief Disables the SoftDevice and by extension the protocol stack.
- * 
+ *
  * Idempotent function to disable the SoftDevice.
  *
  * @post SoC library and protocol stack APIs are made unavailable.
@@ -149,14 +144,14 @@ SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void));
 SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled));
 
 /**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice
- * 
+ *
  * This function is only intended to be called when a bootloader is enabled.
  *
  * @param[in] address The base address of the interrupt vector table for forwarded interrupts.
- 
+
  * @retval ::NRF_SUCCESS
  */
-SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); 
+SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address));
 
 /** @} */
 
diff --git a/nordic/nrf-sdk/s110/nrf_soc.h b/nordic/nrf-sdk/s110/nrf_soc.h
index 70b3240..bc84135 100644
--- a/nordic/nrf-sdk/s110/nrf_soc.h
+++ b/nordic/nrf-sdk/s110/nrf_soc.h
@@ -5,13 +5,13 @@
  * agreement with Nordic Semiconductor.
  *
  */
- 
+
 /**
  * @defgroup nrf_soc_api SoC Library API
  * @{
- * 
+ *
  * @brief APIs for the SoC library.
- * 
+ *
 */
 
 #ifndef NRF_SOC_H__
@@ -28,8 +28,62 @@
  * @{ */
 
 /**@brief The number of the lowest SVC number reserved for the SoC library. */
-#define SOC_SVC_BASE               (0x20)
-#define SOC_SVC_BASE_NOT_AVAILABLE (0x23)
+#define SOC_SVC_BASE               0x20
+#define SOC_SVC_BASE_NOT_AVAILABLE 0x23
+
+#define SD_FLASH_PAGE_ERASE                 SOC_SVC_BASE
+#define SD_FLASH_WRITE                      0x21
+#define SD_FLASH_PROTECT                    0x22
+#define SD_MUTEX_NEW                        SOC_SVC_BASE_NOT_AVAILABLE
+#define SD_MUTEX_ACQUIRE                    0x24
+#define SD_MUTEX_RELEASE                    0x25
+#define SD_NVIC_ENABLEIRQ                   0x26
+#define SD_NVIC_DISABLEIRQ                  0x27
+#define SD_NVIC_GETPENDINGIRQ               0x28
+#define SD_NVIC_SETPENDINGIRQ               0x29
+#define SD_NVIC_CLEARPENDINGIRQ             0x2A
+#define SD_NVIC_SETPRIORITY                 0x2B
+#define SD_NVIC_GETPRIORITY                 0x2C
+#define SD_NVIC_SYSTEMRESET                 0x2D
+#define SD_NVIC_CRITICAL_REGION_ENTER       0x2E
+#define SD_NVIC_CRITICAL_REGION_EXIT        0x2F
+#define SD_RAND_APPLICATION_POOL_CAPACITY   0x30
+#define SD_RAND_APPLICATION_BYTES_AVAILABLE 0x31
+#define SD_RAND_APPLICATION_GET_VECTOR      0x32
+#define SD_POWER_MODE_SET                   0x33
+#define SD_POWER_SYSTEM_OFF                 0x34
+#define SD_POWER_RESET_REASON_GET           0x35
+#define SD_POWER_RESET_REASON_CLR           0x36
+#define SD_POWER_POF_ENABLE                 0x37
+#define SD_POWER_POF_THRESHOLD_SET          0x38
+#define SD_POWER_RAMON_SET                  0x39
+#define SD_POWER_RAMON_CLR                  0x3A
+#define SD_POWER_RAMON_GET                  0x3B
+#define SD_POWER_GPREGRET_SET               0x3C
+#define SD_POWER_GPREGRET_CLR               0x3D
+#define SD_POWER_GPREGRET_GET               0x3E
+#define SD_POWER_DCDC_MODE_SET              0x3F
+#define SD_APP_EVT_WAIT                     0x40
+#define SD_CLOCK_HFCLK_REQUEST              0x41
+#define SD_CLOCK_HFCLK_RELEASE              0x42
+#define SD_CLOCK_HFCLK_IS_RUNNING           0x43
+#define SD_PPI_CHANNEL_ENABLE_GET           0x44
+#define SD_PPI_CHANNEL_ENABLE_SET           0x45
+#define SD_PPI_CHANNEL_ENABLE_CLR           0x46
+#define SD_PPI_CHANNEL_ASSIGN               0x47
+#define SD_PPI_GROUP_TASK_ENABLE            0x48
+#define SD_PPI_GROUP_TASK_DISABLE           0x49
+#define SD_PPI_GROUP_ASSIGN                 0x4A
+#define SD_PPI_GROUP_GET                    0x4B
+#define SD_RADIO_NOTIFICATION_CFG_SET       0x4C
+#define SD_ECB_BLOCK_ENCRYPT                0x4D
+#define SD_RADIO_SESSION_OPEN               0x4E
+#define SD_RADIO_SESSION_CLOSE              0x4F
+#define SD_RADIO_REQUEST                    0x50
+#define SD_EVT_GET                          0x51
+#define SD_TEMP_GET                         0x52
+#define SVC_SOC_LAS                         0x53
+
 
 /**@brief Guranteed time for application to process radio inactive notification. */
 #define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US  (62)
@@ -39,6 +93,7 @@
 
 #define SOC_ECB_KEY_LENGTH            (16)                       /**< ECB key length. */
 #define SOC_ECB_CLEARTEXT_LENGTH      (16)                       /**< ECB cleartext length. */
+
 #define SOC_ECB_CIPHERTEXT_LENGTH     (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */
 
 #define SD_EVT_IRQn                   (SWI2_IRQn)        /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */
@@ -60,63 +115,6 @@
 /** @addtogroup NRF_SOC_TYPES Types
  * @{ */
 
-/**@brief The SVC numbers used by the SVC functions in the SoC library. */
-enum NRF_SOC_SVCS
-{
-  SD_FLASH_PAGE_ERASE = SOC_SVC_BASE,
-  SD_FLASH_WRITE,
-  SD_FLASH_PROTECT,
-  SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE,
-  SD_MUTEX_ACQUIRE,
-  SD_MUTEX_RELEASE,
-  SD_NVIC_ENABLEIRQ,
-  SD_NVIC_DISABLEIRQ,
-  SD_NVIC_GETPENDINGIRQ,
-  SD_NVIC_SETPENDINGIRQ,
-  SD_NVIC_CLEARPENDINGIRQ,
-  SD_NVIC_SETPRIORITY,
-  SD_NVIC_GETPRIORITY,
-  SD_NVIC_SYSTEMRESET,
-  SD_NVIC_CRITICAL_REGION_ENTER,
-  SD_NVIC_CRITICAL_REGION_EXIT,
-  SD_RAND_APPLICATION_POOL_CAPACITY,
-  SD_RAND_APPLICATION_BYTES_AVAILABLE,
-  SD_RAND_APPLICATION_GET_VECTOR,
-  SD_POWER_MODE_SET,
-  SD_POWER_SYSTEM_OFF,
-  SD_POWER_RESET_REASON_GET,
-  SD_POWER_RESET_REASON_CLR,
-  SD_POWER_POF_ENABLE,
-  SD_POWER_POF_THRESHOLD_SET,
-  SD_POWER_RAMON_SET,
-  SD_POWER_RAMON_CLR,
-  SD_POWER_RAMON_GET,
-  SD_POWER_GPREGRET_SET,
-  SD_POWER_GPREGRET_CLR,
-  SD_POWER_GPREGRET_GET,
-  SD_POWER_DCDC_MODE_SET,
-  SD_APP_EVT_WAIT,
-  SD_CLOCK_HFCLK_REQUEST,
-  SD_CLOCK_HFCLK_RELEASE,
-  SD_CLOCK_HFCLK_IS_RUNNING,
-  SD_PPI_CHANNEL_ENABLE_GET,
-  SD_PPI_CHANNEL_ENABLE_SET,
-  SD_PPI_CHANNEL_ENABLE_CLR,
-  SD_PPI_CHANNEL_ASSIGN,
-  SD_PPI_GROUP_TASK_ENABLE,
-  SD_PPI_GROUP_TASK_DISABLE,
-  SD_PPI_GROUP_ASSIGN,
-  SD_PPI_GROUP_GET,
-  SD_RADIO_NOTIFICATION_CFG_SET,
-  SD_ECB_BLOCK_ENCRYPT,
-  SD_RADIO_SESSION_OPEN,
-  SD_RADIO_SESSION_CLOSE,
-  SD_RADIO_REQUEST,
-  SD_EVT_GET,
-  SD_TEMP_GET,
-  SVC_SOC_LAST
-};
-
 /**@brief Possible values of a ::nrf_mutex_t. */
 enum NRF_MUTEX_VALUES
 {
@@ -144,7 +142,7 @@ enum NRF_POWER_THRESHOLDS
 {
   NRF_POWER_THRESHOLD_V21,  /**< 2.1 Volts power failure threshold. */
   NRF_POWER_THRESHOLD_V23,  /**< 2.3 Volts power failure threshold. */
-  NRF_POWER_THRESHOLD_V25,  /**< 2.5 Volts power failure threshold. */ 
+  NRF_POWER_THRESHOLD_V25,  /**< 2.5 Volts power failure threshold. */
   NRF_POWER_THRESHOLD_V27   /**< 2.7 Volts power failure threshold. */
 };
 
@@ -476,7 +474,7 @@ SVCALL(SD_NVIC_CRITICAL_REGION_ENTER, uint32_t, sd_nvic_critical_region_enter(ui
 /**@brief Exit critical region.
  *
  * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter.
- * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. 
+ * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called.
  *
  * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter.
  *
@@ -510,7 +508,7 @@ SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE, uint32_t, sd_rand_application_bytes_
 */
 SVCALL(SD_RAND_APPLICATION_GET_VECTOR, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length));
 
-/**@brief Gets the reset reason register. 
+/**@brief Gets the reset reason register.
  *
  * @param[out]  p_reset_reason  Contents of the NRF_POWER->RESETREAS register.
  *
@@ -518,7 +516,7 @@ SVCALL(SD_RAND_APPLICATION_GET_VECTOR, uint32_t, sd_rand_application_vector_get(
  */
 SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason));
 
-/**@brief Clears the bits of the reset reason register. 
+/**@brief Clears the bits of the reset reason register.
  *
  * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register.
  *
@@ -535,7 +533,7 @@ SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t r
  */
 SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(nrf_power_mode_t power_mode));
 
-/**@brief Puts the chip in System OFF mode. 
+/**@brief Puts the chip in System OFF mode.
  *
  * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN
  */
@@ -657,12 +655,12 @@ SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void));
 SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running));
 
 /**@brief Waits for an application event.
- * 
+ *
  * An application event is either an application interrupt or a pended interrupt when the
  * interrupt is disabled. When the interrupt is enabled it will be taken immediately since
  * this function will wait in thread mode, then the execution will return in the application's
- * main thread. When an interrupt is disabled and gets pended it will return to the application's 
- * thread main. The application must ensure that the pended flag is cleared using 
+ * main thread. When an interrupt is disabled and gets pended it will return to the application's
+ * thread main. The application must ensure that the pended flag is cleared using
  * ::sd_nvic_ClearPendingIRQ in order to sleep using this function. This is only necessary for
  * disabled interrupts, as the interrupt handler will clear the pending flag automatically for
  * enabled interrupts.
@@ -771,7 +769,7 @@ SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t
  *                       @ref NRF_RADIO_NOTIFICATION_TYPE_NONE.
  *
  * @param[in]  distance  Distance between the notification signal and start of radio activity.
- *                       This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or 
+ *                       This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or
  *                       @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used.
  *
  * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid.
@@ -797,12 +795,12 @@ SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t *
  * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending.
  *
  * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter.
- * @retval ::NRF_ERROR_NOT_FOUND No pending events. 
+ * @retval ::NRF_ERROR_NOT_FOUND No pending events.
  */
 SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id));
 
 /**@brief Get the temperature measured on the chip
- * 
+ *
  * This function will block until the temperature measurement is done.
  * It takes around 50us from call to return.
  *
@@ -937,7 +935,7 @@ SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t protenset0, uint32_
  * @note The nrf_radio_signal_callback_t(NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the
  *       specified radio timeslot start, but this does not affect the actual start time of the timeslot.
  * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency
- *       (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is 
+ *       (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is
  *       guaranteed to be clocked from the external crystal.
  * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral
  *       during the radio timeslot.
diff --git a/nordic/nrf-sdk/s110/nrf_svc.h b/nordic/nrf-sdk/s110/nrf_svc.h
index f0724fd..ab7d9d6 100644
--- a/nordic/nrf-sdk/s110/nrf_svc.h
+++ b/nordic/nrf-sdk/s110/nrf_svc.h
@@ -9,15 +9,24 @@
 #if defined (__CC_ARM)
 #define SVCALL(number, return_type, signature) return_type __svc(number) signature
 #elif defined (__GNUC__)
-#define SVCALL(number, return_type, signature) \
-  _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \
-  _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
-  __attribute__((naked)) static return_type signature \
-  { \
-    __asm( \
-        "svc %0\n" \
-        "bx r14" : : "I" (number) : "r0" \
-    ); \
+/* The following two macros are needed so that when macro arguments are
+ * substituted into the macro body of the SVCALL, they are expanded and
+ * stringified. This would otherwise not have happened because argument-expansion
+ * doesn't happen if macro-arguments appear with the # or ## preprocessor
+ * operators.
+ */
+#define STRINGIFY(ARG) #ARG
+#define EXPAND_AND_STRINGIFY(ARG) STRINGIFY(ARG)
+
+#define SVCALL(number, return_type, signature)                  \
+  _Pragma("GCC diagnostic ignored \"-Wreturn-type\"")           \
+  _Pragma("GCC diagnostic ignored \"-Wunused-function\"")       \
+  __attribute__((naked)) static return_type signature           \
+  {                                                             \
+    __asm(                                                      \
+        "svc " EXPAND_AND_STRINGIFY(number) "\n"                \
+        "bx r14" : : : "r0"                                     \
+    );                                                          \
   }
 #elif defined (__ICCARM__)
 #define PRAGMA(x) _Pragma(#x)
@@ -25,7 +34,7 @@
 PRAGMA(swi_number = number) \
  __swi return_type signature;
 #else
-#define SVCALL(number, return_type, signature) return_type signature  
+#define SVCALL(number, return_type, signature) return_type signature
 #endif
 #endif  // SVCALL
 
