blob: 286b4631b5775c719006a6da83a531b5949b4152 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2016
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35/*************************************************************
36*
37* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
38*
39* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
40*
41* Copyright (c) 2006-2010 VIA Telecom, Inc. All rights reserved.
42*
43*************************************************************/
44#ifndef _SLCSMP_H_
45#define _SLCSMP_H_ 1
46/*****************************************************************************
47*
48* FILE NAME : slcsmp.h
49*
50* DESCRIPTION : This file includes the definition of SMP
51*
52* HISTORY :
53* See Log at end of file
54*
55*****************************************************************************/
56#include "do_slcapi.h"
57#include "slcamp.h"
58#include "do_dsaapi.h"
59#include "do_clcapi.h"
60#include "slc_nvram.h"
61
62#define SESSION_CLOSE_REASON_MORE 8
63
64#define SESSION_CLOSE_MESSAGEID_LEN 8
65#define SESSION_CLOSE_REASON_LEN 8
66#define SESSION_MORE_INFO_LEN 8
67#define SESSION_TYPE_LENGTH_LEN 1
68#define SESSION_TYPE_LEN_1 7
69#define SESSION_TYPE_LEN_2 15
70#define SESSION_SUBTYPE_LEN 16
71
72#define KEEPALIVE_MESSAGEID_LEN 8
73#define KEEPALIVE_TRANSID_LEN 8
74
75#define SMP_DEFAULT_TCLOSE 0x0ca8
76#define SMP_DEFAULT_NSMPKEEPALIVE 3
77
78
79#define SMP_KEEPALIVE_TIMER_INTERVAL 12000
80
81#define SMP_DEFAULT_SUBTYPE 0x0000
82
83typedef enum {
84 SMP_CONFIG_ATTR_ID = 0xff,
85 ALL_SMP_ATTR
86}SmpAttributeID;
87
88typedef enum {
89 SMP_INUSE,
90 SMP_INCONFIG,
91 SMP_ALL
92}SmpInstance;
93
94typedef enum {
95 SMP_SESSION_CLOSE_MSG = 0x01,
96 SMP_KEEPALIVE_REQ_MSG = 0x02,
97 SMP_KEEPALIVE_RSP_MSG = 0x03,
98 SMP_CONFIG_REQ_MSG = 0x50,
99 SMP_CONFIG_RSP_MSG = 0x51,
100}SmpMessageTypeT;
101
102typedef enum {
103 INACTIVE_STATE, /*InActive ST*/
104 SETUP_STATE, /*AMP Setup ST*/
105 OPEN_STATE, /*Open ST*/
106 CLOSING_STATE,
107 SMPSTATE
108} SmpState;
109
110typedef enum {
111 FSM_NOT_INITED,
112 FSM_OPEN_ERR,
113 FSM_READ_ERR,
114 FSM_WRITE_ERR,
115 FSM_NO_ERR,
116 FSM_ERR
117}FsmResult;
118
119typedef enum {
120 NEW_SESSION,
121 ALIVE_SESSION,
122 PRIOR_SESSION,
123 OPENED_SESSION
124}SessionStateT;
125
126
127typedef struct {
128 kal_uint8 MessageID;
129 kal_uint8 TransactionID;
130}SmpKeepAliveMsgT;
131
132typedef struct{
133 kal_uint8 Length;
134 SmpAttributeID AttrID;
135 kal_uint16 AttrValue;
136}SmpAttributeRecord;
137
138typedef struct {
139 kal_uint8 MessageID;
140 kal_uint8 TransactionID;
141 SmpAttributeRecord AttrRecord;
142}SmpConfigurationRspMsgT;
143
144typedef struct {
145 kal_uint16 InuseSubType;
146 kal_uint16 InconfigSubType;
147 SmpState SmpState;
148 kal_uint8 KeepAliveReqTransIdSent;
149 kal_uint8 KeepAliveReqTransIdRcv;
150 kal_bool MpsInProgress;
151 kal_uint8 NKeepAlive; /*count parameter*/
152 kal_uint8 NRemainKeepAliveTimes; /*The remaining system time*/
153 kal_uint8 PriorSessionGAUP;
154 SessionStateT SesionState;
155}SmpParamT;
156
157typedef kal_bool (*pCallFunc)(void **retBuffer, void *storedBuffer);
158
159void SmpInit(void);
160void RunSmpStateMachine(kal_uint32 MsgId, void *MsgDataP);
161void ProcessSmpDsaFwdMsg(DsaFwdMsgT *MsgDataP);
162void ProcessSmpKeepAliveTransTimeout(void);
163void SmpInitStructures( kal_uint16 SubType, kal_bool InUse);
164void SmpCommit(void);
165void SetSmpState(SmpState state);
166SmpState GetSmpState(void);
167void SetSessionState(SessionStateT state);
168SessionStateT GetSessionState(void);
169kal_uint8 GetSessionEhrpdFlag(void);
170void SmpDeclareSessionOpened(kal_bool informCssOnly, kal_bool newSession);
171void SmpSendSessionOpenStatus(kal_bool status);
172void SmpSetSessionNegoState(SessionStateT state);
173void SlcReportSessionNegoFailure(ClcErrCauseT cause);
174void SlcSendDsarDelMsg(kal_uint8 protocolType, kal_uint8 msgId, kal_bool reqTxStatus);
175void SlcSessionStatePrint(void);
176void smp_nvram_read_cnf_handle (local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
177void smp_nvram_write_cnf_handle(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
178void SmpCheckSendingLocationNotificationMsg(kal_bool setFlag, kal_bool sendMsg);
179kal_bool SmpCheckSessionNegoHpsNeeded(void);
180
181/*****************************************************************************
182* $Log: slcsmp.h $
183*
184* 06 04 2018 tom.wu
185* [MOLY00328488] [Merlot][MT6761][O1][C2K][OM6M][MD3 Regression]EVDO system selecting time is longer than OPPO R11
186*
187* .
188*
189* 07 06 2017 sue.zhong
190* [MOLY00259241] [6293][C2K]Replace with KAL data type
191* Correct copyright file header
192*
193* 04 24 2017 tom.wu
194* [MOLY00231424] [6293][C2K] slc/clc common modify
195*
196* :merge MP6 CL to UMOLYA.TRUNK, 86452,86510,87001,87251,87574,87644
197*
198* 04 11 2017 tom.wu
199* [MOLY00241000] [BIANCO][MT6763][RDIT][PHONE][MD_Pre-Sanity][C2K][SIM1:CTC]fail to establish ppp link
200*
201* : session restore stream2/RTM personality set
202*
203* 02 21 2017 tom.wu
204* [MOLY00229931] [6293][C2K] merge session restore feature modify
205*
206* .
207*
208* 12 01 2016 sue.zhong
209* [MOLY00213777] [6293][C2K]Sync C2K code to UMOLYA TRUNK(W1648)
210* Update C2K source
211*
212* 11 09 2016 sue.zhong
213* [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
214* Update C2K PS code (2/2)
215*
216* 11 09 2016 sue.zhong
217* [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
218* Update C2K PS code (2/2)
219*****************************************************************************/
220
221/*****************************************************************************
222* End of File
223*****************************************************************************/
224#endif /*_SLCSMP_H_*/
225
226