NUCLEO-F401RE + BlueNRG shield client test (TI Sensortag reading)
Embed:
(wiki syntax)
Show/hide line numbers
list.c
00001 /******************** (C) COPYRIGHT 2012 STMicroelectronics ******************** 00002 * File Name : list.c 00003 * Author : AMS - HEA&RF BU 00004 * Version : V1.0.0 00005 * Date : 19-July-2012 00006 * Description : Circular Linked List Implementation. 00007 ******************************************************************************** 00008 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 00009 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 00010 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 00011 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 00012 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 00013 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 00014 *******************************************************************************/ 00015 00016 /****************************************************************************** 00017 * Include Files 00018 ******************************************************************************/ 00019 #include <hal_types.h> 00020 #include "list.h" 00021 00022 /****************************************************************************** 00023 * Function Definitions 00024 ******************************************************************************/ 00025 void list_init_head (tListNode * listHead) 00026 { 00027 listHead->next = listHead; 00028 listHead->prev = listHead; 00029 } 00030 00031 tHalBool list_is_empty (tListNode * listHead) 00032 { 00033 return ((listHead->next == listHead)? TRUE:FALSE); 00034 } 00035 00036 void list_insert_head (tListNode * listHead, tListNode * node) 00037 { 00038 node->next = listHead->next; 00039 node->prev = listHead; 00040 listHead->next = node; 00041 (node->next)->prev = node; 00042 } 00043 00044 00045 void list_insert_tail (tListNode * listHead, tListNode * node) 00046 { 00047 node->next = listHead; 00048 node->prev = listHead->prev; 00049 listHead->prev = node; 00050 (node->prev)->next = node; 00051 } 00052 00053 00054 void list_remove_node (tListNode * node) 00055 { 00056 (node->prev)->next = node->next; 00057 (node->next)->prev = node->prev; 00058 } 00059 00060 00061 void list_remove_head (tListNode * listHead, tListNode ** node ) 00062 { 00063 *node = listHead->next; 00064 list_remove_node (listHead->next); 00065 (*node)->next = NULL; 00066 (*node)->prev = NULL; 00067 } 00068 00069 00070 void list_remove_tail (tListNode * listHead, tListNode ** node ) 00071 { 00072 *node = listHead->prev; 00073 list_remove_node (listHead->prev); 00074 (*node)->next = NULL; 00075 (*node)->prev = NULL; 00076 } 00077 00078 00079 void list_insert_node_after (tListNode * node, tListNode * ref_node) 00080 { 00081 node->next = ref_node->next; 00082 node->prev = ref_node; 00083 ref_node->next = node; 00084 (node->next)->prev = node; 00085 } 00086 00087 00088 void list_insert_node_before (tListNode * node, tListNode * ref_node) 00089 { 00090 node->next = ref_node; 00091 node->prev = ref_node->prev; 00092 ref_node->prev = node; 00093 (node->prev)->next = node; 00094 } 00095 00096 00097 int list_get_size (tListNode * listHead) 00098 { 00099 int size = 0; 00100 tListNode * temp = listHead->next; 00101 while (temp != listHead) 00102 { 00103 size++; 00104 temp = temp->next; 00105 } 00106 return (size); 00107 } 00108 00109 void list_get_next_node (tListNode * ref_node, tListNode ** node) 00110 { 00111 *node = ref_node->next; 00112 } 00113 00114 00115 void list_get_prev_node (tListNode * ref_node, tListNode ** node) 00116 { 00117 *node = ref_node->prev; 00118 } 00119 00120
Generated on Tue Jul 12 2022 20:44:37 by 1.7.2