X_NUCLEO_IDB05A1

Dependencies:   mbed-os-example-ble-Advertising

Committer:
Vincent Coubard
Date:
Thu Sep 15 10:51:47 2016 +0100
Branch:
34e2f6254ad7de7fc7f377a0614c3a672cf7cd5c
Revision:
280:fbee0e3444be
Parent:
source/bluenrg-hci/utils/list.c@132:51056160fa4a
Child:
294:fd19310b086d
Sync with 34e2f6254ad7de7fc7f377a0614c3a672cf7cd5c

2016-07-28 15:27:24+02:00: Andrea Palmieri
Add ble_ prefix to filename

Signed-off-by: Andrea Palmieri <andrea.palmieri@st.com>

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wolfgang Betz 132:51056160fa4a 1 /******************** (C) COPYRIGHT 2012 STMicroelectronics ********************
Wolfgang Betz 132:51056160fa4a 2 * File Name : list.c
Wolfgang Betz 132:51056160fa4a 3 * Author : AMS - HEA&RF BU
Wolfgang Betz 132:51056160fa4a 4 * Version : V1.0.0
Wolfgang Betz 132:51056160fa4a 5 * Date : 19-July-2012
Wolfgang Betz 132:51056160fa4a 6 * Description : Circular Linked List Implementation.
Wolfgang Betz 132:51056160fa4a 7 ********************************************************************************
Wolfgang Betz 132:51056160fa4a 8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Wolfgang Betz 132:51056160fa4a 9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
Wolfgang Betz 132:51056160fa4a 10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
Wolfgang Betz 132:51056160fa4a 11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
Wolfgang Betz 132:51056160fa4a 12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
Wolfgang Betz 132:51056160fa4a 13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Wolfgang Betz 132:51056160fa4a 14 *******************************************************************************/
Wolfgang Betz 132:51056160fa4a 15
Wolfgang Betz 132:51056160fa4a 16 /******************************************************************************
Wolfgang Betz 132:51056160fa4a 17 * Include Files
Wolfgang Betz 132:51056160fa4a 18 ******************************************************************************/
Wolfgang Betz 132:51056160fa4a 19 #include <hal_types.h>
Wolfgang Betz 132:51056160fa4a 20 #include "list.h"
Wolfgang Betz 132:51056160fa4a 21
Wolfgang Betz 132:51056160fa4a 22 /******************************************************************************
Wolfgang Betz 132:51056160fa4a 23 * Function Definitions
Wolfgang Betz 132:51056160fa4a 24 ******************************************************************************/
Wolfgang Betz 132:51056160fa4a 25 void list_init_head (tListNode * listHead)
Wolfgang Betz 132:51056160fa4a 26 {
Wolfgang Betz 132:51056160fa4a 27 listHead->next = listHead;
Wolfgang Betz 132:51056160fa4a 28 listHead->prev = listHead;
Wolfgang Betz 132:51056160fa4a 29 }
Wolfgang Betz 132:51056160fa4a 30
Wolfgang Betz 132:51056160fa4a 31 uint8_t list_is_empty (tListNode * listHead)
Wolfgang Betz 132:51056160fa4a 32 {
Wolfgang Betz 132:51056160fa4a 33 return ((listHead->next == listHead)? TRUE:FALSE);
Wolfgang Betz 132:51056160fa4a 34 }
Wolfgang Betz 132:51056160fa4a 35
Wolfgang Betz 132:51056160fa4a 36 void list_insert_head (tListNode * listHead, tListNode * node)
Wolfgang Betz 132:51056160fa4a 37 {
Wolfgang Betz 132:51056160fa4a 38 node->next = listHead->next;
Wolfgang Betz 132:51056160fa4a 39 node->prev = listHead;
Wolfgang Betz 132:51056160fa4a 40 listHead->next = node;
Wolfgang Betz 132:51056160fa4a 41 (node->next)->prev = node;
Wolfgang Betz 132:51056160fa4a 42 }
Wolfgang Betz 132:51056160fa4a 43
Wolfgang Betz 132:51056160fa4a 44
Wolfgang Betz 132:51056160fa4a 45 void list_insert_tail (tListNode * listHead, tListNode * node)
Wolfgang Betz 132:51056160fa4a 46 {
Wolfgang Betz 132:51056160fa4a 47 node->next = listHead;
Wolfgang Betz 132:51056160fa4a 48 node->prev = listHead->prev;
Wolfgang Betz 132:51056160fa4a 49 listHead->prev = node;
Wolfgang Betz 132:51056160fa4a 50 (node->prev)->next = node;
Wolfgang Betz 132:51056160fa4a 51 }
Wolfgang Betz 132:51056160fa4a 52
Wolfgang Betz 132:51056160fa4a 53
Wolfgang Betz 132:51056160fa4a 54 void list_remove_node (tListNode * node)
Wolfgang Betz 132:51056160fa4a 55 {
Wolfgang Betz 132:51056160fa4a 56 (node->prev)->next = node->next;
Wolfgang Betz 132:51056160fa4a 57 (node->next)->prev = node->prev;
Wolfgang Betz 132:51056160fa4a 58 }
Wolfgang Betz 132:51056160fa4a 59
Wolfgang Betz 132:51056160fa4a 60
Wolfgang Betz 132:51056160fa4a 61 void list_remove_head (tListNode * listHead, tListNode ** node )
Wolfgang Betz 132:51056160fa4a 62 {
Wolfgang Betz 132:51056160fa4a 63 *node = listHead->next;
Wolfgang Betz 132:51056160fa4a 64 list_remove_node (listHead->next);
Wolfgang Betz 132:51056160fa4a 65 (*node)->next = NULL;
Wolfgang Betz 132:51056160fa4a 66 (*node)->prev = NULL;
Wolfgang Betz 132:51056160fa4a 67 }
Wolfgang Betz 132:51056160fa4a 68
Wolfgang Betz 132:51056160fa4a 69
Wolfgang Betz 132:51056160fa4a 70 void list_remove_tail (tListNode * listHead, tListNode ** node )
Wolfgang Betz 132:51056160fa4a 71 {
Wolfgang Betz 132:51056160fa4a 72 *node = listHead->prev;
Wolfgang Betz 132:51056160fa4a 73 list_remove_node (listHead->prev);
Wolfgang Betz 132:51056160fa4a 74 (*node)->next = NULL;
Wolfgang Betz 132:51056160fa4a 75 (*node)->prev = NULL;
Wolfgang Betz 132:51056160fa4a 76 }
Wolfgang Betz 132:51056160fa4a 77
Wolfgang Betz 132:51056160fa4a 78
Wolfgang Betz 132:51056160fa4a 79 void list_insert_node_after (tListNode * node, tListNode * ref_node)
Wolfgang Betz 132:51056160fa4a 80 {
Wolfgang Betz 132:51056160fa4a 81 node->next = ref_node->next;
Wolfgang Betz 132:51056160fa4a 82 node->prev = ref_node;
Wolfgang Betz 132:51056160fa4a 83 ref_node->next = node;
Wolfgang Betz 132:51056160fa4a 84 (node->next)->prev = node;
Wolfgang Betz 132:51056160fa4a 85 }
Wolfgang Betz 132:51056160fa4a 86
Wolfgang Betz 132:51056160fa4a 87
Wolfgang Betz 132:51056160fa4a 88 void list_insert_node_before (tListNode * node, tListNode * ref_node)
Wolfgang Betz 132:51056160fa4a 89 {
Wolfgang Betz 132:51056160fa4a 90 node->next = ref_node;
Wolfgang Betz 132:51056160fa4a 91 node->prev = ref_node->prev;
Wolfgang Betz 132:51056160fa4a 92 ref_node->prev = node;
Wolfgang Betz 132:51056160fa4a 93 (node->prev)->next = node;
Wolfgang Betz 132:51056160fa4a 94 }
Wolfgang Betz 132:51056160fa4a 95
Wolfgang Betz 132:51056160fa4a 96
Wolfgang Betz 132:51056160fa4a 97 int list_get_size (tListNode * listHead)
Wolfgang Betz 132:51056160fa4a 98 {
Wolfgang Betz 132:51056160fa4a 99 int size = 0;
Wolfgang Betz 132:51056160fa4a 100 tListNode * temp = listHead->next;
Wolfgang Betz 132:51056160fa4a 101 while (temp != listHead)
Wolfgang Betz 132:51056160fa4a 102 {
Wolfgang Betz 132:51056160fa4a 103 size++;
Wolfgang Betz 132:51056160fa4a 104 temp = temp->next;
Wolfgang Betz 132:51056160fa4a 105 }
Wolfgang Betz 132:51056160fa4a 106 return (size);
Wolfgang Betz 132:51056160fa4a 107 }
Wolfgang Betz 132:51056160fa4a 108
Wolfgang Betz 132:51056160fa4a 109 void list_get_next_node (tListNode * ref_node, tListNode ** node)
Wolfgang Betz 132:51056160fa4a 110 {
Wolfgang Betz 132:51056160fa4a 111 *node = ref_node->next;
Wolfgang Betz 132:51056160fa4a 112 }
Wolfgang Betz 132:51056160fa4a 113
Wolfgang Betz 132:51056160fa4a 114
Wolfgang Betz 132:51056160fa4a 115 void list_get_prev_node (tListNode * ref_node, tListNode ** node)
Wolfgang Betz 132:51056160fa4a 116 {
Wolfgang Betz 132:51056160fa4a 117 *node = ref_node->prev;
Wolfgang Betz 132:51056160fa4a 118 }
Wolfgang Betz 132:51056160fa4a 119