michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "nsWifiMonitor.h" michael@0: #include "nsIWifiAccessPoint.h" michael@0: michael@0: #include "nsString.h" michael@0: #include "nsCOMArray.h" michael@0: #include "mozilla/ArrayUtils.h" // ArrayLength michael@0: #include "mozilla/Attributes.h" michael@0: michael@0: #ifndef __nsWifiAccessPoint__ michael@0: #define __nsWifiAccessPoint__ michael@0: michael@0: class nsWifiAccessPoint MOZ_FINAL : public nsIWifiAccessPoint michael@0: { michael@0: public: michael@0: NS_DECL_THREADSAFE_ISUPPORTS michael@0: NS_DECL_NSIWIFIACCESSPOINT michael@0: michael@0: nsWifiAccessPoint(); michael@0: ~nsWifiAccessPoint(); michael@0: michael@0: char mMac[18]; michael@0: int mSignal; michael@0: char mSsid[33]; michael@0: int mSsidLen; michael@0: michael@0: void setSignal(int signal) michael@0: { michael@0: mSignal = signal; michael@0: } michael@0: michael@0: void setMacRaw(const char* aString) michael@0: { michael@0: memcpy(mMac, aString, mozilla::ArrayLength(mMac)); michael@0: } michael@0: michael@0: void setMac(const unsigned char mac_as_int[6]) michael@0: { michael@0: // mac_as_int is big-endian. Write in byte chunks. michael@0: // Format is XX-XX-XX-XX-XX-XX. michael@0: michael@0: const unsigned char holder[6] = {0}; michael@0: if (!mac_as_int) { michael@0: mac_as_int = holder; michael@0: } michael@0: michael@0: static const char *kMacFormatString = ("%02x-%02x-%02x-%02x-%02x-%02x"); michael@0: michael@0: sprintf(mMac, kMacFormatString, michael@0: mac_as_int[0], mac_as_int[1], mac_as_int[2], michael@0: mac_as_int[3], mac_as_int[4], mac_as_int[5]); michael@0: michael@0: mMac[17] = 0; michael@0: } michael@0: michael@0: void setSSIDRaw(const char* aSSID, unsigned long len) { michael@0: memcpy(mSsid, aSSID, mozilla::ArrayLength(mSsid)); michael@0: mSsidLen = PR_MIN(len, mozilla::ArrayLength(mSsid)); michael@0: } michael@0: michael@0: void setSSID(const char* aSSID, unsigned long len) { michael@0: if (aSSID && (len < sizeof(mSsid))) { michael@0: strncpy(mSsid, aSSID, len); michael@0: mSsid[len] = 0; michael@0: mSsidLen = len; michael@0: } michael@0: else michael@0: { michael@0: mSsid[0] = 0; michael@0: mSsidLen = 0; michael@0: } michael@0: } michael@0: }; michael@0: michael@0: michael@0: michael@0: // Helper functions michael@0: michael@0: bool AccessPointsEqual(nsCOMArray& a, nsCOMArray& b); michael@0: void ReplaceArray(nsCOMArray& a, nsCOMArray& b); michael@0: michael@0: michael@0: #endif