The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 2 /*!
AnnaBridge 171:3a7713b1edbc 3 * \file wsf_queue.h
AnnaBridge 171:3a7713b1edbc 4 *
AnnaBridge 171:3a7713b1edbc 5 * \brief General purpose queue service.
AnnaBridge 171:3a7713b1edbc 6 *
AnnaBridge 171:3a7713b1edbc 7 * $Date: 2011-10-14 21:35:03 -0700 (Fri, 14 Oct 2011) $
AnnaBridge 171:3a7713b1edbc 8 * $Revision: 191 $
AnnaBridge 171:3a7713b1edbc 9 *
AnnaBridge 171:3a7713b1edbc 10 * Copyright (c) 2009 Wicentric, Inc., all rights reserved.
AnnaBridge 171:3a7713b1edbc 11 * Wicentric confidential and proprietary.
AnnaBridge 171:3a7713b1edbc 12 *
AnnaBridge 171:3a7713b1edbc 13 * IMPORTANT. Your use of this file is governed by a Software License Agreement
AnnaBridge 171:3a7713b1edbc 14 * ("Agreement") that must be accepted in order to download or otherwise receive a
AnnaBridge 171:3a7713b1edbc 15 * copy of this file. You may not use or copy this file for any purpose other than
AnnaBridge 171:3a7713b1edbc 16 * as described in the Agreement. If you do not agree to all of the terms of the
AnnaBridge 171:3a7713b1edbc 17 * Agreement do not use this file and delete all copies in your possession or control;
AnnaBridge 171:3a7713b1edbc 18 * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior
AnnaBridge 171:3a7713b1edbc 19 * to any use, copying or further distribution of this software.
AnnaBridge 171:3a7713b1edbc 20 */
AnnaBridge 171:3a7713b1edbc 21 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 22 #ifndef WSF_QUEUE_H
AnnaBridge 171:3a7713b1edbc 23 #define WSF_QUEUE_H
AnnaBridge 171:3a7713b1edbc 24
AnnaBridge 171:3a7713b1edbc 25 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 26 extern "C" {
AnnaBridge 171:3a7713b1edbc 27 #endif
AnnaBridge 171:3a7713b1edbc 28
AnnaBridge 171:3a7713b1edbc 29 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 30 Macros
AnnaBridge 171:3a7713b1edbc 31 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 32
AnnaBridge 171:3a7713b1edbc 33 /*! Initialize a queue */
AnnaBridge 171:3a7713b1edbc 34 #define WSF_QUEUE_INIT(pQueue) {(pQueue)->pHead = NULL; (pQueue)->pTail = NULL;}
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 37 Data Types
AnnaBridge 171:3a7713b1edbc 38 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 39
AnnaBridge 171:3a7713b1edbc 40 /*! Queue structure */
AnnaBridge 171:3a7713b1edbc 41 typedef struct
AnnaBridge 171:3a7713b1edbc 42 {
AnnaBridge 171:3a7713b1edbc 43 void *pHead; /*! head of queue */
AnnaBridge 171:3a7713b1edbc 44 void *pTail; /*! tail of queue */
AnnaBridge 171:3a7713b1edbc 45 } wsfQueue_t;
AnnaBridge 171:3a7713b1edbc 46
AnnaBridge 171:3a7713b1edbc 47 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 48 Function Declarations
AnnaBridge 171:3a7713b1edbc 49 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 50
AnnaBridge 171:3a7713b1edbc 51 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 52 /*!
AnnaBridge 171:3a7713b1edbc 53 * \fn WsfQueueEnq
AnnaBridge 171:3a7713b1edbc 54 *
AnnaBridge 171:3a7713b1edbc 55 * \brief Enqueue an element to the tail of a queue.
AnnaBridge 171:3a7713b1edbc 56 *
AnnaBridge 171:3a7713b1edbc 57 * \param pQueue Pointer to queue.
AnnaBridge 171:3a7713b1edbc 58 * \param pElem Pointer to element.
AnnaBridge 171:3a7713b1edbc 59 *
AnnaBridge 171:3a7713b1edbc 60 * \return None.
AnnaBridge 171:3a7713b1edbc 61 */
AnnaBridge 171:3a7713b1edbc 62 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 63 void WsfQueueEnq(wsfQueue_t *pQueue, void *pElem);
AnnaBridge 171:3a7713b1edbc 64
AnnaBridge 171:3a7713b1edbc 65 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 66 /*!
AnnaBridge 171:3a7713b1edbc 67 * \fn WsfQueueDeq
AnnaBridge 171:3a7713b1edbc 68 *
AnnaBridge 171:3a7713b1edbc 69 * \brief Dequeue an element from the head of a queue.
AnnaBridge 171:3a7713b1edbc 70 *
AnnaBridge 171:3a7713b1edbc 71 * \param pQueue Pointer to queue.
AnnaBridge 171:3a7713b1edbc 72 *
AnnaBridge 171:3a7713b1edbc 73 * \return Pointer to element that has been dequeued or NULL if queue is empty.
AnnaBridge 171:3a7713b1edbc 74 */
AnnaBridge 171:3a7713b1edbc 75 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 76 void *WsfQueueDeq(wsfQueue_t *pQueue);
AnnaBridge 171:3a7713b1edbc 77
AnnaBridge 171:3a7713b1edbc 78 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 79 /*!
AnnaBridge 171:3a7713b1edbc 80 * \fn WsfQueuePush
AnnaBridge 171:3a7713b1edbc 81 *
AnnaBridge 171:3a7713b1edbc 82 * \brief Push an element to the head of a queue.
AnnaBridge 171:3a7713b1edbc 83 *
AnnaBridge 171:3a7713b1edbc 84 * \param pQueue Pointer to queue.
AnnaBridge 171:3a7713b1edbc 85 * \param pElem Pointer to element.
AnnaBridge 171:3a7713b1edbc 86 *
AnnaBridge 171:3a7713b1edbc 87 * \return None.
AnnaBridge 171:3a7713b1edbc 88 */
AnnaBridge 171:3a7713b1edbc 89 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 90 void WsfQueuePush(wsfQueue_t *pQueue, void *pElem);
AnnaBridge 171:3a7713b1edbc 91
AnnaBridge 171:3a7713b1edbc 92 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 93 /*!
AnnaBridge 171:3a7713b1edbc 94 * \fn WsfQueueInsert
AnnaBridge 171:3a7713b1edbc 95 *
AnnaBridge 171:3a7713b1edbc 96 * \brief Insert an element into a queue. This function is typically used when iterating
AnnaBridge 171:3a7713b1edbc 97 * over a queue.
AnnaBridge 171:3a7713b1edbc 98 *
AnnaBridge 171:3a7713b1edbc 99 * \param pQueue Pointer to queue.
AnnaBridge 171:3a7713b1edbc 100 * \param pElem Pointer to element to be inserted.
AnnaBridge 171:3a7713b1edbc 101 * \param pPrev Pointer to previous element in the queue before element to be inserted.
AnnaBridge 171:3a7713b1edbc 102 * Note: set pPrev to NULL if pElem is first element in queue.
AnnaBridge 171:3a7713b1edbc 103 * \return None.
AnnaBridge 171:3a7713b1edbc 104 */
AnnaBridge 171:3a7713b1edbc 105 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 106 void WsfQueueInsert(wsfQueue_t *pQueue, void *pElem, void *pPrev);
AnnaBridge 171:3a7713b1edbc 107
AnnaBridge 171:3a7713b1edbc 108 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 109 /*!
AnnaBridge 171:3a7713b1edbc 110 * \fn WsfQueueRemove
AnnaBridge 171:3a7713b1edbc 111 *
AnnaBridge 171:3a7713b1edbc 112 * \brief Remove an element from a queue. This function is typically used when iterating
AnnaBridge 171:3a7713b1edbc 113 * over a queue.
AnnaBridge 171:3a7713b1edbc 114 *
AnnaBridge 171:3a7713b1edbc 115 * \param pQueue Pointer to queue.
AnnaBridge 171:3a7713b1edbc 116 * \param pElem Pointer to element to be removed.
AnnaBridge 171:3a7713b1edbc 117 * \param pPrev Pointer to previous element in the queue before element to be removed.
AnnaBridge 171:3a7713b1edbc 118 *
AnnaBridge 171:3a7713b1edbc 119 * \return None.
AnnaBridge 171:3a7713b1edbc 120 */
AnnaBridge 171:3a7713b1edbc 121 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 122 void WsfQueueRemove(wsfQueue_t *pQueue, void *pElem, void *pPrev);
AnnaBridge 171:3a7713b1edbc 123
AnnaBridge 171:3a7713b1edbc 124 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 125 /*!
AnnaBridge 171:3a7713b1edbc 126 * \fn WsfQueueCount
AnnaBridge 171:3a7713b1edbc 127 *
AnnaBridge 171:3a7713b1edbc 128 * \brief Count the number of elements in a queue.
AnnaBridge 171:3a7713b1edbc 129 *
AnnaBridge 171:3a7713b1edbc 130 * \param pQueue Pointer to queue.
AnnaBridge 171:3a7713b1edbc 131 *
AnnaBridge 171:3a7713b1edbc 132 * \return Number of elements in queue.
AnnaBridge 171:3a7713b1edbc 133 */
AnnaBridge 171:3a7713b1edbc 134 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 135 uint16_t WsfQueueCount(wsfQueue_t *pQueue);
AnnaBridge 171:3a7713b1edbc 136
AnnaBridge 171:3a7713b1edbc 137 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 138 /*!
AnnaBridge 171:3a7713b1edbc 139 * \fn WsfQueueEmpty
AnnaBridge 171:3a7713b1edbc 140 *
AnnaBridge 171:3a7713b1edbc 141 * \brief Return TRUE if queue is empty.
AnnaBridge 171:3a7713b1edbc 142 *
AnnaBridge 171:3a7713b1edbc 143 * \param pQueue Pointer to queue.
AnnaBridge 171:3a7713b1edbc 144 *
AnnaBridge 171:3a7713b1edbc 145 * \return TRUE if queue is empty, FALSE otherwise.
AnnaBridge 171:3a7713b1edbc 146 */
AnnaBridge 171:3a7713b1edbc 147 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 148 bool_t WsfQueueEmpty(wsfQueue_t *pQueue);
AnnaBridge 171:3a7713b1edbc 149
AnnaBridge 171:3a7713b1edbc 150
AnnaBridge 171:3a7713b1edbc 151 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 152 };
AnnaBridge 171:3a7713b1edbc 153 #endif
AnnaBridge 171:3a7713b1edbc 154
AnnaBridge 171:3a7713b1edbc 155 #endif /* WSF_QUEUE_H */