Firmware/IAR 9.2-CC2541-1.4.1/Projects/ble/Profiles/Roles/gap.c
bStatus_t GAP_DeviceInit(  uint8 taskID,
                           uint8 profileRole,
                           uint8 maxScanResponses,
                           uint8 *pIRK,
                           uint8 *pSRK,
                           uint32 *pSignCounter )
{
  bStatus_t stat = INVALIDPARAMETER;   // Return status

  // Valid profile roles and supported combinations
  switch ( profileRole )
  {
    case GAP_PROFILE_BROADCASTER:
      #if ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;

    case GAP_PROFILE_OBSERVER:
      #if ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;

    case GAP_PROFILE_PERIPHERAL:
      #if ( HOST_CONFIG & PERIPHERAL_CFG )
      {
        stat = SUCCESS;
      }
      #endif
      break;

    case GAP_PROFILE_CENTRAL:
      #if ( HOST_CONFIG & CENTRAL_CFG )
      {
        stat = SUCCESS;
      }
      #endif
      break;

    case (GAP_PROFILE_BROADCASTER | GAP_PROFILE_OBSERVER):
      #if ( ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) ) && \
            ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;

    case (GAP_PROFILE_PERIPHERAL | GAP_PROFILE_OBSERVER):
      #if ( ( HOST_CONFIG & PERIPHERAL_CFG ) && \
            ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;

    case (GAP_PROFILE_CENTRAL | GAP_PROFILE_BROADCASTER):
      #if ( ( HOST_CONFIG & CENTRAL_CFG ) && \
            ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;

    #if defined(CTRL_V41_CONFIG) && (CTRL_V41_CONFIG & MST_SLV_CFG)
    case (GAP_PROFILE_CENTRAL | GAP_PROFILE_PERIPHERAL):
      #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    #endif // CTRL_V41_CONFIG = MST_SLV_CFG
      
    // Invalid profile roles
    default:
      stat = INVALIDPARAMETER;
      break;
  }

  if ( stat == SUCCESS )
  {
    // Setup the device configuration parameters
    stat = GAP_ParamsInit( taskID, profileRole );
    if ( stat == SUCCESS )
    {
      #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
      {
        GAP_SecParamsInit( pIRK, pSRK, pSignCounter );
      }
      #endif

      #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG ) )
      {
        if ( (profileRole == GAP_PROFILE_BROADCASTER) ||
             (profileRole == GAP_PROFILE_PERIPHERAL) )
        {
          maxScanResponses = 0; // Can't scan, so no need for responses. Force 0.
        }

        // Initialize GAP Central Device Manager
        VOID GAP_CentDevMgrInit( maxScanResponses );

        #if ( HOST_CONFIG & CENTRAL_CFG )
        {
          // Register GAP Central Connection processing functions
          GAP_CentConnRegister();

          // Initialize SM Initiator
          VOID SM_InitiatorInit();
        }
        #endif
      }
      #endif

      #if ( HOST_CONFIG & ( PERIPHERAL_CFG | BROADCASTER_CFG ) )
      {
        // Initialize GAP Peripheral Device Manager
        VOID GAP_PeriDevMgrInit();

        #if ( HOST_CONFIG & PERIPHERAL_CFG )
        {
          // Register GAP Peripheral Connection processing functions
          GAP_PeriConnRegister();
          
          // Initialize SM Responder
          VOID SM_ResponderInit();
        }
        #endif
      }
      #endif
    }
  }

  return ( stat );
}
/*********************************************************************
 * Called to setup the device.  Call just once.
 *
 * Public function defined in gap.h.
 */
Called to setup the device.  Call just once.

