====== 2016-07-03 Firmware Review ====== **Author:** Kenny Luong\\ **Start Date:** 2016-07-03 ===== Current Status ===== * Good - firmware builds for all three weatherbox versions and has a user manual ===== Future Tasks ===== * Remove UART data packet * Clean up data format * Test mode - assert a pin to low/high and the mcu will only run through a test routine. Would be useful for testing purposes * Sleep mode integration * Better interface for custom functions * Integration of avr emulator in workflow for testing * Better non-microcontroller framework to enable offline testing * Switch toolchains to either a makefile based toolchain or platformio * Rename repository (currently weatherbox-2) * Consider pulling some functions out into a library * Clean up repository (moving average folder and examples should be somewhere else) * Consider other practices for separating behavior between different versions - maybe surround all of those cases with if statements instead of ifdef, or do both * Better logging - perhaps we can create a logging module. * Experiment with timer based logic * Support for creating dummy data - option to build this out as well * Use build flags with the toolchain instead of defining things on the top * Reduce global state * Remove the LPF module for now - we don't need it * Overall, reduce system complexity * Add support for running custom commands (and make sure that those commands aren't too heavy). MCU when asserted on another pin should also automatically go into command mode * Add better startup check sequence * debugWire support Goals suggested by previous firmware team: * GitHub Issues - Heatbeat packet - Time-based sampling - Command parsing & Execution * Unit Testing - Transmit Module - Utilities Module - Full Integration * Error Code Library - Appropriate error codes for corresponding unit tests * Schema Changes - Change sensor data variable types to signed ints - Update decryption script * Compilation - Identify and resolve the warnings given during compilation