Filippo Casamassima / Nucleo_blueNRG

Dependencies:   mbed

Committer:
filartrix
Date:
Wed Apr 08 14:17:20 2015 +0000
Revision:
4:987b201ec4b1
first

Who changed what in which revision?

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