├── .gitignore ├── .pydevproject ├── AndroidApp ├── .gitignore ├── AndroidManifest.xml ├── gen │ └── com │ │ └── example │ │ └── chronolocalization │ │ ├── BuildConfig.java │ │ └── R.java ├── ic_launcher-web.png ├── libs │ └── android-support-v4.jar ├── res │ ├── drawable-hdpi │ │ ├── start.png │ │ └── stop.png │ ├── drawable-mdpi │ │ ├── ic_launcher.png │ │ ├── start.png │ │ └── stop.png │ ├── drawable-xhdpi │ │ ├── ic_launcher.png │ │ ├── start.png │ │ └── stop.png │ ├── drawable-xxhdpi │ │ ├── ic_launcher.png │ │ ├── start.png │ │ └── stop.png │ ├── drawable │ │ ├── logo_k.jpg │ │ ├── start.png │ │ ├── start_screen.jpg │ │ └── stop.png │ ├── layout │ │ └── activity_watch_user.xml │ ├── menu │ │ └── main.xml │ ├── values-sw600dp │ │ └── dimens.xml │ ├── values-sw720dp-land │ │ └── dimens.xml │ ├── values-v11 │ │ └── styles.xml │ ├── values-v14 │ │ └── styles.xml │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml └── src │ ├── dataobjects │ ├── CoordinateTransformation.java │ ├── MapRecord.java │ ├── Point.java │ ├── ReceiverRecord.java │ ├── ResponseParser.java │ └── WatchPositionRecord.java │ ├── services │ └── RestMapService.java │ └── userInterface │ ├── MapImageView.java │ └── WatchUserActivity.java ├── README.md ├── RESTApi ├── .coverage ├── classes_Pyreverse.svg ├── manage.py ├── packages_Pyreverse.svg ├── requirements.txt ├── restApp │ ├── __init__.py │ ├── documents.py │ ├── dummyData │ │ ├── __init__.py │ │ ├── curl.sh │ │ ├── dummydata.py │ │ ├── sampleData.json │ │ ├── setup_django.py │ │ └── testdata.txt │ ├── index.wsgi │ ├── middleware.py │ ├── models.py │ ├── resources.py │ ├── rssi_auth.py │ ├── scripts │ │ ├── benchmark.py │ │ ├── create_user.py │ │ ├── icon_2.png │ │ ├── imageUpload.py │ │ ├── insert_receivers.py │ │ ├── mongo_utility.sh │ │ ├── r.sh │ │ ├── sampleMap1.jpg │ │ ├── sampleMap2.jpg │ │ └── setup_django.py │ ├── serializer.py │ ├── settings.py │ ├── tests │ │ ├── __init__.py │ │ ├── configuration.py │ │ ├── runner.py │ │ ├── setup_django.py │ │ ├── test_image_retreive.py │ │ ├── test_map_records.py │ │ ├── test_receiver_records.py │ │ └── test_watch_records.py │ ├── urls.py │ ├── views.py │ └── wsgi.py └── user_models.svg ├── comReader ├── JUnitTests │ └── algorithm │ │ ├── Env.odt │ │ ├── KalmanFilterTest.java │ │ ├── ProbabilityBased │ │ ├── testBehaviorOfMethodCalculation │ │ │ ├── grayscaleImage_pic1.png │ │ │ ├── grayscaleImage_pic2.png │ │ │ ├── grayscaleImage_pic3.png │ │ │ ├── grayscaleImage_pic4.png │ │ │ └── grayscaleImage_pic5.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 │ │ ├── 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_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_pic3.png │ │ │ ├── grayscaleImage_pic4.png │ │ │ ├── grayscaleImage_pic5.png │ │ │ ├── grayscaleImage_pic6.png │ │ │ ├── grayscaleImage_pic7.png │ │ │ ├── grayscaleImage_pic8.png │ │ │ └── grayscaleImage_pic9.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 │ │ ├── ProbabilityBasedAlgorithmTest.java │ │ ├── ProximityAlgorithmTest.java │ │ └── kalmanfilter │ │ └── testOutputGrayscaleImage │ │ └── grayscaleImage_pic1.png ├── configuration │ ├── config.ini │ ├── images │ │ ├── clockwise.png │ │ ├── counterClockwise.png │ │ ├── lowerLeftMarker.png │ │ ├── map1.png │ │ ├── map10.png │ │ ├── map11.png │ │ ├── map12.png │ │ ├── map2.png │ │ ├── map3.png │ │ ├── map5.jpg │ │ ├── map5.png │ │ ├── map6.png │ │ ├── map7.png │ │ ├── map8.png │ │ ├── map9.png │ │ ├── minus.png │ │ ├── plus.png │ │ ├── receiverView.png │ │ ├── receiverView0.png │ │ ├── receiverView135.png │ │ ├── receiverView180.png │ │ ├── receiverView225.png │ │ ├── receiverView270.png │ │ ├── receiverView315.png │ │ ├── receiverView45.png │ │ ├── receiverView90.png │ │ ├── room_4m_6m.png │ │ ├── sampleMap.png │ │ ├── start.png │ │ ├── stop.png │ │ ├── test_room_fifth_floor.png │ │ ├── upperRightMarker.png │ │ └── zeroCoordinateView.png │ └── log.log └── main │ ├── algorithm │ ├── PositionLocalizationAlgorithm.java │ ├── ProbabilityBasedAlgorithm.java │ ├── ProximityAlgorithm.java │ ├── RandomPositionAlgorithm.java │ ├── filter │ │ ├── Filter.java │ │ └── KalmanFilter.java │ ├── helper │ │ ├── FastConvexHull.java │ │ ├── Line.java │ │ ├── Point.java │ │ ├── PointProbabilityMap.java │ │ └── PointRoomMap.java │ ├── images │ │ └── GrayscaleImages.java │ ├── probabilityMap │ │ ├── ProbabilityMap.java │ │ ├── ProbabilityMapPathLossCircle.java │ │ └── ProbabilityMapPathLossElliptic.java │ └── weightFunction │ │ ├── WeightFunction.java │ │ ├── WeightFunctionExtended.java │ │ └── WeightFunctionSimple.java │ ├── components │ ├── Receiver.java │ └── RoomMap.java │ ├── dao │ ├── HardcodedMapDAO.java │ ├── HardcodedReceiverDAO.java │ ├── MapDAO.java │ ├── MongoDatabaseMapDAO.java │ ├── MongoDatabaseReceiverDAO.java │ └── ReceiverDAO.java │ ├── data │ ├── COMPortDataReader.java │ ├── ComPortDataReaderRunnable.java │ ├── Controller.java │ ├── DataProcessor.java │ ├── DataProcessorRunnable.java │ ├── DataReader.java │ ├── DataWriter.java │ ├── DatabaseDataWriter.java │ ├── DatabaseDataWriterRunnable.java │ ├── FileDataReader.java │ ├── FileDataReaderRunnable.java │ ├── Reading.java │ ├── SerialComm.java │ └── WatchPositionData.java │ ├── gui │ ├── AddMapDialog.java │ ├── CoordinateZeroMarkerView.java │ ├── ImageFilter.java │ ├── MainFrame.java │ ├── MapItem.java │ ├── MapPreviewPanel.java │ ├── MapsPanel.java │ ├── MenuBar.java │ ├── ParametersPanel.java │ ├── ReceiverButton.java │ ├── ReceiverView.java │ ├── ReceiversPanel.java │ ├── StatusPanel.java │ ├── ThumbnailImagePanel.java │ ├── WrapLayout.java │ ├── enumeration │ │ ├── AddMapDialogMode.java │ │ ├── CoordinateZeroMarkerViewType.java │ │ ├── PositionLocalizationAlgorithmType.java │ │ ├── ReceiverButtonState.java │ │ └── StartStopButtonState.java │ └── observer │ │ ├── Observable.java │ │ └── Observer.java │ ├── main │ ├── Application.java │ └── Start.java │ ├── resources │ ├── .gitignore │ ├── RXTXcomm.jar │ ├── data.txt │ ├── fileName.txt │ ├── gson-2.2.4.jar │ ├── javax.ws.rs-api-2.0.jar │ ├── jettison-1.3.3.jar │ ├── log4j-1.2.17.jar │ ├── mongo-java-driver-2.9.3.jar │ └── org.restlet.jar │ ├── rest │ └── MongoDatabaseReceiverWrapper.java │ ├── tests │ ├── .gitignore │ ├── COMReaderTest.java │ ├── DirectMapUploadTest.java │ ├── GUITest.java │ ├── LoggerTest.java │ ├── PerformanceTestFloatVsDouble.java │ ├── RESTTest.java │ ├── RESTTestMapsGET.java │ ├── RESTTestReceiverPOST.java │ ├── RESTTestReceiverPUT.java │ ├── RESTTestReceiversForMapGET.java │ ├── ReadingFromFileTest.java │ └── _Test.java │ └── utilities │ ├── ComponentMover.java │ └── Utilities.java └── fabfile.py /.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 | -------------------------------------------------------------------------------- /.pydevproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | Default 4 | python 2.7 5 | 6 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /AndroidApp/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /AndroidApp/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/ic_launcher-web.png -------------------------------------------------------------------------------- /AndroidApp/libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/libs/android-support-v4.jar -------------------------------------------------------------------------------- /AndroidApp/res/drawable-hdpi/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-hdpi/start.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-hdpi/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-hdpi/stop.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-mdpi/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-mdpi/start.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-mdpi/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-mdpi/stop.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-xhdpi/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-xhdpi/start.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-xhdpi/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-xhdpi/stop.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-xxhdpi/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-xxhdpi/start.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable-xxhdpi/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable-xxhdpi/stop.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable/logo_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable/logo_k.jpg -------------------------------------------------------------------------------- /AndroidApp/res/drawable/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable/start.png -------------------------------------------------------------------------------- /AndroidApp/res/drawable/start_screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable/start_screen.jpg -------------------------------------------------------------------------------- /AndroidApp/res/drawable/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/AndroidApp/res/drawable/stop.png -------------------------------------------------------------------------------- /AndroidApp/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /AndroidApp/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /AndroidApp/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /AndroidApp/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF0000 4 | 5 | 6 | -------------------------------------------------------------------------------- /AndroidApp/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /AndroidApp/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | rssi-system 2 | =========== 3 | **RSSI based indoor localization project.** 4 | 5 | [![GitHub version](https://badge.fury.io/gh/mushfiq%2Frssi-system.png)](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" -------------------------------------------------------------------------------- /RESTApi/.coverage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/RESTApi/.coverage -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /RESTApi/restApp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/RESTApi/restApp/__init__.py -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /RESTApi/restApp/dummyData/__init__.py: -------------------------------------------------------------------------------- 1 | ''' init for module''' -------------------------------------------------------------------------------- /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 -------------------------------------------------------------------------------- /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/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() -------------------------------------------------------------------------------- /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/models.py: -------------------------------------------------------------------------------- 1 | #file for conf checking error escaping -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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() -------------------------------------------------------------------------------- /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/icon_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/RESTApi/restApp/scripts/icon_2.png -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 -------------------------------------------------------------------------------- /RESTApi/restApp/scripts/sampleMap1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/RESTApi/restApp/scripts/sampleMap1.jpg -------------------------------------------------------------------------------- /RESTApi/restApp/scripts/sampleMap2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/RESTApi/restApp/scripts/sampleMap2.jpg -------------------------------------------------------------------------------- /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/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 -------------------------------------------------------------------------------- /RESTApi/restApp/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/RESTApi/restApp/tests/__init__.py -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | ) -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/JUnitTests/algorithm/Env.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/Env.odt -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic2.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic3.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic4.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testBehaviorOfMethodCalculation/grayscaleImage_pic5.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic10.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic11.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic12.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic13.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic14.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic15.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic16.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic17.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic18.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic19.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic2.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic20.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic21.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic22.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic23.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic24.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic25.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic26.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic27.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic28.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic29.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic3.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic30.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic31.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic32.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic33.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic34.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic35.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic36.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic37.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic38.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic39.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic4.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic40.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic41.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic42.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic43.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic44.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic5.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic6.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic7.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic8.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testConvexHullTransformation/grayscaleImage_pic9.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic10.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic2.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic3.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic4.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic5.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic6.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic7.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic8.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testFourReceiver/grayscaleImage_pic9.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic10.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic11.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic12.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic13.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic14.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic15.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic16.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic17.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic18.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic19.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic2.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic20.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic21.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic22.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic23.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic24.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic25.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic26.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic3.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic4.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic5.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic6.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic7.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic8.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testOneReceiver/grayscaleImage_pic9.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic10.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic11.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic12.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic13.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic14.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic15.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic16.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic17.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic18.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic19.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic2.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic20.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic21.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic22.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic23.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic24.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic25.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic26.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic27.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic28.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic3.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic4.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic5.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic6.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic7.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic8.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testThreeReceiver/grayscaleImage_pic9.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic10.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic11.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic12.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic13.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic14.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic15.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic16.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic17.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic18.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic19.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic2.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic20.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic21.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic22.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic23.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic24.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic3.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic4.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic5.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic6.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic7.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic8.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testTwoReceiver/grayscaleImage_pic9.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic10.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic11.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic12.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic13.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic14.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic15.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic16.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic17.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic18.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic19.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic2.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic20.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic21.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic22.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic23.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic24.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic25.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic26.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic27.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic28.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic29.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic3.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic30.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic31.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic32.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic33.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic34.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic35.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic36.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic37.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic38.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic39.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic4.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic40.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic41.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic42.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic43.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic44.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic45.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic46.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic47.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic48.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic49.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic5.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic50.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic51.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic52.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic53.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic54.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic55.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic56.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic57.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic58.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic59.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic6.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic60.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic7.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic8.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/ProbabilityBased/testWeightFunction/grayscaleImage_pic9.png -------------------------------------------------------------------------------- /comReader/JUnitTests/algorithm/kalmanfilter/testOutputGrayscaleImage/grayscaleImage_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/JUnitTests/algorithm/kalmanfilter/testOutputGrayscaleImage/grayscaleImage_pic1.png -------------------------------------------------------------------------------- /comReader/configuration/images/clockwise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/clockwise.png -------------------------------------------------------------------------------- /comReader/configuration/images/counterClockwise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/counterClockwise.png -------------------------------------------------------------------------------- /comReader/configuration/images/lowerLeftMarker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/lowerLeftMarker.png -------------------------------------------------------------------------------- /comReader/configuration/images/map1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map1.png -------------------------------------------------------------------------------- /comReader/configuration/images/map10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map10.png -------------------------------------------------------------------------------- /comReader/configuration/images/map11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map11.png -------------------------------------------------------------------------------- /comReader/configuration/images/map12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map12.png -------------------------------------------------------------------------------- /comReader/configuration/images/map2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map2.png -------------------------------------------------------------------------------- /comReader/configuration/images/map3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map3.png -------------------------------------------------------------------------------- /comReader/configuration/images/map5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map5.jpg -------------------------------------------------------------------------------- /comReader/configuration/images/map5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map5.png -------------------------------------------------------------------------------- /comReader/configuration/images/map6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map6.png -------------------------------------------------------------------------------- /comReader/configuration/images/map7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map7.png -------------------------------------------------------------------------------- /comReader/configuration/images/map8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map8.png -------------------------------------------------------------------------------- /comReader/configuration/images/map9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/map9.png -------------------------------------------------------------------------------- /comReader/configuration/images/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/minus.png -------------------------------------------------------------------------------- /comReader/configuration/images/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/plus.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView0.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView135.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView135.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView180.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView225.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView225.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView270.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView270.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView315.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView315.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView45.png -------------------------------------------------------------------------------- /comReader/configuration/images/receiverView90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/receiverView90.png -------------------------------------------------------------------------------- /comReader/configuration/images/room_4m_6m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/room_4m_6m.png -------------------------------------------------------------------------------- /comReader/configuration/images/sampleMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/sampleMap.png -------------------------------------------------------------------------------- /comReader/configuration/images/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/start.png -------------------------------------------------------------------------------- /comReader/configuration/images/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/stop.png -------------------------------------------------------------------------------- /comReader/configuration/images/test_room_fifth_floor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/test_room_fifth_floor.png -------------------------------------------------------------------------------- /comReader/configuration/images/upperRightMarker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/upperRightMarker.png -------------------------------------------------------------------------------- /comReader/configuration/images/zeroCoordinateView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/images/zeroCoordinateView.png -------------------------------------------------------------------------------- /comReader/configuration/log.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/configuration/log.log -------------------------------------------------------------------------------- /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/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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /comReader/main/resources/RXTXcomm.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/main/resources/RXTXcomm.jar -------------------------------------------------------------------------------- /comReader/main/resources/gson-2.2.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/main/resources/gson-2.2.4.jar -------------------------------------------------------------------------------- /comReader/main/resources/javax.ws.rs-api-2.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/main/resources/javax.ws.rs-api-2.0.jar -------------------------------------------------------------------------------- /comReader/main/resources/jettison-1.3.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/main/resources/jettison-1.3.3.jar -------------------------------------------------------------------------------- /comReader/main/resources/log4j-1.2.17.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/main/resources/log4j-1.2.17.jar -------------------------------------------------------------------------------- /comReader/main/resources/mongo-java-driver-2.9.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/main/resources/mongo-java-driver-2.9.3.jar -------------------------------------------------------------------------------- /comReader/main/resources/org.restlet.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushfiq/rssi-system/54b8d5102fe756dd847e1ba6d0b26c2835d57c49/comReader/main/resources/org.restlet.jar -------------------------------------------------------------------------------- /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/tests/.gitignore: -------------------------------------------------------------------------------- 1 | /SampleValuesTest.java 2 | -------------------------------------------------------------------------------- /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/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/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/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/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/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/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/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/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/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 | } -------------------------------------------------------------------------------- /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') --------------------------------------------------------------------------------