BLE UART example

Fork of Nucleo_BLE_BlueNRG by ST Americas mbed Team

Committer:
sjallouli
Date:
Sun Jan 03 16:05:38 2016 +0000
Revision:
3:104f1bba39ca
Parent:
0:a948f5f3904c
test

Who changed what in which revision?

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