1 /* |
1 /* |
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). |
3 * All rights reserved. |
3 * All rights reserved. |
4 * This component and the accompanying materials are made available |
4 * This component and the accompanying materials are made available |
5 * under the terms of the License "Eclipse Public License v1.0" |
5 * under the terms of the License "Eclipse Public License v1.0" |
6 * which accompanies this distribution, and is available |
6 * which accompanies this distribution, and is available |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
21 |
21 |
22 #include <e32base.h> |
22 #include <e32base.h> |
23 #include "cmodemathandler.h" |
23 #include "cmodemathandler.h" |
24 const TUint8 KInvalidPipeHandle = 0xff; |
24 const TUint8 KInvalidPipeHandle = 0xff; |
25 |
25 |
|
26 |
|
27 const TUint8 PEP_COMM_IND_ID_ESCAPE = 0x07;// Hard coded PEP constants to be included when dataport exports (DP is COMM PEP)!! |
|
28 const TUint8 PEP_COMM_CTRL_ID_ESCAPE = 0x05; |
|
29 const TUint8 PEP_COMM_SIGNAL_DTR_ON = 0x05; |
|
30 const TUint8 PEP_COMM_SIGNAL_DTR_OFF = 0x06; |
|
31 const TUint8 PEP_COMM_SIGNAL_DCD_ON = 0x07; |
|
32 const TUint8 PEP_COMM_SIGNAL_DCD_OFF = 0x08; |
|
33 const TUint8 PEP_COMM_SIGNAL_DSR_ON = 0x01; |
|
34 const TUint8 PEP_COMM_SIGNAL_DSR_OFF = 0x02; |
|
35 const TUint8 PEP_COMM_IND_ID_V24_CHANGE = 0x04; |
|
36 const TUint8 PEP_COMM_FLOW_CTRL_SW = 0x01; |
|
37 const TUint8 PEP_COMM_FLOW_CTRL_HW = 0x02; |
|
38 // const TUint8 PEP_COMM_FLOW_CTRL_BOTH = 0x03; // Note: AT_MODEM_FLOW_CONTROL_BOTH is not supported |
|
39 const TUint8 PEP_COMM_FLOW_CTRL_NONE = 0x04; |
|
40 const TUint8 PEP_COMM_FLOW_CTRL_EXTRACT = 0x05; |
|
41 const TUint8 PEP_COMM_FLOW_CTRL_NO_EXTRACT = 0x06; |
|
42 const TUint8 PEP_COMM_CTRL_ID_FLOW_CTRL = 0x02; |
|
43 // Escape time for PEP_CTRL_REQ with PEP_COMM_CTRL_ID_ESCAPE |
|
44 // Time is given as 20 milliseconds. So real escape time is: |
|
45 // 50 * 20 milliseconds = 1000 milliseconds |
|
46 const TUint8 KEscapeTime = 50; |
|
47 |
26 class TPipeInfo |
48 class TPipeInfo |
27 { |
49 { |
28 public: |
50 public: |
29 |
51 |
30 enum EPipeState |
52 enum EPipeState |
55 { |
77 { |
56 public: |
78 public: |
57 static CModemAtPipeController* NewL( RIscApi& aIscApi, TUint& aObjId, CModemAtHandler& aHandler ); |
79 static CModemAtPipeController* NewL( RIscApi& aIscApi, TUint& aObjId, CModemAtHandler& aHandler ); |
58 |
80 |
59 ~CModemAtPipeController(); |
81 ~CModemAtPipeController(); |
60 #ifndef NCP_COMMON_BRIDGE_FAMILY |
82 |
61 /* |
83 /* |
62 * Handles messages from PN_NAME |
84 * Handles messages from PN_NAME |
63 * @param TIsiReceiveC& aReceivedMessage Message data |
85 * @param TIsiReceiveC& aReceivedMessage Message data |
64 */ |
86 */ |
65 void HandleNameServiceMessage( const TIsiReceiveC& aReceivedMessage ); |
87 void HandleNameServiceMessage( const TIsiReceiveC& aReceivedMessage ); |
71 |
93 |
72 void HandlePipeServiceMessage( const TIsiReceiveC& aReceivedMessage ); |
94 void HandlePipeServiceMessage( const TIsiReceiveC& aReceivedMessage ); |
73 |
95 |
74 /** |
96 /** |
75 * Removes pipe. |
97 * Removes pipe. |
76 * @param TUint8 aDteId Connection DteId |
98 */ |
77 */ |
99 void RemovePipe(); |
78 void RemovePipe( const TUint8 aDteId); |
|
79 |
100 |
80 /** |
101 /** |
81 * Redirects pipe |
102 * Redirects pipe |
82 * @param TUint8 aDteId Connection DteId |
103 * @param TUint8 aDteId Connection DteId |
83 * @param TUint8 aNewDevId New PEP |
104 * @param TUint8 aNewDevId New PEP |
84 * @param TUint8 aNewObjId New PEP |
105 * @param TUint8 aNewObjId New PEP |
85 */ |
106 */ |
86 void RedirectPipe( const TUint8 aDteId, const TUint8 aNewDevId, const TUint8 aNewObjId ); |
107 void RedirectPipe( const TUint8 aNewDevId, const TUint8 aNewObjId ); |
87 |
108 |
88 /** |
109 /** |
89 * Queries AT MODEM object id. |
110 * Queries AT MODEM object id. |
90 */ |
111 */ |
91 void QueryModemAtFromNameService(); |
112 void QueryModemAtFromNameService(); |
92 |
113 |
93 /** |
114 /** |
94 * GetPipeHandle |
115 * GetPipeState |
95 * @return pipehandle |
116 * @return pipe state |
96 */ |
117 */ |
97 TUint8 GetPipeHandle(); |
118 TPipeInfo::EPipeState GetPipeState(); |
98 |
119 |
99 #endif |
120 /** |
|
121 * Sends PNS_PIPE_ENABLE_REQ |
|
122 */ |
|
123 void SendEnablePipeReq(); |
|
124 |
|
125 /** |
|
126 * Sends PNS_PEP_CTRL_REQ to notify dataport |
|
127 * @param TUint8 aControlId |
|
128 * @param TDesC8& aData |
|
129 */ |
|
130 void SendPepCtrlReq( const TUint8 aControlId, TDesC8& aData ); |
|
131 |
|
132 /** |
|
133 * Sends PNS_PIPE_CREATE_REQ |
|
134 * @param TUint8 aDevId New PEP |
|
135 * @param TUint8 aObjId New PEP |
|
136 */ |
|
137 void SendCreatePipeMessage(const TUint8 aDevId, const TUint8 aObjId); |
|
138 |
|
139 /** |
|
140 * Sends PNS_PEP_STATUS_IND + PEP_COMM_IND_ID_V24_CHANGE |
|
141 * @param TUint8 aPepCommSignal DCD or DSR signal ON or OFF |
|
142 * |
|
143 * |
|
144 */ |
|
145 void SendPepStatusIndSignal( const TUint8 aPepCommSignal ); |
|
146 |
100 private: |
147 private: |
101 /** |
148 /** |
102 * Default C++ constructor. |
149 * Default C++ constructor. |
103 * @param RIscApi& aIscApi |
150 * @param RIscApi& aIscApi |
104 * @param TUint& aObjId |
151 * @param TUint& aObjId |
135 * Handles PNS_NAME_QUERY_RESP |
181 * Handles PNS_NAME_QUERY_RESP |
136 * @param TIsiReceiveC& aReceivedMessage Message data |
182 * @param TIsiReceiveC& aReceivedMessage Message data |
137 */ |
183 */ |
138 void HandleNameQueryResp( const TIsiReceiveC& aReceivedMesssage ); |
184 void HandleNameQueryResp( const TIsiReceiveC& aReceivedMesssage ); |
139 |
185 |
140 |
|
141 /** |
186 /** |
142 * Handles PNS_PIPE_CREATE_RESP |
187 * Handles PNS_PIPE_CREATE_RESP |
143 * @param TIsiReceiveC& aReceivedMessage Message data |
188 * @param TIsiReceiveC& aReceivedMessage Message data |
144 */ |
189 */ |
145 void HandlePipeCreateResp( const TIsiReceiveC& aReceivedMessage ); |
190 void HandlePipeCreateResp( const TIsiReceiveC& aReceivedMessage ); |
165 /** |
210 /** |
166 * Handles PNS_PEP_STATUS_IND |
211 * Handles PNS_PEP_STATUS_IND |
167 * @param TIsiReceiveC& aReceivedMessage Message data |
212 * @param TIsiReceiveC& aReceivedMessage Message data |
168 */ |
213 */ |
169 void HandlePepStatusInd( const TIsiReceiveC& aReceivedMessage ); |
214 void HandlePepStatusInd( const TIsiReceiveC& aReceivedMessage ); |
170 |
215 |
171 /** |
|
172 * Sends PNS_PIPE_CREATE_REQ |
|
173 * @param TUint8 aDevId New PEP |
|
174 * @param TUint8 aObjId New PEP |
|
175 */ |
|
176 void SendCreatePipeMessage(const TUint8 aDevId, const TUint8 aObjId); |
|
177 |
|
178 /** |
216 /** |
179 * Sends PNS_PIPE_REMOVE_REQ |
217 * Sends PNS_PIPE_REMOVE_REQ |
180 * @param TUint8 aPipeHandle Pipehandle |
218 * @param TUint8 aPipeHandle Pipehandle |
181 */ |
219 */ |
182 void SendRemovePipeReq( const TUint8 aPipeHandle ); |
220 void SendRemovePipeReq( const TUint8 aPipeHandle ); |
183 |
221 |
184 /** |
|
185 * Sends PNS_PIPE_ENABLE_REQ |
|
186 * @param TUint8 aPipeHandle Pipehandle |
|
187 */ |
|
188 void SendEnablePipeReq( const TUint8 aPipeHandle); |
|
189 |
222 |
190 /** |
223 /** |
191 * ChangePipeState |
224 * ChangePipeState |
192 * @param TPipeInfo::EPipeState aState |
225 * @param TPipeInfo::EPipeState aState |
193 */ |
226 */ |
194 void ChangePipeState( TPipeInfo::EPipeState aState ); |
227 void ChangePipeState( TPipeInfo::EPipeState aState ); |
195 |
228 |
196 #endif |
229 /** |
|
230 * HandlePepCtrlResp |
|
231 * @param TIsiReceiveC& aReceivedMessage Message data |
|
232 */ |
|
233 void HandlePepCtrlResp( const TIsiReceiveC& aReceivedMessage ); |
|
234 |
197 private: |
235 private: |
198 |
236 |
199 RIscApi& iIscApi; |
237 RIscApi& iIscApi; |
200 TUint iModemAtObjId; //Modem AT Controller Obj-id |
238 TUint iModemAtObjId; //Modem AT Controller Obj-id |
201 TUint iModemAtDevId; //Modem AT Controller device-id |
239 TUint iModemAtDevId; //Modem AT Controller device-id |
202 TUint iDataportDevId; //Dataport device-id |
240 TUint iDpDevId; //Dataport device-id |
203 TUint iDataportObjId; //Dataport obj-id |
241 TUint iDpObjId; //Dataport obj-id |
204 TPipeInfo iPipe; //Pipehandle, pipe status and pipe id's |
242 TPipeInfo iPipe; //Pipehandle, pipe status and pipe id's |
205 CModemAtHandler& iAtHandler; //forwards AT-commands to the AT MODEM |
243 CModemAtHandler& iAtHandler; //forwards AT-commands to the AT MODEM |
206 CActiveSchedulerWait* iSchedulerWait; |
244 CActiveSchedulerWait* iSchedulerWait; |
207 }; |
245 }; |
208 |
246 |
209 #endif // CMODEMATPIPECONTROLLER_H |
247 #endif // CMODEMATPIPECONTROLLER_H |