Previous version which works for my stm32f401 Nucleo board

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
Wolfgang Betz
Date:
Tue Oct 06 12:12:37 2015 +0200
Revision:
128:46ae62a90136
Parent:
70:d20d30f59b1c
Merge branch 'master' of hg::http://wobetz@developer.mbed.org/teams/ST/code/X_NUCLEO_IDB0XA1 into idb0xa1-split

Who changed what in which revision?

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