Embedded Architecture

Industry

HVAC

Description

Our client needed a unified, future-ready architecture to eliminate fragmented code and hardware dependencies. We developed a modular, scalable system with flexible board support and vendor-independent abstractions. This company-wide framework streamlines development, ensures seamless updates, and enables engineers to focus on driving innovation.

Background

The client is a company from Denmark in the HVAC industry that does work designing, manufacturing, and implementing controls for climate control.  Its controls are integrated into products, such as comfort ventilation, heating pumps, reefer containers, solar thermal heating systems, and heating units. The company offers solutions and systems for transport cooling, air conditioning/ventilation, heat pumps, and hot water solar pumps. It also provides electronic controls/controllers for cooling, heating, and ventilation.

The challenge

The client came to us with a need to help them in their push for modernizing their code base, porting existing applications, and developing new modular, testable and maintainable applications. They had already started the development of an abstraction layer that they intended to use company-wide. The need for a new architecture and a framework that will be used company-wide arose from the fact that their products had become too fragmented, and different teams used different libraries, methods, and designs for solving the same problems. It made the maintainability more complex than necessary and prohibited developers from quickly moving from one project to another when needed. In addition, their code was significantly tied to the existing hardware, and a hardware update often meant re-writing a business logic that hadn’t changed. Such dependence added to their development efforts and opened a new area where bugs can occur during development.

The Idea

The client decided first to develop some standalone products with the new architecture to let the whole architecture mature while their ongoing development efforts remained on track. The task of bringing the new architecture to a satisfactory level and developing the first standalone products was given to CodeChem Inc. Once the products were implemented, the task continued with porting existing products to the new architecture.

The Technical Challenge

After looking over the requirements and existing code, our challenge was to enrich the abstraction layer with enough functionality to be useful. To do that, we were tasked with:

Implement multiple board support packages.

Implement abstractions for numerous peripherals in a way that is not vendor-specific.

Implement drivers for commonly used additional hardware.

Help select, port, and test widely used third-party libraries (e.g., filesystem, graphics, communication protocols) and incorporate them into the new architecture.

Design and implement applications by using the components mentioned above.

The Process

The team worked in an agile environment, keeping the opportunity to quickly switch directions and work on the features most important to the client’s needs. To ensure smooth deliveries and sustained quality, the team implemented hardware-in-the-loop testing and unit testing on the application-level features. Also, a continuous integration process was implemented to automate the builds and test runs.

The Result

The project started at the beginning of 2020, and three developers from CodeChem initially worked with the client. After the initial two products were successfully released and enough components were introduced into the new architecture, the client started porting multiple existing products and now exclusively uses the new architecture to develop any new projects.  There are now multiple projects ranging from embedded Linux to RTOS and from hard real-time applications to embedded GUI products that share the same architecture and reuse much of the code. 

The implemented architecture has also made it possible for the client to develop hardware test frameworks that aid the development of new hardware and automate the testing. As applications are not dependent on an OS, some products have simulators that run on Windows and Linux. These simulators are actively used to develop features faster.

Technologies

Let's talk!

Tell us your app idea and what you want to achieve. We’ll get back to you in one business day.

Requesting services:

Canada

1 Place Ville-Marie, Porte 2500 Montreal (Quebec), H3B 1R1

+1 438 5006263

North Macedonia

Rimska 25, 1000 Skopje, North Macedonia

+389 2 3244844

Germany

Mainzer Landstr 351, 60326 Frankfurt am Main

+49 151 40448842

© 2025 Code Chemistry Inc.