123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /************************************************************************
- Project: Welling Motor Control Paltform
- Filename: queue.c
- Partner Filename: queue.h
- Description: The math function
- Complier: IAR Embedded Workbench for ARM 7.80, IAR Systems.
- CPU TYPE : GD32F3x0
- *************************************************************************
- Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
- All rights reserved.
- *************************************************************************
- *************************************************************************
- Revising History (ECL of this file):
- ************************************************************************/
- /************************************************************************
- Beginning of File, do not put anything above here except notes
- Compiler Directives:
- *************************************************************************/
- #ifndef _QUEUE_C_
- #define _QUEUE_C_
- #endif
- /************************************************************************
- Included File:
- *************************************************************************/
- #include "queue.h"
- #include "string.h"
- /******************************************************************************************************************************************************
- ** \brief parameter
- ******************************************************************************************************************************************************/
- ERROR_LOG que_stErrorLog;
- FLASH_ERROR_QUEUE que_stFlashErrorLog;
- /******************************************************************************************************************************************************
- ** \brief
- ******************************************************************************************************************************************************/
- void que_voInit(FLASH_ERROR_QUEUE *Q)
- {
- Q->ubHead = 0;
- Q->ubRear = 0;
- memset(Q->stLog, 0, sizeof(ERROR_LOG) * QUEUE_SIZE);
- }
- /******************************************************************************************************************************************************
- ** \brief
- ******************************************************************************************************************************************************/
- static BOOL que_fgEmpty(FLASH_ERROR_QUEUE *Q)
- {
- BOOL ret = FALSE;
- if (Q->ubHead == Q->ubRear)
- {
- ret = TRUE;
- }
- return ret;
- }
- /******************************************************************************************************************************************************
- ** \brief
- ** \return
- ******************************************************************************************************************************************************/
- static BOOL que_fgFull(FLASH_ERROR_QUEUE *Q)
- {
- BOOL ret = FALSE;
- if (((Q->ubHead - Q->ubRear) + QUEUE_SIZE) % QUEUE_SIZE == 1)
- {
- ret = TRUE;
- }
- return ret;
- }
- /******************************************************************************************************************************************************
- ** \brief
- ******************************************************************************************************************************************************/
- static UBYTE que_voEnter(FLASH_ERROR_QUEUE *Q, ERROR_LOG x)
- {
- memcpy(&(Q->stLog[Q->ubRear]), &x, sizeof(ERROR_LOG));
- Q->ubRear = (Q->ubRear + 1) % QUEUE_SIZE;
- if (que_fgFull(Q) != FALSE) //队列满,覆盖队头数据
- {
- Q->ubHead = (Q->ubHead + 1) % QUEUE_SIZE;
- return 0;
- }
- else
- {
- return 1;
- }
- }
- /******************************************************************************************************************************************************
- ** \brief
- ** \return if queue is empty return 0 ,if not return 1
- ******************************************************************************************************************************************************/
- static UBYTE que_voDelete(FLASH_ERROR_QUEUE *Q, ERROR_LOG *dat)
- {
- if (que_fgEmpty(Q) != FALSE)
- {
- return 0;
- }
- *dat = Q->stLog[Q->ubHead];
- Q->ubHead = (Q->ubHead + 1) % QUEUE_SIZE;
- return 1;
- }
- /******************************************************************************************************************************************************
- ** \brief
- ******************************************************************************************************************************************************/
- UBYTE que_ubPushIn(FLASH_ERROR_QUEUE *Q, ERROR_LOG *rxdata, UBYTE length)
- {
- for (UBYTE i = 0; i < length; i++)
- {
- que_voEnter(Q, *rxdata++);
- }
- return 1;
- }
- /******************************************************************************************************************************************************
- ** \brief Variable Defination
- ******************************************************************************************************************************************************/
- UBYTE que_ubPopOut(FLASH_ERROR_QUEUE *Q, ERROR_LOG *buf, UBYTE length)
- {
- if (que_fgEmpty(Q) != FALSE)
- {
- return 0;
- }
- for (UBYTE i = 0; i < length; i++)
- {
- que_voDelete(Q, &buf[i]);
- }
- return 1;
- }
- /******************************************************************************************************************************************************
- ** @brief
- ** @param[in]
- ** @Param[out]
- ** @returns
- ******************************************************************************************************************************************************/
- /******************************************************************************************************************************************************
- ** end of file
- ******************************************************************************************************************************************************/
|