Test software for SatChat prototype hardware Platform - MAX32630FTHR

Dependencies:   USBDevice max32630fthr

Committer:
koziniec
Date:
Thu Sep 21 01:24:44 2017 +0000
Revision:
16:c5634210628d
Parent:
15:7d75ecaeabdb
Test software for SatChat prototype hardware

Who changed what in which revision?

UserRevisionLine numberNew contents of line
koziniec 15:7d75ecaeabdb 1 An EPIRB is a crucial piece of safety equipment. Someone's life could be placed at risk if it fails or behaves in an unpredictable manner.
koziniec 15:7d75ecaeabdb 2 An open EPIRB encourages development and feature enhancement which is a good thing but is potentially at odds with safety. What if you
koziniec 15:7d75ecaeabdb 3 change the user interface and the user can't figure out how to send an SOS? What if you introduce a bug and unit crashes?
koziniec 15:7d75ecaeabdb 4
koziniec 15:7d75ecaeabdb 5 To address this issue, open EPIRB uses a two phase start up. When you initially power on the device it enters a minimum functionality mode
koziniec 15:7d75ecaeabdb 6 during which one of two messages can be sent. A routine positional update which logs the operator's current GPS location via the Iridium
koziniec 15:7d75ecaeabdb 7 Satellite constellation or an SOS message. After a brief period the minimum functionality phase ends and the full functionality begins.
koziniec 15:7d75ecaeabdb 8 In the full functionality phase it is possible to do everything that can be done in the minimum functionality mode as well as sending and
koziniec 15:7d75ecaeabdb 9 receiving short text messages, regularly logging position and any other functions that are yet to be thought of.
koziniec 15:7d75ecaeabdb 10
koziniec 15:7d75ecaeabdb 11 Every piece of configuration and code necessary to achieve minimum functionality is known as BLACK CODE. To achieve reliability BLACK CODE
koziniec 15:7d75ecaeabdb 12 changes are not made trivially. They should be limited to bug fixes, usability and perhaps improving readibility and understanding of the code.
koziniec 15:7d75ecaeabdb 13 Before making a change to BLACK CODE, ask yourself how this enhances the reliability of the unit. This is an area of minimum functionality and
koziniec 15:7d75ecaeabdb 14 not a place to add new features. Adding a new feature increases the chance of failure and consequently increases the risk that a needed SOS
koziniec 15:7d75ecaeabdb 15 won't be sent. When it is necessary to make BLACK CODE changes it is essential the changes are thoroughly thought through, tested and approved
koziniec 15:7d75ecaeabdb 16 by the client. Any additional libraries, functions or variables must be labelled as BLACK if any BLACK CODE relies on it.
koziniec 15:7d75ecaeabdb 17
koziniec 15:7d75ecaeabdb 18 Only BLACK CODE should run until the end of the minimum functionality period. In fact, a good test of the code base is to delete everything that
koziniec 15:7d75ecaeabdb 19 isn't BLACK and show that an SOS can still be sent.
koziniec 15:7d75ecaeabdb 20
koziniec 15:7d75ecaeabdb 21 After the minimum functionality period expires, functionality is deliverd by regular code (non BLACK). Here careful coding and rigourous testing
koziniec 15:7d75ecaeabdb 22 should also occur but development and functionality are encouraged.
koziniec 15:7d75ecaeabdb 23
koziniec 15:7d75ecaeabdb 24 REUSE OF BLACK CODE
koziniec 15:7d75ecaeabdb 25 The full functionality program space is encouraged to reuse BLACK code as this serves to further exercise and test these crucial components. If there is a
koziniec 15:7d75ecaeabdb 26 proposal for substantial changes to be made to BLACK CODE functions, it is recommended that the BLACK CODE functions be replicated in their new form
koziniec 15:7d75ecaeabdb 27 and labelled as RED CODE. The full functionality code should then call on the experimental RED CODE to allow debugging and field evaluation to
koziniec 15:7d75ecaeabdb 28 occur without jeapordising the stability of the BLACK CODE code base. Once the RED CODE is thouroughly debugged, tested and documented it can
koziniec 15:7d75ecaeabdb 29 be considered for inclusion as BLACK CODE. Thus the full functionality code becomes a testing environment for the minimum functionality code base.