equal
deleted
inserted
replaced
14 * Description: Implements receiver class for target |
14 * Description: Implements receiver class for target |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 /* |
18 /* |
19 * %version: 12 % |
19 * %version: 13 % |
20 */ |
20 */ |
21 |
21 |
22 #include <nifmbuf.h> |
22 #include <nifmbuf.h> |
23 #include "am_debug.h" |
23 #include "am_debug.h" |
24 #include "receiver_hw.h" |
24 #include "receiver_hw.h" |
29 // CReceiver::CReceiver() |
29 // CReceiver::CReceiver() |
30 // --------------------------------------------------------- |
30 // --------------------------------------------------------- |
31 // |
31 // |
32 CReceiver::CReceiver( CPcCardPktDrv* aParent ) : |
32 CReceiver::CReceiver( CPcCardPktDrv* aParent ) : |
33 CActive(EPriorityStandard), |
33 CActive(EPriorityStandard), |
34 iParent(aParent) |
34 iParent(aParent), |
|
35 iFrameToFree( NULL ) |
35 { |
36 { |
36 } |
37 } |
37 |
38 |
38 // --------------------------------------------------------- |
39 // --------------------------------------------------------- |
39 // CReceiver::ConstructL() |
40 // CReceiver::ConstructL() |
65 // |
66 // |
66 CReceiver::~CReceiver() |
67 CReceiver::~CReceiver() |
67 { |
68 { |
68 DEBUG("CReceiver::~CReceiver()"); |
69 DEBUG("CReceiver::~CReceiver()"); |
69 Cancel(); |
70 Cancel(); |
|
71 iFrameToFree = NULL; |
70 } |
72 } |
71 |
73 |
72 // --------------------------------------------------------- |
74 // --------------------------------------------------------- |
73 // CReceiver::DoCancel() |
75 // CReceiver::DoCancel() |
74 // --------------------------------------------------------- |
76 // --------------------------------------------------------- |
96 // |
98 // |
97 void CReceiver::RunL() |
99 void CReceiver::RunL() |
98 { |
100 { |
99 DEBUG("CReceiver::RunL()" ); |
101 DEBUG("CReceiver::RunL()" ); |
100 |
102 |
101 while( iParent->iFrameXferBlock->GetNextRxDataBuffer( iDataBuffer ) ) |
103 TUint rxCount( 0 ); |
|
104 const TUint KMaxRxCount( 4 ); |
|
105 |
|
106 while( ( rxCount < KMaxRxCount ) && |
|
107 ( iDataBuffer = iParent->iCard.GetRxFrame( iFrameToFree ) ) != NULL ) |
102 { |
108 { |
103 TUint8* buf = iDataBuffer->GetBuffer(); |
109 TUint8* buf = iDataBuffer->GetBuffer(); |
104 TUint32 len = iDataBuffer->GetLength(); |
110 TUint32 len = iDataBuffer->GetLength(); |
105 |
111 |
106 //Save the original buf value which points |
112 //Save the original buf value which points |
124 pFrame.Pack(); |
130 pFrame.Pack(); |
125 |
131 |
126 iParent->iParent->Process( pFrame, bufOrig, iDataBuffer->UserPriority() ); |
132 iParent->iParent->Process( pFrame, bufOrig, iDataBuffer->UserPriority() ); |
127 } |
133 } |
128 } |
134 } |
|
135 |
|
136 iFrameToFree = iDataBuffer; |
|
137 ++rxCount; |
|
138 DEBUG1("CReceiver::RunL() - %u packet(s) processed", rxCount ); |
129 } |
139 } |
130 |
140 |
131 if( iParent->CardOpen() ) |
141 if ( rxCount == KMaxRxCount ) |
132 { |
142 { |
133 QueueRead(); |
143 DEBUG("CReceiver::RunL() - yield"); |
|
144 |
|
145 SetActive(); |
|
146 TRequestStatus* status = &iStatus; |
|
147 User::RequestComplete( status, KErrNone ); |
|
148 } |
|
149 else |
|
150 { |
|
151 iFrameToFree = NULL; |
|
152 |
|
153 if( iParent->CardOpen() ) |
|
154 { |
|
155 QueueRead(); |
|
156 } |
134 } |
157 } |
135 } |
158 } |