- [FR0] Egg Alert and Real-time Logistics (EARL) [DP0] Build a System that Communicates Egg Flow at Conveyors
- [FR1] Presentation Layer
- [FR1.1] Shall have a GUI. [DP1.1] Will have a main window for user interaction.
- [FR1.1.1] Shall have a Configuration Interface. [DP1.1.1] Will have a configuration tab.
- [FR1.1.1.1] Shall allow changing of alarm parameters. [DP1.1.1.1] Will have a subtab for alarm parameters.
- [FR1.1.1.1.1] Shall allow changes to sample size. [DP1.1.1.1.1] Will have a radio button for sample size.
- [FR1.1.1.1.2] Shall allow changes to sample variance. [DP1.1.1.1.2] Will have a radio button for sample variance
- [FR1.1.1.1.3] Shall allow changes to alarm snooze length. [DP1.1.1.1.3] Will have a radio button for alarm snooze length.
- [FR1.1.1.1.4] Shall allow alarm sound file to be changed. [DP1.1.1.1.4] Will have a radio button to access the sound file dialogue.
- [FR1.1.1.1.5] Shall allow changes to sound volume. [DP1.1.1.1.5] Will have a slider for volume control.
- [FR1.1.1.2] Shall allow changing of collector parameters. [DP1.1.1.2] Will have a subtab for collector parameters.
- [FR1.1.1.2.1] Shall allow changes to the number of sensor arrays displayed. [DP1.1.1.2.1] Will have a radio button for altering the number of sensor arrays.
- [FR1.1.1.2.2] Shall allow changes to the number of sensors per array displayed. [DP1.1.1.2.2] Will have a radio button for altering the number of sensors per array.
- [FR1.1.1.3] Shall allow changing of serial communication parameters. [DP1.1.1.3] Will have a subtab for serial communication parameters
- [FR1.1.1.3.1] Shall allow change to the serial port number. [DP1.1.1.3.1] Will have a radio button for altering the serial port number.
- [FR1.1.1.3.2] Shall allow changes to the timeout length. [DP1.1.1.3.2] Will have a radio button for altering the timeout length.
- [FR1.1.2] Shall have a Visual Alert. [DP1.1.2] Will indicate which sensor(s) and/or array(s) are jammed by color change.
- [FR1.1.3] Shall have an Audio Alarm. [DP1.1.3] Will generate alert sound using computer speakers.
- [FR1.1.4] Shall have a Statistics interface. [DP1.1.4] Will have a statistics tab with a display element for each sensor array and sensor.
- [FR1.1.4.1] Shall display the address of each module. [DP1.1.4.1] Will label each sensor array with its address.
- [FR1.1.4.2] Shall display the egg count for each sensor. [DP1.1.4.2] Will label each sensor with its egg count.
- [FR1.1.4.3] Shall display the total egg count for each module. [DP1.1.4.3] Will label each sensor array with its total egg count.
- [FR1.1.4.4] Shall display the total egg count. [DP1.1.4.4] Will indicate the total egg count.
- [FR1.1.4.5] Shall allow changes to module address. [DP1.1.4.5] Will make each sensor display element clickable to allow changing of its address.
- [FR1.1.5] May allow viewing of past log files. [DP1.1.5] Might display past log files in child window.
- [FR1.1.6] Shall have a Status interface. [DP1.1.6] Will have a status tab with a display element for each sensor array and sensor.
- [FR1.1.6.1] Shall show the status of each sensor. [DP1.1.6.1] Will indicate the status of each sensor via color
- [FR1.1.6.2] Shall display the status of each sensor array. [DP1.1.6.2] Will indicate the status of each sensor array via color
- [FR1.1.6.3] Shall allow sensor arrays to be disabled. [DP1.1.6.3] Will allow a sensor array to be disabled by clicking its display element
- [FR1.1.6.4] Shall allow the alarm to be disabled. [DP1.1.6.4] Will have a toggle for disabing the audio alarm
- [FR1.1.7] Shall allow viewing of the log since activation. [DP1.1.7] Will have a log tab updated as status changes are made.
- [FR1.1.8] Shall allow disabling of changes. [DP1.1.8] Will have a button to disable configuration changes.
- [FR1.1.9] Shall require confirmation for reenabling changes. [DP1.1.9] Will have a dialogue window to confirm reenabling changes.
- [FR1.1.10] Shall allow the GUI to be closed and program shut down. [DP1.1.10] Will have a close window button.
- [FR1.1.11] Shall allow the GUI to be resized. [DP1.1.11] Will have a resizable window and display elements.
- [FR1.1.12] Shall allow the GUI to be minimized. [DP1.1.12] Will have a Minimize button.
- [FR1.1.13] Shall allow the GUI to be maximized. [DP1.1.13] Will have a Maximize button.
- [FR1.2] Shall utilize touch screen interface. [DP1.2] Will make display and interaction elements suitable for touch interaction.
- [FR2] Business Layer
- [FR2.1] Shall run on Windows OS. [DP2.1] Will utilize existing POS.
- [FR2.1.1] Primary Application [DP2.1.1] Will develop application for a Windows-based system.
- [FR2.1.1.1] Shall have an interface between the PC and the communication hardware. [DP2.1.1.1] Will have a Bridge-to-Communication Driver.
- [FR2.1.1.2] Shall have a Hardware Polling Process. [DP2.1.1.2] Will have a control structure implemented to poll modules.
- [FR2.1.1.3] Shall have a State Logic Process. [DP2.1.1.3] Will have a control structure implemented as a state machine for determining jams.
- [FR2.1.1.4] Shall have a GUI Build/Update process. [DP2.1.1.4] Will incorporate a module or methods to update GUI components.
- [FR2.1.2] Shall utilize a Serial Communication Driver. [DP2.1.2] Will incorporate a C/C++ driver or comm library to drive communication.
- [FR2.1.3] Shall utilize communication standards compatible with the microcontrollers. [DP2.1.3] Will be RS-232 capable.
- [FR2.1.4] Shall utilize communication standards compatible with distance constraints. [DP2.1.4] Will convert communication signal between RS-232 and RS-485.
- [FR2.1.5] May incorporate error correction. [DP2.1.5] Might use Hamming Code for error correction.
- [FR2.2] Sensors (Microcontrollers) [DP2.2] Will utilize the BS2 Microcontroller.
- [FR2.2.1] Shall communicate in a standard appropriate to the microcontroller. [DP2.2.1] Will convert from RS-485 back to RS-232 using a hardware converter.
- [FR2.2.2] May buffer incoming communication. [DP2.2.2] Might utilize UART to buffer signals.
- [FR2.2.3] Shall utilize Communication Software. [DP2.2.3] Will use hardware-implemented communication software.
- [FR2.2.4] Shall have Counting Software. [DP2.2.4] Will incorporate a PBASIC Control Structure to count eggs from hardware device.
- [FR3] Data Access Layer
- [FR3.1] Primary Application [DP3.1] Windows-based application
- [FR3.1.1] Shall be able to write log files. [DP3.1.1] Will incorporate component to write log files.
- [FR3.1.2] Shall be able to read log files. [DP3.1.2] Will incorporate component to read log files.
- [FR3.1.3] Shall be able to write configuration files. [DP3.1.3] Will incorporate component to write configuration file.
- [FR3.1.4] Shall be able to read configuration files. [DP3.1.4] Will incorporate component to read configuration file.
- [FR4] Persistence Layer
- [FR4.1] Primary Application [DP4.1] Windows-based application
- [FR4.1.1] Shall record Configuration Settings. [DP4.1.1] Will record configuration changes in a Configuration .ini file.
- [FR4.1.2] Shall maintain log files of system status changes. [DP4.1.2] Will store system status changes in a log text file.
- [FR4.1.3] Shall have State Values. [DP4.1.3] Will record state values in a configuration .ini file.
- [FR4.1.4] May maintain egg counts for each sensor. [DP4.1.4] Might maintain egg counts in a count file.
- [FR4.1.5] May maintain egg counts for the system as a whole. [DP4.1.5] Might maintain egg counts in a count file.
- [FR4.1.6] May store status changes in a database. [DP4.1.6] Might incorporate a HTML Post module to store status changes in a MYSQL database.
- [FR4.1.7] May store egg counts in a database. [DP4.1.7] Might incorporate a HTML Post module to store egg counts in a MYSQL database.
- [FR4.2] Microcontroller
- [FR4.2.1] Shall maintain a unique address. [DP4.2.1] Will incorporate PBASIC object to store address.
- [FR4.2.2] Shall maintain state values. [DP4.2.2] Will incorporate PBASIC objects to remember state.
- [FR4.2.3] Shall store egg counts per sensor. [DP4.2.3] Will incorporate PBASIC object to store egg counts.