/*---------------------------------------------------------------------------
 *            MCP_HciSeq_CreateSequence()
 *---------------------------------------------------------------------------
 *
 * Synopsis:  Prepares a HCI sequence to be used
 *
 */
void MCP_HciSeq_CreateSequence (MCP_HciSeq_Context *pContext, 
                                BtHciIfObj *hciIfObj, 
                                McpHalCoreId coreId)
{
    BtHciIfStatus   status;

    MCP_FUNC_START ("MCP_HciSeq_CreateSequence");

    /* nullify variables */
    pContext->uSequenceId = 0;
    pContext->uCommandCount = 0;
    pContext->uCurrentCommandIdx = 0;
    pContext->bPendingCommand = MCP_FALSE;
    /* register a HCI IF client */
    pContext->coreId = coreId;
    if(pContext->coreId == MCP_HAL_CORE_ID_BT)
    {
            status = BT_HCI_IF_RegisterClient(hciIfObj, _MCP_HciSeq_callback, &(pContext->handle));
        MCP_VERIFY_FATAL_NO_RETVAR ((BT_HCI_IF_STATUS_SUCCESS == status),
                                    ("MCP_HciSeq_CreateSequence: BT_HCI_IF_RegisterClient returned status %d",
                                     status));
    }

    MCP_FUNC_END ();
}
Beispiel #2
0
void MCP_LoadMngr_Create(BtHciIfObj *hciIfObj)
{
    BtHciIfStatus   status;
    MCP_FUNC_START("MCP_LoadMngr_Create");

    /* Create State Machine */
    MCP_GenSM_Create(&(tDataGenSm),
                     MCP_LM_STATE_MAX_NUM,
                     MCP_LM_EVENT_MAX_NUM,
                     &(tSmMatrix[0][0]),
                     MCP_LM_STATE_UNLOADED,
                     (Mcp_TEnumTString)MCP_LM_EventToString,
                     (Mcp_TEnumTString)MCP_LM_StateToString);

    /* Register a HCI IF client */
    status = BT_HCI_IF_RegisterClient(hciIfObj, MCP_LoadMngr_Hci_Cmds_callback, &(handle));
    MCP_VERIFY_FATAL_NO_RETVAR ((BT_HCI_IF_STATUS_SUCCESS == status),
                                ("MCP_LoadMngr_Create: BT_HCI_IF_RegisterClient returned status %d",
                                 status));

    MCP_FUNC_END();
}