Phase 1#

Coding Period Begins: Building the Barebones#

Coding period finally begins ! I dove straight into structuring the architecture of the Flutter app as planned. The most important proof of concept was to successfully integrate support for wireless communication with the PSLab device enabling cross-platform communication compatibility.

Wireless Communication - An Important Proof of Concept#

One of the most crucial milestones at this stage was developing wireless communication support between the app and the PSLab device. This served as a key proof of concept (PoC) and was central to the project’s motivation for porting the app to Flutter.

In the existing Android version, the app relied heavily on USB communication, which is not supported on certain platforms like iOS due to system-level restrictions. By implementing a Wi-Fi-based communication layer using the ESP01 chip, I enabled true cross-platform connectivity, ensuring that users on all platforms could seamlessly interface with the PSLab hardware:

Architecturing the App#

With the wireless communication proof of concept in place, the next major step was to design and implement the app’s architecture in Flutter. This stage focused on laying a scalable, modular foundation capable of handling the diverse functionalities of the PSLab instruments while maintaining clean separation between the UI, logic, and hardware communication layers.

I followed a component-based architecture, ensuring that each instrument — such as the Oscilloscope, Multimeter, Logic Analyzer, Wave Generator, and Power Source — could be developed, tested, and maintained independently. Each instrument module was structured to handle:

  1. User Interface Layer: built using Flutter widgets to provide an interactive and adaptive design compatible with mobile and desktop layouts.

  2. Logic and Data Layer: responsible for processing instrument data, managing device communication, and updating real-time readings efficiently.

  3. Hardware Communication Layer: enabling the app to send and receive commands from the PSLab hardware through USB / WiFi seamlessly across platforms.

This modular design made the app highly extensible, allowing future instruments or features to be added with minimal changes to the core system.

Additionally, I implemented state management using Flutter’s provider pattern to ensure smooth data flow and synchronization across UI components. This was especially important for instruments like the Oscilloscope and Multimeter, which require continuous real-time updates for accurate waveform visualization and data measurement:

Other Work#

During this period, I also worked on several other things, such as:

  • Localization (l10n) Support: Introduced Flutter’s localization framework to enable multi-language support, making the app more accessible to users worldwide.

  • Pipeline Maintenance: Updated and maintained CI/CD pipelines to ensure smooth builds, testing, and deployment across all supported platforms.

  • Bug Fixes and Instrument Improvements: Fixed issues in core instruments like the Oscilloscope, Logic Analyzer, and Multimeter, enhancing performance, stability, and real-time responsiveness.