[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/service/kal/common/include/event_shed.h b/mcu/service/kal/common/include/event_shed.h
new file mode 100644
index 0000000..1cbf515
--- /dev/null
+++ b/mcu/service/kal/common/include/event_shed.h
@@ -0,0 +1,298 @@
+/*****************************************************************************
+* 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:
+ * ---------
+ * event_shed.h
+ *
+ * Project:
+ * --------
+ * Maui_Software
+ *
+ * Description:
+ * ------------
+ * Header file for Event Scheduler.
+ *
+ * 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!
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+ (C) _____ (year of first publication) Sasken communication
+ Technologies Limited, All rights reserved.
+* This file provides a template for .c files. This space
+* should be used to describe the file contents
+* Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _EVENT_SHED_H
+#define _EVENT_SHED_H
+/*RHR*/
+#include "kal_general_types.h"
+#include "stacklib.h"
+#include "kal_public_defs.h"
+#include "mlib_dll.h"
+/*RHR*/
+
+/*************************************************************************
+ * Type Definitions
+ *************************************************************************/
+typedef void (*start_timer_fptr)(void *, unsigned int);
+typedef void (*stop_timer_fptr)(void *);
+
+typedef enum {
+ ES_TIMER_INITIALIZED,
+ ES_TIMER_NOT_RUNNING = ES_TIMER_INITIALIZED,
+ ES_TIMER_RUNNING,
+ ES_TIMER_NOT_TIMED_OUT = ES_TIMER_RUNNING, /* Backward compatiable */
+ ES_TIMER_EXPIRED,
+ ES_TIMER_TIMED_OUT = ES_TIMER_EXPIRED, /* Backward compatiable */
+ ES_TIMER_STOPPED
+} es_timer_status_type;
+
+typedef struct event_scheduler_int {
+ /* event's double-linked list */
+ list_node *dll;
+ /*introduce the head to prevent fuzz accumulate*/
+ list_node *fuzzhead;
+ /* event's expired dll list split in evshed_timer_handler() */
+ list_node *expired_dllhead;
+
+ /* scheduler's reference time base */
+ kal_uint32 t_ref_ticks;
+
+ /* scheduler's pattern, EVSHED_TIMER_ID */
+ kal_uint8 evshed_timer_id[3];
+
+ /* scheduler's suspend flag */
+ kal_bool is_suspend;
+
+ kal_uint32 fuzz;
+
+ /* kal timer pointer */
+ kal_timerid kal_timer_id;
+
+ /* timer status from event-scheduler's view */
+ es_timer_status_type es_timer_status;
+
+ /* user's destination module id (receiver mod id) */
+ module_type dest_mod_id;
+
+ /* descrimivate multiple event schedulers if same receiver mod id*/
+ kal_uint16 es_user_index;
+
+ /*for avoiding race condition by NU protect or windows mutex*/
+ void *es_protect;
+
+ /*for detecting concurrent operation occurs or not*/
+ kal_int32 cur_owner;
+
+ /* reserved for adding newer feature. bit 0: 1 to enable 1ms tick unit */
+ kal_uint32 es_feature_mask;
+//#if defined(__EVENT_CNT_PROFILING__)
+ /* record active event count */
+ kal_uint32 event_cnt;
+
+ /* record history event max count */
+ kal_uint32 event_cnt_his_max;
+ kal_uint32 event_cnt_his_max_timing;
+//#endif /*__EVENT_CNT_PROFILING__*/
+} event_scheduler_int;
+
+typedef struct event {
+ list_node ev_node;
+ kal_timer_func_ptr event_hf;
+ void * event_hf_param;
+ kal_uint32 abs_time;
+ event_scheduler_int
+ *owneres; /* a pointer points back to the event's onwer(event scheduler) */
+ kal_uint32 event_index;
+} event;
+
+#if defined(__EVENT_CNT_PROFILING__)
+typedef struct {
+ event_scheduler_int *es;
+ event_scheduler_int *es_his;
+ kal_uint32 event_cnt;
+ kal_uint32 event_cnt_his_max;
+ kal_uint32 timing;
+} event_record_int;
+
+#define EVT_CNT_LIMITATION 256
+#define RECORD_NUM 10
+#endif /*__EVENT_CNT_PROFILING__*/
+
+#define node2event(node) List2Container(node, event, ev_node)
+
+#define evshed_update_fuzzhead(es,eid) { es->fuzzhead = eid; }
+
+#define EVSHED_TIMER_ID 0x00545645UL
+
+#define IS_VALID_EVSHED_TIMER(es) \
+ (((kal_uint32) * ((kal_uint32 *)es->evshed_timer_id) & 0x00FFFFFF) == \
+ (EVSHED_TIMER_ID & 0x00FFFFFF))
+
+extern void evshed_msg_send(event_scheduler_int *es);
+#endif /* _EVENT_SHED_H */