ver:init

Committer:
iv123
Date:
Sun Jun 18 16:10:28 2017 +0000
Revision:
0:88b85febcb45
Initial commit

Who changed what in which revision?

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