From 8b9569e8fabbfce2dc7427ecbcd814b7dec6337c Mon Sep 17 00:00:00 2001 From: Alexander Schlenk Date: Mon, 27 Jun 2016 10:59:28 +0200 Subject: [PATCH] updated documentation for workshop 2016 --- 2016/README.md | 12 ++++++++++++ 2016/android/README.md | 8 ++++++++ 2016/idea.png | Bin 0 -> 35864 bytes 2016/ppc/README.mkd | 11 +++++++++++ 4 files changed, 31 insertions(+) create mode 100644 2016/README.md create mode 100644 2016/android/README.md create mode 100644 2016/idea.png create mode 100644 2016/ppc/README.mkd diff --git a/2016/README.md b/2016/README.md new file mode 100644 index 0000000..b2260c3 --- /dev/null +++ b/2016/README.md @@ -0,0 +1,12 @@ +# TUM Workshop 2016 + +You are part of a 4 member team. Your task is to enhance the usability of our car-sharing system, by alerting users when they have exited the free parking area. The system comprises of two different controllers: one which is in charge of the communication with the car buses and the other which is responsible for what gets displayed on the car headunit. + +- The controller in charge of the communication with the car buses will run C++ code. Your task is to create an application which will register itself to one of the CANs and retrieve the location data. Afterwards you have to process it in order to obtain a tuple (Lat, Long), which you will later have to send to the other controller of the system. A test framework will be provided to help you in the development of this task, which will give you fake CAN location related messages and check that the output tuple is correct. A solution is considered correct only when all tests are green. +- The controller responsible for what is displayed on the headunit runs a custom android OS. Your task is to create an android application which will use a geofence and the vehicle’s current location data in order to inform the user that he or she has just driven outside of the free parking area. You will receive the data to build the geofence prior to the development. The current +location data will come from the application developed by your fellow teammates, on the other controller of the system. In order to display a popup on the headunit you will have to implement an AIDL. To help the development process you will use a test framework which will give you fake location data and will test that you have displayed or hidden the popup accordingly. You will also have the possibility to check this in the android simulator by observing a notification in the task bar when the “current” location will be outside of the given geofence. +- As a bonus you will be provided with an additional API to interact with the car (functions like: read the current speed or flash the lights). So in case you have excess time, be creative and implement you own functionality. + +For both tasks you have 2 hours, hence your team will be split into two sub-teams in order to tackle these different controllers. A valid result will contain working solutions for both tasks. When everything is working you will see your solution running on the latest car-sharing DriveNow system in a Mini Cooper. Good luck! + +![idea](https://raw.githubusercontent.com/esrlabs/TUM/master/2016/idea.png) diff --git a/2016/android/README.md b/2016/android/README.md new file mode 100644 index 0000000..7093815 --- /dev/null +++ b/2016/android/README.md @@ -0,0 +1,8 @@ +# Prerequisites + +To be able to develop for android and run it in the simulator, you will need the following: + +- android studio +- latest android sdk + +You can find both [here](https://developer.android.com/studio/index.html) diff --git a/2016/idea.png b/2016/idea.png new file mode 100644 index 0000000000000000000000000000000000000000..41871915d7122e00dfd6b615cd75efb71deb6344 GIT binary patch literal 35864 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 W3X{uqRzSeNOXsirU1sWh?|%b$4bdk6 literal 0 HcmV?d00001 diff --git a/2016/ppc/README.mkd b/2016/ppc/README.mkd new file mode 100644 index 0000000..7d4ba73 --- /dev/null +++ b/2016/ppc/README.mkd @@ -0,0 +1,11 @@ +# Prerequisites + +To be able to compile your solutions and execute the tests, you will need the following: + +- working gcc compiler +- working ruby installation +- rubygems: rake and bake-toolkit + +## Install the bake tool + +see https://esrlabs.com/gems/doc/bake-toolkit/ \ No newline at end of file