forked from mirrors/gecko-dev
		
	 265e672179
			
		
	
	
		265e672179
		
	
	
	
	
		
			
			# ignore-this-changeset --HG-- extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #include "nsWifiAccessPoint.h"
 | |
| #include "nsString.h"
 | |
| #include "nsMemory.h"
 | |
| #include "mozilla/Logging.h"
 | |
| 
 | |
| extern mozilla::LazyLogModule gWifiMonitorLog;
 | |
| #define LOG(args) MOZ_LOG(gWifiMonitorLog, mozilla::LogLevel::Debug, args)
 | |
| 
 | |
| NS_IMPL_ISUPPORTS(nsWifiAccessPoint, nsIWifiAccessPoint)
 | |
| 
 | |
| nsWifiAccessPoint::nsWifiAccessPoint() {
 | |
|   // make sure these are null terminated (because we are paranoid)
 | |
|   mMac[0] = '\0';
 | |
|   mSsid[0] = '\0';
 | |
|   mSsidLen = 0;
 | |
|   mSignal = -1000;
 | |
| }
 | |
| 
 | |
| NS_IMETHODIMP nsWifiAccessPoint::GetMac(nsACString& aMac) {
 | |
|   aMac.Assign(mMac);
 | |
|   return NS_OK;
 | |
| }
 | |
| 
 | |
| NS_IMETHODIMP nsWifiAccessPoint::GetSsid(nsAString& aSsid) {
 | |
|   // just assign and embedded nulls will truncate resulting
 | |
|   // in a displayable string.
 | |
|   aSsid.AssignASCII(mSsid);
 | |
|   return NS_OK;
 | |
| }
 | |
| 
 | |
| NS_IMETHODIMP nsWifiAccessPoint::GetRawSSID(nsACString& aRawSsid) {
 | |
|   aRawSsid.Assign(mSsid, mSsidLen);  // SSIDs are 32 chars long
 | |
|   return NS_OK;
 | |
| }
 | |
| 
 | |
| NS_IMETHODIMP nsWifiAccessPoint::GetSignal(int32_t* aSignal) {
 | |
|   NS_ENSURE_ARG(aSignal);
 | |
|   *aSignal = mSignal;
 | |
|   return NS_OK;
 | |
| }
 | |
| 
 | |
| // Helper functions:
 | |
| 
 | |
| bool AccessPointsEqual(nsCOMArray<nsWifiAccessPoint>& a,
 | |
|                        nsCOMArray<nsWifiAccessPoint>& b) {
 | |
|   if (a.Count() != b.Count()) {
 | |
|     LOG(("AccessPoint lists have different lengths\n"));
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
|   for (int32_t i = 0; i < a.Count(); i++) {
 | |
|     LOG(("++ Looking for %s\n", a[i]->mSsid));
 | |
|     bool found = false;
 | |
|     for (int32_t j = 0; j < b.Count(); j++) {
 | |
|       LOG(("   %s->%s | %s->%s\n", a[i]->mSsid, b[j]->mSsid, a[i]->mMac,
 | |
|            b[j]->mMac));
 | |
|       if (!strcmp(a[i]->mSsid, b[j]->mSsid) &&
 | |
|           !strcmp(a[i]->mMac, b[j]->mMac) && a[i]->mSignal == b[j]->mSignal) {
 | |
|         found = true;
 | |
|       }
 | |
|     }
 | |
|     if (!found) return false;
 | |
|   }
 | |
|   LOG(("   match!\n"));
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| void ReplaceArray(nsCOMArray<nsWifiAccessPoint>& a,
 | |
|                   nsCOMArray<nsWifiAccessPoint>& b) {
 | |
|   a.Clear();
 | |
| 
 | |
|   // better way to copy?
 | |
|   for (int32_t i = 0; i < b.Count(); i++) {
 | |
|     a.AppendObject(b[i]);
 | |
|   }
 | |
| 
 | |
|   b.Clear();
 | |
| }
 |