├── .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 |
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 | [](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 File
s 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 RoomMap
s 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 RoomMap
s are added to the data source and we
57 | * want to display newly added RoomMap
s.
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, Observable
s add Observer
s to a List
of
13 | * Observer
s. When a change occurs, Observable
iterates over the List
of
14 | * Observer
s 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 | * Observer
s monitor the behavior of Observable
s. Observer
s 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')
--------------------------------------------------------------------------------