mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 14:14:11 +00:00 
			
		
		
		
	1. add the L1 include path with a prefix, such like osi/list.h, stack/a2d_api.h and etc. 2. modify component, only bluedroid/api/include/api is export to another component and application, other include path just for bluedroid used 3. put bluedroid/include into common/include/common, so the root directory of bluedroid have no include path. 4. modify doxygen to use esp_bt.h and redirect to component/bt/bluedroid/api/include/api/ fix compile
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/******************************************************************************
 | 
						|
 *
 | 
						|
 *  Copyright (C) 2015 Google, Inc.
 | 
						|
 *
 | 
						|
 *  Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 *  you may not use this file except in compliance with the License.
 | 
						|
 *  You may obtain a copy of the License at:
 | 
						|
 *
 | 
						|
 *  http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 *  Unless required by applicable law or agreed to in writing, software
 | 
						|
 *  distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 *  See the License for the specific language governing permissions and
 | 
						|
 *  limitations under the License.
 | 
						|
 *
 | 
						|
 ******************************************************************************/
 | 
						|
 | 
						|
 | 
						|
#include "osi/semaphore.h"
 | 
						|
 | 
						|
/*-----------------------------------------------------------------------------------*/
 | 
						|
//  Creates and returns a new semaphore. The "init_count" argument specifies
 | 
						|
//  the initial state of the semaphore, "max_count" specifies the maximum value
 | 
						|
//  that can be reached.
 | 
						|
int osi_sem_new(osi_sem_t *sem, uint32_t max_count, uint32_t init_count)
 | 
						|
{
 | 
						|
    int ret = -1;
 | 
						|
 | 
						|
    if (sem) {
 | 
						|
        *sem = xSemaphoreCreateCounting(max_count, init_count);
 | 
						|
        if ((*sem) != NULL) {
 | 
						|
            ret = 0;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    return ret;
 | 
						|
}
 | 
						|
 | 
						|
/*-----------------------------------------------------------------------------------*/
 | 
						|
// Give a semaphore
 | 
						|
void osi_sem_give(osi_sem_t *sem)
 | 
						|
{
 | 
						|
    xSemaphoreGive(*sem);
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
  Blocks the thread while waiting for the semaphore to be
 | 
						|
  signaled. If the "timeout" argument is non-zero, the thread should
 | 
						|
  only be blocked for the specified time (measured in
 | 
						|
  milliseconds).
 | 
						|
 | 
						|
*/
 | 
						|
int
 | 
						|
osi_sem_take(osi_sem_t *sem, uint32_t timeout)
 | 
						|
{
 | 
						|
    int ret = 0;
 | 
						|
 | 
						|
    if (timeout ==  OSI_SEM_MAX_TIMEOUT) {
 | 
						|
        if (xSemaphoreTake(*sem, portMAX_DELAY) != pdTRUE) {
 | 
						|
            ret = -1;
 | 
						|
        }
 | 
						|
    } else {
 | 
						|
        if (xSemaphoreTake(*sem, timeout / portTICK_PERIOD_MS) != pdTRUE) {
 | 
						|
            ret = -2;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    return ret;
 | 
						|
}
 | 
						|
 | 
						|
// Deallocates a semaphore
 | 
						|
void osi_sem_free(osi_sem_t *sem)
 | 
						|
{
 | 
						|
    vSemaphoreDelete(*sem);
 | 
						|
    *sem = NULL;
 | 
						|
}
 |