zte's code,first commit
Change-Id: I9a04da59e459a9bc0d67f101f700d9d7dc8d681b
diff --git a/cp/ps/driver/inc/pub/drvs_ring.h b/cp/ps/driver/inc/pub/drvs_ring.h
new file mode 100644
index 0000000..4ac0d24
--- /dev/null
+++ b/cp/ps/driver/inc/pub/drvs_ring.h
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * Copyright (C) 2008, ZTE Corporation.
+ *
+ * File Name: drvs_ring.h
+ * File Mark:
+ * Description:
+ * Others:
+ * Version: V1.0
+ * Author: qinxiao
+ * Date: 2009-09-03
+ * History 1: created
+ * Date:
+ * Version:
+ * Author:
+ * Modification:
+ ********************************************************************************/
+#ifndef DRVS_RING_H
+#define DRVS_RING_H
+
+#ifdef __cplusplus
+ extern "C"
+ {
+#endif
+
+/****************************************************************************
+* Include files
+****************************************************************************/
+
+/****************************************************************************
+* Macros
+****************************************************************************/
+
+/****************************************************************************
+* Types
+****************************************************************************/
+typedef struct _T_Hal_Ring
+{
+ UINT32 writePos; /* offset from start of buffer where to write next */
+ UINT32 readPos; /* offset from start of buffer where to read next */
+ UINT32 bufSize; /* size of ring in bytes */
+ UINT8 *pBuf; /* pointer to start of buffer */
+}T_Hal_Ring;
+
+/****************************************************************************
+* Constants
+****************************************************************************/
+
+/****************************************************************************
+* Global Variables
+****************************************************************************/
+
+/****************************************************************************
+* Function Prototypes
+****************************************************************************/
+/******************************************************************************
+ * Function: hal_RingIsEmpty
+ * Description: Åжϻ·Ðλº³åÊÇ·ñΪ¿Õ
+ * Parameters:
+ * Input:
+ * pRing - :»·Ðλº³åÖ¸Õë
+ * Output:
+ * None
+ * Returns:
+ * ¿Õ:TRUE; ·Ç¿Õ:FALSE
+ *
+ * Others:
+ ******************************************************************************/
+BOOL hal_RingIsEmpty( T_Hal_Ring *pRing);
+
+/******************************************************************************
+ * Function: hal_RingIsFull
+ * Description: Åжϻ·Ðλº³åÊÇ·ñÒÑÂú
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * Output:
+ * None
+ * Returns:
+ * Âú:TRUE; ·ÇÂú:FALSE
+ *
+ * Others:
+ ******************************************************************************/
+BOOL hal_RingIsFull(T_Hal_Ring *pRing);
+
+/******************************************************************************
+ * Function: hal_RingCreate
+ * Description: ´´½¨»·Ðλº³å
+ * Parameters:
+ * Input:
+ * nbytes -- »·Ðλº³åµÄ´óС£¬µ¥Î»£º×Ö½Ú
+ * Output:
+ * None
+ * Returns:
+ * ³É¹¦£º»·Ðλº³åID; ʧ°Ü:hal_NULL
+ *
+ * Others:
+ ******************************************************************************/
+T_Hal_Ring *hal_RingCreate(UINT32 nBytes);
+
+/******************************************************************************
+ * Function: hal_RingDelete
+ * Description: ɾ³ý»·Ðλº³å
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * Output:
+ * None
+ * Returns:
+ * None
+ *
+ * Others:
+ ******************************************************************************/
+VOID hal_RingDelete(T_Hal_Ring * pRing);
+
+/******************************************************************************
+ * Function: hal_RingRead
+ * Description: ¶ÁÈ¡»·Ðλº³å¶ÓÁеÄÊý¾Ý
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * pBuffer -- Êä³ö»º³åÖ¸Õë
+ * maxbytes -- ÐèÒª¶ÁÈ¡µÄ×î´ó×Ö½ÚÊý
+ * Output:
+ * buffer -- Êä³ö»º³åÖ¸Õë
+ * Returns:
+ * ʵ¼Ê¶ÁÈ¡µÄ×Ö½ÚÊý
+ *
+ * Others: ·µ»ØÖµ¿ÉÄÜÓëÐèÒª¶ÁÈ¡µÄ×Ö½ÚÊý²»Ò»Ö¡£Èç¹û»º³åΪ¿Õ£¬Ôò·µ»Ø0.
+ ******************************************************************************/
+UINT32 hal_RingRead(T_Hal_Ring *pRing, UINT8 *pBuffer, UINT32 maxBytes);
+
+/******************************************************************************
+ * Function: hal_RingWrite
+ * Description: Ïò»·Ðλº³åдÈëÊý¾Ý
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * pBuffer -- Êä³ö»º³åÖ¸Õë
+ * nBytes -- ´ýдÈëÊý¾ÝµÄ´óС
+ * Output:
+ * None
+ * Returns:
+ * ʵ¼ÊдÈëµÄ×Ö½ÚÊý
+ *
+ * Others: ·µ»ØÖµ¿ÉÄÜÓëÐèҪдÈëµÄ×Ö½ÚÊý²»Ò»Ö¡£Èç¹û»º³åΪÂú£¬Ôò·µ»Ø0.
+ ******************************************************************************/
+UINT32 hal_RingWrite(T_Hal_Ring * pRing, UINT8 *pBuffer, UINT32 nBytes);
+
+/******************************************************************************
+ * Function: hal_RingFreeBytes
+ * Description: »ñÈ¡»·Ðλº³åÊ£Óà¿ÉÀûÓÃ×Ö½ÚÊý
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * Output:
+ * None
+ * Returns:
+ * Ê£Óà¿ÉÀûÓÿռä×Ö½ÚÊý
+ *
+ * Others:
+ ******************************************************************************/
+UINT32 hal_RingFreeBytes(T_Hal_Ring *pRing);
+
+/******************************************************************************
+ * Function: hal_RingUsedBytes
+ * Description: »ñÈ¡»·Ðλº³åÒÑʹÓõÄ×Ö½ÚÊý
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * Output:
+ * None
+ * Returns:
+ * ÒÑʹÓõÄ×Ö½ÚÊý
+ *
+ * Others:
+ ******************************************************************************/
+UINT32 hal_RingUsedBytes(T_Hal_Ring *pRing);
+
+/******************************************************************************
+ * Function: hal_RingFlush
+ * Description: Çå³ý»·Ðλº³åµÄËùÓÐÊý¾Ý
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * Output:
+ * None
+ * Returns:
+ * None
+ * Others:
+ ******************************************************************************/
+VOID hal_RingFlush(T_Hal_Ring * pRing);
+#if 0
+/******************************************************************************
+ * Function: hal_RingMoveAhead
+ * Description: ½«»·Ðλº³åµÄдָÕëÒÆ¶¯¼¸¸ö×Ö½Ú
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * nBytes -- ÐèÒªÒÆ¶¯µÄ×Ö½ÚÊý,ÕýÊýÏòÇ°ÒÆ¶¯£¬¸ºÊýÏòºóÒÆ¶¯£»
+ * ·¶Î§:-»·Ðλº³å×î´ó×Ö½ÚÊý-- +»·Ðλº³å×î´ó×Ö½ÚÊý
+ * Output:
+ * None
+ * Returns:
+ * None
+ * Others: µ±Ð´Ö¸Õ볬³ö¶ÓÁÐ×î´ó³¤¶Èʱ£¬»á×Ô¶¯»·ÐÎ.
+ ******************************************************************************/
+VOID hal_RingMoveWritePos(T_Hal_Ring * pRing, SINT32 nBytes);
+
+/******************************************************************************
+ * Function: hal_RingMoveAhead
+ * Description: Ïò»·Ðλº³åµ±Ç°Ð´Ö¸ÕëµÄÆ«ÒÆ´¦£¬Ð´ÈëÒ»¸öÊý¾Ý
+ * ²»Òƶ¯Ð´Ö¸Õë
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * byte:´ýдÈëµÄÊý¾Ý
+ * offset -- Æ«ÒÆÁ¿, ÕýÊýÏòÇ°ÒÆ¶¯, ¸ºÊýÏòºóÒÆ¶¯;
+ * ·¶Î§:-»·Ðλº³å×î´ó×Ö½ÚÊý-- +»·Ðλº³å×î´ó×Ö½ÚÊý,
+ * Output:
+ * None
+ * Returns:
+ * None
+ * Others: µ±Ð´Ö¸Õ볬³ö¶ÓÁÐ×î´ó³¤¶Èʱ£¬»á×Ô¶¯»·ÐÎ.
+ ******************************************************************************/
+VOID hal_RingPutAhead(T_Hal_Ring * pRing, UINT8 byte, SINT32 offset);
+
+/******************************************************************************
+ * Function: hal_RingGetPossibleReadBlock
+ * Description: »ñÈ¡»·Ðλº³å¿É¶ÁÈ¡µÄ×Ö½ÚÊýºÍÖ¸Õë
+ * Parameters:
+ * Input:
+ * pRing -- »·Ðλº³åÖ¸Õë
+ * Output:
+ * nBytes -- ¿É¶ÁÈ¡×Ö½ÚÊý
+ * UINT8 * -- bufferÖ¸Õë
+ * Returns:
+ * ÒÑʹÓõÄ×Ö½ÚÊý
+ *
+ * Others:
+ ******************************************************************************/
+UINT8 *hal_RingGetPossibleReadBlock(T_Hal_Ring * pRing, UINT32 *nBytes);
+
+VOID hal_RingMoveReadPos(T_Hal_Ring * pRing, SINT32 nBytes);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+