Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(286)

Unified Diff: src/devices/uan/uan-address.h

Issue 87043: underwater acoustic device
Patch Set: Created 14 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/devices/uan/uan-address.h
===================================================================
new file mode 100644
--- /dev/null
+++ b/src/devices/uan/uan-address.h
@@ -0,0 +1,102 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009 University of Washington
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Leonard Tracy <lentracy@u.washington.edu>
+ *
+ *
+ */
+
+
+#ifndef UANADDRESS_H_
+#define UANADDRESS_H_
+
+#include "ns3/address.h"
+#include <iostream>
+
+namespace ns3
+{
+
+/**
+ * \class UanAddress
+ *
+ * A class used for addressing UAN MAC's. This implementation uses a simple 8 bit
+ * flat addressing scheme. It is unlikely that perceived underwater networks will
+ * soon exceed 200 nodes (or the overlapping of two underwater networks - the ocean is big),
+ * so this should provide adequate addressing for most applications.
+ */
+class UanAddress
+{
+public:
+ UanAddress ();
+
+ UanAddress (uint8_t addr);
+ virtual ~UanAddress ();
+
+ /**
+ * \param address Address to convert to UAN address
+ * \returns UanAddress from Address
+ */
+ static UanAddress ConvertFrom (const Address &address);
+ /**
+ * \param address Address to test
+ * \returns True if address given is consistant with UanAddress
+ */
+ static bool IsMatchingType (const Address &address);
+ operator Address () const;
+
+ void CopyFrom (const uint8_t *pBuffer);
+ void CopyTo (uint8_t *pBuffer);
+
+ /**
+ * \returns 8 bit integer version of address
+ */
+ uint8_t GetAsInt (void) const;
+
+ /**
+ * \returns Broadcast address: 255
+ */
+ static UanAddress GetBroadcast (void);
+
+ /**
+ * \brief Allocates UanAddress from 0-254 (will wrap back to 0 if more than 255 are allocated)
+ */
+ static UanAddress Allocate ();
+
+
+private:
+ uint8_t m_address;
+
+ static uint8_t GetType (void);
+ Address ConvertTo (void) const;
+
+ friend bool operator == (const UanAddress &a, const UanAddress &b);
+ friend bool operator != (const UanAddress &a, const UanAddress &b);
+ friend std::ostream& operator<< (std::ostream& os, const UanAddress & address);
+ friend std::istream& operator>> (std::istream& is, UanAddress & address);
+
+};
+
+
+
+bool operator == (const UanAddress &a, const UanAddress &b);
+bool operator != (const UanAddress &a, const UanAddress &b);
+std::ostream& operator<< (std::ostream& os, const UanAddress & address);
+std::istream& operator>> (std::istream& is, UanAddress & address);
+
+} //namespace ns3
+
+#endif /*UANADDRESS_H_*/

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b