host/sm: Add doxygen comments to the header file

Adds missing macros, functions and structures documentation.
diff --git a/nimble/host/include/host/ble_sm.h b/nimble/host/include/host/ble_sm.h
index 51e745f..503e131 100644
--- a/nimble/host/include/host/ble_sm.h
+++ b/nimble/host/include/host/ble_sm.h
@@ -20,6 +20,13 @@
 #ifndef H_BLE_SM_
 #define H_BLE_SM_
 
+/**
+ * @brief Bluetooth Security Manager (SM)
+ * @defgroup bt_sm Bluetooth Security Manager (SM)
+ * @ingroup bt_host
+ * @{
+ */
+
 #include <inttypes.h>
 #include "syscfg/syscfg.h"
 #include <stdbool.h>
@@ -29,68 +36,213 @@
 extern "C" {
 #endif
 
+/**
+ * @defgroup ble_sm_err Security Manager (SM) Error Codes
+ * @{
+ */
+
+/** SM Error Code: Success */
 #define BLE_SM_ERR_SUCCESS                      0x00
+
+/** SM Error Code: Passkey entry failed */
 #define BLE_SM_ERR_PASSKEY                      0x01
+
+/** SM Error Code: Out Of Band (OOB) not available */
 #define BLE_SM_ERR_OOB                          0x02
+
+/** SM Error Code: Authentication Requirements */
 #define BLE_SM_ERR_AUTHREQ                      0x03
+
+/** SM Error Code: Confirm Value failed */
 #define BLE_SM_ERR_CONFIRM_MISMATCH             0x04
+
+/** SM Error Code: Pairing Not Supported */
 #define BLE_SM_ERR_PAIR_NOT_SUPP                0x05
+
+/** SM Error Code: Encryption Key Size */
 #define BLE_SM_ERR_ENC_KEY_SZ                   0x06
+
+/** SM Error Code: Command Not Supported */
 #define BLE_SM_ERR_CMD_NOT_SUPP                 0x07
+
+/** SM Error Code: Unspecified Reason */
 #define BLE_SM_ERR_UNSPECIFIED                  0x08
+
+/** SM Error Code: Repeated Attempts */
 #define BLE_SM_ERR_REPEATED                     0x09
+
+/** SM Error Code: Invalid Parameters */
 #define BLE_SM_ERR_INVAL                        0x0a
+
+/** SM Error Code: DHKey Check failed */
 #define BLE_SM_ERR_DHKEY                        0x0b
+
+/** SM Error Code: Numeric Comparison failed */
 #define BLE_SM_ERR_NUMCMP                       0x0c
+
+/** SM Error Code: Pairing in progress */
 #define BLE_SM_ERR_ALREADY                      0x0d
+
+/** SM Error Code: Cross-transport Key Derivation/Generation not allowed */
 #define BLE_SM_ERR_CROSS_TRANS                  0x0e
+
+/** SM Error Code: Key Rejected */
 #define BLE_SM_ERR_KEY_REJ                      0x0f
+
+/** SM Error Code: Out Of Boundary Code Value */
 #define BLE_SM_ERR_MAX_PLUS_1                   0x10
 
+/** @} */
+
+/**
+ * @defgroup ble_sm_pair_alg Security Manager (SM) Pairing Algorithms
+ * @{
+ */
+
+/** SM Pairing Algorithm: Just Works */
 #define BLE_SM_PAIR_ALG_JW                      0
+
+/** SM Pairing Algorithm: Passkey Entry */
 #define BLE_SM_PAIR_ALG_PASSKEY                 1
+
+/** SM Pairing Algorithm: Out Of Band */
 #define BLE_SM_PAIR_ALG_OOB                     2
+
+/** SM Pairing Algorithm: Numeric Comparison */
 #define BLE_SM_PAIR_ALG_NUMCMP                  3
 
+/** @} */
+
+/**
+ * @defgroup ble_sm_pair_key_dist Security Manager (SM) Key Distribution Flags
+ * @{
+ */
+
+/** SM Key Distribution: Distribute Long Term Key (LTK) */
 #define BLE_SM_PAIR_KEY_DIST_ENC                0x01
+
+/** SM Key Distribution: Distribute Identity Resolving Key (IRK) */
 #define BLE_SM_PAIR_KEY_DIST_ID                 0x02
+
+/** SM Key Distribution: Distribute Connection Signature Resolving Key (CSRK) */
 #define BLE_SM_PAIR_KEY_DIST_SIGN               0x04
+
+/** SM Key Distribution: Derive the Link Key from the LTK */
 #define BLE_SM_PAIR_KEY_DIST_LINK               0x08
+
+/** SM Key Distribution: Reserved For Future Use */
 #define BLE_SM_PAIR_KEY_DIST_RESERVED           0xf0
 
+/** @} */
+
+/**
+ * @defgroup ble_sm_io_cap Security Manager (SM) Input/Output Capabilities
+ * @{
+ */
+
+/** SM IO Capabilities: Display Only */
 #define BLE_SM_IO_CAP_DISP_ONLY                 0x00
+
+/** SM IO Capabilities: Display Yes No */
 #define BLE_SM_IO_CAP_DISP_YES_NO               0x01
+
+/** SM IO Capabilities: Keyboard Only */
 #define BLE_SM_IO_CAP_KEYBOARD_ONLY             0x02
+
+/** SM IO Capabilities: No Input No Output */
 #define BLE_SM_IO_CAP_NO_IO                     0x03
+
+/** SM IO Capabilities: Keyboard Display */
 #define BLE_SM_IO_CAP_KEYBOARD_DISP             0x04
+
+/** SM IO Capabilities: Reserved For Future Use */
 #define BLE_SM_IO_CAP_RESERVED                  0x05
 
+/** @} */
+
+/**
+ * @defgroup ble_sm_pair_oob Security Manager (SM) Out Of Band Data (OOB) Flags
+ * @{
+ */
+
+/** SM OOB: Out Of Band Data Not Available */
 #define BLE_SM_PAIR_OOB_NO                      0x00
+
+/** SM OOB: Out Of Band Data Available */
 #define BLE_SM_PAIR_OOB_YES                     0x01
+
+/** SM OOB: Reserved For Future Use */
 #define BLE_SM_PAIR_OOB_RESERVED                0x02
 
+/** @} */
+
+/**
+ * @defgroup ble_sm_authreq Security Manager (SM) Authentication Requirements Flags
+ * @{
+ */
+
+/** SM Authentication Requirement: Bonding */
 #define BLE_SM_PAIR_AUTHREQ_BOND                0x01
+
+/** SM Authentication Requirement: MITM protection */
 #define BLE_SM_PAIR_AUTHREQ_MITM                0x04
+
+/** SM Authentication Requirement: Secure Connections */
 #define BLE_SM_PAIR_AUTHREQ_SC                  0x08
+
+/** SM Authentication Requirement: Keypress notifications */
 #define BLE_SM_PAIR_AUTHREQ_KEYPRESS            0x10
+
+/** SM Authentication Requirement: Reserved For Future Use */
 #define BLE_SM_PAIR_AUTHREQ_RESERVED            0xe2
 
+/** @} */
+
+/**
+ * @defgroup ble_sm_pair_key_sz Security Manager (SM) Key Sizes
+ * @{
+ */
+
+/** SM Key Size: Minimum supported encryption key size in octets */
 #define BLE_SM_PAIR_KEY_SZ_MIN                  7
+
+/** SM Key Size: Maximum supported encryption key size in octets */
 #define BLE_SM_PAIR_KEY_SZ_MAX                  16
 
-/*
+/** @} */
+
+/**
+ * @defgroup ble_sm_ioact Security Manager (SM) Key Generation Action
+ * @{
  * The security manager asks the application to perform a key generation
  * action.  The application passes the passkey back to SM via
  * ble_sm_inject_io().
  */
+
+/** SM IO Action: None (Just Works pairing) */
 #define BLE_SM_IOACT_NONE                       0
+
+/** SM IO Action: Out Of Band (OOB) */
 #define BLE_SM_IOACT_OOB                        1
+
+/** SM IO Action: Input (Passkey Entry) */
 #define BLE_SM_IOACT_INPUT                      2
+
+/** SM IO Action: Passkey Display */
 #define BLE_SM_IOACT_DISP                       3
+
+/** SM IO Action: Numeric Comparison */
 #define BLE_SM_IOACT_NUMCMP                     4
+
+/** SM IO Action: Out Of Band (OOB) Secure Connections */
 #define BLE_SM_IOACT_OOB_SC                     5
+
+/** SM IO Action: Out Of Boundary Code Value */
 #define BLE_SM_IOACT_MAX_PLUS_ONE               6
 
+/** @} */
+
+/** Represents Out Of Band (OOB) data used in Secure Connections pairing */
 struct ble_sm_sc_oob_data {
     /** Random Number. */
     uint8_t r[16];
@@ -99,19 +251,64 @@
     uint8_t c[16];
 };
 
+/** Represents Input/Output data for Security Manager used during pairing process */
 struct ble_sm_io {
+    /** Pairing action, indicating the type of pairing method. Can be one of the
+     *  following:
+     *      o BLE_SM_IOACT_NONE
+     *      o BLE_SM_IOACT_OOB
+     *      o BLE_SM_IOACT_INPUT
+     *      o BLE_SM_IOACT_DISP
+     *      o BLE_SM_IOACT_NUMCMP
+     *      o BLE_SM_IOACT_OOB_SC
+     */
     uint8_t action;
+
+    /** Union holding different types of pairing data. The valid field is inferred
+     *  from the action field. */
     union {
+        /** Passkey value between 000000 and 999999.
+         *  Valid for the following actions:
+         *      o BLE_SM_IOACT_INPUT
+         *      o BLE_SM_IOACT_DISP
+         */
         uint32_t passkey;
+
+        /** Temporary Key random value used in Legacy Pairing.
+         *  Valid for the following actions:
+         *      o BLE_SM_IOACT_OOB
+         */
         uint8_t  oob[16];
+
+        /** Numeric Comparison acceptance indicator.
+         *  Valid for the following actions:
+         *      o BLE_SM_IOACT_NUMCMP
+         */
         uint8_t  numcmp_accept;
+
+        /** Out Of Band (OOB) data used in Secure Connections.
+         *  Valid for the following actions:
+         *      o BLE_SM_IOACT_OOB_SC
+         */
         struct {
-            struct ble_sm_sc_oob_data *local;
+            /** Remote Secure Connections Out Of Band (OOB) data */
             struct ble_sm_sc_oob_data *remote;
+            /** Local Secure Connections Out Of Band (OOB) data */
+            struct ble_sm_sc_oob_data *local;
         } oob_sc_data;
     };
 };
 
+/**
+ * Generates Out of Band (OOB) data used during the authentication process.
+ * The data consists of 128-bit Random Number and 128-bit Confirm Value.
+ *
+ * @param oob_data              A pointer to the structure where the generated
+ *                              OOB data will be stored.
+ *
+ * @return                      0 on success;
+ *                              Non-zero on failure.
+ */
 int ble_sm_sc_oob_generate_data(struct ble_sm_sc_oob_data *oob_data);
 
 #if MYNEWT_VAL(BLE_SM_CSIS_SIRK)
@@ -132,8 +329,22 @@
 #endif
 
 #if NIMBLE_BLE_SM
+/**
+ * @brief Passes the IO data from an application to the Security Manager during the pairing
+ * process.
+ *
+ * It should be used after a pairing method has been established for given connection
+ * and once the appropriate key generation information (e.g. passkey) has been obtained.
+ *
+ * @param conn_handle           The connection handle of the relevant connection.
+ * @param pkey                  A pointer to the structure where IO data is stored.
+ *
+ * @return                      0 on success;
+ *                              Non-zero on failure.
+ */
 int ble_sm_inject_io(uint16_t conn_handle, struct ble_sm_io *pkey);
 #else
+/** This macro replaces the function to return BLE_HS_ENOTSUP when SM is disabled. */
 #define ble_sm_inject_io(conn_handle, pkey) \
     ((void)(conn_handle), BLE_HS_ENOTSUP)
 #endif
@@ -142,4 +353,8 @@
 }
 #endif
 
-#endif
+/**
+ * @}
+ */
+
+#endif /* H_BLE_SM_ */