UDP Sensor Logger Driver Case Study

The Client

The client is a provider of high-quality precision data loggers. These data loggers are used to record temperature, pressure, and analog environmental parameters.

Their product line includes precision data loggers and server software that provides many innovative features for users to effectively monitor the environment at several locations from a central point.

The Challenge

Our client was planning to release a new model of their UDP-based data loggers to their customers. This new model can be installed from anywhere in the world and send alerts and other messages over the Internet to the client’s configured server.

Our client needed a UDP server with a driver that could support up to 1000 physical loggers without using too many threads in order to conserve CPU capacity. This UDP server had to support loggers on various UDP ports. It also had to automatically add new loggers when communicating with the server.

The key challenge in this project was that the logger’s firmware was still under construction while the driver was being developed. Therefore, as the driver was being tested, there were still defects being discovered in the firmware. As the driver’s development team, we needed be cautious when analyzing the root cause of firmware defects, because the root cause of the defects could have resulted on either the firmware or the driver side.

The Process

  1. System analysis to create the driver architecture and design baseline.
  2. Development and test lab setup.
  3. Implementation and testing of software.
  4. Final delivery after technical inspection of code and test results.

How Optimus Helped

Optimus decided to proceed with the driver development and implementation using the Boost C++ library, which helps limit the number of threads that are required.

Optimus’ team met with the client to discuss and agree upon the project’s system architecture and design before starting the coding. This ensured that our approach to developing the client’s driver was aligned with the approach of the team building the firmware.

We began with setting up a lab for driver development and testing. The execution was carried out in short cycles with features being implemented in certain increments. This allowed Optimus’ driver team and the client’s development team to work together so any issues that arose could be correctly identified and addressed. This collaboration model also allowed for older features to be stabilized while the new features were being developed. Our team created a caching system and a Python wrapper that allowed the driver and server to communicate smoothly.

Throughout the project, our team met with our client regularly to ensure that the project’s execution was on track and fully covered the client’s needs.