164064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
264064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
364064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
464064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
564064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved.                                                  |**
664064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
764064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without    |**
864064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions    |**
964064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met:                                                              |**
1064064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
1164064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions of source code must retain the above copyright     |**
1264064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer.      |**
1364064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions in binary form must reproduce the above copyright  |**
1464064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer in    |**
1564064216a8433360745f69edddce19a606659163The Android Open Source Project**|    the documentation and/or other materials provided with the         |**
1664064216a8433360745f69edddce19a606659163The Android Open Source Project**|    distribution.                                                      |**
1764064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Neither the name Texas Instruments nor the names of its            |**
1864064216a8433360745f69edddce19a606659163The Android Open Source Project**|    contributors may be used to endorse or promote products derived    |**
1964064216a8433360745f69edddce19a606659163The Android Open Source Project**|    from this software without specific prior written permission.      |**
2064064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
2164064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
3264064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
3364064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
3464064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/
3564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "GeneralUtilApi.h"
3664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "GeneralUtil.h"
3764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "report.h"
3864064216a8433360745f69edddce19a606659163The Android Open Source Project#include "osApi.h"
3964064216a8433360745f69edddce19a606659163The Android Open Source Project
4064064216a8433360745f69edddce19a606659163The Android Open Source Project/*************************************************************************
4164064216a8433360745f69edddce19a606659163The Android Open Source Project*                        LIST OBJ                                        *
4264064216a8433360745f69edddce19a606659163The Android Open Source Project**************************************************************************
4364064216a8433360745f69edddce19a606659163The Android Open Source Project**************************************************************************
4464064216a8433360745f69edddce19a606659163The Android Open Source Project*
4564064216a8433360745f69edddce19a606659163The Android Open Source Project *	The list object mange the allocation and deallocation of generic element.
4664064216a8433360745f69edddce19a606659163The Android Open Source Project *  The obj create a list of N generic elements and fined a free entry for the Alloc process.
4764064216a8433360745f69edddce19a606659163The Android Open Source Project *  And free the entry for dealloc.
4864064216a8433360745f69edddce19a606659163The Android Open Source Project *
4964064216a8433360745f69edddce19a606659163The Android Open Source Project *
5064064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
5164064216a8433360745f69edddce19a606659163The Android Open Source Project
5264064216a8433360745f69edddce19a606659163The Android Open Source Project
5364064216a8433360745f69edddce19a606659163The Android Open Source Project
5464064216a8433360745f69edddce19a606659163The Android Open Source Project/*************************************************************************
5564064216a8433360745f69edddce19a606659163The Android Open Source Project*                        List_create                                     *
5664064216a8433360745f69edddce19a606659163The Android Open Source Project**************************************************************************
5764064216a8433360745f69edddce19a606659163The Android Open Source Project* DESCRIPTION:	This function initializes the List data module.
5864064216a8433360745f69edddce19a606659163The Android Open Source Project*
5964064216a8433360745f69edddce19a606659163The Android Open Source Project* INPUT:		hOs - handle to Os Abstraction Layer
6064064216a8433360745f69edddce19a606659163The Android Open Source Project*				MaxNumOfElements - the number of elemnts that will be Managed by the list
6164064216a8433360745f69edddce19a606659163The Android Open Source Project                ContainerSize - The size of the basic data type managed by the list
6264064216a8433360745f69edddce19a606659163The Android Open Source Project* OUTPUT:
6364064216a8433360745f69edddce19a606659163The Android Open Source Project*
6464064216a8433360745f69edddce19a606659163The Android Open Source Project*
6564064216a8433360745f69edddce19a606659163The Android Open Source Project* RETURN:		Handle to the allocated List data control block
6664064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/
6764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE List_create(TI_HANDLE hOs,int MaxNumOfElements,int ContainerSize)
6864064216a8433360745f69edddce19a606659163The Android Open Source Project{
6964064216a8433360745f69edddce19a606659163The Android Open Source Project    int index;
7064064216a8433360745f69edddce19a606659163The Android Open Source Project    List_t *List;
7164064216a8433360745f69edddce19a606659163The Android Open Source Project
7264064216a8433360745f69edddce19a606659163The Android Open Source Project	if( hOs  == NULL )
7364064216a8433360745f69edddce19a606659163The Android Open Source Project	{
7464064216a8433360745f69edddce19a606659163The Android Open Source Project	    WLAN_OS_REPORT(("FATAL ERROR:List_create(): OS handle Error - Aborting\n"));
7564064216a8433360745f69edddce19a606659163The Android Open Source Project		return NULL;
7664064216a8433360745f69edddce19a606659163The Android Open Source Project	}
7764064216a8433360745f69edddce19a606659163The Android Open Source Project
7864064216a8433360745f69edddce19a606659163The Android Open Source Project	/* alocate List block */
7964064216a8433360745f69edddce19a606659163The Android Open Source Project	List = (List_t*)os_memoryAlloc(hOs, sizeof(List_t));
8064064216a8433360745f69edddce19a606659163The Android Open Source Project	if(List == NULL)
8164064216a8433360745f69edddce19a606659163The Android Open Source Project	    return NULL;
8264064216a8433360745f69edddce19a606659163The Android Open Source Project
8364064216a8433360745f69edddce19a606659163The Android Open Source Project
8464064216a8433360745f69edddce19a606659163The Android Open Source Project    /* alocate the List of Elements */
8564064216a8433360745f69edddce19a606659163The Android Open Source Project    List->ElementList =(ListElement_t*)os_memoryAlloc(hOs, (sizeof(ListElement_t)*MaxNumOfElements));
8664064216a8433360745f69edddce19a606659163The Android Open Source Project	if(List->ElementList == NULL)
8764064216a8433360745f69edddce19a606659163The Android Open Source Project    {
8864064216a8433360745f69edddce19a606659163The Android Open Source Project        os_memoryFree(List->hOs, List, sizeof(List_t));
8964064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
9064064216a8433360745f69edddce19a606659163The Android Open Source Project    }
9164064216a8433360745f69edddce19a606659163The Android Open Source Project
9264064216a8433360745f69edddce19a606659163The Android Open Source Project    /*Allocate the Data containers*/
9364064216a8433360745f69edddce19a606659163The Android Open Source Project    for(index=0;index<MaxNumOfElements;index++)
9464064216a8433360745f69edddce19a606659163The Android Open Source Project    {
9564064216a8433360745f69edddce19a606659163The Android Open Source Project        List->ElementList[index].Container = os_memoryAlloc(hOs,ContainerSize);
9664064216a8433360745f69edddce19a606659163The Android Open Source Project        if(List->ElementList[index].Container == NULL)
9764064216a8433360745f69edddce19a606659163The Android Open Source Project            break;
9864064216a8433360745f69edddce19a606659163The Android Open Source Project        List->ElementList[index].Inuse = FALSE;
9964064216a8433360745f69edddce19a606659163The Android Open Source Project    }
10064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (index != MaxNumOfElements)  /*Not all the list element was allocated and*/
10164064216a8433360745f69edddce19a606659163The Android Open Source Project    {                                /*therefore we free the entire list and rap it up*/
10264064216a8433360745f69edddce19a606659163The Android Open Source Project       index--;
10364064216a8433360745f69edddce19a606659163The Android Open Source Project       for(;index>=0;index--)
10464064216a8433360745f69edddce19a606659163The Android Open Source Project            os_memoryFree(hOs,List->ElementList[index].Container,ContainerSize);
10564064216a8433360745f69edddce19a606659163The Android Open Source Project       os_memoryFree(List->hOs, List->ElementList, (sizeof(ListElement_t)*MaxNumOfElements));
10664064216a8433360745f69edddce19a606659163The Android Open Source Project       os_memoryFree(List->hOs,List,(sizeof(List_t)));
10764064216a8433360745f69edddce19a606659163The Android Open Source Project       return NULL;
10864064216a8433360745f69edddce19a606659163The Android Open Source Project
10964064216a8433360745f69edddce19a606659163The Android Open Source Project    }
11064064216a8433360745f69edddce19a606659163The Android Open Source Project
11164064216a8433360745f69edddce19a606659163The Android Open Source Project    List->MaxNumOfElements = MaxNumOfElements;
11264064216a8433360745f69edddce19a606659163The Android Open Source Project    List->ContainerSize = ContainerSize;
11364064216a8433360745f69edddce19a606659163The Android Open Source Project	return((TI_HANDLE)List);
11464064216a8433360745f69edddce19a606659163The Android Open Source Project}
11564064216a8433360745f69edddce19a606659163The Android Open Source Project
11664064216a8433360745f69edddce19a606659163The Android Open Source Project
11764064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
11864064216a8433360745f69edddce19a606659163The Android Open Source Project*							List_Destroy				                   *
11964064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
12064064216a8433360745f69edddce19a606659163The Android Open Source Project* DESCRIPTION:	This function unload the List data module.
12164064216a8433360745f69edddce19a606659163The Android Open Source Project*
12264064216a8433360745f69edddce19a606659163The Android Open Source Project* INPUTS:		hCtrlData - the object
12364064216a8433360745f69edddce19a606659163The Android Open Source Project*
12464064216a8433360745f69edddce19a606659163The Android Open Source Project* OUTPUT:
12564064216a8433360745f69edddce19a606659163The Android Open Source Project*
12664064216a8433360745f69edddce19a606659163The Android Open Source Project* RETURNS:		OK - Unload succesfull
12764064216a8433360745f69edddce19a606659163The Android Open Source Project*				NOK - Unload unsuccesfull
12864064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
12964064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS List_Destroy(TI_HANDLE hList)
13064064216a8433360745f69edddce19a606659163The Android Open Source Project{
13164064216a8433360745f69edddce19a606659163The Android Open Source Project    List_t* List = (List_t*)hList;
13264064216a8433360745f69edddce19a606659163The Android Open Source Project    int index;
13364064216a8433360745f69edddce19a606659163The Android Open Source Project
13464064216a8433360745f69edddce19a606659163The Android Open Source Project    if(List!=NULL)
13564064216a8433360745f69edddce19a606659163The Android Open Source Project    {
13664064216a8433360745f69edddce19a606659163The Android Open Source Project  	    if(List->ElementList != NULL)
13764064216a8433360745f69edddce19a606659163The Android Open Source Project        {
13864064216a8433360745f69edddce19a606659163The Android Open Source Project           for(index=0;index<List->MaxNumOfElements;index++)
13964064216a8433360745f69edddce19a606659163The Android Open Source Project             os_memoryFree(List->hOs,List->ElementList[index].Container,List->ContainerSize);
14064064216a8433360745f69edddce19a606659163The Android Open Source Project
14164064216a8433360745f69edddce19a606659163The Android Open Source Project           os_memoryFree(List->hOs,List->ElementList,(sizeof(ListElement_t)*List->MaxNumOfElements));
14264064216a8433360745f69edddce19a606659163The Android Open Source Project        }
14364064216a8433360745f69edddce19a606659163The Android Open Source Project        os_memoryFree(List->hOs, List, sizeof(List_t));
14464064216a8433360745f69edddce19a606659163The Android Open Source Project    }
14564064216a8433360745f69edddce19a606659163The Android Open Source Project    return OK;
14664064216a8433360745f69edddce19a606659163The Android Open Source Project}
14764064216a8433360745f69edddce19a606659163The Android Open Source Project
14864064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
14964064216a8433360745f69edddce19a606659163The Android Open Source Project*							List_AllocElement   		                   *
15064064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
15164064216a8433360745f69edddce19a606659163The Android Open Source Project*
15264064216a8433360745f69edddce19a606659163The Android Open Source Project*
15364064216a8433360745f69edddce19a606659163The Android Open Source Project*    Fined an empty entry in the list and returns
15464064216a8433360745f69edddce19a606659163The Android Open Source Project*    a pointer to a memory that contains an element that not in use.
15564064216a8433360745f69edddce19a606659163The Android Open Source Project*
15664064216a8433360745f69edddce19a606659163The Android Open Source Project*    Note in multi Task environment we need to add semaphore to protect the
15764064216a8433360745f69edddce19a606659163The Android Open Source Project*    Function.
15864064216a8433360745f69edddce19a606659163The Android Open Source Project*
15964064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
16064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE List_AllocElement(TI_HANDLE hList)
16164064216a8433360745f69edddce19a606659163The Android Open Source Project{
16264064216a8433360745f69edddce19a606659163The Android Open Source Project    List_t* List = (List_t*)hList;
16364064216a8433360745f69edddce19a606659163The Android Open Source Project    int index;
16464064216a8433360745f69edddce19a606659163The Android Open Source Project
16564064216a8433360745f69edddce19a606659163The Android Open Source Project    if (List == NULL)
16664064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
16764064216a8433360745f69edddce19a606659163The Android Open Source Project
16864064216a8433360745f69edddce19a606659163The Android Open Source Project    for(index=0;index<List->MaxNumOfElements;index++)
16964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
17064064216a8433360745f69edddce19a606659163The Android Open Source Project        if(!(List->ElementList[index].Inuse))
17164064216a8433360745f69edddce19a606659163The Android Open Source Project        {
17264064216a8433360745f69edddce19a606659163The Android Open Source Project           List->ElementList[index].Inuse = TRUE;
17364064216a8433360745f69edddce19a606659163The Android Open Source Project           os_memoryZero(List->hOs,List->ElementList[index].Container,List->ContainerSize);
17464064216a8433360745f69edddce19a606659163The Android Open Source Project           return((TI_HANDLE)List->ElementList[index].Container);
17564064216a8433360745f69edddce19a606659163The Android Open Source Project        }
17664064216a8433360745f69edddce19a606659163The Android Open Source Project    }
17764064216a8433360745f69edddce19a606659163The Android Open Source Project    return NULL;
17864064216a8433360745f69edddce19a606659163The Android Open Source Project}
17964064216a8433360745f69edddce19a606659163The Android Open Source Project
18064064216a8433360745f69edddce19a606659163The Android Open Source Project
18164064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
18264064216a8433360745f69edddce19a606659163The Android Open Source Project*							List_FreeElement				               *
18364064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
18464064216a8433360745f69edddce19a606659163The Android Open Source Project*
18564064216a8433360745f69edddce19a606659163The Android Open Source Project*   Marks the entry that was allocated as free.
18664064216a8433360745f69edddce19a606659163The Android Open Source Project*   An alloc process can use this space.
18764064216a8433360745f69edddce19a606659163The Android Open Source Project*
18864064216a8433360745f69edddce19a606659163The Android Open Source Project*
18964064216a8433360745f69edddce19a606659163The Android Open Source Project*
19064064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
19164064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS List_FreeElement(TI_HANDLE hList,TI_HANDLE Container)
19264064216a8433360745f69edddce19a606659163The Android Open Source Project{
19364064216a8433360745f69edddce19a606659163The Android Open Source Project    List_t* List = (List_t*)hList;
19464064216a8433360745f69edddce19a606659163The Android Open Source Project    int index;
19564064216a8433360745f69edddce19a606659163The Android Open Source Project
19664064216a8433360745f69edddce19a606659163The Android Open Source Project    if (List == NULL)
19764064216a8433360745f69edddce19a606659163The Android Open Source Project        return NOK;
19864064216a8433360745f69edddce19a606659163The Android Open Source Project
19964064216a8433360745f69edddce19a606659163The Android Open Source Project    for(index=0;index<List->MaxNumOfElements;index++)
20064064216a8433360745f69edddce19a606659163The Android Open Source Project    {
20164064216a8433360745f69edddce19a606659163The Android Open Source Project        if(List->ElementList[index].Container == Container)
20264064216a8433360745f69edddce19a606659163The Android Open Source Project        {
20364064216a8433360745f69edddce19a606659163The Android Open Source Project            if(!List->ElementList[index].Inuse)
20464064216a8433360745f69edddce19a606659163The Android Open Source Project                return NOK;  /*double free not legal*/
20564064216a8433360745f69edddce19a606659163The Android Open Source Project            List->ElementList[index].Inuse = FALSE;
20664064216a8433360745f69edddce19a606659163The Android Open Source Project            return OK;
20764064216a8433360745f69edddce19a606659163The Android Open Source Project        }
20864064216a8433360745f69edddce19a606659163The Android Open Source Project    }
20964064216a8433360745f69edddce19a606659163The Android Open Source Project    return NOK;
21064064216a8433360745f69edddce19a606659163The Android Open Source Project}
21164064216a8433360745f69edddce19a606659163The Android Open Source Project
21264064216a8433360745f69edddce19a606659163The Android Open Source Project
21364064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
21464064216a8433360745f69edddce19a606659163The Android Open Source Project*							List_GetFirst				                   *
21564064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
21664064216a8433360745f69edddce19a606659163The Android Open Source Project*
21764064216a8433360745f69edddce19a606659163The Android Open Source Project*  For purposes of searching the element list (going over all the element in the list)
21864064216a8433360745f69edddce19a606659163The Android Open Source Project*  Get first is used to reset an index for the search.
21964064216a8433360745f69edddce19a606659163The Android Open Source Project*  This function is work combined with GetNext.
22064064216a8433360745f69edddce19a606659163The Android Open Source Project*
22164064216a8433360745f69edddce19a606659163The Android Open Source Project*   Note this function can't be used in multi Task environment.
22264064216a8433360745f69edddce19a606659163The Android Open Source Project*
22364064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
22464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE List_GetFirst(TI_HANDLE hList)
22564064216a8433360745f69edddce19a606659163The Android Open Source Project{
22664064216a8433360745f69edddce19a606659163The Android Open Source Project    List_t* List = (List_t*)hList;
22764064216a8433360745f69edddce19a606659163The Android Open Source Project    int index;
22864064216a8433360745f69edddce19a606659163The Android Open Source Project
22964064216a8433360745f69edddce19a606659163The Android Open Source Project    if (List == NULL)
23064064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
23164064216a8433360745f69edddce19a606659163The Android Open Source Project
23264064216a8433360745f69edddce19a606659163The Android Open Source Project    for(index=0;index<List->MaxNumOfElements;index++)
23364064216a8433360745f69edddce19a606659163The Android Open Source Project    {
23464064216a8433360745f69edddce19a606659163The Android Open Source Project        if(List->ElementList[index].Inuse)
23564064216a8433360745f69edddce19a606659163The Android Open Source Project        {
23664064216a8433360745f69edddce19a606659163The Android Open Source Project           List->CurrentIndex = index;
23764064216a8433360745f69edddce19a606659163The Android Open Source Project           return (List->ElementList[index].Container);
23864064216a8433360745f69edddce19a606659163The Android Open Source Project        }
23964064216a8433360745f69edddce19a606659163The Android Open Source Project    }
24064064216a8433360745f69edddce19a606659163The Android Open Source Project    return NULL;
24164064216a8433360745f69edddce19a606659163The Android Open Source Project}
24264064216a8433360745f69edddce19a606659163The Android Open Source Project
24364064216a8433360745f69edddce19a606659163The Android Open Source Project
24464064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
24564064216a8433360745f69edddce19a606659163The Android Open Source Project*							List_GetNext				                   *
24664064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
24764064216a8433360745f69edddce19a606659163The Android Open Source Project*
24864064216a8433360745f69edddce19a606659163The Android Open Source Project*  This function returns the next element in the list till null
24964064216a8433360745f69edddce19a606659163The Android Open Source Project*  that indicate that there no more element or we have reached the end of the list.
25064064216a8433360745f69edddce19a606659163The Android Open Source Project*  This function is work combined with GetFirst.
25164064216a8433360745f69edddce19a606659163The Android Open Source Project*
25264064216a8433360745f69edddce19a606659163The Android Open Source Project*  Note this function can't be used in multi Task environment.
25364064216a8433360745f69edddce19a606659163The Android Open Source Project*
25464064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
25564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE List_GetNext(TI_HANDLE hList)
25664064216a8433360745f69edddce19a606659163The Android Open Source Project{
25764064216a8433360745f69edddce19a606659163The Android Open Source Project    List_t* List = (List_t*)hList;
25864064216a8433360745f69edddce19a606659163The Android Open Source Project    int index;
25964064216a8433360745f69edddce19a606659163The Android Open Source Project
26064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (List == NULL)
26164064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
26264064216a8433360745f69edddce19a606659163The Android Open Source Project
26364064216a8433360745f69edddce19a606659163The Android Open Source Project    /* the code works fine even if the elment is the last*/
26464064216a8433360745f69edddce19a606659163The Android Open Source Project    for(index=List->CurrentIndex+1;index<List->MaxNumOfElements;index++)
26564064216a8433360745f69edddce19a606659163The Android Open Source Project    {
26664064216a8433360745f69edddce19a606659163The Android Open Source Project        if(List->ElementList[index].Inuse)
26764064216a8433360745f69edddce19a606659163The Android Open Source Project        {
26864064216a8433360745f69edddce19a606659163The Android Open Source Project           List->CurrentIndex = index;
26964064216a8433360745f69edddce19a606659163The Android Open Source Project           return (List->ElementList[index].Container);
27064064216a8433360745f69edddce19a606659163The Android Open Source Project
27164064216a8433360745f69edddce19a606659163The Android Open Source Project        }
27264064216a8433360745f69edddce19a606659163The Android Open Source Project    }
27364064216a8433360745f69edddce19a606659163The Android Open Source Project    return NULL;
27464064216a8433360745f69edddce19a606659163The Android Open Source Project}
27564064216a8433360745f69edddce19a606659163The Android Open Source Project
27664064216a8433360745f69edddce19a606659163The Android Open Source Project
27764064216a8433360745f69edddce19a606659163The Android Open Source Project
27864064216a8433360745f69edddce19a606659163The Android Open Source Project
27964064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
28064064216a8433360745f69edddce19a606659163The Android Open Source Project*							DISTRIBUTOR MANAGER				               *
28164064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
28264064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************
28364064216a8433360745f69edddce19a606659163The Android Open Source Project*
28464064216a8433360745f69edddce19a606659163The Android Open Source Project *    	PURPOSE:The distributor manger supplies
28564064216a8433360745f69edddce19a606659163The Android Open Source Project *       1. Register mechanism that has a callback function and the condition
28664064216a8433360745f69edddce19a606659163The Android Open Source Project *       (bit mask format) that will be used to distinguish if to call this callback.
28764064216a8433360745f69edddce19a606659163The Android Open Source Project *       2. Event occurrence function that go over all the registered function and compare
28864064216a8433360745f69edddce19a606659163The Android Open Source Project *       the input mask to the callback mask condition.
28964064216a8433360745f69edddce19a606659163The Android Open Source Project *
29064064216a8433360745f69edddce19a606659163The Android Open Source Project *
29164064216a8433360745f69edddce19a606659163The Android Open Source Project *
29264064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
29364064216a8433360745f69edddce19a606659163The Android Open Source Project
29464064216a8433360745f69edddce19a606659163The Android Open Source Project
29564064216a8433360745f69edddce19a606659163The Android Open Source Project
29664064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
29764064216a8433360745f69edddce19a606659163The Android Open Source Project*							DistributorMgr_Create		                   *
29864064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
29964064216a8433360745f69edddce19a606659163The Android Open Source Project*
30064064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
30164064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE DistributorMgr_Create(TI_HANDLE hOs , int MaxNotifReqElment)
30264064216a8433360745f69edddce19a606659163The Android Open Source Project{
30364064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr_t *DistributorMgr;
30464064216a8433360745f69edddce19a606659163The Android Open Source Project
30564064216a8433360745f69edddce19a606659163The Android Open Source Project	DistributorMgr = (DistributorMgr_t*)os_memoryAlloc(hOs, sizeof(DistributorMgr_t));
30664064216a8433360745f69edddce19a606659163The Android Open Source Project	if(DistributorMgr == NULL)
30764064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
30864064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr->hOs = hOs;
30964064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr->DistributionList = (List_t*)List_create(hOs,MaxNotifReqElment,sizeof(NotifReqElment_t));
31064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (DistributorMgr->DistributionList == NULL)
31164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
31264064216a8433360745f69edddce19a606659163The Android Open Source Project        os_memoryFree(hOs, DistributorMgr, sizeof(DistributorMgr_t));
31364064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
31464064216a8433360745f69edddce19a606659163The Android Open Source Project    }
31564064216a8433360745f69edddce19a606659163The Android Open Source Project    return (TI_HANDLE)DistributorMgr;
31664064216a8433360745f69edddce19a606659163The Android Open Source Project}
31764064216a8433360745f69edddce19a606659163The Android Open Source Project
31864064216a8433360745f69edddce19a606659163The Android Open Source Project
31964064216a8433360745f69edddce19a606659163The Android Open Source Project
32064064216a8433360745f69edddce19a606659163The Android Open Source Project/************************************************************************/
32164064216a8433360745f69edddce19a606659163The Android Open Source Project/*               DistributorMgr_Destroy                                 */
32264064216a8433360745f69edddce19a606659163The Android Open Source Project/************************************************************************/
32364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS DistributorMgr_Destroy(TI_HANDLE hDistributorMgr)
32464064216a8433360745f69edddce19a606659163The Android Open Source Project{
32564064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr_t *DistributorMgr =(DistributorMgr_t*)hDistributorMgr;
32664064216a8433360745f69edddce19a606659163The Android Open Source Project
32764064216a8433360745f69edddce19a606659163The Android Open Source Project     if(DistributorMgr == NULL)
32864064216a8433360745f69edddce19a606659163The Android Open Source Project        return NOK;
32964064216a8433360745f69edddce19a606659163The Android Open Source Project
33064064216a8433360745f69edddce19a606659163The Android Open Source Project    List_Destroy(DistributorMgr->DistributionList);
33164064216a8433360745f69edddce19a606659163The Android Open Source Project
33264064216a8433360745f69edddce19a606659163The Android Open Source Project    os_memoryFree(DistributorMgr->hOs, hDistributorMgr, sizeof(DistributorMgr_t));
33364064216a8433360745f69edddce19a606659163The Android Open Source Project
33464064216a8433360745f69edddce19a606659163The Android Open Source Project    return OK;
33564064216a8433360745f69edddce19a606659163The Android Open Source Project
33664064216a8433360745f69edddce19a606659163The Android Open Source Project}
33764064216a8433360745f69edddce19a606659163The Android Open Source Project
33864064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
33964064216a8433360745f69edddce19a606659163The Android Open Source Project*						DistributorMgr_Reg				                   *
34064064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
34164064216a8433360745f69edddce19a606659163The Android Open Source Project*
34264064216a8433360745f69edddce19a606659163The Android Open Source Project*  Use by the client to register a callback function
34364064216a8433360745f69edddce19a606659163The Android Open Source Project*  with the mask condition that will trigger the call.
34464064216a8433360745f69edddce19a606659163The Android Open Source Project*
34564064216a8433360745f69edddce19a606659163The Android Open Source Project* input
34664064216a8433360745f69edddce19a606659163The Android Open Source Project*    UINT16 Mask
34764064216a8433360745f69edddce19a606659163The Android Open Source Project*    TI_HANDLE CallBack
34864064216a8433360745f69edddce19a606659163The Android Open Source Project*    HANDLE Context
34964064216a8433360745f69edddce19a606659163The Android Open Source Project*    UINT32 Cookie
35064064216a8433360745f69edddce19a606659163The Android Open Source Project*
35164064216a8433360745f69edddce19a606659163The Android Open Source Project*
35264064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
35364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE DistributorMgr_Reg(TI_HANDLE hDistributorMgr,UINT16 Mask,TI_HANDLE CallBack,
35464064216a8433360745f69edddce19a606659163The Android Open Source Project                             TI_HANDLE Context,UINT32 Cookie)
35564064216a8433360745f69edddce19a606659163The Android Open Source Project{
35664064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr_t *DistributorMgr = (DistributorMgr_t*)hDistributorMgr;
35764064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment_t *NotifReqElment;
35864064216a8433360745f69edddce19a606659163The Android Open Source Project
35964064216a8433360745f69edddce19a606659163The Android Open Source Project   	if(DistributorMgr == NULL)
36064064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
36164064216a8433360745f69edddce19a606659163The Android Open Source Project
36264064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment = (NotifReqElment_t*)List_AllocElement(DistributorMgr->DistributionList);
36364064216a8433360745f69edddce19a606659163The Android Open Source Project    if (NotifReqElment == NULL)
36464064216a8433360745f69edddce19a606659163The Android Open Source Project		return NULL  ;
36564064216a8433360745f69edddce19a606659163The Android Open Source Project
36664064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->CallBack = (GeneralEventCall_t)CallBack;
36764064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->Mask = Mask;
36864064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->Context = Context;
36964064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->Cookie = Cookie;
37064064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->HaltReq = FALSE;
37164064216a8433360745f69edddce19a606659163The Android Open Source Project    return (TI_HANDLE)NotifReqElment;
37264064216a8433360745f69edddce19a606659163The Android Open Source Project}
37364064216a8433360745f69edddce19a606659163The Android Open Source Project
37464064216a8433360745f69edddce19a606659163The Android Open Source Project
37564064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
37664064216a8433360745f69edddce19a606659163The Android Open Source Project*						DistributorMgr_ReReg				               *
37764064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
37864064216a8433360745f69edddce19a606659163The Android Open Source Project*
37964064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
38064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS DistributorMgr_ReReg(TI_HANDLE hDistributorMgr,TI_HANDLE ReqElmenth ,UINT16 Mask,TI_HANDLE CallBack,TI_HANDLE Context,UINT32 Cookie)
38164064216a8433360745f69edddce19a606659163The Android Open Source Project{
38264064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr_t *DistributorMgr = (DistributorMgr_t*)hDistributorMgr;
38364064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment_t *NotifReqElment = (NotifReqElment_t*)ReqElmenth;
38464064216a8433360745f69edddce19a606659163The Android Open Source Project
38564064216a8433360745f69edddce19a606659163The Android Open Source Project   	if(DistributorMgr == NULL)
38664064216a8433360745f69edddce19a606659163The Android Open Source Project        return NOK;
38764064216a8433360745f69edddce19a606659163The Android Open Source Project
38864064216a8433360745f69edddce19a606659163The Android Open Source Project    if (NotifReqElment == NULL)
38964064216a8433360745f69edddce19a606659163The Android Open Source Project		return NOK;
39064064216a8433360745f69edddce19a606659163The Android Open Source Project
39164064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->CallBack = (GeneralEventCall_t)CallBack;
39264064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->Mask = Mask;
39364064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->Context = Context;
39464064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->Cookie = Cookie;
39564064216a8433360745f69edddce19a606659163The Android Open Source Project    return OK;
39664064216a8433360745f69edddce19a606659163The Android Open Source Project}
39764064216a8433360745f69edddce19a606659163The Android Open Source Project
39864064216a8433360745f69edddce19a606659163The Android Open Source Project
39964064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
40064064216a8433360745f69edddce19a606659163The Android Open Source Project*						DistributorMgr_AddToMask			               *
40164064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
40264064216a8433360745f69edddce19a606659163The Android Open Source Project*
40364064216a8433360745f69edddce19a606659163The Android Open Source Project* Use this function to add mask bit to the bit mask condition that triggers the Callback
40464064216a8433360745f69edddce19a606659163The Android Open Source Project*
40564064216a8433360745f69edddce19a606659163The Android Open Source Project*
40664064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
40764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS DistributorMgr_AddToMask(TI_HANDLE hDistributorMgr,TI_HANDLE ReqElmenth,UINT16 Mask)
40864064216a8433360745f69edddce19a606659163The Android Open Source Project{
40964064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr_t *DistributorMgr = (DistributorMgr_t*)hDistributorMgr;
41064064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment_t *NotifReqElment = (NotifReqElment_t*)ReqElmenth;
41164064216a8433360745f69edddce19a606659163The Android Open Source Project
41264064216a8433360745f69edddce19a606659163The Android Open Source Project    if(DistributorMgr == NULL)
41364064216a8433360745f69edddce19a606659163The Android Open Source Project        return NOK;
41464064216a8433360745f69edddce19a606659163The Android Open Source Project
41564064216a8433360745f69edddce19a606659163The Android Open Source Project    if (NotifReqElment == NULL)
41664064216a8433360745f69edddce19a606659163The Android Open Source Project		return NOK;
41764064216a8433360745f69edddce19a606659163The Android Open Source Project
41864064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->Mask |= Mask;
41964064216a8433360745f69edddce19a606659163The Android Open Source Project    return OK;
42064064216a8433360745f69edddce19a606659163The Android Open Source Project}
42164064216a8433360745f69edddce19a606659163The Android Open Source Project
42264064216a8433360745f69edddce19a606659163The Android Open Source Project
42364064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
42464064216a8433360745f69edddce19a606659163The Android Open Source Project*						DistributorMgr_HaltNotif			               *
42564064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
42664064216a8433360745f69edddce19a606659163The Android Open Source Project*
42764064216a8433360745f69edddce19a606659163The Android Open Source Project* Use this function to add mask bit to the bit mask condition that triggers the Callback
42864064216a8433360745f69edddce19a606659163The Android Open Source Project*
42964064216a8433360745f69edddce19a606659163The Android Open Source Project*
43064064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
43164064216a8433360745f69edddce19a606659163The Android Open Source ProjectVOID DistributorMgr_HaltNotif(TI_HANDLE ReqElmenth)
43264064216a8433360745f69edddce19a606659163The Android Open Source Project{
43364064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment_t *NotifReqElment = (NotifReqElment_t*)ReqElmenth;
43464064216a8433360745f69edddce19a606659163The Android Open Source Project
43564064216a8433360745f69edddce19a606659163The Android Open Source Project    if (NotifReqElment == NULL)
43664064216a8433360745f69edddce19a606659163The Android Open Source Project	    return;
43764064216a8433360745f69edddce19a606659163The Android Open Source Project
43864064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->HaltReq = TRUE;
43964064216a8433360745f69edddce19a606659163The Android Open Source Project
44064064216a8433360745f69edddce19a606659163The Android Open Source Project}
44164064216a8433360745f69edddce19a606659163The Android Open Source Project
44264064216a8433360745f69edddce19a606659163The Android Open Source Project
44364064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
44464064216a8433360745f69edddce19a606659163The Android Open Source Project*						DistributorMgr_RestartNotif			               *
44564064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
44664064216a8433360745f69edddce19a606659163The Android Open Source Project*
44764064216a8433360745f69edddce19a606659163The Android Open Source Project* Use this function to add mask bit to the bit mask condition that triggers the Callback
44864064216a8433360745f69edddce19a606659163The Android Open Source Project*
44964064216a8433360745f69edddce19a606659163The Android Open Source Project*
45064064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
45164064216a8433360745f69edddce19a606659163The Android Open Source ProjectVOID DistributorMgr_RestartNotif(TI_HANDLE ReqElmenth)
45264064216a8433360745f69edddce19a606659163The Android Open Source Project{
45364064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment_t *NotifReqElment = (NotifReqElment_t*)ReqElmenth;
45464064216a8433360745f69edddce19a606659163The Android Open Source Project
45564064216a8433360745f69edddce19a606659163The Android Open Source Project    if (NotifReqElment == NULL)
45664064216a8433360745f69edddce19a606659163The Android Open Source Project	    return;
45764064216a8433360745f69edddce19a606659163The Android Open Source Project
45864064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment->HaltReq = FALSE;
45964064216a8433360745f69edddce19a606659163The Android Open Source Project
46064064216a8433360745f69edddce19a606659163The Android Open Source Project}
46164064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
46264064216a8433360745f69edddce19a606659163The Android Open Source Project*						DistributorMgr_UnReg				               *
46364064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
46464064216a8433360745f69edddce19a606659163The Android Open Source Project*
46564064216a8433360745f69edddce19a606659163The Android Open Source Project*
46664064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
46764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS DistributorMgr_UnReg(TI_HANDLE hDistributorMgr,TI_HANDLE RegEventHandle)
46864064216a8433360745f69edddce19a606659163The Android Open Source Project{
46964064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr_t *DistributorMgr = (DistributorMgr_t*)hDistributorMgr;
47064064216a8433360745f69edddce19a606659163The Android Open Source Project
47164064216a8433360745f69edddce19a606659163The Android Open Source Project  	if(DistributorMgr == NULL)
47264064216a8433360745f69edddce19a606659163The Android Open Source Project        return NOK;
47364064216a8433360745f69edddce19a606659163The Android Open Source Project
47464064216a8433360745f69edddce19a606659163The Android Open Source Project    return List_FreeElement(DistributorMgr->DistributionList, RegEventHandle);
47564064216a8433360745f69edddce19a606659163The Android Open Source Project}
47664064216a8433360745f69edddce19a606659163The Android Open Source Project
47764064216a8433360745f69edddce19a606659163The Android Open Source Project
47864064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************
47964064216a8433360745f69edddce19a606659163The Android Open Source Project*						DistributorMgr_EventCall		                   *
48064064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************
48164064216a8433360745f69edddce19a606659163The Android Open Source Project*
48264064216a8433360745f69edddce19a606659163The Android Open Source Project* When the client needs to invoke the callback calls function that corresponds
48364064216a8433360745f69edddce19a606659163The Android Open Source Project* to a specific event mask it will call this function with the desired mask.
48464064216a8433360745f69edddce19a606659163The Android Open Source Project* And event count that can be used to aggregate the events.
48564064216a8433360745f69edddce19a606659163The Android Open Source Project* that way calling this function not for every event
48664064216a8433360745f69edddce19a606659163The Android Open Source Project*
48764064216a8433360745f69edddce19a606659163The Android Open Source Project***************************************************************************/
48864064216a8433360745f69edddce19a606659163The Android Open Source ProjectVOID DistributorMgr_EventCall(TI_HANDLE hDistributorMgr,UINT16 Mask,int EventCount)
48964064216a8433360745f69edddce19a606659163The Android Open Source Project{
49064064216a8433360745f69edddce19a606659163The Android Open Source Project    DistributorMgr_t *DistributorMgr = (DistributorMgr_t*)hDistributorMgr;
49164064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment_t *NotifReqElment;
49264064216a8433360745f69edddce19a606659163The Android Open Source Project
49364064216a8433360745f69edddce19a606659163The Android Open Source Project    if(DistributorMgr == NULL)
49464064216a8433360745f69edddce19a606659163The Android Open Source Project        return;
49564064216a8433360745f69edddce19a606659163The Android Open Source Project
49664064216a8433360745f69edddce19a606659163The Android Open Source Project    NotifReqElment = (NotifReqElment_t*)List_GetFirst(DistributorMgr->DistributionList);
49764064216a8433360745f69edddce19a606659163The Android Open Source Project
49864064216a8433360745f69edddce19a606659163The Android Open Source Project    while(NotifReqElment)
49964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
50064064216a8433360745f69edddce19a606659163The Android Open Source Project        if((NotifReqElment->Mask & Mask) && !(NotifReqElment->HaltReq))
50164064216a8433360745f69edddce19a606659163The Android Open Source Project        {
50264064216a8433360745f69edddce19a606659163The Android Open Source Project            NotifReqElment->CallBack(NotifReqElment->Context,EventCount,Mask,
50364064216a8433360745f69edddce19a606659163The Android Open Source Project                                     NotifReqElment->Cookie);
50464064216a8433360745f69edddce19a606659163The Android Open Source Project        }
50564064216a8433360745f69edddce19a606659163The Android Open Source Project        NotifReqElment = (NotifReqElment_t*)List_GetNext(DistributorMgr->DistributionList);
50664064216a8433360745f69edddce19a606659163The Android Open Source Project    }
50764064216a8433360745f69edddce19a606659163The Android Open Source Project}
50864064216a8433360745f69edddce19a606659163The Android Open Source Project
50964064216a8433360745f69edddce19a606659163The Android Open Source Project
51064064216a8433360745f69edddce19a606659163The Android Open Source Project
51164064216a8433360745f69edddce19a606659163The Android Open Source Project/*******************************************************/
512