├── RESTApi
├── restApp
│ ├── __init__.py
│ ├── tests
│ │ ├── __init__.py
│ │ ├── runner.py
│ │ ├── configuration.py
│ │ ├── test_image_retreive.py
│ │ ├── setup_django.py
│ │ ├── test_watch_records.py
│ │ ├── test_receiver_records.py
│ │ └── test_map_records.py
│ ├── dummyData
│ │ ├── __init__.py
│ │ ├── setup_django.py
│ │ └── curl.sh
│ ├── models.py
│ ├── scripts
│ │ ├── icon_2.png
│ │ ├── sampleMap1.jpg
│ │ ├── sampleMap2.jpg
│ │ ├── mongo_utility.sh
│ │ ├── r.sh
│ │ ├── insert_receivers.py
│ │ ├── create_user.py
│ │ ├── setup_django.py
│ │ ├── imageUpload.py
│ │ └── benchmark.py
│ ├── middleware.py
│ ├── rssi_auth.py
│ ├── index.wsgi
│ ├── urls.py
│ ├── serializer.py
│ ├── wsgi.py
│ ├── views.py
│ ├── documents.py
│ └── resources.py
├── .coverage
├── manage.py
└── requirements.txt
├── comReader
├── main
│ ├── tests
│ │ ├── .gitignore
│ │ ├── LoggerTest.java
│ │ ├── GUITest.java
│ │ ├── RESTTestReceiverPOST.java
│ │ ├── PerformanceTestFloatVsDouble.java
│ │ ├── RESTTestReceiverPUT.java
│ │ ├── _Test.java
│ │ ├── RESTTest.java
│ │ ├── RESTTestReceiversForMapGET.java
│ │ ├── COMReaderTest.java
│ │ └── ReadingFromFileTest.java
│ ├── resources
│ │ ├── RXTXcomm.jar
│ │ ├── gson-2.2.4.jar
│ │ ├── log4j-1.2.17.jar
│ │ ├── org.restlet.jar
│ │ ├── jettison-1.3.3.jar
│ │ ├── javax.ws.rs-api-2.0.jar
│ │ ├── mongo-java-driver-2.9.3.jar
│ │ └── .gitignore
│ ├── data
│ │ ├── DataReader.java
│ │ ├── DataWriter.java
│ │ ├── DataProcessor.java
│ │ ├── DatabaseDataWriter.java
│ │ ├── COMPortDataReader.java
│ │ ├── FileDataReader.java
│ │ ├── FileDataReaderRunnable.java
│ │ ├── DataProcessorRunnable.java
│ │ └── WatchPositionData.java
│ ├── main
│ │ └── Start.java
│ ├── gui
│ │ ├── enumeration
│ │ │ ├── AddMapDialogMode.java
│ │ │ ├── StartStopButtonState.java
│ │ │ ├── CoordinateZeroMarkerViewType.java
│ │ │ ├── PositionLocalizationAlgorithmType.java
│ │ │ └── ReceiverButtonState.java
│ │ ├── observer
│ │ │ ├── Observer.java
│ │ │ └── Observable.java
│ │ ├── ImageFilter.java
│ │ ├── StatusPanel.java
│ │ ├── ThumbnailImagePanel.java
│ │ ├── MapsPanel.java
│ │ └── ReceiversPanel.java
│ ├── rest
│ │ └── MongoDatabaseReceiverWrapper.java
│ ├── algorithm
│ │ ├── filter
│ │ │ └── Filter.java
│ │ ├── helper
│ │ │ ├── Line.java
│ │ │ ├── PointRoomMap.java
│ │ │ ├── PointProbabilityMap.java
│ │ │ └── Point.java
│ │ ├── PositionLocalizationAlgorithm.java
│ │ ├── RandomPositionAlgorithm.java
│ │ ├── weightFunction
│ │ │ └── WeightFunction.java
│ │ └── ProximityAlgorithm.java
│ ├── dao
│ │ ├── MongoDatabaseMapDAO.java
│ │ └── MapDAO.java
│ └── components
│ │ └── Receiver.java
├── configuration
│ ├── log.log
│ └── images
│ │ ├── map1.png
│ │ ├── map2.png
│ │ ├── map3.png
│ │ ├── map5.jpg
│ │ ├── map5.png
│ │ ├── map6.png
│ │ ├── map7.png
│ │ ├── map8.png
│ │ ├── map9.png
│ │ ├── plus.png
│ │ ├── stop.png
│ │ ├── map10.png
│ │ ├── map11.png
│ │ ├── map12.png
│ │ ├── minus.png
│ │ ├── start.png
│ │ ├── clockwise.png
│ │ ├── sampleMap.png
│ │ ├── room_4m_6m.png
│ │ ├── receiverView.png
│ │ ├── receiverView0.png
│ │ ├── receiverView45.png
│ │ ├── receiverView90.png
│ │ ├── counterClockwise.png
│ │ ├── lowerLeftMarker.png
│ │ ├── receiverView135.png
│ │ ├── receiverView180.png
│ │ ├── receiverView225.png
│ │ ├── receiverView270.png
│ │ ├── receiverView315.png
│ │ ├── upperRightMarker.png
│ │ ├── zeroCoordinateView.png
│ │ └── test_room_fifth_floor.png
└── JUnitTests
│ └── algorithm
│ ├── Env.odt
│ ├── ProbabilityBased
│ ├── testFourReceiver
│ │ ├── grayscaleImage_pic1.png
│ │ ├── grayscaleImage_pic10.png
│ │ ├── grayscaleImage_pic2.png
│ │ ├── grayscaleImage_pic3.png
│ │ ├── grayscaleImage_pic4.png
│ │ ├── grayscaleImage_pic5.png
│ │ ├── grayscaleImage_pic6.png
│ │ ├── grayscaleImage_pic7.png
│ │ ├── grayscaleImage_pic8.png
│ │ └── grayscaleImage_pic9.png
│ ├── testOneReceiver
│ │ ├── grayscaleImage_pic1.png
│ │ ├── grayscaleImage_pic10.png
│ │ ├── grayscaleImage_pic11.png
│ │ ├── grayscaleImage_pic12.png
│ │ ├── grayscaleImage_pic13.png
│ │ ├── grayscaleImage_pic14.png
│ │ ├── grayscaleImage_pic15.png
│ │ ├── grayscaleImage_pic16.png
│ │ ├── grayscaleImage_pic17.png
│ │ ├── grayscaleImage_pic18.png
│ │ ├── grayscaleImage_pic19.png
│ │ ├── grayscaleImage_pic2.png
│ │ ├── grayscaleImage_pic20.png
│ │ ├── grayscaleImage_pic21.png
│ │ ├── grayscaleImage_pic22.png
│ │ ├── grayscaleImage_pic23.png
│ │ ├── grayscaleImage_pic24.png
│ │ ├── grayscaleImage_pic25.png
│ │ ├── grayscaleImage_pic26.png
│ │ ├── grayscaleImage_pic3.png
│ │ ├── grayscaleImage_pic4.png
│ │ ├── grayscaleImage_pic5.png
│ │ ├── grayscaleImage_pic6.png
│ │ ├── grayscaleImage_pic7.png
│ │ ├── grayscaleImage_pic8.png
│ │ └── grayscaleImage_pic9.png
│ ├── testThreeReceiver
│ │ ├── grayscaleImage_pic1.png
│ │ ├── grayscaleImage_pic2.png
│ │ ├── grayscaleImage_pic3.png
│ │ ├── grayscaleImage_pic4.png
│ │ ├── grayscaleImage_pic5.png
│ │ ├── grayscaleImage_pic6.png
│ │ ├── grayscaleImage_pic7.png
│ │ ├── grayscaleImage_pic8.png
│ │ ├── grayscaleImage_pic9.png
│ │ ├── grayscaleImage_pic10.png
│ │ ├── grayscaleImage_pic11.png
│ │ ├── grayscaleImage_pic12.png
│ │ ├── grayscaleImage_pic13.png
│ │ ├── grayscaleImage_pic14.png
│ │ ├── grayscaleImage_pic15.png
│ │ ├── grayscaleImage_pic16.png
│ │ ├── grayscaleImage_pic17.png
│ │ ├── grayscaleImage_pic18.png
│ │ ├── grayscaleImage_pic19.png
│ │ ├── grayscaleImage_pic20.png
│ │ ├── grayscaleImage_pic21.png
│ │ ├── grayscaleImage_pic22.png
│ │ ├── grayscaleImage_pic23.png
│ │ ├── grayscaleImage_pic24.png
│ │ ├── grayscaleImage_pic25.png
│ │ ├── grayscaleImage_pic26.png
│ │ ├── grayscaleImage_pic27.png
│ │ └── grayscaleImage_pic28.png
│ ├── testTwoReceiver
│ │ ├── grayscaleImage_pic1.png
│ │ ├── grayscaleImage_pic10.png
│ │ ├── grayscaleImage_pic11.png
│ │ ├── grayscaleImage_pic12.png
│ │ ├── grayscaleImage_pic13.png
│ │ ├── grayscaleImage_pic14.png
│ │ ├── grayscaleImage_pic15.png
│ │ ├── grayscaleImage_pic16.png
│ │ ├── grayscaleImage_pic17.png
│ │ ├── grayscaleImage_pic18.png
│ │ ├── grayscaleImage_pic19.png
│ │ ├── grayscaleImage_pic2.png
│ │ ├── grayscaleImage_pic20.png
│ │ ├── grayscaleImage_pic21.png
│ │ ├── grayscaleImage_pic22.png
│ │ ├── grayscaleImage_pic23.png
│ │ ├── grayscaleImage_pic24.png
│ │ ├── grayscaleImage_pic3.png
│ │ ├── grayscaleImage_pic4.png
│ │ ├── grayscaleImage_pic5.png
│ │ ├── grayscaleImage_pic6.png
│ │ ├── grayscaleImage_pic7.png
│ │ ├── grayscaleImage_pic8.png
│ │ └── grayscaleImage_pic9.png
│ ├── testWeightFunction
│ │ ├── grayscaleImage_pic1.png
│ │ ├── grayscaleImage_pic10.png
│ │ ├── grayscaleImage_pic11.png
│ │ ├── grayscaleImage_pic12.png
│ │ ├── grayscaleImage_pic13.png
│ │ ├── grayscaleImage_pic14.png
│ │ ├── grayscaleImage_pic15.png
│ │ ├── grayscaleImage_pic16.png
│ │ ├── grayscaleImage_pic17.png
│ │ ├── grayscaleImage_pic18.png
│ │ ├── grayscaleImage_pic19.png
│ │ ├── grayscaleImage_pic2.png
│ │ ├── grayscaleImage_pic20.png
│ │ ├── grayscaleImage_pic21.png
│ │ ├── grayscaleImage_pic22.png
│ │ ├── grayscaleImage_pic23.png
│ │ ├── grayscaleImage_pic24.png
│ │ ├── grayscaleImage_pic25.png
│ │ ├── grayscaleImage_pic26.png
│ │ ├── grayscaleImage_pic27.png
│ │ ├── grayscaleImage_pic28.png
│ │ ├── grayscaleImage_pic29.png
│ │ ├── grayscaleImage_pic3.png
│ │ ├── grayscaleImage_pic30.png
│ │ ├── grayscaleImage_pic31.png
│ │ ├── grayscaleImage_pic32.png
│ │ ├── grayscaleImage_pic33.png
│ │ ├── grayscaleImage_pic34.png
│ │ ├── grayscaleImage_pic35.png
│ │ ├── grayscaleImage_pic36.png
│ │ ├── grayscaleImage_pic37.png
│ │ ├── grayscaleImage_pic38.png
│ │ ├── grayscaleImage_pic39.png
│ │ ├── grayscaleImage_pic4.png
│ │ ├── grayscaleImage_pic40.png
│ │ ├── grayscaleImage_pic41.png
│ │ ├── grayscaleImage_pic42.png
│ │ ├── grayscaleImage_pic43.png
│ │ ├── grayscaleImage_pic44.png
│ │ ├── grayscaleImage_pic45.png
│ │ ├── grayscaleImage_pic46.png
│ │ ├── grayscaleImage_pic47.png
│ │ ├── grayscaleImage_pic48.png
│ │ ├── grayscaleImage_pic49.png
│ │ ├── grayscaleImage_pic5.png
│ │ ├── grayscaleImage_pic50.png
│ │ ├── grayscaleImage_pic51.png
│ │ ├── grayscaleImage_pic52.png
│ │ ├── grayscaleImage_pic53.png
│ │ ├── grayscaleImage_pic54.png
│ │ ├── grayscaleImage_pic55.png
│ │ ├── grayscaleImage_pic56.png
│ │ ├── grayscaleImage_pic57.png
│ │ ├── grayscaleImage_pic58.png
│ │ ├── grayscaleImage_pic59.png
│ │ ├── grayscaleImage_pic6.png
│ │ ├── grayscaleImage_pic60.png
│ │ ├── grayscaleImage_pic7.png
│ │ ├── grayscaleImage_pic8.png
│ │ └── grayscaleImage_pic9.png
│ ├── testConvexHullTransformation
│ │ ├── grayscaleImage_pic1.png
│ │ ├── grayscaleImage_pic10.png
│ │ ├── grayscaleImage_pic11.png
│ │ ├── grayscaleImage_pic12.png
│ │ ├── grayscaleImage_pic13.png
│ │ ├── grayscaleImage_pic14.png
│ │ ├── grayscaleImage_pic15.png
│ │ ├── grayscaleImage_pic16.png
│ │ ├── grayscaleImage_pic17.png
│ │ ├── grayscaleImage_pic18.png
│ │ ├── grayscaleImage_pic19.png
│ │ ├── grayscaleImage_pic2.png
│ │ ├── grayscaleImage_pic20.png
│ │ ├── grayscaleImage_pic21.png
│ │ ├── grayscaleImage_pic22.png
│ │ ├── grayscaleImage_pic23.png
│ │ ├── grayscaleImage_pic24.png
│ │ ├── grayscaleImage_pic25.png
│ │ ├── grayscaleImage_pic26.png
│ │ ├── grayscaleImage_pic27.png
│ │ ├── grayscaleImage_pic28.png
│ │ ├── grayscaleImage_pic29.png
│ │ ├── grayscaleImage_pic3.png
│ │ ├── grayscaleImage_pic30.png
│ │ ├── grayscaleImage_pic31.png
│ │ ├── grayscaleImage_pic32.png
│ │ ├── grayscaleImage_pic33.png
│ │ ├── grayscaleImage_pic34.png
│ │ ├── grayscaleImage_pic35.png
│ │ ├── grayscaleImage_pic36.png
│ │ ├── grayscaleImage_pic37.png
│ │ ├── grayscaleImage_pic38.png
│ │ ├── grayscaleImage_pic39.png
│ │ ├── grayscaleImage_pic4.png
│ │ ├── grayscaleImage_pic40.png
│ │ ├── grayscaleImage_pic41.png
│ │ ├── grayscaleImage_pic42.png
│ │ ├── grayscaleImage_pic43.png
│ │ ├── grayscaleImage_pic44.png
│ │ ├── grayscaleImage_pic5.png
│ │ ├── grayscaleImage_pic6.png
│ │ ├── grayscaleImage_pic7.png
│ │ ├── grayscaleImage_pic8.png
│ │ └── grayscaleImage_pic9.png
│ └── testBehaviorOfMethodCalculation
│ │ ├── grayscaleImage_pic1.png
│ │ ├── grayscaleImage_pic2.png
│ │ ├── grayscaleImage_pic3.png
│ │ ├── grayscaleImage_pic4.png
│ │ └── grayscaleImage_pic5.png
│ └── kalmanfilter
│ └── testOutputGrayscaleImage
│ └── grayscaleImage_pic1.png
├── AndroidApp
├── res
│ ├── menu
│ │ └── main.xml
│ ├── drawable
│ │ ├── logo_k.jpg
│ │ ├── start.png
│ │ ├── stop.png
│ │ └── start_screen.jpg
│ ├── drawable-hdpi
│ │ ├── start.png
│ │ └── stop.png
│ ├── drawable-mdpi
│ │ ├── start.png
│ │ ├── stop.png
│ │ └── ic_launcher.png
│ ├── drawable-xhdpi
│ │ ├── start.png
│ │ ├── stop.png
│ │ └── ic_launcher.png
│ ├── drawable-xxhdpi
│ │ ├── stop.png
│ │ ├── start.png
│ │ └── ic_launcher.png
│ ├── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-sw600dp
│ │ └── dimens.xml
│ ├── values-sw720dp-land
│ │ └── dimens.xml
│ ├── values-v11
│ │ └── styles.xml
│ └── values-v14
│ │ └── styles.xml
├── ic_launcher-web.png
├── libs
│ └── android-support-v4.jar
├── gen
│ └── com
│ │ └── example
│ │ └── chronolocalization
│ │ └── BuildConfig.java
├── .gitignore
├── src
│ └── dataobjects
│ │ ├── ReceiverRecord.java
│ │ ├── CoordinateTransformation.java
│ │ ├── Point.java
│ │ └── WatchPositionRecord.java
└── AndroidManifest.xml
├── .gitignore
├── .pydevproject
├── README.md
└── fabfile.py
/RESTApi/restApp/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/comReader/main/tests/.gitignore:
--------------------------------------------------------------------------------
1 | /SampleValuesTest.java
2 |
--------------------------------------------------------------------------------
/RESTApi/restApp/dummyData/__init__.py:
--------------------------------------------------------------------------------
1 | ''' init for module'''
--------------------------------------------------------------------------------
/RESTApi/restApp/models.py:
--------------------------------------------------------------------------------
1 | #file for conf checking error escaping
--------------------------------------------------------------------------------
/RESTApi/.coverage:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/RESTApi/.coverage
--------------------------------------------------------------------------------
/AndroidApp/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/AndroidApp/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/ic_launcher-web.png
--------------------------------------------------------------------------------
/comReader/configuration/log.log:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/log.log
--------------------------------------------------------------------------------
/AndroidApp/res/drawable/logo_k.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable/logo_k.jpg
--------------------------------------------------------------------------------
/AndroidApp/res/drawable/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable/start.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable/stop.png
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/icon_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/RESTApi/restApp/scripts/icon_2.png
--------------------------------------------------------------------------------
/AndroidApp/libs/android-support-v4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/libs/android-support-v4.jar
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-hdpi/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-hdpi/start.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-hdpi/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-hdpi/stop.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-mdpi/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-mdpi/start.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-mdpi/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-mdpi/stop.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-xhdpi/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-xhdpi/start.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-xhdpi/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-xhdpi/stop.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-xxhdpi/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-xxhdpi/stop.png
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/sampleMap1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/RESTApi/restApp/scripts/sampleMap1.jpg
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/sampleMap2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/RESTApi/restApp/scripts/sampleMap2.jpg
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/Env.odt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/Env.odt
--------------------------------------------------------------------------------
/comReader/configuration/images/map1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map1.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map2.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map3.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map5.jpg
--------------------------------------------------------------------------------
/comReader/configuration/images/map5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map5.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map6.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map7.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map8.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map9.png
--------------------------------------------------------------------------------
/comReader/configuration/images/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/plus.png
--------------------------------------------------------------------------------
/comReader/configuration/images/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/stop.png
--------------------------------------------------------------------------------
/comReader/main/resources/RXTXcomm.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/main/resources/RXTXcomm.jar
--------------------------------------------------------------------------------
/comReader/main/resources/gson-2.2.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/main/resources/gson-2.2.4.jar
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-xxhdpi/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-xxhdpi/start.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable/start_screen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable/start_screen.jpg
--------------------------------------------------------------------------------
/comReader/configuration/images/map10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map10.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map11.png
--------------------------------------------------------------------------------
/comReader/configuration/images/map12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/map12.png
--------------------------------------------------------------------------------
/comReader/configuration/images/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/minus.png
--------------------------------------------------------------------------------
/comReader/configuration/images/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/start.png
--------------------------------------------------------------------------------
/comReader/main/resources/log4j-1.2.17.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/main/resources/log4j-1.2.17.jar
--------------------------------------------------------------------------------
/comReader/main/resources/org.restlet.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/main/resources/org.restlet.jar
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/comReader/configuration/images/clockwise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/clockwise.png
--------------------------------------------------------------------------------
/comReader/configuration/images/sampleMap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/sampleMap.png
--------------------------------------------------------------------------------
/comReader/main/resources/jettison-1.3.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/main/resources/jettison-1.3.3.jar
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/AndroidApp/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/AndroidApp/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/mongo_utility.sh:
--------------------------------------------------------------------------------
1 | # dump database first param shouldbe db name and second should be path
2 | mongodump -d $1 -o $2
3 |
--------------------------------------------------------------------------------
/comReader/configuration/images/room_4m_6m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/room_4m_6m.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView0.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView45.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView90.png
--------------------------------------------------------------------------------
/comReader/main/resources/javax.ws.rs-api-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/main/resources/javax.ws.rs-api-2.0.jar
--------------------------------------------------------------------------------
/comReader/configuration/images/counterClockwise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/counterClockwise.png
--------------------------------------------------------------------------------
/comReader/configuration/images/lowerLeftMarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/lowerLeftMarker.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView135.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView135.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView180.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView225.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView225.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView270.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView270.png
--------------------------------------------------------------------------------
/comReader/configuration/images/receiverView315.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/receiverView315.png
--------------------------------------------------------------------------------
/comReader/configuration/images/upperRightMarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/upperRightMarker.png
--------------------------------------------------------------------------------
/comReader/configuration/images/zeroCoordinateView.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/zeroCoordinateView.png
--------------------------------------------------------------------------------
/comReader/main/resources/mongo-java-driver-2.9.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/main/resources/mongo-java-driver-2.9.3.jar
--------------------------------------------------------------------------------
/comReader/configuration/images/test_room_fifth_floor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/configuration/images/test_room_fifth_floor.png
--------------------------------------------------------------------------------
/AndroidApp/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FF0000
4 |
5 |
6 |
--------------------------------------------------------------------------------
/RESTApi/restApp/middleware.py:
--------------------------------------------------------------------------------
1 | class DisableCSRF(object):
2 | def process_request(self, request):
3 | print "disabling csrf",request
4 | setattr(request, '_dont_enforce_csrf_checks', True)
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/r.sh:
--------------------------------------------------------------------------------
1 | #curl http://localhost:8000/api/v1/receiver/?access_key=5298fe82fb21ab1b8b725333&format=json
2 |
3 | data=("one", "two", "three")
4 |
5 | for i in "${data[@]}"
6 | do
7 | echo $i
8 | done
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic10.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic2.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic3.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic4.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic5.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic6.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic7.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic8.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic9.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic10.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic11.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic12.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic13.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic14.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic15.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic16.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic17.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic18.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic19.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic2.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic20.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic21.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic22.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic23.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic24.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic25.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic26.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic3.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic4.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic5.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic6.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic7.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic8.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic9.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic2.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic3.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic4.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic5.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic6.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic7.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic8.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic9.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic10.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic11.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic12.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic13.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic14.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic15.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic16.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic17.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic18.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic19.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic2.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic20.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic21.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic22.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic23.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic24.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic3.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic4.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic5.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic6.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic7.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic8.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic9.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic10.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic11.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic12.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic13.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic14.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic15.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic16.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic17.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic18.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic19.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic20.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic21.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic22.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic23.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic24.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic25.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic26.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic27.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic28.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic10.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic11.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic12.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic13.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic14.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic15.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic16.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic17.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic18.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic19.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic2.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic20.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic21.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic22.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic23.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic24.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic25.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic26.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic27.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic28.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic29.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic3.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic30.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic31.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic32.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic33.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic34.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic35.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic36.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic37.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic38.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic39.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic4.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic40.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic41.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic42.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic43.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic44.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic45.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic46.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic47.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic48.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic49.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic5.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic50.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic51.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic52.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic53.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic54.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic54.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic55.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic56.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic57.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic58.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic59.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic6.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic60.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic7.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic8.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic9.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.DS_Store
2 | *.pyc
3 | *.class
4 | RESTApi/htmlcov/*
5 | */.coverage/*
6 | /bin
7 | .settings/*
8 | .classpath
9 | .project
10 | /sample values.docx
11 | /debug
12 | /img
13 | /RESTApi/umlDiagramns/*
14 |
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/kalmanfilter/testOutputGrayscaleImage/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/kalmanfilter/testOutputGrayscaleImage/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/AndroidApp/gen/com/example/chronolocalization/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /** Automatically generated file. DO NOT MODIFY */
2 | package com.example.chronolocalization;
3 |
4 | public final class BuildConfig {
5 | public final static boolean DEBUG = true;
6 | }
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic10.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic11.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic12.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic13.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic14.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic15.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic16.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic17.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic18.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic19.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic2.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic20.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic21.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic22.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic23.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic24.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic25.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic26.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic27.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic28.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic29.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic3.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic30.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic31.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic32.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic33.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic34.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic35.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic36.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic37.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic38.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic39.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic4.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic40.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic41.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic42.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic43.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic44.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic5.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic6.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic7.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic8.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic9.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic1.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic2.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic3.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic4.png
--------------------------------------------------------------------------------
/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mushfiq/rssi-system/HEAD/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic5.png
--------------------------------------------------------------------------------
/AndroidApp/res/values-sw600dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/AndroidApp/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 16dp
5 | 16dp
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RESTApi/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == "__main__":
6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "restApp.settings")
7 |
8 | from django.core.management import execute_from_command_line
9 |
10 | execute_from_command_line(sys.argv)
11 |
--------------------------------------------------------------------------------
/.pydevproject:
--------------------------------------------------------------------------------
1 |
2 |
3 | Default
4 | python 2.7
5 |
6 |
--------------------------------------------------------------------------------
/AndroidApp/res/values-sw720dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 | 128dp
8 |
9 |
10 |
--------------------------------------------------------------------------------
/AndroidApp/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/comReader/main/data/DataReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | /**
8 | * Interface used for reading data from a data source.
9 | *
10 | * @author Danilo
11 | */
12 | public interface DataReader {
13 |
14 | /**
15 | * Reads the data.
16 | */
17 | void readData();
18 |
19 |
20 | /**
21 | * Stops reading the data.
22 | */
23 | void stopReading();
24 | }
25 |
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/runner.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from test_image_retreive import ImageRetreiveTest
3 | from test_watch_records import watchResourceTest
4 | from test_map_records import MapResourceTest
5 | from test_receiver_records import ReceiverResourceTest
6 |
7 | #run this file for running all the test cases at a time. To add new test suit import the suit.
8 |
9 | if __name__=='__main__':
10 | unittest.main()
11 |
12 |
--------------------------------------------------------------------------------
/comReader/main/main/Start.java:
--------------------------------------------------------------------------------
1 | package main;
2 |
3 |
4 | // TODO: Auto-generated Javadoc
5 | /**
6 | * The Class Start.
7 | */
8 | public class Start {
9 |
10 | /**
11 | * The main method.
12 | *
13 | * @param args the arguments
14 | */
15 | public static void main(String[] args) {
16 | Application.getApplication();
17 | Application.getApplication().initializeGUI();
18 | }
19 |
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/AndroidApp/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/RESTApi/requirements.txt:
--------------------------------------------------------------------------------
1 | Django==1.5.4
2 | Fabric==1.8.0
3 | PyYAML==3.10
4 | biplist==0.6
5 | coverage==3.7
6 | defusedxml==0.4.1
7 | django-tastypie==0.10.0
8 | django-tastypie-mongoengine==0.4.5
9 | ecdsa==0.9
10 | lxml==3.2.3
11 | mongoengine==0.8.1
12 | paramiko==1.12.0
13 | pycrypto==2.6.1
14 | pymongo==2.6.3
15 | python-dateutil==2.1
16 | python-mimeparse==0.1.4
17 | requests==2.0.1
18 | simplejson==3.3.1
19 | six==1.4.1
20 | wsgiref==0.1.2
21 |
--------------------------------------------------------------------------------
/comReader/main/resources/.gitignore:
--------------------------------------------------------------------------------
1 | <<<<<<< HEAD
2 | /bigdata2.txt
3 | /bigsample.txt
4 | /onemeter.txt
5 | /onemeter2.txt
6 | /testdata.txt
7 | /testdata2.txt
8 | /log.log
9 | /log4j.xml
10 | =======
11 | /bigdata2.txt
12 | /bigsample.txt
13 | /onemeter.txt
14 | /onemeter2.txt
15 | /testdata.txt
16 | /testdata2.txt
17 | /log.log.1
18 | /log4j.xml
19 | /log.log
20 | /log.log.2
21 | >>>>>>> 41cfa82fad66ce3a2bb11a5059812ffa0be90ef0
22 | /rxtxSerial.dll
23 | /log.log.1.lck
24 |
--------------------------------------------------------------------------------
/AndroidApp/.gitignore:
--------------------------------------------------------------------------------
1 | *.DS_Store
2 | *.pydevproject
3 | .project
4 | .metadata
5 | bin/**
6 | tmp/**
7 | tmp/**/*
8 | *.tmp
9 | *.bak
10 | *.swp
11 | *~.nib
12 | local.properties
13 | .classpath
14 | .settings/
15 | .loadpath
16 |
17 | # External tool builders
18 | .externalToolBuilders/
19 |
20 | # Locally stored "Eclipse launch configurations"
21 | *.launch
22 |
23 | # CDT-specific
24 | .cproject
25 |
26 | # PDT-specific
27 | .buildpath
28 | assets/*
29 | *.properties
30 | *.txt
31 |
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/configuration.py:
--------------------------------------------------------------------------------
1 | ''' this file containts base configuration for
2 | running the test cases for the backend
3 | make sure backend rest api is running and mongodb is running
4 | if you want to test with production checnge BASE_URL with http://shironambd.com/api/v1/
5 | '''
6 |
7 | OPTIONS = {'access_key':'5298fe82fb21ab1b8b725333', 'format':'json'}
8 | BASE_URL = 'http://localhost:8000/api/v1/'
9 | HEADERS = {'content-type': 'application/json'}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/comReader/main/tests/LoggerTest.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | public class LoggerTest {
4 |
5 | public LoggerTest() {
6 | // TODO Auto-generated constructor stub
7 | }
8 |
9 | public static void main(String[] args) {
10 | // TODO Auto-generated method stub
11 |
12 | // Application.getApplication().getLogger().log(Level.WARN, "This is a warning message");
13 | // Application.getApplication().getLogger().warn("Another warning message, with different method call");
14 | }
15 |
16 | }
--------------------------------------------------------------------------------
/comReader/main/data/DataWriter.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | /**
8 | * The Interface DataWriter. Contains a thread that writes WatchPositionData objects to the database.
9 | *
10 | * @author Danilo
11 | * @see data.WatchPositionData
12 | */
13 | public interface DataWriter {
14 |
15 | /**
16 | * Writes data.
17 | */
18 | void writeData();
19 |
20 | /**
21 | * Stops writing data.
22 | */
23 | void stopWriting();
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/comReader/main/tests/GUITest.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import main.Application;
4 |
5 |
6 | /**
7 | * Only used for testing the graphical user interface, without any reading and/or
8 | * writing of the data.
9 | */
10 | public class GUITest {
11 |
12 |
13 | /**
14 | * Instantiates a new GUI test.
15 | */
16 | private GUITest() {
17 |
18 | }
19 |
20 | public static void main(String[] args) {
21 | Application.getApplication();
22 | Application.getApplication().initializeGUI();
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/comReader/main/gui/enumeration/AddMapDialogMode.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui.enumeration;
6 |
7 | /**
8 | * Enumeration used when creating gui.AddMapDialog object.
9 | *
10 | * @author Danilo
11 | * @see gui.AddMapDialog
12 | */
13 | public enum AddMapDialogMode {
14 |
15 | /** Add mode, which denotes that dialog was opened with intention of adding a new map. */
16 | ADD,
17 | /** Edit mode, which denotes that dialog was opened with intention of editing an existing map. */
18 | EDIT;
19 | }
20 |
--------------------------------------------------------------------------------
/RESTApi/restApp/rssi_auth.py:
--------------------------------------------------------------------------------
1 | from tastypie.authentication import Authentication
2 | from tastypie.authentication import BasicAuthentication
3 | from mongoengine.django.auth import User
4 | from django.http import Http404
5 |
6 | class RssiAuth(Authentication):
7 |
8 | def is_authenticated(self, request, **kwargs):
9 | user_id = request.GET.get('access_key')
10 | try:
11 | user = User.objects.get(id=user_id)
12 | return True
13 | except Exception,e:
14 | print e
15 | raise Http404("User Not Authenticated!")
16 |
17 |
--------------------------------------------------------------------------------
/comReader/main/gui/enumeration/StartStopButtonState.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui.enumeration;
6 |
7 | /**
8 | * Enumeration for StartStopButton in gui.ParametersPanel.
9 | *
10 | * @author Danilo
11 | * @see gui.ParametersPanel
12 | */
13 | public enum StartStopButtonState {
14 |
15 | /** This denotes the state when button is clicked and readings and writings have started. */
16 | STARTED,
17 | /**
18 | * This is the initial state. It denotes the state after the window is opened and readings and writings haven't yet
19 | * started.
20 | */
21 | STOPPED;
22 | }
23 |
--------------------------------------------------------------------------------
/AndroidApp/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ChronoLocalization
5 | Settings
6 | Current position of the watch:
7 | unknown
8 | Number of positions
9 | 3
10 |
11 | - watch1
12 | - watch2
13 | - watch3
14 | - watch4
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/RESTApi/restApp/index.wsgi:
--------------------------------------------------------------------------------
1 | import os
2 | import sys
3 | import site
4 |
5 | # Add the site-packages of the chosen virtualenv to work with
6 | site.addsitedir('~/.virtualenvs/rssi/lib/python2.6/site-packages/')
7 |
8 | # Add the app's directory to the PYTHONPATH
9 | sys.path.append('/var/www/rssi/RESTApi')
10 | sys.path.append('/var/www/rssi/RESTApi/restApp')
11 |
12 | os.environ['DJANGO_SETTINGS_MODULE'] = 'restApp.settings'
13 |
14 | # Activate your virtual env
15 | activate_env=os.path.expanduser("/home/mushfiq/.virtualenvs/rssi/bin/activate_this.py")
16 | execfile(activate_env, dict(__file__=activate_env))
17 |
18 | import django.core.handlers.wsgi
19 | application = django.core.handlers.wsgi.WSGIHandler()
--------------------------------------------------------------------------------
/comReader/main/rest/MongoDatabaseReceiverWrapper.java:
--------------------------------------------------------------------------------
1 | package rest;
2 |
3 | import components.Receiver;
4 |
5 | public class MongoDatabaseReceiverWrapper {
6 |
7 | private Receiver receiver;
8 | private int mongoId;
9 | public MongoDatabaseReceiverWrapper(Receiver receiver, int mongoId) {
10 | super();
11 | this.receiver = receiver;
12 | this.mongoId = mongoId;
13 | }
14 | public Receiver getReceiver() {
15 | return receiver;
16 | }
17 | public void setReceiver(Receiver receiver) {
18 | this.receiver = receiver;
19 | }
20 | public int getMongoId() {
21 | return mongoId;
22 | }
23 | public void setMongoId(int mongoId) {
24 | this.mongoId = mongoId;
25 | }
26 |
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/comReader/main/gui/observer/Observer.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui.observer;
6 |
7 | /**
8 | * Interface Observer. Part of observer pattern.
9 | *
10 | * Observers monitor the behavior of Observables. Observers must implement only one method, update,
11 | * that is called by Observerable when a change occurs.
12 | *
13 | * @author Danilo
14 | * @see Observable
15 | */
16 | public interface Observer {
17 |
18 | /**
19 | * Invoked by Obserbable when a change occurs.
20 | *
21 | * @param observable Observable object
22 | * @see Observable
23 | */
24 | abstract void update(Observable observable);
25 | }
26 |
--------------------------------------------------------------------------------
/AndroidApp/src/dataobjects/ReceiverRecord.java:
--------------------------------------------------------------------------------
1 | package dataobjects;
2 |
3 | public class ReceiverRecord {
4 |
5 | public String receiverId;
6 | public float x;
7 |
8 |
9 |
10 |
11 | public String getReceiverId() {
12 | return receiverId;
13 | }
14 | public void setReceiverId(String receiverId) {
15 | this.receiverId = receiverId;
16 | }
17 | public float getX() {
18 | return x;
19 | }
20 | public void setX(float x) {
21 | this.x = x;
22 | }
23 | public float getY() {
24 | return y;
25 | }
26 | public void setY(float y) {
27 | this.y = y;
28 | }
29 | public float y;
30 |
31 | public Point getReceiverPosition()
32 | {
33 | return new Point(x,y);
34 | }
35 |
36 |
37 |
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/AndroidApp/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/insert_receivers.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import json
3 |
4 | HEADERS = {'content-type': 'application/json'}
5 | OPTIONS = {'access_key':'5298fe82fb21ab1b8b725333', 'format':'json'}
6 | RECEIVER_LIST = [{"mapId": 3, "receiverId": "0", "x": 7.3, "y": 7.3, "angle": None}, {"mapId": 2, "receiverId": "0", "x": 9.3, "y": 7.3, "angle": None}]
7 |
8 | def insert_test(receiver_record):
9 | url = 'http://localhost:8000/api/v1/receiver/'
10 |
11 | response = requests.post(url, data=json.dumps(receiver_record), headers=HEADERS, params=OPTIONS)
12 | print response.status_code, response.headers.get('location')
13 |
14 | if __name__=='__main__':
15 | for receiver_record in RECEIVER_LIST:
16 | insert_test(receiver_record)
17 |
18 |
--------------------------------------------------------------------------------
/comReader/main/gui/enumeration/CoordinateZeroMarkerViewType.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui.enumeration;
6 |
7 | /**
8 | * Enumeration for gui.CoordinateZeroMarkerView.
9 | *
10 | * @author Danilo
11 | * @see gui.CoordinateZeroMarkerView
12 | */
13 | public enum CoordinateZeroMarkerViewType {
14 |
15 | /**
16 | * Lower left type, which denotes that this marker is the one that should be placed in the lower left corner of the
17 | * map in the picture. This marker also denotes the zero coordinate point.
18 | */
19 | LOWER_LEFT,
20 | /**
21 | * Upper right type, which denotes that this marker is the one that should be placed in the upper right corner of
22 | * the map in the picture.
23 | */
24 | UPPER_RIGHT;
25 | }
26 |
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/test_image_retreive.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import unittest
3 | import json
4 |
5 | from configuration import BASE_URL, OPTIONS
6 |
7 | '''
8 | this test case check whether server is returning an image or not,
9 | make sure to pass correct image id by replacing imageId.
10 | And test suit covers create, update, delete (teardown) for new resource
11 | '''
12 | class ImageRetreiveTest(unittest.TestCase):
13 |
14 | def testGetImage(self):
15 | imageId = '52c69505fb21ab02e8c206d1'
16 | options = {'access_key':'5298fe82fb21ab1b8b725333', 'id': imageId}
17 | imageUrl = BASE_URL+'image/'
18 | response = requests.get(imageUrl, params=options)
19 | self.assertTrue(response.status_code==200)
20 |
21 |
22 | if __name__=='__main__':
23 | unittest.main()
24 |
25 |
26 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/filter/Filter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: Filter.java
3 | * Date Author Changes
4 | * 08 Dec 2013 Yentran Tran create version 1.0
5 | */
6 | package algorithm.filter;
7 |
8 | import algorithm.helper.Point;
9 |
10 | /**
11 | * The class Filter. This abstract class should be inherited by all implemented filter classes.
12 | * It defines a method to apply a filtering to some points.
13 | *
14 | * @version 1.0 08 Dec 2013
15 | * @author Yentran Tran
16 | */
17 | public abstract class Filter {
18 |
19 | /**
20 | * Instantiates a new filter.
21 | */
22 | public Filter() { }
23 |
24 | /**
25 | * Abstract method applyFilter. This method can be used to apply a filter on a point to return a new point.
26 | *
27 | * @param point the point to apply the filter for
28 | * @return the new point
29 | */
30 | public abstract Point applyFilter(Point point);
31 | }
32 |
--------------------------------------------------------------------------------
/comReader/main/dao/MongoDatabaseMapDAO.java:
--------------------------------------------------------------------------------
1 | package dao;
2 |
3 | import java.util.List;
4 |
5 | import components.RoomMap;
6 |
7 | public class MongoDatabaseMapDAO implements MapDAO {
8 |
9 | @Override
10 | public List getAllMaps() {
11 | // TODO Auto-generated method stub
12 | return null;
13 | }
14 |
15 | @Override
16 | public void setAllMaps(List allMaps) {
17 | // TODO Auto-generated method stub
18 |
19 | }
20 |
21 | @Override
22 | public void refreshMaps() {
23 | // TODO Auto-generated method stub
24 |
25 | }
26 |
27 | @Override
28 | public void saveMap(RoomMap mapToSave) {
29 | // TODO Auto-generated method stub
30 |
31 | }
32 |
33 | @Override
34 | public void addMap(RoomMap newMap) {
35 | // TODO Auto-generated method stub
36 |
37 | }
38 |
39 | @Override
40 | public void deleteMap(RoomMap mapToDelete) {
41 | // TODO Auto-generated method stub
42 |
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/AndroidApp/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
12 |
13 |
18 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/comReader/main/gui/enumeration/PositionLocalizationAlgorithmType.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui.enumeration;
6 |
7 | /**
8 | * Enumeration for PositionLocalizationAlgorithm.
9 | *
10 | * @author Danilo
11 | * @see algorithm.PositionLocalizationAlgorithm
12 | */
13 | public enum PositionLocalizationAlgorithmType {
14 |
15 | /** This denotes probability based algorithm. */
16 | PROBABILITY_BASED("Probability based"),
17 | /** This denotes proximity algorithm. */
18 | PROXIMITY("Proximity");
19 |
20 | /** Name of algorithm, when needed to be shown as a string. */
21 | private String name;
22 |
23 | /**
24 | * Instantiates a new position localization algorithm type.
25 | *
26 | * @param name
27 | * String name of algorithm
28 | */
29 | PositionLocalizationAlgorithmType(String name) {
30 | this.name = name;
31 | }
32 |
33 | /*
34 | * (non-Javadoc)
35 | *
36 | * @see java.lang.Enum#toString()
37 | */
38 | @Override
39 | public String toString() {
40 | return name;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/comReader/main/gui/enumeration/ReceiverButtonState.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui.enumeration;
6 |
7 | import gui.ReceiverButton;
8 |
9 | /**
10 | * Enumeration for ReceiverButton.
11 | *
12 | * @see ReceiverButton
13 | * @author Danilo
14 | */
15 | public enum ReceiverButtonState {
16 |
17 | /** ADD state. In this state, receiver is not on the map.*/
18 | ADD("Add state"),
19 | /** REMOVE state. In this state, receiver is on the map. */
20 | REMOVE("Remove state");
21 |
22 | /** Name of ReceiverButtonState as a String. */
23 | private final String text;
24 |
25 | /**
26 | * Instantiates a new ReceiverButtonState.
27 | *
28 | * @param name
29 | * String name
30 | */
31 | ReceiverButtonState(String name) {
32 | this.text = name;
33 | }
34 |
35 | /**
36 | * To string.
37 | *
38 | * @param o
39 | * the o
40 | * @return the string
41 | */
42 | public String toString(Object... o) {
43 | return this.text;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/comReader/main/data/DataProcessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | import java.util.logging.Logger;
8 |
9 | import utilities.Utilities;
10 |
11 | /**
12 | * DataProcessor takes batches of signal strengths from the batchSignalQueue and performs algorithm calculations on
13 | * them.
14 | *
15 | * @author Danilo
16 | */
17 | public class DataProcessor {
18 |
19 | /** The logger. */
20 | @SuppressWarnings("unused")
21 | private Logger logger;
22 |
23 | /** The runnable. */
24 | private DataProcessorRunnable runnable;
25 |
26 | /**
27 | * Instantiates a new DataProcessor.
28 | */
29 | public DataProcessor() {
30 | logger = Utilities.initializeLogger(this.getClass().getName());
31 | }
32 |
33 | /**
34 | * Creates a new thread that does the processing.
35 | *
36 | * @see data.DataProcessorRunnable
37 | */
38 | public void processData() {
39 | runnable = new DataProcessorRunnable();
40 | Thread thread = new Thread(runnable);
41 | thread.start();
42 | }
43 |
44 | /**
45 | * Stop reading.
46 | */
47 | public void stopReading() {
48 | runnable.terminate();
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/RESTApi/restApp/urls.py:
--------------------------------------------------------------------------------
1 | from django.conf.urls import patterns, include, url
2 |
3 | # Uncomment the next two lines to enable the admin:
4 | # from django.contrib import admin
5 | # admin.autodiscover()
6 |
7 | # urlpatterns = patterns('',
8 | # # Examples:
9 | # # url(r'^$', 'restApp.views.home', name='home'),
10 | # # url(r'^restApp/', include('restApp.foo.urls')),
11 | #
12 | # # Uncomment the admin/doc line below to enable admin documentation:
13 | # # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
14 | #
15 | # # Uncomment the next line to enable the admin:
16 | # # url(r'^admin/', include(admin.site.urls)),
17 | # )
18 | from tastypie import api
19 |
20 | from restApp.resources import WatchResource, MapResource, ReceiverResource
21 |
22 | v1_api = api.Api(api_name='v1')
23 | v1_api.register(WatchResource())
24 | v1_api.register(MapResource())
25 | v1_api.register(ReceiverResource())
26 |
27 | urlpatterns = patterns('',
28 | url(r'^index$', 'restApp.views.index'),
29 | url(r'^api/v1/image/', 'restApp.views.getImage'),
30 | url(r'^api/v1/authenticate/', 'restApp.views.authenticate'),
31 | url(r'^api/', include(v1_api.urls)),
32 | )
--------------------------------------------------------------------------------
/AndroidApp/src/dataobjects/CoordinateTransformation.java:
--------------------------------------------------------------------------------
1 | package dataobjects;
2 |
3 | /**
4 | * This class represent a 2D coordinate tranformation
5 | * @author Silvio
6 | *
7 | */
8 | public class CoordinateTransformation
9 | {
10 |
11 | private Point oldZero = new Point(); // Zero Point of the initial coordinate system
12 | private Point newZero = new Point(); // Zero Point of the new coordinate system
13 |
14 | /**
15 | * Constructor for the coordinate transformation
16 | * @param oldZero The zero point of the initial coordinate system
17 | * @param newZero The zero point of the new coordinate system
18 | */
19 | public CoordinateTransformation( Point oldZero, Point newZero )
20 | {
21 | this.oldZero = oldZero;
22 | this.newZero = newZero;
23 | }
24 |
25 | /**
26 | * This method transforms the given point and return the transformed point
27 | * @param point Point which should be transformed to the new coordinate system
28 | * @return The point regarding the new zero point
29 | */
30 | public Point transformPosition( Point point)
31 | {
32 | float dx = newZero.getX() - oldZero.getX();
33 | float dy = newZero.getY() - oldZero.getY();
34 | float x = point.getX() + dx;
35 | float y = -point.getY() - dy;
36 | return new Point(x, y);
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/create_user.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import getpass
3 | import setup_django
4 | from mongoengine.django.auth import User
5 |
6 |
7 | def create_user(user_name, password, email):
8 | user = User()
9 | try:
10 | # print user_name, password, email
11 | user.create_user(user_name, password, email)
12 | print "User Created!"
13 | new_user = User.objects.get(username=user_name)
14 | print "User Access Key", new_user.id
15 | except Exception,e:
16 | print "Error", e
17 |
18 |
19 | def parse_arguments():
20 | parser = argparse.ArgumentParser()
21 | parser.add_argument('-u', '--user_name', required=True, help='Set Username please')
22 | parser.add_argument('-e', '--email', required=True, help='Set Email please')
23 | password = getpass.getpass()
24 | repeated_password = getpass.getpass('Repeat Password:')
25 | if password != repeated_password:
26 | print "Password does not match..."
27 | return
28 |
29 | args = parser.parse_args()
30 | # print args.email
31 | create_user(args.user_name, password, args.email)
32 |
33 |
34 | if __name__=='__main__':
35 | # create_user()
36 | parse_arguments()
37 | # parse_arguments()
38 | # test()
39 |
40 |
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/setup_django.py:
--------------------------------------------------------------------------------
1 | import os, sys, re
2 |
3 | # stop after reaching '/' on nix or 'C:\' on Windows
4 | top_level_rx = re.compile(r'^(/|[a-zA-Z]:\\)$')
5 | def is_top_level(path):
6 | return top_level_rx.match(path) is not None
7 |
8 | def prepare_environment():
9 | # we'll need this script's directory for searching purposess
10 | curdir, curfile = os.path.split(os.path.abspath(__file__))
11 |
12 | # move up one directory at a time from this script's
13 | # path, searching for settings.py
14 | settings_module = None
15 | while not settings_module:
16 | try:
17 | sys.path.append(curdir)
18 | settings_module = __import__('settings', {}, {}, [''])
19 | sys.path.pop()
20 | break
21 | except ImportError:
22 | settings_module = None
23 |
24 | # have we reached the top-level directory?
25 | if is_top_level(curdir):
26 | raise Exception("settings.py was not found in the script's directory or any of its parent directories.")
27 |
28 | # move up a directory
29 | curdir = os.path.normpath(os.path.join(curdir, '..'))
30 |
31 | # set up the environment using the settings module
32 | from django.core.management import setup_environ
33 | setup_environ(settings_module)
34 |
35 | prepare_environment()
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/setup_django.py:
--------------------------------------------------------------------------------
1 | import os, sys, re
2 |
3 | # stop after reaching '/' on nix or 'C:\' on Windows
4 | top_level_rx = re.compile(r'^(/|[a-zA-Z]:\\)$')
5 | def is_top_level(path):
6 | return top_level_rx.match(path) is not None
7 |
8 | def prepare_environment():
9 | # we'll need this script's directory for searching purposess
10 | curdir, curfile = os.path.split(os.path.abspath(__file__))
11 |
12 | # move up one directory at a time from this script's
13 | # path, searching for settings.py
14 | settings_module = None
15 | while not settings_module:
16 | try:
17 | sys.path.append(curdir)
18 | settings_module = __import__('settings', {}, {}, [''])
19 | sys.path.pop()
20 | break
21 | except ImportError:
22 | settings_module = None
23 |
24 | # have we reached the top-level directory?
25 | if is_top_level(curdir):
26 | raise Exception("settings.py was not found in the script's directory or any of its parent directories.")
27 |
28 | # move up a directory
29 | curdir = os.path.normpath(os.path.join(curdir, '..'))
30 |
31 | # set up the environment using the settings module
32 | from django.core.management import setup_environ
33 | setup_environ(settings_module)
34 |
35 | prepare_environment()
--------------------------------------------------------------------------------
/RESTApi/restApp/dummyData/setup_django.py:
--------------------------------------------------------------------------------
1 | import os, sys, re
2 |
3 | # stop after reaching '/' on nix or 'C:\' on Windows
4 | top_level_rx = re.compile(r'^(/|[a-zA-Z]:\\)$')
5 | def is_top_level(path):
6 | return top_level_rx.match(path) is not None
7 |
8 | def prepare_environment():
9 | # we'll need this script's directory for searching purposess
10 | curdir, curfile = os.path.split(os.path.abspath(__file__))
11 |
12 | # move up one directory at a time from this script's
13 | # path, searching for settings.py
14 | settings_module = None
15 | while not settings_module:
16 | try:
17 | sys.path.append(curdir)
18 | settings_module = __import__('settings', {}, {}, [''])
19 | sys.path.pop()
20 | break
21 | except ImportError:
22 | settings_module = None
23 |
24 | # have we reached the top-level directory?
25 | if is_top_level(curdir):
26 | raise Exception("settings.py was not found in the script's directory or any of its parent directories.")
27 |
28 | # move up a directory
29 | curdir = os.path.normpath(os.path.join(curdir, '..'))
30 |
31 | # set up the environment using the settings module
32 | from django.core.management import setup_environ
33 | setup_environ(settings_module)
34 |
35 | prepare_environment()
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/test_watch_records.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import unittest
3 | import json
4 |
5 | from configuration import BASE_URL, OPTIONS, HEADERS
6 |
7 | '''
8 | This test suit test receiver resource
9 | change data values to check with custom data.
10 | And test suit covers create, update, delete (teardown) for new resource.
11 | '''
12 |
13 | class watchResourceTest(unittest.TestCase):
14 |
15 | def setUp(self):
16 | self.base_url = BASE_URL+'watch/'
17 | data = {'mapId': 2, 'watchId': '12', 'x': 12.3, 'y': 3.4}
18 | self.response = requests.post(self.base_url, data=json.dumps(data), headers=HEADERS, params=OPTIONS)
19 | self.testUrl = self.response.headers.get('location')
20 |
21 | def testInsertWatch(self):
22 | self.assertTrue(201, self.response.status_code)
23 |
24 | def testUpdateWatch(self):
25 | data = {'mapId': 20, 'watchId': '52', 'x': 12.3, 'y': 3.4}
26 | response = requests.put(self.testUrl, data=json.dumps(data), headers=HEADERS, params=OPTIONS )
27 | self.assertTrue(204, response.status_code)
28 |
29 | def tearDown(self):
30 | response = requests.delete(self.testUrl, params=OPTIONS)
31 | self.assertTrue(204, response.status_code)
32 |
33 |
34 |
35 | if __name__=='__main__':
36 | unittest.main()
37 |
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/test_receiver_records.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import unittest
3 | import json
4 |
5 | from configuration import OPTIONS, BASE_URL, HEADERS
6 |
7 | '''
8 | This test suit test receiver resource
9 | change data values to check with custom data.
10 | And test suit covers create, update, delete (teardown) for new resource.
11 | '''
12 |
13 | class ReceiverResourceTest(unittest.TestCase):
14 |
15 | def setUp(self):
16 | self.base_url = BASE_URL+'receiver/'
17 | data = {"mapId": 0, "receiverId": "0", "x": 0.3, "y": 0.3}
18 | self.response = requests.post(self.base_url, data=json.dumps(data), headers=HEADERS, params=OPTIONS)
19 | self.testUrl = self.response.headers.get('location')
20 |
21 | def testInsertReceiver(self):
22 | self.assertTrue(201, self.response.status_code)
23 |
24 | def testUpdateReceiver(self):
25 | data = {"mapId": 0, "receiverId": "0", "x": 9.3, "y": 9.3}
26 | response = requests.put(self.testUrl, data=json.dumps(data), headers={'content-type': 'application/json'}, params=OPTIONS )
27 | self.assertTrue(204, response.status_code)
28 |
29 | def tearDown(self):
30 | response = requests.delete(self.testUrl, params=OPTIONS)
31 | self.assertTrue(204, response.status_code)
32 |
33 |
34 | if __name__=='__main__':
35 | unittest.main()
36 |
--------------------------------------------------------------------------------
/comReader/main/gui/observer/Observable.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui.observer;
6 |
7 | /**
8 | * The Interface Observable. Part of observer pattern.
9 | *
10 | *
11 | * Observables are objects whose behavior is being monitored by observers. Observers are notified when observables make
12 | * some change. Initially, Observables add Observers to a List of
13 | * Observers. When a change occurs, Observable iterates over the List of
14 | * Observers and calls their update method.
15 | *
16 | * @author Danilo
17 | * @see Observer
18 | */
19 | public interface Observable {
20 |
21 | /**
22 | * Registers the observer.
23 | *
24 | * @param observer
25 | * Object of a class that implements Observer interface.
26 | * @see Observer
27 | */
28 | void registerObserver(Observer observer);
29 |
30 | /**
31 | * Unregisters an observer.
32 | *
33 | * @param observer
34 | * Observer object to be unregistered.
35 | * @see Observer
36 | */
37 | void unregisterObserver(Observer observer);
38 |
39 | /**
40 | * Notifies observers about a certain change.
41 | *
42 | * @param observable
43 | * the observable
44 | * @see Observer
45 | */
46 | void notifyObservers(Observable observable);
47 | }
48 |
--------------------------------------------------------------------------------
/RESTApi/restApp/tests/test_map_records.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import unittest
3 | import json
4 |
5 | from configuration import BASE_URL, OPTIONS, HEADERS
6 |
7 | '''
8 | this test suit test map resource
9 | change data values to check with custom data.
10 | And test suit covers create, update, delete (teardown) for new resource.
11 | '''
12 |
13 | class MapResourceTest(unittest.TestCase):
14 |
15 | def setUp(self):
16 | self.base_url = BASE_URL+'map/'
17 | data = {"mapId": 2, "receiverId": "12", "width": 12, "height": 3, "scalingX": 1.5, "scalingY": 2.6, "offsetX":23, "offsetY": 31}
18 | self.response = requests.post(self.base_url, data=json.dumps(data), headers=HEADERS, params=OPTIONS)
19 | self.testUrl = self.response.headers.get('location')
20 |
21 | def testInsertMap(self):
22 | self.assertTrue(201, self.response.status_code)
23 |
24 | def testUpdateMap(self):
25 | data = {"mapId": 2, "receiverId": "102", "width": 102, "height": 102, "scalingX": 125, "offsetX":23, "offsetY": 31}
26 | response = requests.put(self.testUrl, data=json.dumps(data), headers=HEADERS, params=OPTIONS )
27 | self.assertTrue(204, response.status_code)
28 |
29 | def tearDown(self):
30 | response = requests.delete(self.testUrl, params=OPTIONS)
31 | self.assertTrue(204, response.status_code)
32 |
33 |
34 | if __name__=='__main__':
35 | unittest.main()
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | rssi-system
2 | ===========
3 | **RSSI based indoor localization project.**
4 |
5 | [](http://badge.fury.io/gh/mushfiq%2Frssi-system)
6 |
7 | This project contains following applications.
8 | - Java Application consists of Algortihm and (comReadeer)
9 | - Python, Django based REST API (RESTApi)
10 | - An android application that display latest position of the
11 | (AndroidApp)
12 |
13 |
14 | ![Watchm receivers and transmitters][1]
15 |
16 | **Summary**: To localize objects or people inside a building (Indoor Localization) several devices are needed. In this project an approach with RSSI Receivers is used. There are several RSSI receivers (Texas Instruments RFCC1110-868) placed inside a room. A watch (Texas Instruments ez430), when inside the room, emits signal of constant strength. Receivers register the signal strength from the watch (the stronger the signal, the closer the watch is) and send this information to the main hub (Chipcon). The java application extract the RSSI information and feeds value to Algorithm, where Algoritms returns x,y value from RSSI values. Then the data is sent to the server via REST API, with some additional data.
17 | And the REST API saves the data into MongoDB and serves data to the clients.
18 |
19 |
20 | [1]: https://lh4.googleusercontent.com/-cLSu1_u8qb8/UvQBVbciJ3I/AAAAAAAAAHw/sXxCT16xvUw/s0/Screen+Shot+2014-02-06+at+10.39.58+PM.png "Screen Shot 2014-02-06 at 10.39.58 PM.png"
--------------------------------------------------------------------------------
/comReader/main/tests/RESTTestReceiverPOST.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import java.io.IOException;
4 |
5 | import org.codehaus.jettison.json.JSONException;
6 | import org.codehaus.jettison.json.JSONObject;
7 | import org.restlet.data.MediaType;
8 | import org.restlet.data.Method;
9 | import org.restlet.representation.StringRepresentation;
10 | import org.restlet.resource.ClientResource;
11 | import org.restlet.resource.ResourceException;
12 |
13 | public class RESTTestReceiverPOST {
14 |
15 | public static void main(String[] args) {
16 |
17 | ClientResource resource = new ClientResource("http://shironambd.com/api/v1/receiver/");
18 |
19 | resource.setMethod(Method.POST);
20 | resource.getReference().addQueryParameter("format", "json");
21 | resource.getReference().addQueryParameter("access_key", "529a2d308333d14178f5c54d");
22 |
23 | JSONObject obj = new JSONObject();
24 | try {
25 | obj.put("receiverId", 5);
26 | obj.put("mapId", 2);
27 | obj.put("x", 12);
28 | obj.put("y", 14);
29 |
30 | } catch (JSONException e1) {
31 | e1.printStackTrace();
32 | }
33 |
34 | StringRepresentation stringRep = new StringRepresentation(obj.toString());
35 | stringRep.setMediaType(MediaType.APPLICATION_JSON);
36 |
37 | try {
38 | resource.post(stringRep).write(System.out);
39 | } catch (ResourceException e) {
40 | e.printStackTrace();
41 | } catch (IOException e) {
42 | e.printStackTrace();
43 | }
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/comReader/main/data/DatabaseDataWriter.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | import java.util.logging.Level;
8 | import java.util.logging.Logger;
9 |
10 | import utilities.Utilities;
11 |
12 | /**
13 | * Implementation of DataWriter interface. This class has a thread that does the actual writing of
14 | * WatchPositionData to the database.
15 | *
16 | * @see data.DataWriter
17 | * @see data.WatchPositionData
18 | * @author Danilo
19 | */
20 | public class DatabaseDataWriter implements DataWriter {
21 |
22 | /** The logger. */
23 | private Logger logger;
24 |
25 | /** The runnable. */
26 | private DatabaseDataWriterRunnable runnable;
27 |
28 | /**
29 | * Instantiates a DatabaseDataWriter object.
30 | */
31 | public DatabaseDataWriter() {
32 |
33 | logger = Utilities.initializeLogger(this.getClass().getName());
34 | }
35 |
36 | /*
37 | * (non-Javadoc)
38 | *
39 | * @see data.DataWriter#writeData()
40 | */
41 | @Override
42 | public void writeData() {
43 |
44 | runnable = new DatabaseDataWriterRunnable();
45 | Thread thread = new Thread(runnable);
46 | thread.start();
47 | logger.info("Writing data to database has been started.");
48 | }
49 |
50 | /**
51 | * Stops the writing to the database.
52 | */
53 | @Override
54 | public void stopWriting() {
55 | runnable.terminate();
56 | logger.log(Level.INFO, "Writing to database has been stopped.");
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/helper/Line.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: Line.java
3 | * Date Author Changes
4 | * 08 Nov 2013 Tommy Griese create version 1.0
5 | * Yentran Tran
6 | */
7 | package algorithm.helper;
8 |
9 | /**
10 | * The class Line represents a line from a start point p0 to an end point p1.
11 | *
12 | * @version 1.0 08 Nov 2013
13 | * @author Yentran Tran, Tommy Griese
14 | */
15 | public class Line {
16 |
17 | /** The start point of the line. */
18 | private Point p0;
19 |
20 | /** The end point of the line. */
21 | private Point p1;
22 |
23 | /**
24 | * Instantiates a new line.
25 | *
26 | * @param p0 the start point p0
27 | * @param p1 the end point p1
28 | */
29 | public Line(Point p0, Point p1) {
30 | this.p0 = p0;
31 | this.p1 = p1;
32 | }
33 |
34 | /**
35 | * Gets the start point of the line.
36 | *
37 | * @return the start point
38 | */
39 | public Point getStartPoint() {
40 | return this.p0;
41 | }
42 |
43 | /**
44 | * Gets the end point of the line.
45 | *
46 | * @return the end point
47 | */
48 | public Point getEndPoint() {
49 | return this.p1;
50 | }
51 |
52 | /**
53 | * Representation of the line as a string.
54 | *
55 | * @return a string that represents the line
56 | */
57 | public String toString() {
58 | return p0 + " " + p1;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/RESTApi/restApp/serializer.py:
--------------------------------------------------------------------------------
1 | import csv
2 | import ast
3 | import StringIO
4 | from tastypie.serializers import Serializer
5 |
6 |
7 | class CSVSerializer(Serializer):
8 | print "inside serializers"
9 | formats = ['json', 'jsonp', 'xml', 'yaml', 'html', 'plist', 'csv', 'txt']
10 | content_types = {
11 | 'json': 'application/json',
12 | 'jsonp': 'text/javascript',
13 | 'xml': 'application/xml',
14 | 'yaml': 'text/yaml',
15 | 'html': 'text/html',
16 | 'plist': 'application/x-plist',
17 | 'csv': 'text/csv',
18 | 'txt': 'text/plain',
19 | }
20 |
21 | def to_txt(self, data, options=None):
22 | options = options or {}
23 | data = self.to_simple(data, options)
24 | raw_data = StringIO.StringIO()
25 | # Untested, so this might not work exactly right.
26 | for item in data:
27 | writer = csv.DictWriter(raw_data, item.keys(), extrasaction='ignore')
28 | writer.write(item)
29 | print "inside to txt", raw_data
30 | return raw_data
31 |
32 | def from_txt(self, content):
33 | # print "type content", type(content)
34 | raw_data = StringIO.StringIO(content)
35 | data = []
36 | print ""
37 | d = ast.literal_eval(str(raw_data))
38 | print "d", type(d)
39 | # Untested, so this might not work exactly right.
40 | # for item in csv.DictReader(raw_data):
41 | for i in d.items():
42 | data.append(item)
43 | return data
--------------------------------------------------------------------------------
/comReader/main/data/COMPortDataReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | import java.util.logging.Logger;
8 |
9 | import utilities.Utilities;
10 |
11 | /**
12 | * Implementation of data.DataReader interface. This class has a thread
13 | * COMPortDataReaderRunnable that does the actual reading. This class controls starting and stopping of
14 | * reading from COM port.
15 | *
16 | * @author Danilo
17 | * @see data.DataReader
18 | */
19 | public class COMPortDataReader implements DataReader {
20 |
21 | /** Logger object. */
22 | private Logger logger;
23 |
24 | /** Runnable that does the actual reading. */
25 | private ComPortDataReaderRunnable runnable;
26 |
27 | /**
28 | * Instantiates a new COMPortDataReader.
29 | */
30 | public COMPortDataReader() {
31 | super();
32 | logger = Utilities.initializeLogger(this.getClass().getName());
33 | }
34 |
35 | /*
36 | * (non-Javadoc)
37 | *
38 | * @see data.DataReader#readData()
39 | */
40 | @Override
41 | public void readData() {
42 |
43 | runnable = new ComPortDataReaderRunnable();
44 | Thread thread = new Thread(runnable);
45 | thread.start();
46 | logger.info("Reading data from COM port started.");
47 | }
48 |
49 | /**
50 | * Stops reading from COM port.
51 | */
52 | @Override
53 | public void stopReading() {
54 | runnable.terminate();
55 | logger.info("Reading data from COM port stopped.");
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/RESTApi/restApp/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for restApp project.
3 |
4 | This module contains the WSGI application used by Django's development server
5 | and any production WSGI deployments. It should expose a module-level variable
6 | named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
7 | this application via the ``WSGI_APPLICATION`` setting.
8 |
9 | Usually you will have the standard Django WSGI application here, but it also
10 | might make sense to replace the whole Django WSGI application with a custom one
11 | that later delegates to the Django one. For example, you could introduce WSGI
12 | middleware here, or combine a Django application with an application of another
13 | framework.
14 |
15 | """
16 | import os
17 |
18 | # We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
19 | # if running multiple sites in the same mod_wsgi process. To fix this, use
20 | # mod_wsgi daemon mode with each site in its own daemon process, or use
21 | # os.environ["DJANGO_SETTINGS_MODULE"] = "restApp.settings"
22 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "restApp.settings")
23 |
24 | # This application object is used by any WSGI server configured to use this
25 | # file. This includes Django's development server, if the WSGI_APPLICATION
26 | # setting points here.
27 | from django.core.wsgi import get_wsgi_application
28 | application = get_wsgi_application()
29 |
30 | # Apply WSGI middleware here.
31 | # from helloworld.wsgi import HelloWorldApplication
32 | # application = HelloWorldApplication(application)
33 |
--------------------------------------------------------------------------------
/comReader/main/tests/PerformanceTestFloatVsDouble.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 |
4 | public class PerformanceTestFloatVsDouble {
5 |
6 | public static void doubleTest(int loop) {
7 | System.out.println("double: ");
8 | for (int i = 0; i < loop; i++) {
9 | double a = 1000, b = 45, c = 12000, d = 2, e = 7, f = 1024;
10 | a = Math.sin(a);
11 | b = Math.asin(b);
12 | c = Math.sqrt(c);
13 | d = d + d - d + d;
14 | e = e * e + e * e;
15 | f = f / f / f / f / f;
16 | }
17 | }
18 |
19 | public static void floatTest(int loop)
20 | {
21 | System.out.println("float: ");
22 | for (int i = 0; i < loop; i++)
23 | {
24 | float a = 1000, b = 45, c = 12000, d = 2, e = 7, f = 1024;
25 | a = (float) Math.sin(a);
26 | b = (float) Math.asin(b);
27 | c = (float) Math.sqrt(c);
28 | d = d + d - d + d;
29 | e = e * e + e * e;
30 | f = f / f / f / f / f;
31 | }
32 | }
33 |
34 | public static void main(String[] args)
35 | {
36 | long currentTime = System.currentTimeMillis();
37 | doubleTest(15 * 1000000);
38 | System.out.println("milliseconds: " + (System.currentTimeMillis() - currentTime));
39 |
40 | currentTime = System.currentTimeMillis();
41 | floatTest(15 * 1000000);
42 | System.out.println("milliseconds: " + (System.currentTimeMillis() - currentTime));
43 |
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/comReader/main/tests/RESTTestReceiverPUT.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import java.io.IOException;
4 |
5 | import org.codehaus.jettison.json.JSONException;
6 | import org.codehaus.jettison.json.JSONObject;
7 | import org.restlet.data.MediaType;
8 | import org.restlet.data.Method;
9 | import org.restlet.representation.StringRepresentation;
10 | import org.restlet.resource.ClientResource;
11 | import org.restlet.resource.ResourceException;
12 |
13 | public class RESTTestReceiverPUT {
14 |
15 | public static void main(String[] args) {
16 | ClientResource resource = new ClientResource("http://shironambd.com/api/v1/receiver/");
17 |
18 | resource.setMethod(Method.PUT);
19 | resource.getReference().addQueryParameter("format", "json");
20 | resource.getReference().addQueryParameter("access_key", "529a2d308333d14178f5c54d");
21 |
22 | JSONObject obj = new JSONObject();
23 | try {
24 | obj.put("receiverId", "5"); // mandatory quotes for 'receiverId' field
25 | obj.put("mapId", 2);
26 | obj.put("x", 15);
27 | obj.put("y", 18);
28 |
29 | } catch (JSONException e1) {
30 | e1.printStackTrace();
31 | }
32 |
33 | StringRepresentation stringRep = new StringRepresentation(obj.toString());
34 | stringRep.setMediaType(MediaType.APPLICATION_JSON);
35 |
36 | try {
37 | resource.put(stringRep).write(System.out);
38 | } catch (ResourceException e) {
39 | // TODO Auto-generated catch block
40 | e.printStackTrace();
41 | } catch (IOException e) {
42 | // TODO Auto-generated catch block
43 | e.printStackTrace();
44 | }
45 |
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/PositionLocalizationAlgorithm.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: PositionLocalizationAlgorithm.java
3 | * Date Author Changes
4 | * 09 Nov 2013 Tommy Griese create version 1.0
5 | */
6 | package algorithm;
7 |
8 | import java.util.ArrayList;
9 | import java.util.HashMap;
10 |
11 | import algorithm.helper.Point;
12 |
13 | import components.Receiver;
14 | import components.RoomMap;
15 |
16 | /**
17 | * The class PositionLocalizationAlgorithm. This abstract class should be inherited by all implemented algorithm classes.
18 | * It defines the interface of the constructor, the method calculate(...) and some needed variables.
19 | *
20 | * @version 1.0 09 Nov 2013
21 | * @author Tommy Griese
22 | */
23 | public abstract class PositionLocalizationAlgorithm {
24 |
25 | /** The array list of all receivers. */
26 | protected ArrayList receivers;
27 |
28 | /** The room map. */
29 | protected RoomMap roommap;
30 |
31 | /**
32 | * Instantiates a new PositionLocalizationAlgorithm.
33 | *
34 | * @param roommap the room map
35 | * @param receivers the list of receivers
36 | */
37 | public PositionLocalizationAlgorithm(RoomMap roommap, ArrayList receivers) {
38 | this.roommap = roommap;
39 | this.receivers = receivers;
40 | }
41 |
42 | /**
43 | * Abstract method calculate.
44 | *
45 | * @param readings the rssi values measured in dBm for all receivers
46 | * @return the calculated position in a room will be returned in the form of a point ({@link algorithm.helper.Point})
47 | */
48 | public abstract Point calculate(HashMap readings);
49 | }
50 |
--------------------------------------------------------------------------------
/comReader/main/gui/ImageFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui;
6 |
7 | import java.io.File;
8 |
9 | import javax.swing.JFileChooser;
10 | import javax.swing.filechooser.FileFilter;
11 |
12 | /**
13 | * This class extends FileFilter and is supplied to the JFileChooser in order to display only
14 | * specific files and directories. Here it is used to filter everything except directories (so that the user can browse
15 | * through the file system) and .png images.
16 | *
17 | * @author Danilo
18 | * @see JFileChooser
19 | */
20 | public class ImageFilter extends FileFilter {
21 |
22 | /**
23 | * Overridden method in order to display only directories and .png files.
24 | *
25 | * @param file
26 | * One of the Files in the file system
27 | * @return boolean is file accepted
28 | * @see javax.swing.filechooser.FileFilter#accept(java.io.File)
29 | */
30 | @Override
31 | public boolean accept(File file) {
32 |
33 | if (file.isDirectory()) {
34 | return true;
35 | }
36 |
37 | String extension = null;
38 | String fileName = file.getName();
39 |
40 | int i = fileName.lastIndexOf('.');
41 |
42 | if (i > 0 && i < fileName.length() - 1) {
43 | extension = fileName.substring(i + 1).toLowerCase();
44 | }
45 | if (extension != null) {
46 |
47 | return (extension.equals("png") ? true : false);
48 | }
49 |
50 | return false;
51 | }
52 |
53 | /*
54 | * (non-Javadoc)
55 | *
56 | * @see javax.swing.filechooser.FileFilter#getDescription()
57 | */
58 | @Override
59 | public String getDescription() {
60 | return "PNG files only";
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/imageUpload.py:
--------------------------------------------------------------------------------
1 | import setup_django
2 | import datetime
3 | from random import randint, random
4 | from mongoengine import connect
5 | from restApp.documents import mapRecords
6 |
7 |
8 | connect('rssiSystem')
9 |
10 | MAP_IMAGES = ['sampleMap1.jpg', 'sampleMap2.jpg']
11 |
12 | def get_random_map():
13 | random_map = MAP_IMAGES[randint(0, len(MAP_IMAGES)-1)]
14 | mPhoto = open(random_map, 'rb')
15 | return mPhoto
16 |
17 | #curl -i -H "Content-Type: application/json" -X POST -d '{"mapId": 2, "watchId": "42", "x": 12.3, "y": 3.4}' http://localhost:8000/api/v1/watch/
18 |
19 | def saveMap():
20 | print "starting..."
21 | m = mapRecords()
22 | m.mapId = randint(0,5)
23 | m.width = randint(0, 200)
24 | m.height = randint(0, 200)
25 | m.scaling = random()*10
26 | m.offsetX = randint(0, 12)
27 | m.offsetY = randint(0, 12)
28 | m.updateTime = datetime.datetime.now()
29 | m.image.put(get_random_map(), content_type= 'image/jpg')
30 | try:
31 | m.save()
32 | print m.id
33 | print "wuploaded!!"
34 | except Exception,e:
35 | print e
36 |
37 | def listData():
38 | allWatchRecords = watchRecords.objects.all()[:4]
39 |
40 | for record in allWatchRecords:
41 | print record.id
42 |
43 | def update_maps():
44 | all_maps = mapRecords.objects.all()
45 | for m in all_maps:
46 | m.image = None
47 | m.image.put(get_random_map(), content_type='image/jpg')
48 | m.save()
49 | print "Total %d maps updated!" % len(all_maps)
50 | return
51 |
52 |
53 | if __name__=='__main__':
54 | # get_random_map()
55 | saveMap()
56 | # start()
57 | # update_maps()
--------------------------------------------------------------------------------
/RESTApi/restApp/views.py:
--------------------------------------------------------------------------------
1 | from django.http import HttpResponse
2 | from django.http import Http404
3 | from mongoengine.django.auth import User
4 | from django.core.exceptions import ObjectDoesNotExist
5 |
6 | from django.views.decorators.csrf import csrf_exempt
7 |
8 | from mongoengine import connect
9 | from documents import mapRecords
10 |
11 | import json
12 |
13 | connect('rssiSystem')
14 |
15 |
16 | def index(request):
17 | html = 'Shironambd coming soon!
'
18 | return HttpResponse(html)
19 |
20 | def getImage(request):
21 | user_id = request.GET.get('access_key')
22 | try:
23 | user = User.objects.get(id=user_id)
24 | except Exception,e:
25 | print e
26 | raise Http404("User Not Authenticated!")
27 |
28 | image_id = request.GET.get('id')
29 | file_obj = mapRecords.objects.get(id=image_id)
30 | return HttpResponse(file_obj.image.read(), mimetype="image/jpeg")
31 |
32 | @csrf_exempt
33 | def authenticate(request):
34 |
35 | if request.method != 'POST':
36 | raise Http404('Error')
37 |
38 | user_name = request.POST.get('username')
39 | pass_word = request.POST.get('password')
40 | try:
41 | user = User.objects.get(username=user_name, password=pass_word)
42 | user_obj = str({'access_key':user.id.__str__(), 'name':user.username})
43 | response = HttpResponse(json.dumps(user_obj), mimetype='application/json')
44 | response['Access-Control-Allow-Origin'] = "*"
45 | return response
46 |
47 | except ObjectDoesNotExist:
48 | raise Http404("User Not Authenticated!")
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/comReader/main/tests/_Test.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import java.util.ArrayList;
4 | import java.util.HashMap;
5 |
6 | import algorithm.PositionLocalizationAlgorithm;
7 | import algorithm.ProbabilityBasedAlgorithm;
8 |
9 | import components.Receiver;
10 | import components.RoomMap;
11 |
12 |
13 | public class _Test {
14 |
15 | public static void main(String[] args) {
16 |
17 | // Receiver r1 = new Receiver(1, 0.0, 0.0, 45.0);
18 | // Receiver r2 = new Receiver(2, 25.0, 0.0, 135.0);
19 | // Receiver r3 = new Receiver(3, 25.0, 25.0, 225.0);
20 | // Receiver r4 = new Receiver(4, 0.0, 25.0, 315.0);
21 | Receiver r1 = new Receiver(1, 0.0, 25.0, 0.0);
22 | Receiver r2 = new Receiver(2, 25.0, 25.0, 0.0);
23 | Receiver r3 = new Receiver(3, 25.0, 0.0, 0.0);
24 | Receiver r4 = new Receiver(4, 0.0, 0.0, 0.0);
25 | // Receiver r1 = new Receiver(1, 0.0, 50.0, 0.0);
26 | // Receiver r2 = new Receiver(2, 50.0, 50.0, 0.0);
27 | // Receiver r3 = new Receiver(3, 50.0, 0.0, 0.0);
28 | // Receiver r4 = new Receiver(4, 0.0, 0.0, 0.0);
29 |
30 | ArrayList receivers = new ArrayList();
31 | receivers.add(r1);
32 | receivers.add(r2);
33 | receivers.add(r3);
34 | receivers.add(r4);
35 |
36 | RoomMap roommap = new RoomMap(0.0, 25.0, 0.0, 25.0, null);
37 |
38 | //RoomMap roommap = new RoomMap(-25.0, 25.0, -25.0, 25.0);
39 |
40 | PositionLocalizationAlgorithm algo = new ProbabilityBasedAlgorithm(roommap, receivers);
41 |
42 | HashMap readings = new HashMap();
43 | readings.put(1, -81.41); //ca. 24m radius
44 | readings.put(2, -79.03); //ca. 20m radius
45 | readings.put(3, -74.38); //ca. 14m radius
46 | readings.put(4, -79.03); //ca. 20m radius
47 |
48 | algo.calculate(readings);
49 | }
50 | }
--------------------------------------------------------------------------------
/AndroidApp/src/dataobjects/Point.java:
--------------------------------------------------------------------------------
1 | package dataobjects;
2 |
3 | /**
4 | * This class represent a simple 2D point with decimal x and y coordinate
5 | * @author Silvio
6 | *
7 | */
8 | public class Point
9 | {
10 | private float x; //The x coordinate of this point
11 | private float y; //The y coordinate of this point
12 |
13 | /**
14 | * The default constructor for a point which gives as the Point (0/0)
15 | * @author Silvio
16 | */
17 | public Point()
18 | {
19 | x = 0.0f;
20 | y = 0.0f;
21 | }
22 |
23 | /**
24 | * A special constructor for a point objects which sets the coordinate to the given x and y value
25 | * @author Silvio
26 | * @param x The x coordinate of the point
27 | * @param y The y coordinate of the point
28 | */
29 | public Point(float x, float y)
30 | {
31 | this.x = x;
32 | this.y = y;
33 | }
34 |
35 | /**
36 | * Getter for the x coordinate
37 | * @return The x coordinate of this point
38 | */
39 | public float getX()
40 | {
41 | return x;
42 | }
43 |
44 | /**
45 | * Getter for the y coordinate
46 | * @return The y coordinate of this point
47 | */
48 | public float getY()
49 | {
50 | return y;
51 | }
52 |
53 | /**
54 | * This method scaling this point in the x and y-direction for the define scalingX and scalingY
55 | * @param scalingX The scaling value for the x-direction
56 | * @param scalingY The scaling value for the y-direction
57 | */
58 | public void scale(float scalingX, float scalingY)
59 | {
60 | x = x * scalingX;
61 | y = y * scalingY;
62 | }
63 |
64 | @Override
65 | /**
66 | * The toString method which returns a string representation of this object
67 | * @author Silvio
68 | * @return The string that represent this object
69 | */
70 | public String toString()
71 | {
72 | return "(" + x + " / " + y +")";
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/RESTApi/restApp/documents.py:
--------------------------------------------------------------------------------
1 | from mongoengine import Document, StringField, FloatField, DateTimeField, \
2 | IntField, FileField
3 |
4 |
5 |
6 | class InheritableDocument(Document):
7 | """ Inhertibale document is extended from mongoengin document
8 | which povides meta object to update document."""
9 | meta = {
10 | 'abstract': True,
11 | 'allow_inheritance': True,
12 | }
13 |
14 | class watchRecords(InheritableDocument):
15 | """ watchRecords document is extended from InheritableDocument
16 | it holds the fields for watchRecors collection for mongoDB."""
17 |
18 | x = FloatField()
19 | y = FloatField()
20 | insertedAt = DateTimeField()
21 | mapId = IntField()
22 | watchId = StringField()
23 |
24 |
25 | class mapRecords(InheritableDocument):
26 | """ mapRecords document is extended from InheritableDocument
27 | it holds the fields for mapRecords collection for mongoDB."""
28 |
29 | height = FloatField()
30 | image = FileField()
31 | mapId = IntField()
32 | offsetX = IntField()
33 | offsetY = IntField()
34 | offset2X = IntField()
35 | offset2Y = IntField()
36 | receiverId = IntField()
37 | scalingX = FloatField()
38 | scalingY = FloatField()
39 | updateTime = DateTimeField()
40 | width = FloatField()
41 | title = StringField()
42 |
43 |
44 | class receiverRecords(InheritableDocument):
45 | """ receiverRecords document is extended from InheritableDocument
46 | it holds the fields for receiverRecords collection for mongoDB."""
47 |
48 | receiverId = IntField()
49 | mapId = IntField()
50 | x = FloatField()
51 | y = FloatField()
52 | angle = FloatField()
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/comReader/main/data/FileDataReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | import java.io.File;
8 | import java.util.logging.Logger;
9 |
10 | import utilities.Utilities;
11 |
12 | /**
13 | * Implementation of DataReader. It uses a file as data source input. It contains a
14 | * FileDataReaderRunnable that does the actual reading. This class is used for testing purposes. For
15 | * example, when actual hardware (receivers and main hub) is not available, when we want to test the functionality on
16 | * the exact same data sample (it is difficult to achieve the exact same input twice when using actual hardware) or when
17 | * we want to test another functionality, rather then reading.
18 | *
19 | * @author Danilo
20 | * @see data.FileDataReaderRunnable
21 | */
22 | public class FileDataReader implements DataReader {
23 |
24 | /** Logger object. */
25 | @SuppressWarnings("unused")
26 | private Logger logger;
27 |
28 | /** The runnable. */
29 | private FileDataReaderRunnable runnable;
30 |
31 | /** The file to read from. */
32 | private File file;
33 |
34 | /**
35 | * Instantiates a new FileDataReader.
36 | *
37 | * @param newFile
38 | * File object.
39 | */
40 | public FileDataReader(File newFile) {
41 |
42 | logger = Utilities.initializeLogger(this.getClass().getName());
43 | this.file = newFile;
44 | }
45 |
46 | /*
47 | * (non-Javadoc)
48 | *
49 | * @see data.DataReader#readData()
50 | */
51 | @Override
52 | public void readData() {
53 |
54 | runnable = new FileDataReaderRunnable(file);
55 | Thread thread = new Thread(runnable);
56 | thread.start();
57 | }
58 |
59 | @Override
60 | public void stopReading() {
61 | // stopping reading from file is not needed at the moment
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/fabfile.py:
--------------------------------------------------------------------------------
1 | import os
2 | from fabric.api import *
3 | abspath = lambda filename: os.path.join(os.path.abspath(os.path.dirname(__file__)), filename)
4 |
5 | #specify server user name
6 |
7 | env.user = 'putUserName'
8 | env.local_site_root = abspath('')
9 | env.serverpath = '/'
10 | env.site_root = '/var/www/rssi'
11 |
12 | def server():
13 | env.hosts = [
14 | 'shironambd.com',
15 | ]
16 | env.graceful = False
17 |
18 | #next two tasks shows access log and error log
19 | def show_access_log():
20 | ''' shows access log of remote server'''
21 |
22 | run('sudo tail -n 10 /var/log/apache2/shironambd-custom.log')
23 |
24 | def show_error_log():
25 | ''' shows error log of remote server'''
26 |
27 | run('sudo tail -n 10 /var/log/apache2/shironambd-error.log')
28 |
29 | def restart_apache():
30 | ''' restrart server apache '''
31 |
32 | run('sudo service apache2 restart')
33 |
34 | def rssi_deploy():
35 | '''
36 | this task deploy the code to server
37 | paths need to fixed before real prod use
38 | rename site_name, site_path accordingly to server
39 | '''
40 |
41 | env.site_name = 'RESTApi'
42 | env.site_path = '/var/www/rssi'
43 | run('sudo rm -rf %s/%s' % (env.site_path,env.site_name))
44 | local('tar --exclude="*.pyc" -czf %s.tgz %s/' % (env.site_name, env.site_name))
45 | put('%s.tgz' % env.site_name, env.site_root)
46 | run('cd %s && tar -xzf %s.tgz' % (env.site_root, env.site_name))
47 | run('rm -rf %s/%s.tgz' % (env.site_path,env.site_name))
48 | local('rm -rf %s.tgz' % (env.site_name))
49 |
50 | def install_dependecies():
51 | '''
52 | this method install required depencies
53 | '''
54 |
55 | env.site_name = 'RESTApi'
56 | env.site_path = '/var/www/rssi'
57 | run('pip install -r requirements.txt')
--------------------------------------------------------------------------------
/RESTApi/restApp/scripts/benchmark.py:
--------------------------------------------------------------------------------
1 | import time
2 | import requests
3 | import urllib
4 |
5 | def do_request_by_limit(type, limit):
6 | url = 'http://shironambd.com/api/v1/'+str(type)+'/?access_key=529a2d308333d14178f5c54d&limit='+str(limit)+'&format=json'
7 | resp = requests.get(url)
8 | return resp.elapsed.total_seconds()
9 |
10 | def do():
11 | tab = "\t\t\t"
12 | print '\n\n'
13 |
14 | print tab+"Starting Benchmarking of RSSI REST API"
15 | print tab+"======================================="
16 | time.sleep(2)
17 | print tab+"| 1 watch |", do_request_by_limit("watch", 1) , ' seconds|'
18 | print tab+"__________________________________"
19 | print tab+"| 1 map |", do_request_by_limit("map", 1), ' seconds|'
20 | print tab+"__________________________________"
21 | print tab+"| 1 receiver |", do_request_by_limit("receiver", 1), ' seconds|'
22 | print tab+"__________________________________"
23 | print tab+"| 10 watch |", do_request_by_limit("watch", 10), ' seconds|'
24 | print tab+"__________________________________"
25 | print tab+"| 10 map |", do_request_by_limit("map", 10), ' seconds|'
26 | print tab+"__________________________________"
27 | print tab+"| 10 receiver|", do_request_by_limit("receiver", 10), ' seconds|'
28 | print tab+"__________________________________"
29 | print tab+"| 100 watch |", do_request_by_limit("watch", 100), ' seconds|'
30 | print tab+"__________________________________"
31 | print tab+"| 100 map |", do_request_by_limit("map", 100), ' seconds|'
32 | print tab+"__________________________________"
33 | print tab+"|100 receiver|", do_request_by_limit("receiver", 100), ' seconds|'
34 | print tab+"__________________________________"
35 | print '\n\n'
36 |
37 | return
38 |
39 |
40 |
41 |
42 |
43 | if __name__=='__main__':
44 | do()
--------------------------------------------------------------------------------
/comReader/main/gui/StatusPanel.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui;
6 |
7 | import java.awt.Color;
8 | import java.awt.Dimension;
9 | import java.awt.FlowLayout;
10 |
11 | import javax.swing.JLabel;
12 | import javax.swing.JPanel;
13 |
14 | /**
15 | * This class extends JPanel and is used to show messages in AddMapDialog window.
16 | *
17 | * @author Danilo
18 | * @see AddMapDialog
19 | */
20 | public class StatusPanel extends JPanel {
21 |
22 | /** The Constant serialVersionUID. */
23 | private static final long serialVersionUID = 1L;
24 |
25 | /** The Constant PANEL_WIDTH. */
26 | private static final int PANEL_WIDTH = 950;
27 |
28 | /** The Constant PANEL_HEIGHT. */
29 | private static final int PANEL_HEIGHT = 20;
30 |
31 | /** The Constant GRAY_COLOUR. */
32 | private static final int GRAY_COLOUR = 230;
33 |
34 | /** The status label. */
35 | private JLabel statusLabel;
36 |
37 | /** The message. */
38 | private String message;
39 |
40 | /**
41 | * Instantiates a new StatusPanel.
42 | */
43 | public StatusPanel() {
44 |
45 | setSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
46 | setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
47 | setBackground(new Color(GRAY_COLOUR, GRAY_COLOUR, GRAY_COLOUR));
48 | statusLabel = new JLabel("");
49 | this.setLayout(new FlowLayout(FlowLayout.LEADING));
50 | message = "";
51 | add(statusLabel);
52 | }
53 |
54 | /**
55 | * Sets the message.
56 | *
57 | * @param message
58 | * String new message
59 | */
60 | public void setMessage(String message) {
61 | this.message = message;
62 | updateMessage();
63 | }
64 |
65 | /**
66 | * Updates message.
67 | */
68 | private void updateMessage() {
69 | if (message != null) {
70 | statusLabel.setText(message);
71 | }
72 |
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/helper/PointRoomMap.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: PointRoomMap.java
3 | * Date Author Changes
4 | * 08 Nov 2013 Yentran Tran create version 1.0
5 | * 03 Dec 2013 Tommy Griese added UID (because of serialization of Point2D.Double)
6 | */
7 | package algorithm.helper;
8 |
9 | /**
10 | * The class PointRoomMap represents a special point in a room map.
11 | * Each point has a variable that represents the current weight of this point in a map
12 | * (this class is inherited by class {@link algorithm.helper.Point}).
13 | *
14 | * @version 1.1 03 Dev 2013
15 | * @author Yentran Tran
16 | * @see algorithm.helper.Point
17 | */
18 | public class PointRoomMap extends Point {
19 |
20 | /** UID of this class. */
21 | private static final long serialVersionUID = -5499256205329251359L;
22 |
23 | /** The weighted value in this point. */
24 | private double weightValue;
25 |
26 | /**
27 | * Instantiates a new PointRoomMap. The weight of each point will be set by 1 default.
28 | *
29 | * @param x the x coordinate of the point
30 | * @param y the y coordinate of the point
31 | */
32 | public PointRoomMap(double x, double y) {
33 | super(x, y);
34 | this.weightValue = 1;
35 | }
36 |
37 | /**
38 | * Sets the weight value in this point.
39 | *
40 | * @param weight the new weight value
41 | */
42 | public void setNewWeightValue(double weight) {
43 | this.weightValue = weight;
44 | }
45 |
46 | /**
47 | * Gets the weight value in this point.
48 | *
49 | * @return the weight value
50 | */
51 | public double getWeightValue() {
52 | return this.weightValue;
53 | }
54 |
55 | /**
56 | * Represents a string of this point.
57 | *
58 | * @return a string
59 | */
60 | @Override
61 | public String toString() {
62 | return "[" + this.getX() + ";" + this.getY() + ";weight=" + this.weightValue + "]";
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/helper/PointProbabilityMap.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: PointProbabilityMap.java
3 | * Date Author Changes
4 | * 08 Nov 2013 Tommy Griese create version 1.0
5 | * 03 Dec 2013 Tommy Griese added UID (because of serialization of Point2D.Double)
6 | */
7 | package algorithm.helper;
8 |
9 | /**
10 | * The class PointProbabilityMap represents a special point in a probability map.
11 | * Each point has a variable that represents the rssi value in this point
12 | * (this class is inherited by class {@link algorithm.helper.Point}).
13 | *
14 | * @version 1.1 03 Dec 2013
15 | * @author Tommy Griese
16 | * @see algorithm.helper.Point
17 | */
18 | public class PointProbabilityMap extends Point {
19 |
20 | /** UID of this class. */
21 | private static final long serialVersionUID = -4891789580153548216L;
22 |
23 | /** The rssi value in this point. */
24 | private double rssiValue;
25 |
26 | /**
27 | * Instantiates a new PointProbabilityMap.
28 | *
29 | * @param x the x coordinate of the point
30 | * @param y the y coordinate of the point
31 | * @param rssiValue the rssi value in this point
32 | */
33 | public PointProbabilityMap(double x, double y, double rssiValue) {
34 | super(x, y);
35 | this.rssiValue = rssiValue;
36 | }
37 |
38 | /**
39 | * Gets the rssi value in this point.
40 | *
41 | * @return the rssi value
42 | */
43 | public double getRSSIValue() {
44 | return this.rssiValue;
45 | }
46 |
47 | /**
48 | * Sets the rssi value in this point.
49 | *
50 | * @param rssiValue the new rssi value
51 | */
52 | public void setRSSIValue(double rssiValue) {
53 | this.rssiValue = rssiValue;
54 | }
55 |
56 | /**
57 | * Represents a string of this point.
58 | *
59 | * @return a string
60 | */
61 | @Override
62 | public String toString() {
63 | return "[" + this.getX() + ";" + this.getY() + ";rssi=" + this.rssiValue + "]";
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/RandomPositionAlgorithm.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: RandomPositionAlgorithm.java
3 | * Date Author Changes
4 | * 09 Nov 2013 Tommy Griese create version 1.0
5 | */
6 | package algorithm;
7 |
8 | import java.util.ArrayList;
9 | import java.util.HashMap;
10 |
11 | import algorithm.helper.Point;
12 |
13 | import components.Receiver;
14 | import components.RoomMap;
15 |
16 | /**
17 | * The class RandomPositionAlgorithm. This class creates some random numbers in a range of the given room map.
18 | * This class is just for testing purpose.
19 | *
20 | * @version 1.0 09 Nov 2013
21 | * @author Tommy Griese
22 | */
23 | public class RandomPositionAlgorithm extends PositionLocalizationAlgorithm {
24 |
25 | /**
26 | * Instantiates a RandomPositionAlgorithm.
27 | *
28 | * @param roommap the room map, used for the range of the random values
29 | * @param receivers the receivers (not used)
30 | */
31 | public RandomPositionAlgorithm(RoomMap roommap, ArrayList receivers) {
32 | super(roommap, receivers);
33 | }
34 |
35 | /**
36 | * Calculates a random position.
37 | *
38 | * @param readings the rssi values measured in dBm for all receivers (not used)
39 | * @return the calculated random position in a room will be returned in the form of a point ({@link algorithm.helper.Point})
40 | */
41 | @Override
42 | public Point calculate(HashMap readings) {
43 | double x = randomInteger(this.roommap.getXFrom(), this.roommap.getXTo());
44 | double y = randomInteger(this.roommap.getYFrom(), this.roommap.getYTo());
45 |
46 | return new Point(x, y);
47 | }
48 |
49 | /**
50 | * Determines a random integer.
51 | *
52 | * @param min the minimum value
53 | * @param max the maximum value
54 | * @return the random position
55 | */
56 | private double randomInteger(double min, double max) {
57 | return Math.random() * (max - min) + min;
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/comReader/main/gui/ThumbnailImagePanel.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui;
6 |
7 | import java.awt.Dimension;
8 | import java.awt.Graphics;
9 | import java.awt.Image;
10 | import java.awt.image.BufferedImage;
11 |
12 | import javax.swing.JPanel;
13 |
14 | import utilities.Utilities;
15 |
16 | /**
17 | * This class extends JPanel. It shows a thumbnail image of a ReceiverMap inside a
18 | * MapItem object.
19 | *
20 | * @see MapItem
21 | * @author Danilo
22 | */
23 | public class ThumbnailImagePanel extends JPanel {
24 |
25 | /** The Constant serialVersionUID. */
26 | private static final long serialVersionUID = 1L;
27 |
28 | /** The Constant THUMBNAIL_IMAGE_WIDTH. */
29 | private static final int THUMBNAIL_IMAGE_WIDTH = 130;
30 |
31 | /** The Constant THUMBNAIL_IMAGE_HEIGHT. */
32 | private static final int THUMBNAIL_IMAGE_HEIGHT = 160;
33 |
34 | /** The background image. */
35 | private Image backgroundImage;
36 |
37 | /**
38 | * Instantiates a new ThumbnailImagePanel.
39 | *
40 | * @param image
41 | * Image object
42 | */
43 | public ThumbnailImagePanel(Image image) {
44 |
45 | this.setSize(THUMBNAIL_IMAGE_WIDTH, THUMBNAIL_IMAGE_HEIGHT);
46 | this.setPreferredSize(new Dimension(THUMBNAIL_IMAGE_WIDTH, THUMBNAIL_IMAGE_HEIGHT));
47 | this.backgroundImage = Utilities.createThumbnailImageForContainer((BufferedImage) image, THUMBNAIL_IMAGE_WIDTH,
48 | THUMBNAIL_IMAGE_HEIGHT);
49 | }
50 |
51 | /*
52 | * (non-Javadoc)
53 | *
54 | * @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
55 | */
56 | @Override
57 | protected void paintComponent(Graphics g) {
58 | super.paintComponent(g);
59 |
60 | // Draw the background image at the center of the panel
61 | int x = (this.getWidth() - backgroundImage.getWidth(null)) / 2;
62 | int y = (this.getHeight() - backgroundImage.getHeight(null)) / 2;
63 |
64 | g.drawImage(this.backgroundImage, x, y, this);
65 | }
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/comReader/main/tests/RESTTest.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import java.io.IOException;
4 | import java.util.ArrayList;
5 | import java.util.List;
6 |
7 | import org.restlet.representation.Representation;
8 | import org.restlet.resource.ClientResource;
9 | import org.restlet.resource.ResourceException;
10 |
11 | import com.google.gson.JsonArray;
12 | import com.google.gson.JsonElement;
13 | import com.google.gson.JsonObject;
14 | import com.google.gson.JsonParser;
15 | import components.Receiver;
16 |
17 | public class RESTTest {
18 |
19 | public static void main(String[] args) {
20 | // Create the client resource
21 | ClientResource resource = new ClientResource(
22 | "http://shironambd.com/api/v1/receiver/?access_key=529a2d308333d14178f5c54d&format=json");
23 |
24 | // Write the response entity on the console
25 | try {
26 | // resource.get().write(System.out);
27 | Representation representation = resource.get();
28 | String response = representation.getText();
29 | parse(response);
30 |
31 | } catch (ResourceException e) {
32 | // TODO Auto-generated catch block
33 | e.printStackTrace();
34 | } catch (IOException e) {
35 | // TODO Auto-generated catch block
36 | e.printStackTrace();
37 | }
38 | }
39 |
40 | private static List parse(String jsonLine) {
41 |
42 | List receivers = new ArrayList();
43 | try {
44 | JsonElement jelement = new JsonParser().parse(jsonLine);
45 | JsonObject jobject = jelement.getAsJsonObject();
46 | // jobject = jobject.getAsJsonObject("data");
47 | JsonArray jarray = jobject.getAsJsonArray("objects");
48 |
49 | int receiverId = 0;
50 |
51 | int arrayLength = jarray.size();
52 | for (int i = 0; i < arrayLength; i++) {
53 | jobject = jarray.get(i).getAsJsonObject();
54 | receiverId = Integer.parseInt(jobject.get("receiverId").toString().trim());
55 | Receiver receiver = new Receiver(receiverId);
56 | receivers.add(receiver);
57 | }
58 | } catch (Exception e) {
59 |
60 | }
61 | return receivers;
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/comReader/main/tests/RESTTestReceiversForMapGET.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import java.io.IOException;
4 | import java.util.ArrayList;
5 | import java.util.List;
6 |
7 | import org.restlet.representation.Representation;
8 | import org.restlet.resource.ClientResource;
9 | import org.restlet.resource.ResourceException;
10 |
11 | import com.google.gson.JsonArray;
12 | import com.google.gson.JsonElement;
13 | import com.google.gson.JsonObject;
14 | import com.google.gson.JsonParser;
15 | import components.Receiver;
16 |
17 | public class RESTTestReceiversForMapGET {
18 |
19 | public static void main(String[] args) {
20 | // Create the client resource
21 | ClientResource resource = new ClientResource(
22 | "http://shironambd.com/api/v1/receiver/?access_key=529a2d308333d14178f5c54d&format=json"
23 | + "&mapId=0");
24 | String response = "";
25 | try {
26 | Representation representation = resource.get();
27 | response = representation.getText();
28 | } catch (ResourceException e) {
29 | e.printStackTrace();
30 | } catch (IOException e) {
31 | e.printStackTrace();
32 | }
33 | List receivers = new ArrayList();
34 | try {
35 | JsonElement jelement = new JsonParser().parse(response);
36 | JsonObject jobject = jelement.getAsJsonObject();
37 | JsonArray jarray = jobject.getAsJsonArray("objects");
38 |
39 | int receiverId = 0;
40 |
41 | int arrayLength = jarray.size();
42 | for (int i = 0; i < arrayLength; i++) {
43 | jobject = jarray.get(i).getAsJsonObject();
44 | receiverId = Integer.parseInt(jobject.get("receiverId").toString().trim());
45 | int x = jobject.get("x").getAsInt();
46 | int y = jobject.get("y").getAsInt();
47 | int mapId = jobject.get("mapId").getAsInt();
48 | Receiver receiver = new Receiver(receiverId);
49 | receiver.setxPos(x);
50 | receiver.setyPos(y);
51 | receivers.add(receiver);
52 | System.out.println(receiver);
53 | System.out.println(mapId);
54 | }
55 | } catch (Exception e) {
56 | e.printStackTrace();
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/weightFunction/WeightFunction.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: WeightFunction.java
3 | * Date Author Changes
4 | * 08 Dec 2013 Tommy Griese create version 1.0
5 | */
6 | package algorithm.weightFunction;
7 |
8 | import java.awt.geom.Line2D;
9 | import java.util.ArrayList;
10 |
11 | import algorithm.helper.Point;
12 | import algorithm.helper.PointProbabilityMap;
13 | import algorithm.helper.PointRoomMap;
14 |
15 | import components.Receiver;
16 | import components.RoomMap;
17 |
18 | /**
19 | * The class WeightFunction. This abstract class should be inherited by all implemented weight function classes.
20 | * It defines a method to weight the points in a room map.
21 | *
22 | * @version 1.0 08 Dec 2013
23 | * @author Tommy Griese
24 | */
25 | public abstract class WeightFunction {
26 |
27 | /**
28 | * Instantiates a new weight function.
29 | */
30 | public WeightFunction() {
31 | }
32 |
33 | /**
34 | * Test if the given point is located inside the convex hull or not.
35 | *
36 | * @param pRoomMap the point to be tested
37 | * @param convexHull the convex hull
38 | * @return true, if point is located inside the convex hull, false otherwise
39 | */
40 | protected boolean liesPointInConvexHull(PointRoomMap pRoomMap, ArrayList convexHull) {
41 | int size = convexHull.size();
42 | for (int i = 0; i < size; i++) {
43 | Point pStart = convexHull.get(i % size);
44 | Point pEnd = convexHull.get((i + 1) % size);
45 |
46 | if (Line2D.relativeCCW(pStart.x, pStart.y, pEnd.x, pEnd.y, pRoomMap.x, pRoomMap.y) == 1) {
47 | return false;
48 | }
49 | }
50 | return true;
51 | }
52 |
53 | /**
54 | * Abstract method weight. This method can be used to weight the room map.
55 | *
56 | * @param roommap the room map that should be weighted
57 | * @param receiver the current receiver for which this weighting should be done
58 | * @param convexHull the convex hull for the current receiver
59 | */
60 | public abstract void weight(RoomMap roommap, Receiver receiver, ArrayList convexHull);
61 | }
62 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/helper/Point.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: Point.java
3 | * Date Author Changes
4 | * 08 Nov 2013 Tommy Griese create version 1.0
5 | * Yentran Tran
6 | * 20 Nov 2013 Tommy Griese Added hashcode and equals method
7 | * 30 Nov 2013 Tommy Griese Added function norm2
8 | * 03 Dec 2013 Tommy Griese class inherits from java class Point2D.Double now (therefore unnecessary methods could be removed)
9 | */
10 | package algorithm.helper;
11 |
12 | import java.awt.geom.Point2D;
13 |
14 | /**
15 | * The class Point represents a point in a 2-Dimensional space. This class is inherited by the java class Point2D.Double
16 | *
17 | * @version 1.1 03 Dec 2013
18 | * @author Tommy Griese
19 | * @see java.awt.geom.Point2D.Double
20 | */
21 | public class Point extends Point2D.Double {
22 |
23 | /** UID of this class. */
24 | private static final long serialVersionUID = 2141258328792556002L;
25 |
26 | /**
27 | * Instantiates a new point.
28 | *
29 | * @param x the position on the x-axis
30 | * @param y the position on the y-axis
31 | */
32 | public Point(double x, double y) {
33 | super(x, y);
34 | }
35 |
36 | /**
37 | * Addition of a point.
38 | *
39 | * @param p the point to be added
40 | * @return a new instance of the point
41 | */
42 | public Point add(Point p) {
43 | return new Point(x + p.x, y + p.y);
44 | }
45 |
46 | /**
47 | * Negation of the point.
48 | *
49 | * @return a new instance of the point
50 | */
51 | public Point neg() {
52 | return new Point(-x, -y);
53 | }
54 |
55 | /**
56 | * Subtraction of a point.
57 | *
58 | * @param p the point to be subtracted
59 | * @return a new instance of the point
60 | */
61 | public Point sub(Point p) {
62 | return add(p.neg());
63 | }
64 |
65 | /**
66 | * Represents a string of this point.
67 | *
68 | * @return a string
69 | */
70 | @Override
71 | public String toString() {
72 | return "[" + this.getX() + ";" + this.getY() + "]";
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/RESTApi/restApp/resources.py:
--------------------------------------------------------------------------------
1 | # from tastypie import authorization as tastypie_authorization, fields as tastypie_fields
2 | from tastypie.authorization import Authorization
3 | from tastypie import authentication
4 | from tastypie_mongoengine import paginator, resources
5 | from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
6 |
7 | from restApp import documents
8 | from rssi_auth import RssiAuth
9 |
10 |
11 | class WatchResource(resources.MongoEngineResource):
12 | class Meta:
13 | queryset = documents.watchRecords.objects.order_by('-insertedAt')
14 |
15 | allowed_methods = ('put', 'post', 'get', 'delete')
16 |
17 | paginator_class = paginator.Paginator
18 |
19 | filtering = {
20 | "insertedAt" : ['gte','lte',],
21 | "mapId" : ['exact',],
22 | "watchId" : ['exact',],
23 | }
24 |
25 | excludes = ['resource_uri']
26 |
27 | authentication = RssiAuth()
28 | authorization=Authorization()
29 |
30 | resource_name = 'watch'
31 |
32 | class MapResource(resources.MongoEngineResource):
33 |
34 | class Meta:
35 |
36 | queryset = documents.mapRecords.objects.order_by('mapId')
37 |
38 | resource_name = 'map'
39 |
40 | allowed_methods = ('get', 'post', 'put', 'delete')
41 |
42 | filtering = {
43 | "mapId" : ['exact',],
44 | }
45 |
46 | authentication = RssiAuth()
47 | authorization=Authorization()
48 |
49 | excludes = ['resource_uri']
50 |
51 |
52 | class ReceiverResource(resources.MongoEngineResource):
53 | class Meta:
54 | queryset = documents.receiverRecords.objects.all()
55 |
56 | resource_name = 'receiver'
57 |
58 | allowed_methods = ('get', 'post', 'put', 'delete')
59 |
60 | filtering = {
61 | "mapId" : ['exact',],
62 | }
63 |
64 | authentication = RssiAuth()
65 | authorization=Authorization()
66 |
67 | paginator_class = paginator.Paginator
68 |
69 | excludes = ['resource_uri']
70 |
71 |
72 |
--------------------------------------------------------------------------------
/comReader/main/tests/COMReaderTest.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import main.Application;
4 |
5 | import com.sun.corba.se.pept.transport.ReaderThread;
6 |
7 | import data.COMPortDataReader;
8 | import data.DataProcessor;
9 | import data.DatabaseDataWriter;
10 | import data.SerialComm;
11 |
12 | public class COMReaderTest {
13 |
14 |
15 | /**
16 | * Instantiates a new reading from com port.
17 | */
18 | private COMReaderTest() {
19 |
20 | }
21 |
22 | static SerialComm s;
23 | static ReaderThread rdt;
24 |
25 | /**
26 | * The main method.
27 | *
28 | * @param args
29 | * the arguments
30 | */
31 | public static void main(String[] args) {
32 |
33 | /*
34 | * We instantiate the application simply by calling its "getApplication"
35 | * method, since it is a singleton class.
36 | */
37 |
38 | @SuppressWarnings("unused")
39 | Application application = Application.getApplication();
40 |
41 | /*
42 | * DataReader class reads data from COM port and converts it to usable
43 | * signal strengths. Then, it puts those values into the signals queue,
44 | * so that DataProcessor can calculate actual watch position in the
45 | * room, using one of the algorithms.
46 | *
47 | *
48 | */
49 |
50 | COMPortDataReader reader = new COMPortDataReader();
51 | reader.readData();
52 |
53 | /*
54 | * Controller class is used to change the algorithm. Default algorithm
55 | * is ProbabilityBasedAlgorithm. To change the algorithm, "setAlgorithm"
56 | * method of Controller class should be called:
57 | *
58 | * Application.getApplication().getController().setAlgorithm(new
59 | * MyNewAlgorithm(roomMap, receivers));
60 | */
61 |
62 | /*
63 | * DataProcessor class takes the signal strengths from the queue,
64 | * calculates the actual position using one of the algorithms and puts
65 | * the result (actual position in form of (X,Y)) into the positions
66 | * queue. After that, actual positions from this queue are sent to the
67 | * server.
68 | */
69 | DataProcessor processor = new DataProcessor();
70 | processor.processData();
71 |
72 | DatabaseDataWriter writer = new DatabaseDataWriter();
73 | writer.writeData();
74 |
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/comReader/main/gui/MapsPanel.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package gui;
6 |
7 | import java.awt.Color;
8 | import java.awt.Dimension;
9 | import java.awt.FlowLayout;
10 | import java.util.List;
11 |
12 | import javax.swing.JPanel;
13 |
14 | import main.Application;
15 | import components.RoomMap;
16 |
17 | /**
18 | * Contains MapItem objects that represent available RoomMaps in the data source.
19 | *
20 | * @author Danilo
21 | * @see RoomMap
22 | */
23 | public class MapsPanel extends JPanel {
24 |
25 | /** The Constant serialVersionUID. */
26 | private static final long serialVersionUID = 1L;
27 |
28 | /** The Constant MAPS_PANEL_WIDTH. */
29 | private static final int MAPS_PANEL_WIDTH = 620;
30 |
31 | /** The Constant WRAP_LAYOUT_FIX_HEIGHT. Used instead of MAPS_LAYOUT_HEIGHT */
32 | private static final int WRAP_LAYOUT_FIX_HEIGHT = 1;
33 |
34 | /** The Constant GRAY_COLOUR. */
35 | private static final int GRAY_COLOUR = 230;
36 |
37 | /**
38 | * Instantiates a new MapsPanel.
39 | */
40 | public MapsPanel() {
41 |
42 | setBackground(new Color(GRAY_COLOUR, GRAY_COLOUR, GRAY_COLOUR));
43 | setLayout(new WrapLayout(FlowLayout.LEADING));
44 | this.setSize(new Dimension(MAPS_PANEL_WIDTH, WRAP_LAYOUT_FIX_HEIGHT));
45 | // TODO: obtain all maps using MapDAO, iterate over them and add MapItems
46 | List allMaps = Application.getApplication().getMapDAO().getAllMaps();
47 |
48 | for (RoomMap roomMap : allMaps) {
49 | MapItem item = new MapItem(roomMap, this);
50 | this.add(item);
51 | }
52 | this.revalidate();
53 | }
54 |
55 | /**
56 | * Refreshes map items. This method is needed when new RoomMaps are added to the data source and we
57 | * want to display newly added RoomMaps.
58 | */
59 | public void refreshMapItems() {
60 |
61 | removeAll();
62 | List allMaps = Application.getApplication().getMapDAO().getAllMaps();
63 | for (RoomMap roomMap : allMaps) {
64 | MapItem item = new MapItem(roomMap, this);
65 | this.add(item);
66 | }
67 | revalidate();
68 | }
69 |
70 | public void removeMapItem(MapItem itemToDelete) {
71 | this.remove(itemToDelete);
72 | this.revalidate();
73 | this.repaint();
74 | }
75 |
76 | }
77 |
--------------------------------------------------------------------------------
/comReader/main/dao/MapDAO.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package dao;
6 |
7 | import java.util.List;
8 |
9 | import components.RoomMap;
10 |
11 | /**
12 | * MapDAO interface handles retrieving and storing of map information, RoomMap objects, to and from the
13 | * data source.
14 | *
15 | * @see components.RoomMap
16 | * @author Danilo
17 | */
18 | public interface MapDAO {
19 |
20 | /**
21 | * Gets all the RoomMap objects from the data source.
22 | *
23 | * @return List of all RoomMap objects
24 | * @see components.RoomMap
25 | */
26 | List getAllMaps();
27 |
28 | /**
29 | * Stores all the maps to the data source.
30 | *
31 | * @param allMaps
32 | * List of all RoomMap objects that exist in the data source
33 | * @see components.RoomMap
34 | */
35 | void setAllMaps(List allMaps);
36 |
37 | /**
38 | * Loads all the maps again from the data source. Method can be used, for example, after adding a new map to the
39 | * data source and a refresh is needed to show newly added maps.
40 | *
41 | * @see components.RoomMap
42 | * @see #getAllMaps()
43 | */
44 | void refreshMaps();
45 |
46 | /**
47 | * Stores a single RoomMap object to the data source. This method is used for saving changes to
48 | * existing maps.
49 | *
50 | * To add a new map to the data source, use MapDAO.addMap method instead.
51 | *
52 | * @param mapToSave
53 | * Existing RoomMap object
54 | * @see components.RoomMap
55 | * @see #addMap(RoomMap)
56 | */
57 | void saveMap(RoomMap mapToSave);
58 |
59 | /**
60 | * Adds the new RoomMap object to the data source.
61 | *
62 | * To save changes to an existing map, use
63 | * MapDAO.saveMap method instead.
64 | *
65 | * @param newMap
66 | * RoomMap object to add to the data source
67 | * @see components.RoomMap
68 | * @see #saveMap(RoomMap)
69 | */
70 | void addMap(RoomMap newMap);
71 |
72 | /**
73 | * Deletes a RoomMap object from the data source.
74 | *
75 | * @param mapToDelete
76 | * RoomMap object to delete
77 | * @see components.RoomMap
78 | */
79 | void deleteMap(RoomMap mapToDelete);
80 |
81 | }
82 |
--------------------------------------------------------------------------------
/comReader/main/tests/ReadingFromFileTest.java:
--------------------------------------------------------------------------------
1 | package tests;
2 |
3 | import java.io.File;
4 |
5 | import main.Application;
6 | import data.DataProcessor;
7 | import data.DataReader;
8 | import data.FileDataReader;
9 |
10 |
11 | /**
12 | * For ease of testing, application may read from a file instead of from COM port.
13 | * This class performs a test using a file.
14 | */
15 | public final class ReadingFromFileTest {
16 |
17 | /**
18 | * Instantiates a new reading from file test.
19 | */
20 | private ReadingFromFileTest() {
21 |
22 | }
23 |
24 | /**
25 | * The main method.
26 | *
27 | * @param args
28 | * the arguments
29 | */
30 | public static void main(String[] args) {
31 |
32 | /*
33 | * We instantiate the application simply by calling its "getApplication"
34 | * method, since it is a singleton class.
35 | */
36 |
37 | @SuppressWarnings("unused")
38 | Application application = Application.getApplication();
39 |
40 | /*
41 | * DataReader class reads data from COM port and converts it to usable
42 | * signal strengths. Then, it puts those values into the signals queue,
43 | * so that DataProcessor can calculate actual watch position in the
44 | * room, using one of the algorithms. For testing purposes, we are
45 | * reading sample data from a file. To read data from COM port, the
46 | * following line of code should be changed to:
47 | *
48 | * DataReader reader = new COMPortReader();
49 | */
50 |
51 | /*DataReader reader = new FileDataReader(new File("comReader"
52 | + File.separator + "main" + File.separator + "resources"
53 | + File.separator + "data.txt"));*/
54 |
55 | DataReader reader = new FileDataReader(new File("comReader"
56 | + File.separator + "main" + File.separator + "resources"
57 | + File.separator + "data.txt"));
58 | reader.readData();
59 |
60 | /*
61 | * Controller class is used to change the algorithm. Default algorithm
62 | * is ProbabilityBasedAlgorithm. To change the algorithm, "setAlgorithm"
63 | * method of Controller class should be called:
64 | *
65 | * Application.getApplication().getController().setAlgorithm(new
66 | * MyNewAlgorithm(roomMap, receivers));
67 | */
68 |
69 | /*
70 | * DataProcessor class takes the signal strengths from the queue,
71 | * calculates the actual position using one of the algorithms and puts
72 | * the result (actual position in form of (X,Y)) into the positions
73 | * queue. After that, actual positions from this queue are sent to the
74 | * server.
75 | */
76 | DataProcessor processor = new DataProcessor();
77 | processor.processData();
78 |
79 | }
80 |
81 | }
82 |
--------------------------------------------------------------------------------
/comReader/main/data/FileDataReaderRunnable.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | import java.io.BufferedReader;
8 | import java.io.File;
9 | import java.io.FileNotFoundException;
10 | import java.io.FileReader;
11 | import java.io.IOException;
12 | import java.util.ArrayList;
13 | import java.util.HashMap;
14 | import java.util.logging.Logger;
15 |
16 | import main.Application;
17 | import utilities.Utilities;
18 |
19 | /**
20 | * Thread that reads the data from a file. This class is used for testing purposes. It reads several lines from the
21 | * file, determined by NUM_OF_LINES_TO_READ_BEFORE_SLEEPING, and then sleeps for NUM_OF_MILLIS_TO_SLEEP_AFTER_READING
22 | * milliseconds. After reading a batch of signals, it calls Controler's addBatchSignalToQueue method to add the batch to
23 | * the queue for further processing.
24 | *
25 | * @author Danilo
26 | */
27 | public class FileDataReaderRunnable implements Runnable {
28 |
29 | /** The number of lines to read before sleeping. */
30 | private static final int SAMPLING_RATE = 15;
31 |
32 | /** Logger object. */
33 | private Logger logger;
34 |
35 | /** The file to read from. */
36 | private File file;
37 |
38 | /** The current batch. */
39 | private ArrayList currentBatch;
40 |
41 | /**
42 | * Instantiates a new FileDataReaderRunnable.
43 | *
44 | * @param newFile
45 | * File to read from.
46 | */
47 | public FileDataReaderRunnable(File newFile) {
48 |
49 | logger = Utilities.initializeLogger(this.getClass().getName());
50 | this.file = newFile;
51 | currentBatch = new ArrayList();
52 | }
53 |
54 | /*
55 | * (non-Javadoc)
56 | *
57 | * @see java.lang.Runnable#run()
58 | */
59 | @Override
60 | public void run() {
61 |
62 | FileReader fileReader = null;
63 | try {
64 | fileReader = new FileReader(file);
65 | } catch (FileNotFoundException e) {
66 |
67 | e.printStackTrace();
68 | }
69 |
70 | BufferedReader br = new BufferedReader(fileReader);
71 | String line = null;
72 | int numberOfLinesRead = 0;
73 |
74 | try {
75 | while ((line = br.readLine()) != null) {
76 |
77 | if (line.startsWith("REP")) {
78 | Reading reading = Utilities.createReading(line);
79 | currentBatch.add(reading);
80 | }
81 | numberOfLinesRead++;
82 |
83 | if (numberOfLinesRead >= SAMPLING_RATE) {
84 | HashMap> batchSignal = Utilities
85 | .calculateBatchSignalAverages(currentBatch);
86 | Application.getApplication().getController().addBatchSignalToQueue(batchSignal);
87 | currentBatch.clear();
88 | numberOfLinesRead = 0;
89 | }
90 | }
91 | } catch (IOException e) {
92 | logger.warning("There was an error while trying to read data from file. " + e.getMessage());
93 | }
94 | }
95 |
96 | }
97 |
--------------------------------------------------------------------------------
/RESTApi/restApp/dummyData/curl.sh:
--------------------------------------------------------------------------------
1 | #This file contains sample API call based on UNIX cURL
2 | -------------------------------------------------------------------------------------------------------------------------------------------------------
3 | #POST WATCH EXAMPLE:
4 |
5 | curl -i -H "Content-Type: application/json" -X POST -d '{"mapId": 2, "watchId": "12", "x": 12.3, "y": 3.4}' http://localhost:8000/api/v1/watch/
6 | #POST MAP EXAMPLE:
7 |
8 | curl -i -H "Content-Type: application/json" -X POST -d '{"mapId": 2, "receiverId": "12", "width": 12, "height": 3, "scaling": 1.5, "offsetX":23, "offsetY": 31}' http://localhost:8000/api/v1/map/
9 |
10 |
11 | curl -H "Content-Type: image/png" -d '{"mapId": 0, "receiverId": "0", "x": 0.3, "y": 0.3}' -F "image=@sample.png" http://localhost:8000/api/v1/map/?access_key=5298fe82fb21ab1b8b72533
12 |
13 | #POST RECEIVER EXAMPLE:
14 |
15 | curl -i -H "Content-Type: application/json" -X POST -d '{"receiverId": 2, "mapId": "13", "x": 12.3, "y": 3.4}' http://localhost:8000/api/v1/receiver/
16 |
17 |
18 | ______________________________________________________________________________________________________________________________________________________
19 |
20 | #PUT RECEIVER EXAMPLE:
21 |
22 | curl -i -H "Content-Type: application/json" -X PUT -d '{"mapId": 0, "receiverId": "0", "x": 0.3, "y": 0.3}' http://localhost:8000/api/v1/receiver/52988ae6fb21ab0abf74409d/
23 |
24 | #PUT WATCH EXAMPLE:
25 |
26 | curl -i -H "Content-Type: application/json" -X PUT -d '{"mapId": 0, "watchId": "03", "x": 0.36, "y": 0.53}' http://localhost:8000/api/v1/watch/52910635fb21ab1342722e3a/
27 |
28 | #PUT MAP EXAMPLE:
29 |
30 | curl -i -H "Content-Type: application/json" -X PUT -d '{"mapId": 0,"receiverId":"13", "width": 12, "height": 420, "scaling": 2.53 , "offsetX":1, "offsetY": 11}' http://localhost:8000/api/v1/map/52988921fb21ab0a25d35bf0/
31 |
32 |
33 | -------------------------------------------------------------------------------------------------------------------------------------------------------
34 |
35 | #DELETE RECEIVER EXAMPLE:
36 |
37 | curl -i -H "Content-Type: application/json" -X DELETE http://localhost:8000/api/v1/receiver/52988ae6fb21ab0abf74409f/
38 |
39 | -------------------------------------------------------------------------------------------------------------------------------------------------------
40 |
41 | #USER AUTH EXAMPLE:
42 |
43 | curl -d "username=name&password=word" http://localhost:8000/api/v1/authenticate/
44 |
45 |
46 |
47 | ##demo for meeting:
48 |
49 | curl -i -H "Content-Type: application/json" -X PUT -d '{"watchId": "0", "x": 12.3, "y": 3.4}' http://localhost:8000/api/v1/watch/52b38a3afb21ab32b448e93d/?access_key=5298fe82fb21ab1b8b725333
50 |
51 | map receiver ---
52 | curl -i -H "Content-Type: application/json" -X PUT -d '{"receiverId": 4, "x": 12.3, "y": 3.4}' http://localhost:8000/api/v1/receiver/52c69a19fb21ab04a6637244/?access_key=5298fe82fb21ab1b8b725333
--------------------------------------------------------------------------------
/AndroidApp/src/dataobjects/WatchPositionRecord.java:
--------------------------------------------------------------------------------
1 | package dataobjects;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * This class represent a single position of the watch. It includes the time when this position was tracked and the map
7 | * where the watch was detected
8 | * @author Silvio
9 | *
10 | */
11 | public class WatchPositionRecord
12 | {
13 | private String watchId = ""; //The unique watch id
14 |
15 | /**
16 | * Getter for watchId
17 | * @author Silvio
18 | * @return The id of the watch
19 | */
20 | public String getWatchId()
21 | {
22 | return watchId;
23 | }
24 |
25 | /**
26 | * Setter for the watchId
27 | * @author Silvio
28 | * @param watchId The id of the watch
29 | */
30 | public void setWatchId(String watchId)
31 | {
32 | this.watchId = watchId;
33 | }
34 |
35 | private Point position; //The position where the watch was detected
36 |
37 | /**
38 | * Getter for the watch position
39 | * @author Silvio
40 | * @return The position where the watch was detected
41 | */
42 | public Point getPosition()
43 | {
44 | return position;
45 | }
46 |
47 | /**
48 | * Setter for the watch position
49 | * @author Silvio
50 | * @param position The position to set
51 | */
52 | public void setPosition(Point position)
53 | {
54 | this.position = position;
55 | }
56 |
57 | private Date insertedAt = new Date(); // The time when the watch was detected
58 |
59 | /**
60 | * Getter for the insertion date
61 | * @author Silvio
62 | * @return The date when the watch was detected
63 | */
64 | public Date getInsertedAt()
65 | {
66 | return insertedAt;
67 | }
68 |
69 | /**
70 | * Setter for the insertion date
71 | * @author Silvio
72 | * @param insertedAt The date when the watch was detected
73 | */
74 | public void setInsertedAt(Date insertedAt)
75 | {
76 | this.insertedAt = insertedAt;
77 | }
78 |
79 | private int mapId = -1; // The unique map id of the map on which the watch was detected
80 |
81 | /**
82 | * Getter for the map id
83 | * @author Silvio
84 | * @return The unique map id of the map on which the watch was detected
85 | */
86 | public int getMapId()
87 | {
88 | return mapId;
89 | }
90 |
91 | /**
92 | * Setter for the map id
93 | * @author Silvio
94 | * @param mapId The unique map id of the map on which the watch was detected
95 | */
96 | public void setMapId(int mapId)
97 | {
98 | this.mapId = mapId;
99 | }
100 |
101 | @Override
102 | /**
103 | * This returns the object representation as a string
104 | * @author Silvio
105 | * @return The string which represent this object
106 | */
107 | public String toString()
108 | {
109 | String ret = "Location of " + watchId + " located at map " + mapId + " at position" + position + " at time " + insertedAt;
110 | return ret;
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/comReader/main/data/DataProcessorRunnable.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | import java.util.HashMap;
8 | import java.util.Map;
9 | import java.util.logging.Logger;
10 |
11 | import utilities.Utilities;
12 | import main.Application;
13 | import algorithm.helper.Point;
14 |
15 | /**
16 | * Implementation of Runnable. DataProcessorRunnable checks if the batchSignalQueue is empty.
17 | * If it is not empty, it takes a batch of signal strengths and performs algorithm calculations on them. After that, it
18 | * puts calculated values into the calculatedPositionsQueue. If the queue is empty, thread sleeps for constant number of
19 | * milliseconds, before checking if a new batch has arrived into the batchSignalQueue.
20 | *
21 | * @see data.DataProcessor
22 | * @author Danilo
23 | */
24 | public class DataProcessorRunnable implements Runnable {
25 |
26 | /** Time in milliseconds to put the thread to sleep before checking again is the queue empty. */
27 | private static final int TIME_TO_SLEEP_IF_QUEUE_EMPTY = 25;
28 | private Logger logger;
29 | private volatile boolean running = true;
30 |
31 | /**
32 | * Instantiates a new data processor runnable.
33 | */
34 | public DataProcessorRunnable() {
35 |
36 | running = true;
37 | logger = Utilities.initializeLogger(this.getClass().getName());
38 | }
39 |
40 | /**
41 | * (non-Javadoc).
42 | *
43 | * @see java.lang.Runnable#run()
44 | */
45 | @Override
46 | public void run() {
47 |
48 | while (running) {
49 |
50 | if (!Application.getApplication().getController().getBatchSignalQueue().isEmpty()) {
51 |
52 | // allSignalStrengths contains averaged signal strengths, from every receiver, for every watch
53 |
54 | HashMap> allSignalStrengths = Application.getApplication()
55 | .getController().getBatchSignalQueue().poll();
56 |
57 | // for every watch, send the average receivers strength to the algorithm for calculation
58 | for (Map.Entry> entry : allSignalStrengths.entrySet()) {
59 |
60 | Point position = Application.getApplication().getAlgorithm().calculate(entry.getValue());
61 | if (position == null) {
62 | //System.out.println("position is null");
63 | } else {
64 | int watchId = entry.getKey();
65 | long currentTime = System.currentTimeMillis();
66 | int mapId = Application.getApplication().getRoomMap().getId();
67 |
68 | WatchPositionData newData = new WatchPositionData(watchId, mapId, currentTime, position);
69 | Application.getApplication().getController().getCalculatedPositionsQueue().add(newData);
70 | }
71 | }
72 |
73 | } else { // queue is empty, check again later
74 |
75 | try {
76 | Thread.sleep(TIME_TO_SLEEP_IF_QUEUE_EMPTY);
77 | } catch (InterruptedException e) {
78 | logger.warning("Thread sleeping failed. " + e.getMessage());
79 | }
80 | }
81 | }
82 | } // end run
83 |
84 | /**
85 | * Terminate.
86 | */
87 | public void terminate() {
88 | running = false;
89 | }
90 |
91 | }
92 |
--------------------------------------------------------------------------------
/comReader/main/data/WatchPositionData.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *
4 | */
5 | package data;
6 |
7 | import java.util.logging.Logger;
8 |
9 | import utilities.Utilities;
10 | import algorithm.helper.Point;
11 |
12 | /**
13 | * Contains the information about watch x and y coordinates, watch id and the time when the calculation occurred.
14 | *
15 | * @author Danilo
16 | */
17 | public class WatchPositionData {
18 |
19 | /** Logger object. */
20 | @SuppressWarnings("unused")
21 | private Logger logger;
22 |
23 | /** The watch id. */
24 | private int watchId;
25 |
26 | private int mapId;
27 |
28 | public WatchPositionData(int watchId, int mapId, long time, Point position) {
29 | super();
30 | this.watchId = watchId;
31 | this.mapId = mapId;
32 | this.time = time;
33 | this.position = position;
34 | }
35 |
36 | public int getMapId() {
37 | return mapId;
38 | }
39 |
40 | public void setMapId(int mapId) {
41 | this.mapId = mapId;
42 | }
43 |
44 | /**
45 | * The time when reading was calculated. This is also used in the database as the time when the reading occurred.
46 | *
47 | */
48 | private long time;
49 |
50 | /** The position of the watch. */
51 | private Point position;
52 |
53 | /**
54 | * Instantiates a new watch position data.
55 | */
56 | public WatchPositionData() {
57 | logger = Utilities.initializeLogger(this.getClass().getName());
58 | }
59 |
60 | /**
61 | * Gets the watch id.
62 | *
63 | * @return the watch id
64 | */
65 | public int getWatchId() {
66 | return watchId;
67 | }
68 |
69 | /**
70 | * Sets the watch id.
71 | *
72 | * @param watchId
73 | * the new watch id
74 | */
75 | public void setWatchId(int watchId) {
76 | this.watchId = watchId;
77 | }
78 |
79 | /**
80 | * Gets the time.
81 | *
82 | * @return the time
83 | */
84 | public long getTime() {
85 | return time;
86 | }
87 |
88 | /**
89 | * Sets the time.
90 | *
91 | * @param time
92 | * the new time
93 | */
94 | public void setTime(long time) {
95 | this.time = time;
96 | }
97 |
98 | /**
99 | * Gets the position.
100 | *
101 | * @return the position
102 | */
103 | public Point getPosition() {
104 | return position;
105 | }
106 |
107 | /**
108 | * Sets the position.
109 | *
110 | * @param position
111 | * the new position
112 | */
113 | public void setPosition(Point position) {
114 | this.position = position;
115 | }
116 |
117 | /**
118 | * Instantiates a new watch position data.
119 | *
120 | * @param watchId
121 | * the watch id
122 | * @param time
123 | * the time
124 | * @param position
125 | * the position
126 | */
127 | public WatchPositionData(int watchId, long time, Point position) {
128 | super();
129 | this.watchId = watchId;
130 | this.time = time;
131 | this.position = position;
132 | }
133 |
134 | /*
135 | * (non-Javadoc)
136 | *
137 | * @see java.lang.Object#toString()
138 | */
139 | @Override
140 | public String toString() {
141 | return "Watch id: " + watchId + ", time: " + time + ", position: " + position.toString();
142 | }
143 |
144 | }
145 |
--------------------------------------------------------------------------------
/comReader/main/components/Receiver.java:
--------------------------------------------------------------------------------
1 | /*
2 | * File: Receiver.java
3 | * Date Author Changes
4 | * 08 Nov 2013 Tommy Griese create version 1.0
5 | * Yentran Tran
6 | */
7 | package components;
8 |
9 | /**
10 | * The class Receiver. A receiver represents the its location, its angle and id.
11 | *
12 | * @version 1.0 08 Nov 2013
13 | * @author Tommy Griese
14 | */
15 | public class Receiver implements Cloneable {
16 |
17 | /** The angle of the receiver. */
18 | private double angle;
19 |
20 | /** The x-coordinate of the receiver. */
21 | private double xPos;
22 |
23 | /** The y-coordinate of the receiver. */
24 | private double yPos;
25 |
26 | /** The id of the receiver. */
27 | private int id;
28 |
29 | private boolean onMap;
30 |
31 |
32 |
33 | public Receiver() {
34 | super();
35 | }
36 |
37 | /**
38 | * Instantiates a new receiver.
39 | *
40 | * @param id
41 | * the id of the receiver
42 | * @param xPos
43 | * the x-coordinate of the receivers position
44 | * @param yPos
45 | * the y-coordinate of the receivers position
46 | * @param angle
47 | * the angle of the receiver
48 | */
49 | public Receiver(int id, double xPos, double yPos, double angle) {
50 | this.id = id;
51 | this.xPos = xPos;
52 | this.yPos = yPos;
53 | this.angle = angle;
54 | this.onMap = false;
55 | }
56 |
57 | public Receiver(int id, double xPos, double yPos, double angle, boolean onMap) {
58 | super();
59 | this.angle = angle;
60 | this.xPos = xPos;
61 | this.yPos = yPos;
62 | this.id = id;
63 | this.onMap = onMap;
64 | }
65 |
66 | public Receiver(int id) {
67 | super();
68 | this.id = id;
69 | this.onMap = false;
70 | }
71 |
72 | /**
73 | * Gets the id of the receiver.
74 | *
75 | * @return the id
76 | */
77 | public int getID() {
78 | return this.id;
79 | }
80 |
81 | /**
82 | * Gets the x-coordinate of the receiver.
83 | *
84 | * @return the x-coordinate
85 | */
86 | public double getXPos() {
87 | return this.xPos;
88 | }
89 |
90 | /**
91 | * Gets the y-coordinate of the receiver.
92 | *
93 | * @return the y-coordinate
94 | */
95 | public double getYPos() {
96 | return this.yPos;
97 | }
98 |
99 | /**
100 | * Gets the angle of the receiver.
101 | *
102 | * @return the angle of the receiver
103 | */
104 | public double getAngle() {
105 | return this.angle;
106 | }
107 |
108 | public boolean isOnMap() {
109 | return onMap;
110 | }
111 |
112 | public void setOnMap(boolean onMap) {
113 | this.onMap = onMap;
114 | }
115 |
116 | public void setxPos(double xPos) {
117 | this.xPos = xPos;
118 | }
119 |
120 | public void setyPos(double yPos) {
121 | this.yPos = yPos;
122 | }
123 |
124 | public void setAngle(double angle) {
125 |
126 | if (angle >= 360) {
127 |
128 | this.angle = angle % 360;
129 | } else if (angle < 0) {
130 |
131 | this.angle = 360 - (-angle % 360);
132 | } else {
133 |
134 | this.angle = angle;
135 | }
136 |
137 | }
138 |
139 | @Override
140 | public String toString() {
141 |
142 | return "Id: " + id + "\nPosition x: " + xPos + "\nPosition y: " + yPos + "\nAngle: " + angle + "\nOn map: " + onMap;
143 | }
144 |
145 | @Override
146 | public Object clone() throws CloneNotSupportedException {
147 |
148 | return super.clone();
149 | }
150 | }
151 |
--------------------------------------------------------------------------------
/comReader/main/gui/ReceiversPanel.java:
--------------------------------------------------------------------------------
1 | package gui;
2 |
3 | import gui.enumeration.AddMapDialogMode;
4 |
5 | import java.awt.Color;
6 | import java.awt.Dimension;
7 | import java.awt.FlowLayout;
8 | import java.util.ArrayList;
9 | import java.util.List;
10 |
11 | import javax.swing.JPanel;
12 |
13 | import components.Receiver;
14 |
15 | /**
16 | * This class extends JPanel and contains ReceiverButtons.
17 | *
18 | * @see ReceiverButton
19 | * @author Danilo
20 | */
21 | public class ReceiversPanel extends JPanel {
22 |
23 | /** The Constant serialVersionUID. */
24 | private static final long serialVersionUID = 1L;
25 |
26 | /** The Constant PANEL_WIDTH. */
27 | private static final int PANEL_WIDTH = 950;
28 |
29 | /** The Constant PANEL_HEIGHT. */
30 | private static final int PANEL_HEIGHT = 40;
31 |
32 | private static final int LIGHTER_GRAY_COULOUR = 230;
33 |
34 | /** The receiver buttons. */
35 | private List receiverButtons;
36 |
37 | /** The add map dialog. */
38 | private AddMapDialog addMapDialog;
39 |
40 | /** The all receivers. */
41 | private List allReceivers;
42 |
43 | /** The receivers on map. */
44 | private List receiversOnMap;
45 |
46 | /**
47 | * Instantiates a new receivers panel.
48 | *
49 | * @param addMapDialog
50 | * AddMapDialog parent component
51 | * @param allReceivers
52 | * List of all Receivers in the data source
53 | * @param receiversOnMap
54 | * List of all Receivers that are on the map
55 | */
56 | public ReceiversPanel(AddMapDialog addMapDialog, List allReceivers, List receiversOnMap) {
57 |
58 | if (addMapDialog.getOpeningMode() == AddMapDialogMode.ADD) {
59 | this.receiversOnMap = new ArrayList();
60 | } else {
61 | this.receiversOnMap = receiversOnMap;
62 | }
63 |
64 | this.addMapDialog = addMapDialog;
65 | this.allReceivers = allReceivers;
66 |
67 | this.receiverButtons = new ArrayList();
68 | initialize();
69 | }
70 |
71 | /**
72 | * Initializes ReceiversPanel. It sets the appropriate ReceiverButtonState for every
73 | * ReceiverButton, according to its presence on the map.
74 | */
75 | private void initialize() {
76 |
77 | setSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
78 | setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
79 | setLayout(new FlowLayout(FlowLayout.LEFT));
80 | setBackground(new Color(LIGHTER_GRAY_COULOUR, LIGHTER_GRAY_COULOUR, LIGHTER_GRAY_COULOUR));
81 |
82 | for (Receiver receiver : allReceivers) {
83 | if (isReceiverOnMap(receiver)) {
84 | receiver.setOnMap(true);
85 | }
86 | }
87 |
88 | for (Receiver receiver : allReceivers) {
89 | ReceiverButton button = new ReceiverButton(receiver, addMapDialog);
90 | receiverButtons.add(button);
91 | this.add(button);
92 | }
93 | }
94 |
95 | /**
96 | * Checks if Receiver is on map.
97 | *
98 | * @param receiver
99 | * the receiver
100 | * @return true, if successful
101 | */
102 | private boolean isReceiverOnMap(Receiver receiver) {
103 |
104 | for (Receiver aReceiver : receiversOnMap) {
105 | if (aReceiver.getID() == receiver.getID()) {
106 | return true;
107 | }
108 | }
109 | return false;
110 | }
111 |
112 | }
113 |
--------------------------------------------------------------------------------
/comReader/main/algorithm/ProximityAlgorithm.java:
--------------------------------------------------------------------------------
1 | package algorithm;
2 |
3 | import java.util.ArrayList;
4 | import java.util.HashMap;
5 | import java.util.Map;
6 |
7 | import algorithm.helper.Point;
8 |
9 | import components.Receiver;
10 | import components.RoomMap;
11 | /**
12 | * The proximity algorithm aims to locate the receiver which the highest signal.
13 | */
14 | public class ProximityAlgorithm extends PositionLocalizationAlgorithm {
15 | /**
16 | * id is the Receiver ID
17 | */
18 | private int id;
19 |
20 | /**
21 | * @param roommap defines the room map dimensions (is needed to create a list of weighted room map points)
22 | * @param receivers a list of receivers that the algorithm should take into account
23 | */
24 | public ProximityAlgorithm(RoomMap roommap, ArrayList receivers) {
25 | super(roommap, receivers);
26 |
27 | }
28 | /**
29 | * Return the position of a point depending of the given readings. The position belongs to the receiver with
30 | * highest signal strength
31 | * @param reading the rssi values measured in dBm for all receivers
32 | * @return the calculated position in a room will be returned in the form of a point ({@link algorithm.helper.Point})
33 | */
34 | @Override
35 | public Point calculate(HashMap readings) {
36 |
37 | return giveStrongestSignal(readings);
38 |
39 | }
40 |
41 | /**
42 | * With this method it is possible to find out which receiver has the highest RSSI value. Each RSSI value from each receiver is
43 | * compared to each other. The highest value is stored in the parameter strongestSignalValue.
44 | * Also the belonging receiver ID is stored which is used for the method getReceiver
45 | * @param readings the rssi values measured in dBm for all receivers
46 | * @return the calculated position in a room will be returned in the form of a point ({@link algorithm.helper.Point})
47 | */
48 | private Point giveStrongestSignal (HashMap readings) {
49 | //get a value from the HashMap
50 | Map.Entry firstValue = readings.entrySet().iterator().next();
51 | //Check if the RSSI value is equal empty
52 | for(Map.Entry e : readings.entrySet())
53 | if (firstValue.getValue() == null)
54 | firstValue = e;
55 |
56 | if (firstValue.getValue() != null) {
57 | double strongestSignalValue = firstValue.getValue();
58 |
59 | for (Map.Entry e : readings.entrySet()) {
60 | if (e.getValue() > strongestSignalValue) {
61 | strongestSignalValue = e.getValue();
62 | id = e.getKey();
63 | }
64 | }
65 | Receiver receiverStrongestSignal = getReceiver(receivers, id);
66 |
67 | if (receiverStrongestSignal != null){
68 | Point strongestSignal = new Point(receiverStrongestSignal.getXPos(), receiverStrongestSignal.getYPos());
69 | return strongestSignal;
70 | }
71 | else {
72 | return null;
73 | }
74 | }
75 | else {
76 | return null;
77 | }
78 | }
79 |
80 |
81 |
82 |
83 |
84 | /**
85 | * Searches for the receiver with the given id in the receiver array list.
86 | *
87 | * @param receivers the list of receivers in that the search will be performed
88 | * @param id the id of the possible receiver
89 | * @return the receiver if found, null otherwise
90 | */
91 | private Receiver getReceiver(ArrayList receivers, int id) {
92 | for (int i = 0; i < receivers.size(); i++) {
93 | if (receivers.get(i).getID() == id) {
94 | return receivers.get(i);
95 | }
96 | }
97 | return null;
98 | }
99 |
100 | }
101 |
--------------------------------------------------------------------------------