mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-31 06:01:39 +01:00 
			
		
		
		
	* Add build time partitions compilation * Fix wrong definition of SS pin * Add support for core debug level selection * update idf libs
		
			
				
	
	
		
			133 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /******************************************************************************
 | |
|  *
 | |
|  *  Copyright (C) 1999-2012 Broadcom Corporation
 | |
|  *
 | |
|  *  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.
 | |
|  *
 | |
|  ******************************************************************************/
 | |
| 
 | |
| #ifndef _GKI_H_
 | |
| #define _GKI_H_
 | |
| 
 | |
| #include "bt_target.h"
 | |
| #include "bt_types.h"
 | |
| #include "gki_common.h"
 | |
| #include "gki_int.h"
 | |
| #include "allocator.h"
 | |
| 
 | |
| #define ALIGN_POOL(pl_size)  ( (((pl_size) + 3) / sizeof(UINT32)) * sizeof(UINT32))
 | |
| #define BUFFER_HDR_SIZE     (sizeof(BUFFER_HDR_T))                  /* Offset past header */
 | |
| #define BUFFER_PADDING_SIZE (sizeof(BUFFER_HDR_T) + sizeof(UINT32)) /* Header + Magic Number */
 | |
| #define MAGIC_NO            0xDDBADDBA
 | |
| 
 | |
| #define BUF_STATUS_FREE     0
 | |
| #define BUF_STATUS_UNLINKED 1
 | |
| #define BUF_STATUS_QUEUED   2
 | |
| 
 | |
| /* Timer list entry callback type
 | |
| */
 | |
| typedef void (TIMER_CBACK)(void *p_tle);
 | |
| #ifndef TIMER_PARAM_TYPE
 | |
| #define TIMER_PARAM_TYPE    UINT32
 | |
| #endif
 | |
| /* Define a timer list entry
 | |
| */
 | |
| typedef struct _tle {
 | |
|     struct _tle  *p_next;
 | |
|     struct _tle  *p_prev;
 | |
|     TIMER_CBACK  *p_cback;
 | |
|     INT32         ticks;
 | |
|     INT32         ticks_initial;
 | |
|     TIMER_PARAM_TYPE   param;
 | |
|     TIMER_PARAM_TYPE   data;
 | |
|     UINT16        event;
 | |
|     UINT8         in_use;
 | |
| } TIMER_LIST_ENT;
 | |
| 
 | |
| /***********************************************************************
 | |
| ** This queue is a general purpose buffer queue, for application use.
 | |
| */
 | |
| typedef struct {
 | |
|     void    *_p_first;
 | |
|     void    *_p_last;
 | |
|     UINT16   _count;
 | |
| } BUFFER_Q;
 | |
| 
 | |
| #define GKI_PUBLIC_POOL         0       /* General pool accessible to GKI_getbuf() */
 | |
| #define GKI_RESTRICTED_POOL     1       /* Inaccessible pool to GKI_getbuf() */
 | |
| 
 | |
| /***********************************************************************
 | |
| ** Function prototypes
 | |
| */
 | |
| 
 | |
| /* To get and release buffers, change owner and get size
 | |
| */
 | |
| void   *GKI_getbuf_func(UINT16);
 | |
| void   *GKI_getpoolbuf_func(UINT8);
 | |
| void    GKI_freebuf(void *);
 | |
| UINT16  GKI_get_buf_size (void *);
 | |
| void   *GKI_getpoolbuf (UINT8);
 | |
| UINT16  GKI_poolcount (UINT8);
 | |
| UINT16  GKI_poolfreecount (UINT8);
 | |
| UINT16  GKI_poolutilization (UINT8);
 | |
| 
 | |
| #ifdef CONFIG_BLUEDROID_MEM_DEBUG
 | |
| 
 | |
| #define GKI_getbuf(_size)                                            \
 | |
| ({                                                                  \
 | |
|     BUFFER_HDR_T *header = osi_malloc((_size) + BUFFER_HDR_SIZE);      \
 | |
|     header->status  = BUF_STATUS_UNLINKED;                          \
 | |
|     header->p_next  = NULL;                                         \
 | |
|     header->Type    = 0;                                            \
 | |
|     header->size = (_size);                                          \
 | |
|     (void *)(header + 1);                                                   \
 | |
| })
 | |
| 
 | |
| #define GKI_getpoolbuf(_pool_id)                                     \
 | |
| ({                                                                  \
 | |
|     (void *)GKI_getbuf(gki_cb.com.pool_size[(_pool_id)]);                    \
 | |
| })
 | |
|            
 | |
| #else
 | |
| #define GKI_getbuf          GKI_getbuf_func
 | |
| #define GKI_getpoolbuf      GKI_getpoolbuf_func
 | |
| 
 | |
| #endif /* CONFIG_BLUEDROID_MEM_DEBUG */
 | |
| 
 | |
| /* User buffer queue management
 | |
| */
 | |
| void   *GKI_dequeue  (BUFFER_Q *);
 | |
| void    GKI_enqueue (BUFFER_Q *, void *);
 | |
| void   *GKI_getfirst (BUFFER_Q *);
 | |
| void   *GKI_getlast (BUFFER_Q *);
 | |
| void   *GKI_getnext (void *);
 | |
| void    GKI_init_q (BUFFER_Q *);
 | |
| UINT16  GKI_queue_length(BUFFER_Q *);
 | |
| BOOLEAN GKI_queue_is_empty(BUFFER_Q *);
 | |
| void   *GKI_remove_from_queue (BUFFER_Q *, void *);
 | |
| UINT16  GKI_get_pool_bufsize (UINT8);
 | |
| 
 | |
| /* Timer management
 | |
| */
 | |
| void    GKI_delay(UINT32);
 | |
| 
 | |
| /* Disable Interrupts, Enable Interrupts
 | |
| */
 | |
| void    GKI_enable(void);
 | |
| void    GKI_disable(void);
 | |
| 
 | |
| /* os timer operation */
 | |
| UINT32 GKI_get_os_tick_count(void);
 | |
| 
 | |
| #endif /*_GKI_H_*/
 |