Skip to content

jacopocarlini/plathea

Repository files navigation

Integrating multiple independent legacy indoor localization systems through a RESTful API

My Master Thesis project.

You can find the presentation on slide share and the pdf of the thesis here

REST API

You can find the REST API on swagger.com link

Project Structure

alt text

Details

  • In the MainSystem.java there is the logic of all the API.

  • Client.java is just for test.

  • The InterfaceJNI.java spawns new SubProcess (InstancePlathea.java) for each room that loads the DLL, in this way we can have a instance of the DLL for each room.

TIPS: for debbugging you can start the subprocess in a terminal with the command:

java InstancePlathea <port>

but remember to comment the line in the InstancePlathea.java file.

In this way you can see the logs and stop easily the subprocess.

Project Folders

  • ClientDLL: is just a C++ project that use PLaTHEA_DLL. It is for debugging and imports the PlatheaDLL directly.

  • PlatheaDLL: is Plathea transformed into a Dynamic-link library

  • InterfaceJNI_DLL: is the JNI (Java Native Interface). It is a DLL and is a wrapper for PLaTHEA_DLL

  • jaxrs-jersey-server-generated: is the Java server generated by swagger

  • jaxrs-jersey-server-generated\src\main\java\io\core: in this folder there is the SubProcess (InstancePlathea.java).

Dependencies:

  • LeoStromLibrary
  • libjpeg-turbo-1.3.1
  • opencv-master (you must compile for you machine probably)
  • PLaTHEADPWS
  • tinyxml

Run Project

How to use the JNI

To create the JNI .h you can use the command:

 javac -h . InterfaceJNI.java

then you can use this file in the InterfaceJNI_DLL project, then compile and copy the .dll in the folder jaxrs-jersey-server-generated\src\main\java\io\core\

Run the Server

In the jaxrs-jersey-server-generated folder use the command

mvn clean project jetty:run

Run the WebApp

In the webapp folder use these commands:

use this just the first time

npm install
npm start

Credits

Developed by Jacopo Carlini.