Remote+
Android
Jetpack Compose
RS232 Serial Comms
MVVM
Service
Project Description
The primary objective of this project was to transition an established desktop tool into a mobile solution, aimed at empowering field engineers with enhanced mobility and reduced equipment bulk. By adapting the tool for mobile devices, I sought to provide engineers with unparalleled flexibility and accessibility, enabling them to carry out critical operations with ease and efficiency in various field scenarios.
The application introduces a remote user interface for users to interact with fire panels remotely, particularly in situations where a conventional user interface is unavailable, such as during the commissioning of black box panels on-site. This functionality proves invaluable in streamlining operations and overcoming logistical challenges inherent in fieldwork.
Moreover, the versatility of the application extends beyond field deployments, as evidenced by its integration into the Research & Development center of the company. Here, the application finds utility in fire panel rigs utilised by the SQA department, which lack physical user interfaces. This seamless integration underscores the adaptability of the mobile solution across environments, ultimately enhancing operational efficiency and facilitating the smooth execution of critical tasks.
Project Solution
For this project, I made the deliberate choice to pursue Native Android development using Jetpack Compose alongside the MVVM design pattern. The decision to snub a multiplatform approach, such as Flutter, stemmed from the inherent limitations posed by iOS devices lack of support for the RS232 connection crucial to this application's functionality.
To facilitate the low-level communication required for interfacing with the fire panel, I leveraged felhr85's USB serial library. However, adapting the library to align with the company's communication protocol necessitated the development of a custom service tailored to the specific requirements.
The connection process involves the use of an OTG cable to connect the device to a USB RS232 converter, establishing a physical link with the fire panel. This intricate setup ensures seamless communication between the application and the target device, enabling efficient data exchange and control.
In opting for Jetpack Compose for UI construction, I aimed to capitalize on its cutting-edge features and flexibility. Furthermore, the decision to utilize Kotlin over Java was motivated by its advantages in terms of code safety, maintainability, and the functional programming capabilities it offers. These features proved invaluable, particularly when working with low-level byte manipulation and ensuring the reliability of the application's core functionality.