Please see section B.2 AquaLush Project Mission Statement for an overview of the product.
The software, as delivered, must consist of two parts: A Web-based simulation, and
Software to control the hardware.
All parameters set by users must remain in effect until changed by users.
AquaLush must run in one of two modes: manual or automatic.
Users must be able to set the mode.
Setting the mode to its current value must have no effect on irrigation.
Setting the mode to a different value must result in AquaLush closing all valves.
AquaLush must display the current mode to the user after the user sets the mode.
AquaLush must allow users to set the current time.
The current time consists of the current day and the current time of day.
AquaLush must either not allow an invalid time setting or validate the new time setting.
If a new time setting fails validation, then AquaLush must notify the user of the problem and not accept the new setting.
AquaLush must display a reset current time to the user.
If the current time is set so that an irrigation time is skipped, then AquaLush must wait for the next irrigation time. In other words, AquaLush makes no attempt to detect and react to irrigation times skipped as a result of a time setting.
AquaLush must allow the days and time of day when irrigation occurs, called the irrigation time, to be set.
AquaLush must either not allow an invalid irrigation time setting or validate the new irrigation time setting.
If a new irrigation time setting fails validation, then AquaLush must notify the user of the problem and not accept the new setting.
If the irrigation time is set when automatic irrigation is in progress, then AquaLush must finish the current irrigation cycle and the new irrigation time must take effect upon completion of the cycle.
AquaLush must display a reset irrigation time to the user.
AquaLush must allow moisture levels that control irrigation, called critical moisture levels, to be set for each irrigation zone.
AquaLush must either not allow an invalid critical moisture level setting or validate the new critical moisture level setting.
If a new critical moisture level setting fails validation, then AquaLush must notify the user of the problem and not accept the new setting.
If the critical moisture level is set when automatic irrigation is in progress, then AquaLush must use the new critical moisture level to control irrigation immediately.
AquaLush must display a reset critical moisture level to the user.
AquaLush must allow the maximum amount of water used in each irrigation cycle, called the water allocation, to be set.
AquaLush must either not allow an invalid water allocation setting or validate the new water allocation setting.
If a new water allocation setting fails validation, then AquaLush must notify the user of the problem and not accept the new setting.
If the water allocation is set when automatic irrigation is in progress, then AquaLush must recompute the allocations for each unirrigated irrigation zone and use them immediately to control irrigation.
AquaLush must display a reset water allocation to the user.
A configuration file must be prepared at installation so that AquaLush can read this file to obtain its configuration at startup.
AquaLush must allow operation in either automatic or manual mode.
AquaLush must monitor the amount of water used in irrigation.
AquaLush must detect valve and sensor failures.
In manual-mode operation, AquaLush must allow users to select non-empty sets of (working) valves and direct that they be opened or closed.
AquaLush must display the following data for each manually opened valve while it is open:
- its identifier
- its location
- how long it has been open
- how much water it has used
- the moisture level reported by its associated sensor
AquaLush must display the total water used in manual irrigation.
AquaLush must set the total water used in manual irrigation to zero when it starts up in manual mode or when it is switched to manual mode from automatic mode.
When no valve is open in manual irrigation mode, AquaLush must set the total water used in manual irrigation to zero.
In automatic-mode operation, AquaLush must begin an irrigation cycle when the current time reaches the irrigation time.
In automatic-mode operation, AquaLush must conduct an irrigation cycle by irrigating one irrigation zone at a time and successively irrigating each zone until all have been irrigated.
AquaLush must do the following during an irrigation cycle:
- AquaLush must read the working sensor in each zone and place all zones whose sensors are below that zone’s critical moisture level on an active zone list.
- AquaLush must count the working valves in the active zones and divide the water allocation by this count to get a valve allocation.
- AquaLush must assign each zone a zone allocation, which is the valve allocation multiplied by the number of working valves in the zone.
- For each active zone, AquaLush must open all the working valves in the zone.
- Every minute, AquaLush must read the zone sensor.
- Every minute, AquaLush must compute the zone water usage by multiplying the total flow rate for all open valves in the zone by the time that the valves have been open.
- If a zone’s critical moisture level is reached, then AquaLush must close all valves in the zone and go to the next zone.
- If a zone’s zone allocation is reached, then AquaLush must close all valves in the zone and go to the next zone.
- When all valves in a zone are closed, if the zone allocation is not exhausted, then AquaLush must add the remainder of the zone allocation to the total of the zone allocations of the unirrigated zones, divide this sum by the number of working valves in the unirrigated zones to produce a new valve allocation, and multiply this value by the number of working valves in each unirrigated zone to produce a new zone allocation for each unirrigated zone.
- An irrigation cycle must end when every zone on the active zone list has been irrigated.
If a sensor cannot be read, then AquaLush must try to read it twice more.
If a sensor can be read within three tries, then AquaLush must ignore the error.
If a sensor cannot be read after three tries, then AquaLush must mark that sensor as failed in its persistent store and stop using it in irrigation.
If a sensor cannot be read after three tries in manual-mode operation, then AquaLush must alert the user that the sensor has failed.
If a sensor cannot be read after three tries when AquaLush is irrigating that sensor’s zone, then AquaLush must close all valves in that zone and continue the irrigation cycle as if that sensor had indicated that the zone had reached its critical moisture level.
If a valve cannot be manipulated (opened or closed), then AquaLush must try to manipulate it twice more.
If a valve can be manipulated within three tries, then AquaLush must ignore the error.
If a valve cannot be manipulated after three tries, then AquaLush must mark that valve as failed in its persistent store and stop using it in irrigation.
If a valve cannot be manipulated after three tries in manual-mode operation, then AquaLush must alert the user that the valve has failed.
If AquaLush cannot write to its persistent store, then it must alert the user of the problem and continue operation.
If AquaLush cannot read its persistent store it must alert the user of the problem.
If AquaLush cannot read its persistent store during operation, then it must continue operation.
If AquaLush cannot read its persistent store when starting up, then it must display an error message and suspend operation.
AquaLush must provide reports of failed valves and sensors when requested to do so by the user.
If no valves have failed, then AquaLush must report that there are no valve failures.
If no sensors have failed, then AquaLush must report that there are no sensor failures.
If valves or sensors have failed, then AquaLush must report for each failed valve and sensor:
- The valve or sensor identifier
- The valve or sensor location
AquaLush must allow users to indicate that failed valves and sensors have been repaired.
When told that a failed valve or sensor is repaired, AquaLush must update its persistent store with this information.
When told that a failed valve or sensor is repaired, AquaLush must begin using the repaired valve or sensor in irrigation immediately.
When power is applied to the system, the AquaLush software must load and execute.
When it starts, AquaLush must first read its configuration file from persistent store to establish its configuration.
After establishing its configuration, AquaLush must read its persistent store to restore its state.
After starting, AquaLush must close all valves.
AquaLush must make no attempt to resume an irrigation operation that may have been in progress when it was shut down.
The Web-based AquaLush simulation must represent all operational and maintenance features of the delivered product.
The simulation must provide a realistic representation of the AquaLush control panel.
The simulation must provide a representation of a site with irrigation zones.
Each simulated irrigation zone must simulate a sensor and display the simulated sensor’s moisture level.
Each simulated irrigation zone must simulate regions watered by irrigation valves and display the states of the simulated valves and their flow rates.
The simulation must provide means for controlling the simulation.
The simulation must display the simulated time and provide a means for setting the simulated time.
The simulation must provide controls to change the simulation speed (that is, speed up or slow down the simulated time).
The simulation must simulate water evaporation, reflected in the measured moisture levels at the simulated sensors.
The simulation must provide controls to alter the simulated water evaporation rate.
The simulation must simulate valve and sensor failure and repair.
The simulation must provide controls to alter the failure status of valves and sensors.
The irrigated site must be divided into 1 to 32 irrigation zones.
Each irrigation zone must have exactly one moisture sensor.
Each irrigation zone must have 1 to 32 irrigation valves.
An irrigation zone identifier must consist of the letter “Z” (upper- or lowercase) followed by a unique integer in the range 0..999.
An irrigation zone location must be a string of 0 to 24 characters not containing angle brackets.
The zone’s critical moisture level must be an integer in the range 0..100 interpreted as a percent of saturation.
The following data must be recorded for each sensor:
- Identifier
- Location
- Operational status
A sensor identifier must consist of the letter “S” (upper- or lowercase) followed by a unique integer in the range 0..999.
A sensor location must be a string of 0 to 24 characters not containing angle brackets.
The operational status must be a Boolean value interpreted as the truth value of the statement “This sensor is working.”
The following data must be recorded for each valve:
- Identifier
- Type
- Location
- Flow rate
- Operational status
A valve identifier must consist of the letter “V” (upper- or lowercase) followed by a unique integer in the range 0..999.
A valve type must be a string of 0 to 16 characters not containing angle brackets.
A valve location must be a string of 0 to 24 characters not containing angle brackets
A flow rate must be an integer in the range 1.. 231–1 interpreted as gallons per minute of water flow through the valve.
The operational status must be a Boolean value interpreted as the truth value of the statement “This valve is working.”
The configuration file must be a text file editable with a standard text editor.
A configuration file must have the form (specified using data definition notation) shown in Figure B-7-1.
Figure B-7-1 AquaLush Configuration File
Each elementary data item must be separated from the others by white space with the exception of the following:
The zone, sensor, and valve letters must not be separated from their identifier numbers.
All characters between angle brackets must be considered part of the description.
The curly braces and semicolon do not need to be separated from other tokens by white space.
The configuration file must be named “config.txt” and must be placed in the same directory as the AquaLush executable program.
A configuration file that cannot be found, opened, read, or parsed must be treated as a persistent store failure.
AquaLush must record its system parameters in persistent store so that its state can be restored at startup.
System parameters include the following items:
- Mode of operation
- Irrigation time
- Water allocation
The mode must be either manual or automatic.
The irrigation time must specify both the days and the time of day when irrigation is to occur.
The irrigation days must be a subset of {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}.
The irrigation time of day must be a 24-hour-clock value in the range 0000 to 2359 (accurate to one minute).
The water allocation must be an integer in the range 0..2^31–1 interpreted as gallons of water.
The current time is recorded in the system clock and may be set by the user; it consists of both the current day and the current time of day.
The current day must be an element of {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}.
The current time of day must be a 24-hour-clock value in the rage 0000 to 2359 (accurate to one minute).
The following data must be displayed for each valve in manual mode:
- Valve identifer
- Valve location
- How long the valve has been open
- How much water has been used
- Associated sensor moisture level
The valve identifier and location must be the valve data recorded in the system. The location may be truncated to fit user interface display constraints.
The length of time the valve has been open must be a military time specification in the form hhmm, where hh must be hours in the range 0..23 and mm must be minutes in the range 0..59. All four digits must always be displayed.
The amount of water used by the valve must be an integer in the range 0..2^31–1 describing the water used in gallons.
The associated sensor moisture level must be a moisture sensor reading in the range 0..100.
The total water used during manual irrigation must also be displayed. This value must be an integer in the range 0..2^31–1 describing the water used in gallons.
Each displayed value must be updated every minute or when a valve is opened.
Failure reports must display the following data:
The failed sensor or valve identifier
The failed sensor or valve location
The failed sensor or valve identifier must be the sensor or valve identifier recorded in the system.
The failed sensor or valve location must be the sensor or valve location recorded in the system. It may not be truncated on display.
The simulated time consists of the simulated day and the simulated time of day.
The simulated day must be an element of {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}.
The simulated time of day must be a 24-hour-clock value in the range 0000 to 2359 (accurate to one minute).
The simulation speed must be a multiple of the real rate of time specified as an integer multiplier in the range 1..1000.
The simulated water evaporation rate must be an integer in the range 0..100 interpreted as the percent change in moisture level per day (as reflected in the simulated moisture sensor reading).
The default mode must be automatic.
The default irrigation day must be the set {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} (every day).
The default irrigation time must be 0200.
The default water allocation must be 10000.
The default zone critical moisture level must be 50.
The default sensor and valve operational status must be true.
The default simulation speed must be 1 (real time).
The default simulated rate of water evaporation must be 10.
AquaLush software must be configurable in no more than 1 minute per irrigation valve after no more than 30 minutes of reading the instruction manual.
AquaLush must have an interface that allows irrigation to be set up or altered in less than five minutes without consulting a manual.
AquaLush must be operated from a single central control panel.
AquaLush must recover from power failures without human intervention.
AquaLush software must fail no more than once per month of normal operation.
The AquaLush simulation must be installable on a Web site in no more than one hour.
The AquaLush simulation must require no more than one hour per month of maintenance.
At least 70% of users must agree that the AquaLush Web-based simulation provides an accurate representation of the actual product and its use.
The main AquaLush irrigation software components must be reusable in later products.
AquaLush must eventually control a variety of irrigation valves.
AquaLush must accommodate implementation of traditional timer-controlled irrigation.
Sensors must be readable and provide data convertible to a percent of saturation value.
Sensor failures must be detectable when a sensor is read.
Valves must be openable and closable.
Valve failures must be detectable when a valve is manipulated.
The AquaLush central control panel must be based on ATM machine technology.
It must include a monochrome screen that displays 16 lines of 40 ASCII characters each.
It must include eight push buttons adjacent to the screen, called screen buttons.
There must be four buttons on each side of the screen, arranged so that their centers align with the 9th, 11th, 13th, and 15th lines of the display.
It must include a 12-key keypad.
The keypad must have 10 numeric keys, a DEL (delete) key, and an ESC (escape) key.
The control panel must have a menu-based textual user interface.
Most screens must present a menu selection or ask the user to fill in values as a result of a menu selection.
Pressing one of the screen buttons must take the indicated action.
Each child screen must have a menu item for returning to the parent screen from the bottom-right screen button.
Pressing the ESC button on a child screen must cancel any changes the user may have made and return to the parent screen.
Pressing the ESC button on the main menu screen must have no effect.
Pressing a screen button that does not have a function indicated in the display must have no effect.
Pressing a keypad digit button or the DEL button when the screen does not prompt for numeric input must have no effect.
Many screens have centered text. Text must be centered by dividing the length of the text in two, rounding down, and subtracting this value from 20 to reach the display column where the text begins. The first column must be zero.
The control panel must conduct a dialog with the user that begins in a main menu with AquaLush in automatic mode.
The user may change to a menu screen with AquaLush in manual mode.
The menu screens in the two modes must be identical except that
Their mode indicators must be different
The manual mode menu must have an extra menu item for controlling irrigation manually.
The control panel must conform to the dialog map in Figure B-7-2, which shows the main menu states and the manual irrigation control state.
Figure B-7-2 AquaLush Dialog Map
The Change Mode action must be a “Change Mode” screen button press.
The Control Irrigation action must be a “Control Irrigation” screen button press.
The Finished action must be either a “Finished” screen button press or a keypad ESC button press.
The Display Location action must be a “Display Location” screen button press.
The Display Data action must be a “Display Data” screen button press.
The control panel must conform to the dialog map in Figure B-7-3, which shows the common main menu item states suppressed in Figure B-7-2.
Figure B-7-3 Expanded AquaLush Dialog Map
The Main Menu state in this dialog map is a placeholder for the Auto Main state or the Manual Main state.
The Accept action must be an “Accept New Settings” screen button press.
The Finished action must be a “Finished” screen button press.
The Cancel action must be a keypad ESC button press.
The Set Clock action must be a “Set the Clock” screen button press.
The Fix Failures action must be a “Fix Failures” screen button press.
The Set Up Automatic Irrigation action must be a “Set Up Automatic Irrigation” screen button press.
The Set Times action must be a “Set Irrigation Times” screen button press.
The Set Moisture action must be a “Set Critical Moisture Levels” screen button press.
The Set Allocation action must be a “Set Water Allocation” screen button press.
The control panel must conform to the dialog map in Figure B-7-4 in the special circumstance that a device or persistent store error occurs during user interaction.
Figure B-7-4 AquaLush Dialog Map with Failures
Note that the Normal State is a placeholder for any of the states in the previous dialog maps.
The Device Failure action must be a detected sensor or valve failure.
The Store Failure action must be an inability to read from or write to the persistent data store.
The OK action must be an “OK” screen button press.
The Auto Main state must be the initial state of the user interface when AquaLush is installed.
The Auto Main state must display the main menu screen shown in Figure B-7-5.
Figure B-7-5 AquaLush Automatic Main Menu Screen
Note that the digits in the borders of Figures B-7-5 through B-7-17 are for ease in interpreting the diagram: They must not appear on the screen.
Note that the day, time, number of failed valves, and number of failed sensors must vary. This data must always be centered on the screen.
The Manual Main state must be an alternative main menu state in manual mode.
The Manual Main state must display the main menu screen shown in Figure B-7-6.
Figure B-7-6 AquaLush Manual Main Menu Screen
Note that the day, time, number of failed valves, and number of failed sensors must vary. This data must always be centered on the screen.
The Manual Irrigation (Data) state must allow users to directly open and close valves and must display irrigation data about each valve.
The Manual Irrigation (Data) state must display the screen shown in Figure B-7-7.
Figure B-7-7 AquaLush Manual Irrigation Data Screen
The region between the dashed lines must be a scrollable display of all working valves and data about their states or locations.
The valves must be listed in zone identifier order and then in valve identifier order within a zone.
The middle, highlighted element is the current valve.
The list must scroll up to or down to the middle element so that any valve can be made current.
There must always be a current valve.
The two middle screen buttons on the right must control scrolling.
If the user presses the “Open/Close Valve” screen button, then the current valve must be opened (if it is closed) or closed (if it is open).
If the user presses the “Propagate to Zone” screen button, then all valves in the current valve’s zone must be opened (if the current valve is open) or closed (if the current valve is closed).
The Valve field must show the identifier and status of each valve.
The status must be indicated by a single character in column three in the format “+” for open and “–” for closed.
The valve identifier must be left-aligned and occupy columns four through seven.
The Zone field must display the zone identifier left-aligned in columns 9 through 12.
The Wet% field must display the percent saturation of the moisture sensor in the valve’s zone right-aligned in columns 14 through 16 with no leading zero.
If the valve’s zone moisture sensor has failed, then this column must be filled with two dashes and be right-aligned.
The Time field must display the time that the valve has been open in four-digit military time notation in columns 19 through 22.
The Water Used field must show the number of gallons of water released by the valve during this manual irrigation cycle right-aligned in columns 24 through 36 with no leading zeros.
The Gallons Used display in row eight must show the number of gallons released by all valves during this irrigation cycle with no leading zeros.
The Gallons Used display must be centered.
The Manual Irrigation (Location) state must allow users to directly open and close valves and must display the location of each valve.
The Manual Irrigation (Location) state must display the screen shown in Figure B-7-8.
Figure B-7-8 AquaLush Manual Irrigation Location Screen
The region between the dashed lines must be a scrollable display that works just as in the Manual Irrigation (Data) state.
The screen buttons must work just as in the Manual Irrigation (Data) state.
The Valve field must display data just as in the Manual Irrigation (Data) state.
The Zone field must display data just as in the Manual Irrigation (Data) state.
The Location field must display the valve’s location string left-aligned in columns 14 through 37.
The Gallons Used display must work just as in the Manual Irrigation (Data) state.
The Set Clock state must allow users to set the AquaLush hardware clock.
The Set Clock state must display the screen shown in Figure B-7-9.
Figure B-7-9 AquaLush Set Clock Screen
The current day and time displays must change as time progresses.
If the user alters the current time, then the display must no longer progress.
If the user presses the DEL key, then characters must be erased from the Current Time display from right to left.
If the user presses keypad digit keys, then digits must be added to the Current Time display from left to right.
If the user presses keypad digit keys when there are already four digits in the Current Time display, then the display must not be changed and the terminal must beep.
Users must be constrained in entering digits in the following ways:
The first digit must be in the range zero to two.
If the first digit is zero or one, then the second digit must be in the range zero to nine.
If the first digit is two, then the second digit must be in the range zero to three.
The third digit must be in the range zero to five.
The fourth digit must be in the range zero to nine.
If the user attempts to enter an illegal digit, the digit must not be displayed and the terminal must beep.
If the user presses a screen key for a day, the day must be shown in the Current Day display immediately.
If the user presses the ESC key, the clock must not be changed.
If the user presses the “Accept New Settings” button, the current settings (possibly altered by the user) must be used to reset the clock.
If a new time is only partially entered when the user presses the “Accept New Settings” button, the time must not be reset.
The Fix Failures state must allow users to see which devices have failed and to tell AquaLush which have been repaired.
The Fix Failures state must display the screen shown in Figure B-7-10.
Figure B-7-10 AquaLush Fix Failures Screen
The region between the dashed lines must be a scrollable display of all failed sensors and valves, their zones, and their locations.
The failed sensors must be listed first, followed by failed valves in zone identifier order and then in valve identifier order within a zone.
The middle, highlighted element is the current device.
If the list is empty, there must be no current device.
A non-empty list must scroll up to or down to the middle element so that any device can be made current and there is always a current device.
The two middle screen buttons on the right must control scrolling.
If the user presses the “Repaired” screen button, then the current device must be recorded as repaired and removed from the list.
When a device is removed from the list and there is a device below the removed device, the device below must become the current device.
When a device is removed from the list and there is no device below the removed device but there is one above it, then device above must become the current device.
When a device is removed from the list and the list becomes empty, there must be no current device.
The Device field must show the identifier of each failed device left-aligned in columns three through six.
The Zone field must show the failed device’s zone identifier left-aligned in columns 9
through 12.
The Location field must display the failed device’s location string left-aligned in columns 14 through 37.
The failed devices summary in row eight must show counts of failed sensors and valves with no leading zeros in a centered display.
The Set Up Auto Irrigation state must allow users to configure automatic moisture-controlled irrigation.
The Set Up Auto Irrigation state must display the screen shown in Figure B-7-11.
Figure B-7-11 AquaLush Set Up Auto Irrigation Screen
The Set Irrigation Times state must allow users to set automatic irrigation times.
The Set Irrigation Times state must display the screen shown in Figure B-7-12.
Figure B-7-12 AquaLush Set Irrigation Times Screen
If the user presses the DEL key, then characters must be erased from the Irrigation Time display from right to left.
If the user presses keypad digit keys, then digits must be added to the Irrigation Time display from left to right.
If the user presses keypad digit keys when there are already four digits in the Irrigation Time display, then the display must not be changed and the terminal must beep.
Users must be constrained in entering digits in the following ways:
The first digit must be in the range zero to two.
If the first digit is zero or one, then the second digit must be in the range zero to nine.
If the first digit is two, then the second digit must be in the range zero to three.
The third digit must be in the range zero to five.
The fourth digit must be in the range zero to nine.
If the user attempts to enter an illegal digit, the digit must not be displayed and the terminal must beep.
The Irrigation Days display must show the current set of irrigation days as a day set string.
The day set string must show the currently selected irrigation days in order, starting from Monday using, the following abbreviations:
Monday must be abbreviated as “M.”
Tuesday must be abbreviated as “Tu.”
Wednesday must be abbreviated as “W.”
Thursday must be abbreviated as “Th.”
Friday must be abbreviated as “F.”
Saturday must be abbreviated as “Sa.”
Sunday must be abbreviated as “Su.”
If the user presses a screen key for a day and that day is present in the Irrigation Days display, then that day must be removed from the Irrigation Days display.
If the user presses a screen key for a day and that day is not present in the Irrigation Days display, then that day must be added to the Irrigation Days display.
If the user presses the ESC key, the irrigation days and time must not be changed.
If the user presses the “Accept New Settings” button, the current settings (possibly altered by the user) must be used for irrigation times.
If a new irrigation time is only partially entered when the user presses the “Accept New Settings” button, the irrigation time must not be changed, but any changes to the irrigation days must be accepted.
The Set Moisture Levels state must allow users to alter each zone’s critical moisture level.
The Set Moisture Levels state must display the screen shown in Figure B-7-13.
Figure B-7-13 AquaLush Set Moisture Levels Screen
The region between the dashed lines must be a scrollable display of all zones, their critical moisture levels, and their locations.
The zones must be listed in zone identifier order.
The middle, highlighted element is the current zone.
The list must scroll up to or down to the middle element so that any zone can be made current.
There must always be a current zone.
The two middle screen buttons on the right must control scrolling.
If the user presses the “Propagate Settings to All Zones” screen button, then the current zone’s critical moisture setting must be applied to all zones.
If the user presses the DEL key, then characters must be erased from the current zone’s moisture level display from right to left.
If the user presses keypad digit keys, then digits must be added to the current zone’s moisture level display from left to right.
If the user presses keypad digit keys when there are already three digits in the current zone’s moisture level display, then the display must not be changed and the terminal must beep.
Users must be constrained in entering digits in following ways:
The first two digits must be in the range zero to nine.
The third digit must be a zero, and it must be accepted only if the first two digits are “10.”
The Zone field must show the zone identifier left-aligned in columns three through six.
The Level field must show the zone’s critical moisture level right-aligned in columns 9 through 11 with no leading zeros.
The Location field must display the zone’s location string left-aligned in columns 14 through 37.
If the user presses the ESC key, then no changes made to the critical moisture levels must take effect.
If the user presses the “Accept New Settings” button, then all changes to critical moisture levels must take effect.
The Set Water Allocation state must allow users to set the total amount of water to be used in an automatic irrigation cycle.
The Set Water Allocation state must display the screen shown in Figure B-7-14.
Figure B-7-14 AquaLush Set Water Allocation Screen
If the user presses the DEL key, then characters must be erased from the Gallons Allocated display from right to left.
If the user presses keypad digit keys, then digits must be added to the Gallons Allocated display from left to right.
If the user presses keypad digit keys when there are already 14 digits in the Gallons Allocated display, then the display must not be changed and the terminal must beep.
If the user presses the ESC key, the water allocation must not be changed.
If the user presses the “Accept New Settings” button, the current water allocation must be used to regulate irrigation.
The Device Failure state must be entered to notify the user that a sensor or valve has failed and possibly that AquaLush cannot write to its persistent store.
The Device Failure state must display the screen shown in Figure B-7-15.
Figure B-7-15 AquaLush Device Failure Screen
The device identifier, zone, and location must vary.
If the failed device is a valve, then the display must show the valve identifier, the valve’s zone, and the valve’s location string.
If the failed device is a sensor, then the display must show the sensor identifier, the sensor’s zone, and the sensor’s location string.
The data displayed in rows three through five must be centered.
The message about failure to write to persistent store must appear only if this failure actually occurs.
When the user presses the “OK” button, the program must return to the state from which it came when the failure was detected.
The Persistent Store Failure state must be entered to notify the user that AquaLush cannot read from or write to its persistent store.
The Persistent Store Failure state must display the screen shown in Figure B-7-16.
Figure B-7-16 AquaLush Persistent Store Failure Screen
When the user presses the “OK” button, the program must return to the state from which it came when the failure was detected.
If AquaLush cannot read its persistent store during startup, then it must display the screen shown in Figure B-7-17 and suspend further processing.
Figure B-7-17 AquaLush Unable to Start Screen
The simulation user interface must appear as indicated in Figure B-7-18.
Figure B-7-18 AquaLush Simulation User Interface
The right-hand side of the user interface must simulate the AquaLush control panel.
The left-hand side of the user interface must control and display the state of the simulated irrigation site.
The failed devices controls must behave as specified in Figure B-7-19.
Figure B-7-19 Simulated Failed Devices Controls
The irrigation site display must behave as indicated in Figure B-7-20.
Figure B-7-20 Simulated Irrigation Site Display
The simulated time controls must behave as specified in Figure B-7-21.
Figure B-7-21 Simulated Time Controls
The evaporation controls must behave as specified in Figure B-7-22.
Figure B-7-22 Simulated Evaporation Controls