44 // on the timers and MPS] |
44 // on the timers and MPS] |
45 virtual TBool BuildPositiveResponse(TRetransmissionAndFlowControlOption& aPreferred, |
45 virtual TBool BuildPositiveResponse(TRetransmissionAndFlowControlOption& aPreferred, |
46 const TRetransmissionAndFlowControlOption& aPeer) const; |
46 const TRetransmissionAndFlowControlOption& aPeer) const; |
47 virtual void BuildNegativeResponse(TRetransmissionAndFlowControlOption& aPreferred, |
47 virtual void BuildNegativeResponse(TRetransmissionAndFlowControlOption& aPreferred, |
48 const TRetransmissionAndFlowControlOption& aPeer) const; |
48 const TRetransmissionAndFlowControlOption& aPeer) const; |
|
49 |
|
50 virtual void BuildRequestBasedOnUnacceptableParamsResponse( |
|
51 TRetransmissionAndFlowControlOption& aPreferred, |
|
52 const TRetransmissionAndFlowControlOption& aPeer, |
|
53 const TL2CapFecNegotiator& aFecNegotiator) const; |
|
54 |
49 // In general configuration procedure (spec chapter 7 General Procedures) if the remote accepts |
55 // In general configuration procedure (spec chapter 7 General Procedures) if the remote accepts |
50 // an option from our ConfigReq, it doesn't have to include it in the response. So before |
56 // an option from our ConfigReq, it doesn't have to include it in the response. So before |
51 // processing the options from a ConfigRsp we've received, we go through the preferred values |
57 // processing the options from a ConfigRsp we've received, we go through the preferred values |
52 // we've sent in ConfigReq and pretend that the remote has accepted them without a hitch. Then |
58 // we've sent in ConfigReq and pretend that the remote has accepted them without a hitch. Then |
53 // options included in the received ConfigRsp are processed. This works well with plain-vanilla |
59 // options included in the received ConfigRsp are processed. This works well with plain-vanilla |
102 { |
108 { |
103 public: |
109 public: |
104 virtual TBool IsOptionValid(const TRetransmissionAndFlowControlOption& aFecOption) const; |
110 virtual TBool IsOptionValid(const TRetransmissionAndFlowControlOption& aFecOption) const; |
105 virtual TBool IsPeerResponseAcceptable(const TRetransmissionAndFlowControlOption& aPreferred, |
111 virtual TBool IsPeerResponseAcceptable(const TRetransmissionAndFlowControlOption& aPreferred, |
106 const TRetransmissionAndFlowControlOption& aPeer) const; |
112 const TRetransmissionAndFlowControlOption& aPeer) const; |
|
113 virtual void BuildRequestBasedOnUnacceptableParamsResponse( |
|
114 TRetransmissionAndFlowControlOption& aPreferred, |
|
115 const TRetransmissionAndFlowControlOption& aPeer, |
|
116 const TL2CapFecNegotiator& aFecNegotiator) const; |
|
117 |
107 virtual void SetMaxTransmit(TRetransmissionAndFlowControlOption& aFecOption, TUint8 aMaxTransmit) const; |
118 virtual void SetMaxTransmit(TRetransmissionAndFlowControlOption& aFecOption, TUint8 aMaxTransmit) const; |
108 }; |
119 }; |
109 |
120 |
110 NONSHARABLE_CLASS(TBasicFecHandler) : public TModeSpecificFecOptionHandlerBase |
121 NONSHARABLE_CLASS(TBasicFecHandler) : public TModeSpecificFecOptionHandlerBase |
111 { |
122 { |
130 const TRetransmissionAndFlowControlOption& aPeer) const; |
141 const TRetransmissionAndFlowControlOption& aPeer) const; |
131 inline TBool BuildPositiveResponse(TRetransmissionAndFlowControlOption& aPreferred, |
142 inline TBool BuildPositiveResponse(TRetransmissionAndFlowControlOption& aPreferred, |
132 const TRetransmissionAndFlowControlOption& aPeer) const; |
143 const TRetransmissionAndFlowControlOption& aPeer) const; |
133 inline void BuildNegativeResponse(TRetransmissionAndFlowControlOption& aPreferred, |
144 inline void BuildNegativeResponse(TRetransmissionAndFlowControlOption& aPreferred, |
134 const TRetransmissionAndFlowControlOption& aPeer) const; |
145 const TRetransmissionAndFlowControlOption& aPeer) const; |
|
146 inline void BuildRequestBasedOnUnacceptableParamsResponse(TRetransmissionAndFlowControlOption& aPreferred, |
|
147 const TRetransmissionAndFlowControlOption& aPeer, |
|
148 const TL2CapFecNegotiator& aFecNegotiator) const; |
135 inline void PrepareImplicitPeerResponse(TRetransmissionAndFlowControlOption& aImplicitResponse, |
149 inline void PrepareImplicitPeerResponse(TRetransmissionAndFlowControlOption& aImplicitResponse, |
136 const TRetransmissionAndFlowControlOption& aPreferred) const; |
150 const TRetransmissionAndFlowControlOption& aPreferred) const; |
137 inline void SetMaxTransmit(TRetransmissionAndFlowControlOption& aFecOption, TUint8 aMaxTransmit) const; |
151 inline void SetMaxTransmit(TRetransmissionAndFlowControlOption& aFecOption, TUint8 aMaxTransmit) const; |
138 inline void ZeroUnspecifiedRequestFields(TRetransmissionAndFlowControlOption& aFecOption) const; |
152 inline void ZeroUnspecifiedRequestFields(TRetransmissionAndFlowControlOption& aFecOption) const; |
139 inline void ZeroUnspecifiedResponseFields(TRetransmissionAndFlowControlOption& aFecOption) const; |
153 inline void ZeroUnspecifiedResponseFields(TRetransmissionAndFlowControlOption& aFecOption) const; |