Welcome to E.S.R.Labs

C++ Knowledge from the Experts

the fun is over

For a long time C++ has been one of our main development languages. And it seems most of the automotive industry finally agrees that this is not a bad choice.
A couple of years back the situation was quite different and we had to convince a lot of people that C++ code can indeed be as efficient as plain old C.
But C++ is also changing quite a lot thanks to the new ISO standard C++11. And admittedly it is quite a huge language…ample opportunity to use it in a good or bad way. For that reason we felt it was justified to organize a 3-day C++ event with some real C++ experts. So last week we invited Dave Abrahams and Jon Kalb to share some of their knowledge with us.

dave

In one of our current projects we are closely working together with BMW. Pleasently lot’s of our developer peers are also very keen on writing high quality embedded software using C++ so a lot of them joined the event which in the end was hosted at BMW facilities.
In 3 densly packed days we learned a lot about state-of-the art programming techninques and new C++11 language features. Both Dave and Jon did an excellent job explaining difficult concepts to their audience. While it’s quite obvious that 3 days is not nearly enough time, the event did already have a very positive effect: it sparked a new interest on different C++ related topics that for sure will in the end help everyone to improve their skills as software developers.

Thanks to Dave Abrahams and Jon Kalb for some amazing sessions and to BMW for hosting the event in their awesome conference center!

dave

Join the Global Day of Coderetreat @ E.S.R.Labs

Last year, over 1800 passionate software developers in 94 cities around the world spent a full day practicing the craft of software development using the coderetreat format. This year on December 8th it is time for another global day of coderetreat! We are happy to announce that E.S.R. Labs will host a coderetreat here in Munich on December 8th!

Feel free to participate, if you are a passionate about software development and keen to spend a fun day together with other programmers. The coderetreat will be facilitated by Sebastian Benz, an experienced facilitator, who also held last year’s coderetreat here in Munich.

What is a Coderetreat?

A coderetreat is a daylong event, focused on practicing the basic principles of good design without the pressure of having to get things done. The day is split into six sessions, in which you work on the same problem over and over again. In each session you will pair with a different programmer to maximize the knowledge transfer. The important thing is that after each session all the code that has been written so far is deleted. This gives you the chance in the next session to all start over again without being constrained by any design decisions you made in the previous one. The combination of pair programming with the focus on writing perfect code instead of solving the problem gives you a unique opportunity to improve your skills.

When & where?

The coderetreat will take place at our office here in Munich. The address is:

St.-Martin-Straße 53
81669 München‎

We will start the day at 8:15 AM with a small breakfast and we will have time for a beer after the event at 6:00 PM. E.S.R. Labs provides Breakfast, lunch and drinks. The only thing you need to bring is your computer.

Registration

You can register via Eventbrite. For more information check out the official page.

Android Transporter for the Nexus 7 and the Raspberry Pi

The Android Transporter allows you to share the display contents of your Nexus 7 tablet wirelessly with other screens in real time.
Now, the first tech demo of the Android Transporter is out!

Introduction

The Android Transporter allows you to share display content wirelessly with remote screens in real time. Please be aware that the Transporter is still a technology study and it is missing the maturity of a full-featured product. However, we think that the Android Transporter is already exciting enough to let you play around with it. We believe that with the recently released Miracast standard you will get a very similar technology in upcoming Android devices, and we are considering making the Transporter compliant with the Miracast specs.

The Android Transporter is a custom ROM and not an app since we had to make adjustemts to various parts of the Android platform to make it happen.

Be aware that you use the Android Transporter at your own risk and that you will void your tablet’s warranty by following the setup instructions below. Moreover, you are not allowed to bundle further Google apps like the Google Play Store with our firmware image.

Read on for the quick start guide and some Android Transporter internals.
Read more →

Pragmatic AUTOSAR

AUTOSAR [http://autosar.org] defines a common standard for automotive software. One part of it is a language for describing software components, their interfaces, their composition to a larger system and many other details required in order to build a complete system.

In this article I will outline the challenges we faced during our first large AUTOSAR project, our initial pragmatic solution, its evolution while we gained experience and an outlook on future tools and concepts we imagine.

AUTOSAR on a Grand Scale

About 5 years ago, a team set out to build one of the most complex automotive Electronic Control Units (ECU) at that time following the AUTOSAR standard. Being the software architect of this challenging project, I soon realized that the tools we had at hand were not sufficient for the job: We had to describe a huge system consisting of around 100 software components with their interfaces exchanging around 2000 different data items. This process involved automotive function experts and developers creating, reviewing and changing the description of the software components.
Read more →

Use SFINAE to unit test inheritance

Just recently I came across a nice appliance of the C++ SFINAE pattern, when I was trying to write some unit tests (using googletest) for a C++ template metaprogramming class that creates a type hierarchy of a given typelist.

Here is a simplified version of what I wanted to test:


#include "gtest/gtest.h"
class A {};
class B {};
class C {}; 

typedef TypeList<a , TypeList<B> > BaseClasses;

class Foo :
	public InheritFrom<baseclasses>
{};

TEST(InheritFrom, TestCorrectInheritance)
{
	Foo f; A* a = &f; //this will work
	C* c = &f; //this will cause a compile time error
} 

Read more →

We moved in

Since 1st of July E.S.R.Labs resides in the Friendsfactory (Munich East).


Read more →

Android Transporter on the Raspberry Pi

The Android Transporter allows you to share display content wirelessly with remote screens in real time. Now, the Android Transporter also runs on the Raspberry Pi which enables you to easily share the display content of your smartphone or tablet with a television set or a video projector. Just watch the amazing demo video.

The Android Transporter turns your smartphone or tablet together with the Raspberry Pi into a powerful media hub to watch movies, play games, or do slideshows.
This way, the Raspberry Pi becomes maybe the cheapest gaming console or set-top box :-) .

See also our previous blog post about the Android Transporter.
Stay tuned for the dual screen mode!

Android Transporter

The Android Transporter allows you to share display content wirelessly with other screens in real time.

The Android Transporter beams the display contents of your smartphone or tablet onto other gadgets, TVs, video projectors, and car infotainment systems. Our prototype shows that this is possible even with the old Google Nexus S.
To implement this efficiently we had to deeply integrate our technology into the Android platform by utilizing hardware accelerated H.264 encoders and decoders.
The Android Transporter implements the display sharing by combining a set of standardized technologies.
The Wi-Fi Alliance® is currently forming a standard called Miracast™ that promises to deliver the same functionality.
We aim to make the Android Transporter fully compliant with the Miracast™ specs as soon as they are available.

The following features will arrive soon:

  • Dual screen support with accompanying SDK.
  • WiFi Direct support.
  • Further improvements to the user experience by reducing the latency.
  • We plan to open-source our patches for the Android platform.

Stay tuned!