Read Me: This document describes the source code, its organization and the deployment steps. Source Code: Parts of this project are written in Java and others in C++. The main inference logic and packet capture for recording bytes is written in Java and Native WiFi API interaction is written in C++. These two are connected with a JNI bridge. Organization: class WLANInterace: This singleton class contains the fields with respect to the wireless interface which can be queried using the Native WiFi API or the packet capture class(BytesExchanged). The prominent fields within the scope of this project are the two arrays wlanSignalQuality and bytesExchanged. These are circular buffers and each slot is filled of every 10 seconds. class WLANInterfaceQ: This class is where the JNI bridge is formed to collect information with respect to the wireless interface. This is run as a separate thread from the DYSWIS class class BytesExchanged: This class leverages the jnetpcap packet capture library written in java, to store the number of bytes exchanged for this node. This is also run as a separate thread. class InferenceEngine: This class has the logic to identify the root cause of the fault. The algorithm can be found in the report. class DYSWIS: This is the wrapper class that initializes the threads and has a wrapper function to the runDiagnosis function of the Inference engine class. WLANInterfaceQImpl.cpp: This file consists of the native code implementation of the native function in the WLANInterfaceQ class. Deployment Steps: Compilation of Native code: To compile the native code open the .cpp and the .h file a project in Visual C++ as a windows dll project. You may need to include the proper header files in the include path of the current projects. Make sure that the right architecture is selected( 32 bit or 64 bit) and build the project. This will result in a .dll file. If running in Eclipse: Extract the project from the zip file under SourceCode/Java. Import the project into eclipse workspace. Make sure to include the jnetpcap.jar in the build path. Replace the text in System.Load() function in WLANInterfaceQ class with the full path of the dll. A separate wrapper must be written to exchange data between peers using the DHTs. For now each peer node has complete list of all the participating peers as a HashMap in the DYSWIS class. It has setter and getter functions that can be leveraged when integrating with DHTs. To fire the logic, create an instance of DYSWIS and call the runDiagnosis function to identify root cause of the fault.