[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/driver/peripheral/bmd.h b/mcu/interface/driver/peripheral/bmd.h
new file mode 100644
index 0000000..7e72532
--- /dev/null
+++ b/mcu/interface/driver/peripheral/bmd.h
@@ -0,0 +1,356 @@
+ /*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2005
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * bmd.h
+ *
+ * Project:
+ * --------
+ * Maui_Software
+ *
+ * Description:
+ * ------------
+ * This file is intends for ring-buffer API.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef BMD_H
+#define BMD_H
+
+#include "drv_comm.h"
+
+typedef struct __BUFFER_INFO
+{
+ volatile kal_uint16 Read; /* @field Current Read index. */
+ volatile kal_uint16 Write; /* @field Current Write index. */
+ volatile kal_uint16 Length; /* @field Length of buffer */
+ volatile kal_uint8 *CharBuffer; /* @field Start of buffer */
+}BUFFER_INFO;
+
+#define ResetFifo(Buffer) (Buffer.Write = Buffer.Read = 0)
+#define BWrite(Buffer) (Buffer->Write)
+#define BRead(Buffer) (Buffer->Read)
+#define BLength(Buffer) (Buffer->Length)
+#define BStartAddr(Buffer) (Buffer->CharBuffer)
+#define BuffWrite(Buffer) (Buffer->CharBuffer+Buffer->Write)
+#define BuffRead(Buffer) (Buffer->CharBuffer+Buffer->Read)
+
+#define BWrite_addr(Buffer) (Buffer.Write)
+#define BRead_addr(Buffer) (Buffer.Read)
+#define BLength_addr(Buffer) (Buffer.Length)
+#define BuffWrite_addr(Buffer) (Buffer.CharBuffer+Buffer.Write)
+#define BuffRead_addr(Buffer) (Buffer.CharBuffer+Buffer.Read)
+#define Buff_EndAddr(Buffer) (Buffer.CharBuffer+Buffer.Length-1)
+#define Buff_StartAddr(Buffer) (Buffer.CharBuffer)
+
+#define Buff_isEmpty 1
+#define Buff_notEmpty 0
+#define Buff_isFull 1
+#define Buff_notFull 0
+#define Buff_PushOK 0
+#define Buff_PushErr 1
+#define Buff_PopOK 0
+#define Buff_PopErr 1
+
+#define Buf_init(_Buffer,_Buffaddr,_uTotalSize) \
+{\
+ BUFFER_INFO *_Buf=_Buffer;\
+ _Buf->Read = 0;\
+ _Buf->Write = 0;\
+ _Buf->Length = _uTotalSize;\
+ _Buf->CharBuffer = _Buffaddr;\
+}\
+
+#define Buf_IsFull(_Buffer,_result) \
+{\
+ BUFFER_INFO *_Buf=_Buffer;\
+ kal_uint16 _tmp = BRead(_Buf);\
+ if (_tmp == 0)\
+ _tmp = BLength(_Buf);\
+ if ( (_tmp-BWrite(_Buf)) == 1)\
+ {\
+ _result = Buff_isFull;\
+ }\
+ else\
+ {\
+ _result = Buff_notFull;\
+ }\
+}\
+
+#define Buf_GetRoomLeft(_Buffer,_RoomLeft) \
+{\
+ BUFFER_INFO *_Buf=_Buffer;\
+ if ( BRead(_Buf) <= BWrite(_Buf) ) \
+ {\
+ _RoomLeft = BLength(_Buf) - BWrite(_Buf) + BRead(_Buf) - 1;\
+ }\
+ else\
+ {\
+ _RoomLeft = BRead(_Buf) - BWrite(_Buf) - 1;\
+ }\
+}\
+
+#define Buf_Push_Multi(_Buffer,_pushDataPointer,_multi,offset) \
+{\
+ BUFFER_INFO *_Buf=_Buffer;\
+ if( (BWrite(_Buf) + _multi) >= BLength(_Buf) ){\
+ kal_mem_cpy(BuffWrite(_Buf), _pushDataPointer + offset, (BLength(_Buf) - BWrite(_Buf))*sizeof(kal_uint8));\
+ kal_mem_cpy(BStartAddr(_Buf) , _pushDataPointer + offset + (BLength(_Buf) - BWrite(_Buf)), (_multi- (BLength(_Buf) - BWrite(_Buf)))*sizeof(kal_uint8));\
+ BWrite(_Buf) = (BWrite(_Buf) + _multi) - BLength(_Buf);\
+ }\
+ else{\
+ kal_mem_cpy(BuffWrite(_Buf), _pushDataPointer + offset, _multi*sizeof(kal_uint8));\
+ BWrite(_Buf) += _multi;\
+}\
+}\
+
+#define Buf_Push(_Buffer,_pushData) \
+{\
+ BUFFER_INFO *_Buf=_Buffer;\
+ *BuffWrite(_Buf) = _pushData;\
+ if(BWrite(_Buf) >= (BLength(_Buf) - 1))\
+ {\
+ BWrite(_Buf) = 0;\
+ }\
+ else\
+ {\
+ BWrite(_Buf)++;\
+ }\
+}\
+
+#define Buf_GetBytesAvail(_Buffer,_BytesAvail) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ _BytesAvail = 0;\
+ if (BWrite(_Buf) >= BRead(_Buf))\
+ _BytesAvail = BWrite(_Buf) - BRead(_Buf);\
+ else\
+ _BytesAvail = BLength(_Buf) - BRead(_Buf) + BWrite(_Buf); \
+}\
+
+#define Buf_GetBytesAvail_DMA(_Buffer,_BytesAvail) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ _BytesAvail = 0;\
+ if (BWrite(_Buf) >= BRead(_Buf))\
+ _BytesAvail = BWrite(_Buf) - BRead(_Buf);\
+ else\
+ _BytesAvail = BLength(_Buf) - BRead(_Buf); \
+}\
+
+#define Buf_Pop_Multi(_Buffer,_popDataPointer,_multi,offset) \
+{\
+ BUFFER_INFO *_Buf=_Buffer;\
+ if( (BRead(_Buf) + _multi) >= BLength(_Buf) ){\
+ kal_mem_cpy(_popDataPointer + offset, BuffRead(_Buf), (BLength(_Buf) - BRead(_Buf))*sizeof(kal_uint8));\
+ kal_mem_cpy(_popDataPointer + offset + (BLength(_Buf) - BRead(_Buf)), BStartAddr(_Buf), (_multi- (BLength(_Buf) - BRead(_Buf)))*sizeof(kal_uint8));\
+ BRead(_Buf) = BRead(_Buf) + _multi - BLength(_Buf) ;)\
+ else{\
+ kal_mem_cpy(_popDataPointer + offset, BuffRead(_Buf), _multi);\
+ BRead(_Buf) += _multi;}\
+}\
+
+#define Buf_Pop(_Buffer,_popData) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ _popData= *BuffRead(_Buf);\
+ BRead(_Buf)++;\
+ if (BRead(_Buf) >= BLength(_Buf))\
+ {\
+ BRead(_Buf) -= BLength(_Buf);\
+ }\
+}\
+
+/* should be deleted */
+#define Buf_IsEmpty(_Buffer,_result) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ if ( BRead(_Buf) == BWrite(_Buf) ) \
+ {\
+ _result = Buff_isEmpty;\
+ }\
+ else\
+ {\
+ _result = Buff_notEmpty;\
+ }\
+}\
+
+/* void Get32FromBuff(BUFFER_INFO *Buf,kal_uint32 DATA) */
+#define Get32FromBuf(_Buffer,_DATA) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ kal_uint8 _tmp,_index;\
+ kal_uint32 _tmp32;\
+ _DATA =0;\
+ for (_index =0;_index < 4;_index++)\
+ {\
+ Buff_Pop(_Buf,&_tmp);\
+ _tmp32 = (kal_uint32)_tmp;\
+ (_DATA) |= (_tmp32 << (8*_index));\
+ }\
+}\
+
+/*void Put32toBuff(BUFFER_INFO *Buf,kal_uint32 *DATA)*/
+#define Put32toBuf(_Buffer,_DATA) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ kal_uint8 _tmp,_index;\
+ kal_uint32 _tmp32;\
+ for (_index =0;_index < 4;_index++)\
+ {\
+ _tmp32 = ((*_DATA) >> (8*_index));\
+ _tmp = (kal_uint8)_tmp32;\
+ Buff_Push(_Buf,&_tmp);\
+ }\
+}\
+
+#define Buf_Flush(_Buffer) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ _Buf->Write = _Buf->Read = 0;\
+}
+
+#define Buf_look(_Buffer,_popData,_num) \
+{\
+ BUFFER_INFO *_Buf = _Buffer;\
+ kal_uint8 _index;\
+ kal_uint16 _tmp;\
+ _tmp = BRead(Buf);\
+ for(_index=0;_index<_num;_index++)\
+ {\
+ *_popData= *(Buf->CharBuffer+_tmp);\
+ _tmp++;\
+ if (_tmp >= BLength(Buf))\
+ {\
+ _tmp -= BLength(Buf);\
+ }\
+ }\
+}
+
+// MoDIS parser skip start
+#if 1
+extern void Buff_init(BUFFER_INFO *Buf,kal_uint8 *Buffaddr, kal_uint16 uTotalSize);
+extern void Buff_Push(BUFFER_INFO *Buf,kal_uint8 *pushData);
+extern void Buff_Pop(BUFFER_INFO *Buf,kal_uint8 *popData);
+extern kal_uint8 Buff_IsEmpty(BUFFER_INFO *Buf);
+extern kal_uint8 Buff_IsFull (BUFFER_INFO *Buf);
+extern kal_uint16 Buff_GetRoomLeft (BUFFER_INFO *Buf);
+extern kal_uint16 Buff_GetBytesAvail (BUFFER_INFO *Buf);
+extern kal_uint16 Buff_GetLength(BUFFER_INFO *Buf);
+extern void Buff_Flush (BUFFER_INFO *Buf);
+extern void Buff_look(BUFFER_INFO *Buf,kal_uint8 *popData,kal_uint8 num);
+extern void Get32FromBuff(BUFFER_INFO *Buf,kal_uint32 *DATA);
+extern void Put32toBuff(BUFFER_INFO *Buf,kal_uint32 *DATA);
+extern void MemCPY(kal_uint8 *dst,kal_uint8 *src,kal_uint32 len);
+extern void MemSET(kal_uint8 *dst,kal_uint8 data,kal_uint32 len);
+#endif
+// MoDIS parser skip end
+
+#endif
+