Cleaning up code for review
authorAshwin Narayan
Sat, 16 Jul 2011 08:54:00 -0400
changeset 7328141f8d6ccb03
parent 7327 ccddb981db2a
child 7329 d4c321853aa0
Cleaning up code for review
src/wifi/model/adhoc-wifi-mac.cc
src/wifi/model/adhoc-wifi-mac.h
src/wifi/model/ap-wifi-mac.cc
src/wifi/model/ap-wifi-mac.h
src/wifi/model/mac-low.cc
src/wifi/model/mac-low.h
src/wifi/model/mac-rx-middle.cc
src/wifi/model/mac-rx-middle.h
src/wifi/model/monitor-mac-high.cc
src/wifi/model/monitor-mac-high.h
src/wifi/model/regular-wifi-mac.cc
src/wifi/model/regular-wifi-mac.h
src/wifi/model/sta-wifi-mac.cc
src/wifi/model/sta-wifi-mac.h
src/wifi/model/wifi-net-device.cc
src/wifi/model/wifi-net-device.h
src/wifi/model/wifi-phy.h
     1.1 --- a/src/wifi/model/adhoc-wifi-mac.cc	Sun Jul 10 08:55:21 2011 -0400
     1.2 +++ b/src/wifi/model/adhoc-wifi-mac.cc	Sat Jul 16 08:54:00 2011 -0400
     1.3 @@ -162,7 +162,7 @@
     1.4  }
     1.5  
     1.6  void
     1.7 -AdhocWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr)
     1.8 +AdhocWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr)
     1.9  {
    1.10    NS_LOG_FUNCTION (this << packet << hdr);
    1.11    NS_ASSERT (!hdr->IsCtl ());
     2.1 --- a/src/wifi/model/adhoc-wifi-mac.h	Sun Jul 10 08:55:21 2011 -0400
     2.2 +++ b/src/wifi/model/adhoc-wifi-mac.h	Sat Jul 16 08:54:00 2011 -0400
     2.3 @@ -62,7 +62,7 @@
     2.4    virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
     2.5  
     2.6  private:
     2.7 -  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr);
     2.8 +  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
     2.9  };
    2.10  
    2.11  } // namespace ns3
     3.1 --- a/src/wifi/model/ap-wifi-mac.cc	Sun Jul 10 08:55:21 2011 -0400
     3.2 +++ b/src/wifi/model/ap-wifi-mac.cc	Sat Jul 16 08:54:00 2011 -0400
     3.3 @@ -397,7 +397,7 @@
     3.4  }
     3.5  
     3.6  void
     3.7 -ApWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr)
     3.8 +ApWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr)
     3.9  {
    3.10    NS_LOG_FUNCTION (this << packet << hdr);
    3.11  
     4.1 --- a/src/wifi/model/ap-wifi-mac.h	Sun Jul 10 08:55:21 2011 -0400
     4.2 +++ b/src/wifi/model/ap-wifi-mac.h	Sat Jul 16 08:54:00 2011 -0400
     4.3 @@ -96,7 +96,7 @@
     4.4    void StartBeaconing (void);
     4.5  
     4.6  private:
     4.7 -  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr);
     4.8 +  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
     4.9    virtual void TxOk (const WifiMacHeader &hdr);
    4.10    virtual void TxFailed (const WifiMacHeader &hdr);
    4.11  
     5.1 --- a/src/wifi/model/mac-low.cc	Sun Jul 10 08:55:21 2011 -0400
     5.2 +++ b/src/wifi/model/mac-low.cc	Sat Jul 16 08:54:00 2011 -0400
     5.3 @@ -581,7 +581,7 @@
     5.4  }
     5.5  
     5.6  void
     5.7 -MacLow::SetRxCallback (Callback<void,Ptr<Packet>,const WifiMacHeader *,RadiotapHeader> callback)
     5.8 +MacLow::SetRxCallback (Callback<void,Ptr<Packet>,const WifiMacHeader *,const RadiotapHeader *> callback)
     5.9  {
    5.10    m_rxCallback = callback;
    5.11  }
    5.12 @@ -678,7 +678,7 @@
    5.13     */
    5.14    WifiMacHeader hdr;
    5.15    packet->RemoveHeader (hdr);
    5.16 -  m_currentRadiotapHdr = radiotaphdr;
    5.17 +  m_currentRadiotapHdr = &radiotaphdr;
    5.18  
    5.19    bool isPrevNavZero = IsNavZero ();
    5.20    NS_LOG_DEBUG ("duration/id=" << hdr.GetDuration ());
    5.21 @@ -929,7 +929,7 @@
    5.22  rxPacket:
    5.23    WifiMacTrailer fcs;
    5.24    packet->RemoveTrailer (fcs);
    5.25 -  m_rxCallback (packet, &hdr, radiotaphdr);
    5.26 +  m_rxCallback (packet, &hdr, &radiotaphdr);
    5.27    return;
    5.28  }
    5.29  
     6.1 --- a/src/wifi/model/mac-low.h	Sun Jul 10 08:55:21 2011 -0400
     6.2 +++ b/src/wifi/model/mac-low.h	Sat Jul 16 08:54:00 2011 -0400
     6.3 @@ -372,7 +372,7 @@
     6.4  class MacLow : public Object
     6.5  {
     6.6  public:
     6.7 -  typedef Callback<void, Ptr<Packet>, const WifiMacHeader*, RadiotapHeader> MacLowRxCallback;
     6.8 +  typedef Callback<void, Ptr<Packet>, const WifiMacHeader*, const RadiotapHeader*> MacLowRxCallback;
     6.9  
    6.10    MacLow ();
    6.11    virtual ~MacLow ();
    6.12 @@ -407,7 +407,7 @@
    6.13     * This callback typically forwards incoming packets to
    6.14     * an instance of ns3::MacRxMiddle.
    6.15     */
    6.16 -  void SetRxCallback (Callback<void,Ptr<Packet>,const WifiMacHeader *, RadiotapHeader> callback);
    6.17 +  void SetRxCallback (Callback<void,Ptr<Packet>,const WifiMacHeader *,const RadiotapHeader*> callback);
    6.18    /**
    6.19     * \param listener listen to NAV events for every incoming
    6.20     *        and outgoing packet.
    6.21 @@ -620,7 +620,7 @@
    6.22  
    6.23    Ptr<Packet> m_currentPacket;
    6.24    WifiMacHeader m_currentHdr;
    6.25 -  RadiotapHeader m_currentRadiotapHdr;
    6.26 +  RadiotapHeader *m_currentRadiotapHdr;
    6.27    MacLowTransmissionParameters m_txParams;
    6.28    MacLowTransmissionListener *m_listener;
    6.29    Mac48Address m_self;
     7.1 --- a/src/wifi/model/mac-rx-middle.cc	Sun Jul 10 08:55:21 2011 -0400
     7.2 +++ b/src/wifi/model/mac-rx-middle.cc	Sat Jul 16 08:54:00 2011 -0400
     7.3 @@ -243,7 +243,7 @@
     7.4  }
     7.5  
     7.6  void
     7.7 -MacRxMiddle::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr)
     7.8 +MacRxMiddle::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr)
     7.9  {
    7.10    NS_LOG_FUNCTION (packet << hdr);
    7.11    NS_ASSERT (hdr->IsData () || hdr->IsMgt ());
     8.1 --- a/src/wifi/model/mac-rx-middle.h	Sun Jul 10 08:55:21 2011 -0400
     8.2 +++ b/src/wifi/model/mac-rx-middle.h	Sat Jul 16 08:54:00 2011 -0400
     8.3 @@ -41,14 +41,14 @@
     8.4  class MacRxMiddle
     8.5  {
     8.6  public:
     8.7 -  typedef Callback<void, Ptr<Packet>, const WifiMacHeader*, RadiotapHeader> ForwardUpCallback;
     8.8 +  typedef Callback<void, Ptr<Packet>, const WifiMacHeader*, const RadiotapHeader *> ForwardUpCallback;
     8.9  
    8.10    MacRxMiddle ();
    8.11    ~MacRxMiddle ();
    8.12  
    8.13    void SetForwardCallback (ForwardUpCallback callback);
    8.14  
    8.15 -  void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr);
    8.16 +  void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
    8.17  private:
    8.18    friend class MacRxMiddleTest;
    8.19    OriginatorRxStatus* Lookup (const WifiMacHeader* hdr);
     9.1 --- a/src/wifi/model/monitor-mac-high.cc	Sun Jul 10 08:55:21 2011 -0400
     9.2 +++ b/src/wifi/model/monitor-mac-high.cc	Sat Jul 16 08:54:00 2011 -0400
     9.3 @@ -15,7 +15,7 @@
     9.4   * along with this program; if not, write to the Free Software
     9.5   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     9.6   *
     9.7 - * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
     9.8 + * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>, Ashwin Narayan <ashwin.narayan89@gmail.com>
     9.9   */
    9.10  #include "monitor-mac-high.h"
    9.11  
    9.12 @@ -138,14 +138,13 @@
    9.13  void
    9.14  MonitorMacHigh::SetQosSupported (bool enable)
    9.15  {
    9.16 -  NS_LOG_FUNCTION (this);
    9.17 -  m_qosSupported = enable;
    9.18 +  NS_FATAL_ERROR ("QoS Functionality not supported in MonitorMacHigh");
    9.19  }
    9.20  
    9.21  bool
    9.22  MonitorMacHigh::GetQosSupported () const
    9.23  {
    9.24 -  return m_qosSupported;
    9.25 +  return false;
    9.26  }
    9.27  
    9.28  void
    9.29 @@ -322,12 +321,6 @@
    9.30  MonitorMacHigh::Enqueue (Ptr<const Packet> packet,
    9.31                           Mac48Address to, Mac48Address from)
    9.32  {
    9.33 -  // We expect RegularWifiMac subclasses which do support forwarding (e.g.,
    9.34 -  // AP) to override this method. Therefore, we throw a fatal error if
    9.35 -  // someone tries to invoke this method on a class which has not done
    9.36 -  // this.
    9.37 -  NS_FATAL_ERROR ("This MAC entity (" << this << ", " << GetAddress ()
    9.38 -                                      << ") does not support Enqueue() with from address");
    9.39  }
    9.40  
    9.41  void
    9.42 @@ -350,13 +343,13 @@
    9.43  }
    9.44  
    9.45  void
    9.46 -MonitorMacHigh::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr)
    9.47 +MonitorMacHigh::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr)
    9.48  {
    9.49  
    9.50    Mac48Address to = hdr->GetAddr1 ();
    9.51    Mac48Address from = hdr->GetAddr2 ();
    9.52    NS_LOG_DEBUG ("Received packet to: " << to << " from: " << from << " at:" << m_low->GetAddress ());
    9.53 -  packet->AddHeader (radiotaphdr);
    9.54 +  packet->AddHeader (*radiotaphdr);
    9.55    ForwardUp (packet, from, to);
    9.56  }
    9.57  
    9.58 @@ -364,69 +357,12 @@
    9.59  MonitorMacHigh::DeaggregateAmsduAndForward (Ptr<Packet> aggregatedPacket,
    9.60                                              const WifiMacHeader *hdr)
    9.61  {
    9.62 -  MsduAggregator::DeaggregatedMsdus packets =
    9.63 -    MsduAggregator::Deaggregate (aggregatedPacket);
    9.64 -
    9.65 -  for (MsduAggregator::DeaggregatedMsdusCI i = packets.begin ();
    9.66 -       i != packets.end (); ++i)
    9.67 -    {
    9.68 -      ForwardUp ((*i).first, (*i).second.GetSourceAddr (),
    9.69 -                 (*i).second.GetDestinationAddr ());
    9.70 -    }
    9.71  }
    9.72  
    9.73  void
    9.74  MonitorMacHigh::SendAddBaResponse (const MgtAddBaRequestHeader *reqHdr,
    9.75                                     Mac48Address originator)
    9.76  {
    9.77 -  NS_LOG_FUNCTION (this);
    9.78 -  WifiMacHeader hdr;
    9.79 -  hdr.SetAction ();
    9.80 -  hdr.SetAddr1 (originator);
    9.81 -  hdr.SetAddr2 (GetAddress ());
    9.82 -  hdr.SetAddr3 (GetAddress ());
    9.83 -  hdr.SetDsNotFrom ();
    9.84 -  hdr.SetDsNotTo ();
    9.85 -
    9.86 -  MgtAddBaResponseHeader respHdr;
    9.87 -  StatusCode code;
    9.88 -  code.SetSuccess ();
    9.89 -  respHdr.SetStatusCode (code);
    9.90 -  //Here a control about queues type?
    9.91 -  respHdr.SetAmsduSupport (reqHdr->IsAmsduSupported ());
    9.92 -
    9.93 -  if (reqHdr->IsImmediateBlockAck ())
    9.94 -    {
    9.95 -      respHdr.SetImmediateBlockAck ();
    9.96 -    }
    9.97 -  else
    9.98 -    {
    9.99 -      respHdr.SetDelayedBlockAck ();
   9.100 -    }
   9.101 -  respHdr.SetTid (reqHdr->GetTid ());
   9.102 -  // For now there's not no control about limit of reception. We
   9.103 -  // assume that receiver has no limit on reception. However we assume
   9.104 -  // that a receiver sets a bufferSize in order to satisfy next
   9.105 -  // equation: (bufferSize + 1) % 16 = 0 So if a recipient is able to
   9.106 -  // buffer a packet, it should be also able to buffer all possible
   9.107 -  // packet's fragments. See section 7.3.1.14 in IEEE802.11e for more
   9.108 -  // details.
   9.109 -  respHdr.SetBufferSize (1023);
   9.110 -  respHdr.SetTimeout (reqHdr->GetTimeout ());
   9.111 -
   9.112 -  WifiActionHeader actionHdr;
   9.113 -  WifiActionHeader::ActionValue action;
   9.114 -  action.blockAck = WifiActionHeader::BLOCK_ACK_ADDBA_RESPONSE;
   9.115 -  actionHdr.SetAction (WifiActionHeader::BLOCK_ACK, action);
   9.116 -
   9.117 -  Ptr<Packet> packet = Create<Packet> ();
   9.118 -  packet->AddHeader (respHdr);
   9.119 -  packet->AddHeader (actionHdr);
   9.120 -
   9.121 -  // We need to notify our MacLow object as it will have to buffer all
   9.122 -  // correctly received packets for this Block Ack session
   9.123 -  m_low->CreateBlockAckAgreement (&respHdr, originator,
   9.124 -                                  reqHdr->GetStartingSequence ());
   9.125  }
   9.126  
   9.127  void
    10.1 --- a/src/wifi/model/monitor-mac-high.h	Sun Jul 10 08:55:21 2011 -0400
    10.2 +++ b/src/wifi/model/monitor-mac-high.h	Sat Jul 16 08:54:00 2011 -0400
    10.3 @@ -15,7 +15,7 @@
    10.4   * along with this program; if not, write to the Free Software
    10.5   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    10.6   *
    10.7 - * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
    10.8 + * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>, Ashwin Narayan <ashwin.narayan89@gmail.com>
    10.9   */
   10.10  #ifndef MONITOR_MAC_HIGH_H
   10.11  #define MONITOR_MAC_HIGH_H
   10.12 @@ -39,6 +39,14 @@
   10.13  class MacTxMiddle;
   10.14  class DcfManager;
   10.15  
   10.16 +/**
   10.17 + * \brief base class for Monitor Wifi Mac objects.
   10.18 + *
   10.19 + * This class is essentially a copy of the non-QoS
   10.20 + * functionality of RegularWifiMac
   10.21 + *
   10.22 + */
   10.23 +
   10.24  class MonitorMacHigh : public WifiMac
   10.25  {
   10.26  public:
   10.27 @@ -102,7 +110,7 @@
   10.28  
   10.29    virtual void FinishConfigureStandard (enum WifiPhyStandard standard);
   10.30  
   10.31 -  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr);
   10.32 +  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
   10.33    virtual void TxOk (const WifiMacHeader &hdr);
   10.34    virtual void TxFailed (const WifiMacHeader &hdr);
   10.35  
    11.1 --- a/src/wifi/model/regular-wifi-mac.cc	Sun Jul 10 08:55:21 2011 -0400
    11.2 +++ b/src/wifi/model/regular-wifi-mac.cc	Sat Jul 16 08:54:00 2011 -0400
    11.3 @@ -153,7 +153,7 @@
    11.4    edca->SetTxFailedCallback (MakeCallback (&RegularWifiMac::TxFailed, this));
    11.5    edca->SetAccessCategory (ac);
    11.6    edca->CompleteConfig ();
    11.7 -  m_edca.insert (std::make_pair(ac, edca));
    11.8 +  m_edca.insert (std::make_pair (ac, edca));
    11.9  }
   11.10  
   11.11  void
   11.12 @@ -422,14 +422,25 @@
   11.13  }
   11.14  
   11.15  void
   11.16 -RegularWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr)
   11.17 +RegularWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr)
   11.18  {
   11.19    NS_LOG_FUNCTION (this << packet << hdr);
   11.20  
   11.21    Mac48Address to = hdr->GetAddr1 ();
   11.22    Mac48Address from = hdr->GetAddr2 ();
   11.23  
   11.24 -  if (hdr->IsMgt () && hdr->IsAction () && to == GetAddress ())
   11.25 +  // We don't know how to deal with any frame that is not addressed to
   11.26 +  // us (and odds are there is nothing sensible we could do anyway),	
   11.27 +  // so we ignore such frames.	
   11.28 +  //	
   11.29 +  // The derived class may also do some such filtering, but it doesn't	
   11.30 +  // hurt to have it here too as a backstop.
   11.31 +  if (to != GetAddress ())
   11.32 +    {
   11.33 +      return;
   11.34 +    }
   11.35 +
   11.36 +  if (hdr->IsMgt () && hdr->IsAction ())
   11.37      {
   11.38        // There is currently only any reason for Management Action
   11.39        // frames to be flying about if we are a QoS STA.
    12.1 --- a/src/wifi/model/regular-wifi-mac.h	Sun Jul 10 08:55:21 2011 -0400
    12.2 +++ b/src/wifi/model/regular-wifi-mac.h	Sat Jul 16 08:54:00 2011 -0400
    12.3 @@ -277,7 +277,7 @@
    12.4     * \param packet the packet that has been received.
    12.5     * \param hdr a pointer to the MAC header of the received frame.
    12.6     */
    12.7 -  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr);
    12.8 +  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
    12.9    virtual void TxOk (const WifiMacHeader &hdr);
   12.10    virtual void TxFailed (const WifiMacHeader &hdr);
   12.11  
    13.1 --- a/src/wifi/model/sta-wifi-mac.cc	Sun Jul 10 08:55:21 2011 -0400
    13.2 +++ b/src/wifi/model/sta-wifi-mac.cc	Sat Jul 16 08:54:00 2011 -0400
    13.3 @@ -371,7 +371,7 @@
    13.4  }
    13.5  
    13.6  void
    13.7 -StaWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr)
    13.8 +StaWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr)
    13.9  {
   13.10    NS_LOG_FUNCTION (this << packet << hdr);
   13.11    NS_ASSERT (!hdr->IsCtl ());
    14.1 --- a/src/wifi/model/sta-wifi-mac.h	Sun Jul 10 08:55:21 2011 -0400
    14.2 +++ b/src/wifi/model/sta-wifi-mac.h	Sat Jul 16 08:54:00 2011 -0400
    14.3 @@ -95,7 +95,7 @@
    14.4  
    14.5    void SetActiveProbing (bool enable);
    14.6    bool GetActiveProbing (void) const;
    14.7 -  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, RadiotapHeader radiotaphdr);
    14.8 +  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
    14.9    void SendProbeRequest (void);
   14.10    void SendAssociationRequest (void);
   14.11    void TryToEnsureAssociated (void);
    15.1 --- a/src/wifi/model/wifi-net-device.cc	Sun Jul 10 08:55:21 2011 -0400
    15.2 +++ b/src/wifi/model/wifi-net-device.cc	Sat Jul 16 08:54:00 2011 -0400
    15.3 @@ -367,7 +367,7 @@
    15.4  void
    15.5  WifiNetDevice::SetMonitorMode ()
    15.6  {
    15.7 -  m_monitor = true;
    15.8 +  m_monitor = true; // Must be set only if WifiNetDevice has a MonitorMacHigh underneath
    15.9  }
   15.10  
   15.11  bool
    16.1 --- a/src/wifi/model/wifi-net-device.h	Sun Jul 10 08:55:21 2011 -0400
    16.2 +++ b/src/wifi/model/wifi-net-device.h	Sat Jul 16 08:54:00 2011 -0400
    16.3 @@ -81,7 +81,8 @@
    16.4     */
    16.5    Ptr<WifiRemoteStationManager> GetRemoteStationManager (void) const;
    16.6    /**
    16.7 -   * \param monitor sets mode as monitor mode
    16.8 +   * Sets device in Monitor Mode. Must be done only if WifiNetDevice
    16.9 +   * has a MonitorMacHigh underneath
   16.10     */
   16.11    void SetMonitorMode (void);  
   16.12  
    17.1 --- a/src/wifi/model/wifi-phy.h	Sun Jul 10 08:55:21 2011 -0400
    17.2 +++ b/src/wifi/model/wifi-phy.h	Sat Jul 16 08:54:00 2011 -0400
    17.3 @@ -150,6 +150,7 @@
    17.4     * arg2: snr of packet
    17.5     * arg3: mode of packet
    17.6     * arg4: type of preamble used for packet.
    17.7 +   * arg5: RadiotapHeader of packet
    17.8     */
    17.9    typedef Callback<void,Ptr<Packet>, double, WifiMode, enum WifiPreamble, RadiotapHeader> RxOkCallback;
   17.10    /**