Phase 1#

Coding Period Begins: Tackling Issues and Building Features#

Coding period finally begins ! I dove straight into addressing many of the identified issues, while simultaneously starting work on the proposed features. One of the major highlights during this time was my involvement in enhancing the project’s CI/CD pipelines.

Feature Implementations#

Updating the Oscilloscope was my major goal during this period. I successfully added the following proposed features to the oscilloscope:

  1. Instrument Run Control:

    1. A feature to Stop or Run the instrument.

    2. When the oscilloscope is running, it is acquiring data from the activated channels when the triggering conditions are met. When stopped, it displays the last acquired waveform.

    3. This allows for a detailed analysis of the instantaneously captured waveform.

  2. Horizontal & Vertical Position Controls:

    1. The ability to control the horizontal and vertical position of the waveform on the oscilloscope display, for manual measurements.

    2. The horizontal position control moves the waveform back and forth on the display and can be used to either align the waveform with the horizontal divisions of the display or to view different sections of the waveform.

    3. The vertical position control moves the waveform up and down on the display and can be used for manual measurements in a similar way as the horizontal position control.

  3. Auto-Scale:

    1. This allows adjustment of the X-axis and Y-axis scale according to the acquired waveform in order to properly display it on the oscilloscope display.

    2. This feature would use algorithms to identify the waveform, measure its amplitude and period, and then scale the axes to properly display it.

  4. Triggering Controls:

    1. The oscilloscope only supported a single type of edge - triggering which was hardware based.

    2. The triggering controls are now moved to a software level and the oscilloscope supports all types of edge - triggering.

  5. Automated Measurements:

    1. A feature to automatically measure and display characteristics of the waveform such as amplitude, frequency, period, etc.

    2. The characteristics of the acquired waveform are calculated using algorithms and displayed.

CI/CD Pipelines#

I worked on the following improvements in the CI/CD Pipelines of the project:

  1. Automatic Versioning: Developed an automated workflow to update the versionName and versionCode in the build.gradle file with each commit. This is achieved by maintaining a dedicated version branch that holds the upcoming version information. The workflow pulls from this branch upon each commit to ensure that the version data is consistently updated.

  2. Release Drafter: Configured Release Drafter in the repository to automatically draft release notes and upload release artifacts, including the apk file and versionCode.txt, with every commit. This setup ensures that each push triggers the creation of a draft release, streamlining the release management process.

  3. Comment Pipeline: Developed a workflow that comments on every pull request with the build status and provides links to the artifacts for testing if the build was successful.

  4. Fastlane: Configured fastlane to automate the deployment process to the Google Play Store. With each commit, fastlane updates the apk file in the beta track, streamlining the release cycle and ensuring that the latest version is consistently tested.

  5. Release Pipeline: Implemented a release pipeline that automatically fetches release notes from drafted releases and uploads them using fastlane, upon every release. This pipeline updates the apk from the beta track to the production track, ensuring seamless transition from testing to live deployment.

Other Issues#

During this period, I also addressed several other issues, such as:

  • Layout Issues & Improvements

  • Adding Support for Orientation Changes

  • Communication with the PSLab Device: Updated the app by integrating a universal driver supporting both the CP2102N and the MCP2200 USB-UART bridge controllers, enabling support for connection with the V6 device.

Wrapping up Phase 1 two weeks ahead of schedule was a significant achievement for me. I successfully completed the proposed features and had the opportunity to work on several additional improvements. This success set a solid foundation for the next phase of the project.