Public function defined in gap.h.
Called to setup the device . Call just once . Public function defined in gap . h .
bStatus_t GAP_DeviceInit(  uint8 taskID,
                           uint8 profileRole,
                           uint8 maxScanResponses,
                           uint8 *pIRK,
                           uint8 *pSRK,
                           uint32 *pSignCounter )
{
  bStatus_t stat = INVALIDPARAMETER;   
  switch ( profileRole )
  {
    case GAP_PROFILE_BROADCASTER:
      #if ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    case GAP_PROFILE_OBSERVER:
      #if ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    case GAP_PROFILE_PERIPHERAL:
      #if ( HOST_CONFIG & PERIPHERAL_CFG )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    case GAP_PROFILE_CENTRAL:
      #if ( HOST_CONFIG & CENTRAL_CFG )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    case (GAP_PROFILE_BROADCASTER | GAP_PROFILE_OBSERVER):
      #if ( ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) ) && \
            ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    case (GAP_PROFILE_PERIPHERAL | GAP_PROFILE_OBSERVER):
      #if ( ( HOST_CONFIG & PERIPHERAL_CFG ) && \
            ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    case (GAP_PROFILE_CENTRAL | GAP_PROFILE_BROADCASTER):
      #if ( ( HOST_CONFIG & CENTRAL_CFG ) && \
            ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    #if defined(CTRL_V41_CONFIG) && (CTRL_V41_CONFIG & MST_SLV_CFG)
    case (GAP_PROFILE_CENTRAL | GAP_PROFILE_PERIPHERAL):
      #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
      {
        stat = SUCCESS;
      }
      #endif
      break;
    #endif 
    default:
      stat = INVALIDPARAMETER;
      break;
  }
  if ( stat == SUCCESS )
  {
    stat = GAP_ParamsInit( taskID, profileRole );
    if ( stat == SUCCESS )
    {
      #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
      {
        GAP_SecParamsInit( pIRK, pSRK, pSignCounter );
      }
      #endif
      #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG ) )
      {
        if ( (profileRole == GAP_PROFILE_BROADCASTER) ||
             (profileRole == GAP_PROFILE_PERIPHERAL) )
        {
          maxScanResponses = 0; 
        }
        VOID GAP_CentDevMgrInit( maxScanResponses );
        #if ( HOST_CONFIG & CENTRAL_CFG )
        {
          GAP_CentConnRegister();
          VOID SM_InitiatorInit();
        }
        #endif
      }
      #endif
      #if ( HOST_CONFIG & ( PERIPHERAL_CFG | BROADCASTER_CFG ) )
      {
        VOID GAP_PeriDevMgrInit();
        #if ( HOST_CONFIG & PERIPHERAL_CFG )
        {
          GAP_PeriConnRegister();
          VOID SM_ResponderInit();
        }
        #endif
      }
      #endif
    }
  }
  return ( stat );
}
bStatus_t GAP_DeviceInit ( uint8 taskID , uint8 profileRole , uint8 maxScanResponses , uint8 * pIRK , uint8 * pSRK , uint32 * pSignCounter ) { bStatus_t stat = INVALIDPARAMETER ; switch ( profileRole ) { case GAP_PROFILE_BROADCASTER : #if ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) ) { stat = SUCCESS ; } #endif break ; case GAP_PROFILE_OBSERVER : #if ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) ) { stat = SUCCESS ; } #endif break ; case GAP_PROFILE_PERIPHERAL : #if ( HOST_CONFIG & PERIPHERAL_CFG ) { stat = SUCCESS ; } #endif break ; case GAP_PROFILE_CENTRAL : #if ( HOST_CONFIG & CENTRAL_CFG ) { stat = SUCCESS ; } #endif break ; case ( GAP_PROFILE_BROADCASTER | GAP_PROFILE_OBSERVER ) : #if ( ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) ) && ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) ) ) { stat = SUCCESS ; } #endif break ; case ( GAP_PROFILE_PERIPHERAL | GAP_PROFILE_OBSERVER ) : #if ( ( HOST_CONFIG & PERIPHERAL_CFG ) && ( HOST_CONFIG & ( OBSERVER_CFG | CENTRAL_CFG ) ) ) { stat = SUCCESS ; } #endif break ; case ( GAP_PROFILE_CENTRAL | GAP_PROFILE_BROADCASTER ) : #if ( ( HOST_CONFIG & CENTRAL_CFG ) && ( HOST_CONFIG & ( BROADCASTER_CFG | PERIPHERAL_CFG ) ) ) { stat = SUCCESS ; } #endif break ; #if defined ( CTRL_V41_CONFIG ) && ( CTRL_V41_CONFIG & MST_SLV_CFG ) case ( GAP_PROFILE_CENTRAL | GAP_PROFILE_PERIPHERAL ) : #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) ) { stat = SUCCESS ; } #endif break ; #endif default : stat = INVALIDPARAMETER ; break ; } if ( stat == SUCCESS ) { stat = GAP_ParamsInit ( taskID , profileRole ) ; if ( stat == SUCCESS ) { #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) ) { GAP_SecParamsInit ( pIRK , pSRK , pSignCounter ) ; } #endif #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG ) ) { if ( ( profileRole == GAP_PROFILE_BROADCASTER ) || ( profileRole == GAP_PROFILE_PERIPHERAL ) ) { maxScanResponses = 0 ; } VOID GAP_CentDevMgrInit ( maxScanResponses ) ; #if ( HOST_CONFIG & CENTRAL_CFG ) { GAP_CentConnRegister ( ) ; VOID SM_InitiatorInit ( ) ; } #endif } #endif #if ( HOST_CONFIG & ( PERIPHERAL_CFG | BROADCASTER_CFG ) ) { VOID GAP_PeriDevMgrInit ( ) ; #if ( HOST_CONFIG & PERIPHERAL_CFG ) { GAP_PeriConnRegister ( ) ; VOID SM_ResponderInit ( ) ; } #endif } #endif } } return ( stat ) ; }
Called to setup the device.
Called to setup the device .
// Return status
 // Valid profile roles and supported combinations
 // CTRL_V41_CONFIG = MST_SLV_CFG
 // Invalid profile roles
 // Setup the device configuration parameters
 // Can't scan, so no need for responses. Force 0.
 // Initialize GAP Central Device Manager
 // Register GAP Central Connection processing functions
 // Initialize SM Initiator
 // Initialize GAP Peripheral Device Manager
 // Register GAP Peripheral Connection processing functions
 // Initialize SM Responder
