Changelog - 0.8.5.X

Related to the development libraries, released by Curt Binder
Locked
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Changelog - 0.8.5.X

Post by binder »

v0.8.5.19
---------
Updated version to .19

Updated mode response
When we enter into the feeding or water change mode successfully,
the controller will return <MODE>OK</MODE>
If we are already in a mode or unable to enter the mode, the
controller will return <MODE>ERR</MODE> indicating that it cannot
change modes.
This applies to /mw and /mf (water and feeding modes).

Updated default Features

Updated new wifi commands
Changed wifi commands to the following:
/w --> /mw - water change mode
/f --> /mf - feeding mode

Also, the new commands now send a reply of
<MODE>OK</MODE> with a success response

Merge branch 'master' of https://github.com/reefangel/ReefAngel-1

Bug on pH smoothing

Wifi - added in more wifi commands
Added the following commands:
/f - starts feeding mode
/w - starts water change mode
/bp - simulates a button press

Feeding and water change modes can only be activated if you are on the
main screen. If you are already in one of those modes, then the event
is ignored. Also, button press works in ANY mode. It can be used to
stop the modes or to display the menu, but you cannot mimic the
joystick.

Also removed some pingSerial calls during the drawing of the home
screen. If one of those modes was triggered during a drawing call
then the screen would have artifacts on it when the screen was changed.

Wifi - Send salinity with status xml
Salinity Calibration
Added AI define to Features file
Added RF Expansion to Features file

Addition of AI controller interfacing
AI Class
Added Salinity Expansion define to Features file

Added in sanity check for LCD Timer
If the LCD Timer value stored is less than 60s, then a value of
60s is written to internal memory
Also changed DisplayedMenu != 253 to be FEEDING_MODE (instead of 253)


pH Averaging
Fixed compilation without new defines

RF and Salinity Classes from Roberto
RF anf Salinity Classes

Moved PWM Expansion commands to PWM class
Also fixed bug with the expansion percent conversion.

v0.8.5.18
---------
Updated version
Removed unknown request case handling

Changed PWMExpansion define to be PWMEXPANSION
The compiler gave errors when the define and a function had the same
spelling. The simple solution was to convert the define statement
to all uppercase letters (like it should be).

Fix for Displaying Menu Headers
With the conversion of the menu headers to progmem, a bug was introduced
with the standard menu when not all the menu entries are added due
to IFDEFs with removing it.

v0.8.5.17
---------
Update ATO Logging comment

Improved functionality when exiting the menu
Instead of having the same code repeated in multiple places, consolidated
code into a function with the common function calls when exiting the
menu and displaying the home screen again.

Added additional Custom Menu modes
When displaying a custom menu, if you display your own screen
you need to indicate if you want to return to the menu or the
main/home screen. The modes will handle the appropriate cleanup
and enabling of proper settings so the controller will work as
desired.
The modes / displayed menu options are:
ALT_SCREEN_MODE - for returning to menu
RETURN_MAIN_MODE - for returning to home screen

Fixed compilation error with WIFI_SERIAL and wifi not enabled
Updated version to .17
Updated Features file with comments
Updated comment about custom menu
Removed some unused code

NokiaLCD - Updated Error displaying for temp sensors
DrawSingleMonitor now checks if we are adding a decimal point to the
number being displayed. If we are, we know that it is most likely a
temperature or ph. If the value is 0, then we will display Error
indicating that there is an error with the probe. Otherwise, if no
decimal is being drawn, we most likely are displaying the PWM percentage
and therefore should display the 0.

Updated error display for unplugged temp sensors
Default build for Plus
Plus wifi working and configured for special build
Updated to work with builtin wifi board
Added more notes about enable ato logging

Added ATO event logging
- Enabled with ENABLE_ATO_LOGGING
- Request ato events with /sa
- Ato events logged with a max of 4 events (4 low / 4 high)
- Standard ATO events are logged with the atolow
- SingleATO events are logged either high or low
- Logs are cleared when request for log information is sent
- Cyclic logging, so oldest event will be overwritten if 4 events are used
and no request is made for them
- Unknown or empty value / event will have either 0 or 4294967295 sent
The last value is FF FF FF FF (uninitialized memory values)
- If a timeout is exceeded, the OFF time for the event will be 0
- Structure of XML data being sent to requestor is:
<AL#ON>VALUE</AL#ON>
<AL#OFF>VALUE</AL#OFF>
<AH#ON>VALUE</AH#ON>
<AH#OFF>VALUE</AH#OFF>
Where # is the event number from 0 - 3
VALUE is the number of seconds since the epoc (jan 1, 1970)
- All ato events are sent when requested

Added Custom Menu capabilities
See Features file for full details. Short summary:

- Overrides SIMPLE_MENU
- Menu must be declared in PDE File
- Menu item / entry functions defined in PDE file
- Max of 9 entries (must be set in Features file)
- Only a single menu is allowed
- No setup functions are available, all memory setups must be done
via wifi/com interface

Wifi - cleaned up the content length a little for relay status

EEPROM - added in dword read/write capabilities

Exceed flags storing
The logging / storing of which event caused the RED status led to be
turned on. The ATO or Overheat lights are the 2 ways the status led
is turned on. Currently there is no way of knowing which event caused
the led to be turned on. Enabling this feature will allow the event
to be logged and displayed on your screen. It does not log the time,
only that either ATO or Overheat triggered the LED.

When you clear the events the LED is turned off but only the event
being cleared will be cleared. Currently the Overheat clear and ATO
clear will turn the LED off. With this enabled, you must clear each
event that caused the LED to be turned on.

There is no distinction between the LOW or HIGH ato switches.
There is a distinction between Standard ATO and Single ATO but both
functions cannot be used at the same time.

To know what event triggered the LED, you MUST use a custom main
screen and perform your own code checks to see the event. Future
improvements may be incorporated elsewhere but nothing is currently
planned.

This is enabled as follows in the Features file:

"#define ENABLE_EXCEED_FLAGS"

The logging will require an additional 68 bytes of storage.

Wifi - fixed date & time setting bug found by Roberto

ReefAngel - ability to specify what temp probe to use for the overheat
You can now specify what temp sensor probe you want to use to monitor the
overheat temperature. It can be any of the 3 temp probes. To use, you
must add the line inside the setup() function AFTER ReefAngel.Init();

The default is to use Temp2, so no changes are needed.

To use Temp1, add this line:
ReefAngel.OverheatTempProbe = &ReefAngel.Params.Temp1;

To use Temp3, add this line:
ReefAngel.OverheatTempProbe = &ReefAngel.Params.Temp3;

ReefAngel - fixed error with SaveRelayState not compiling
SaveRelayState is now compiling again. Currently untested but should work.
Use at own risk.

Moved DelayedOn from ReefAngel class to Relay class
Since the DelayedOn function pertains to the Relay class, it should be
stored inside the class. The function is stored inside the class.

Changed PWMExpansionRelay define to be PWMExpansion

Wifi - commented out unknown request response

Updated custom color defaults

Wifi - Handle the HTTP feedback from external server
Merged fix from Roberto.

Handle the HTTP request from the external server that indicates success
on updating the data in the database.
Also added back in the Unknown Request handling.

ConvertNumToString function added
The function ConvertNumToString has been added to simplify the conversion
from the numeric values to display properly in a string format. This is
useful for the Temperatures and PH values. It will convert the number to
a string and also insert the appropriate decimal place (provided the
proper positioning is given).

Wifi - Fixed invalid comment direction

Globals - MoonPhase function added
MoonPhase function created by Roberto added to the Globals library.
It is used just by calling MoonPhase(). It is a global function so there
is no need to reference the ReefAngel class to use it.

Wifi - Update how we process unknown wifi requests
Unknown request handling was added in an earlier release. So if we do not
recognize the request, we send an Unknown Request response. This works great
for the client suite and if people are sending commands manually. This fails
when people use the WebBanner to update reefangel.com. Once the controller
sends the data to reefangel.com, the server replies back with a response
and we process that as an unknown request and send back an unknown request
response. Then ra.com gets that request and doesn't know how to handle it
and sends us another response back. We then get in an almost endless loop
of the requests being sent back and forth and no data gets updated.

This update will mark it as an unknown request and then proceed without
sending anything back to the sender. It should not affect anything at all
with other programs communicating via WIFI. If anything, this should be
a little more secure in the sense that the controller is not publically or
physically responding to requests it does not handle. So people will not
know if it was a good request or not unless they actually get a response back.

Merge pull request #1 from reefangel/master
faulty sensor check
Faulty sensor check

v0.8.5.16
---------
Fixed PWM compilation error when PWM is disabled
ReefAngel - Removed HTTP version from Web Banner
Features - Updated comments about WDT feature
ReefAngel - Updated version screen to show if WDT is enabled or not.

Added Watch Dog timer support
Watchdog timer functionality now exists with the controller. To enable it,
you must add (or uncomment) the line to your Features file:

\#define WDT

You must have the optiboot bootloader version 4 to enable this feature.

ReefAngel_Globals - Updated relay default bg colors: green on & red off
Updated the default background colors for the relay boxes. If the port
is ON, the background color is GREEN and if the port is OFF, the background
color is RED.

ReefAngel - Fixed single ato timeout bug
Timeout was never being activated. Each time the switch was active, a check
to verify if we were currently running/topping was not being done. The
result was that the timer was being reset each time.

v0.8.5.15
---------
Wifi - removed some commented out code
Wifi - updated content length being sent with date request
Wifi - Set the PWM values immediately once set from wifi
Immediately set the PWM values when they get set from wifi. Used to
be set only at controller startup or through the menus.
Wifi - Sending controller date and time added
Sending the controller's date and time via wifi is done by:

GET /d

It sends an xml formatted string:
<D>
<HR>hour</HR>
<MIN>minute</MIN>
<MON>month</MON>
<DAY>day</DAY>
<YR>year</YR>
</D>

Seconds are ignored and not sent. Year is the 4 digit year.

Wifi - Added in handling of Date & Time setting from wifi interface
Date & Time is now able to be set via the wifi interface. The format is:

GET /dHHMM,MMDD,YY

HH - hours
MM - minutes
MM - month
DD - day
YY - year since 2000

All numbers MUST be formatted to 2 digits, so you must send the leading
0's in order for it to work properly.

The controller will reply <D>ERR</D> on error or <D>OK</D> on success.
There is no indication of what the error is. Simple validation is performed
to ensure that the values passed in are within normal ranges but specifics
for all the months is not checked. It is the sender's responsibility to
ensure that the date is validated and sent properly.

Changed TIMER indices to be define statements
Makes the conversion to different timer structures easier in the future
if the reference to the timers is a define statement.

ReefAngel.cpp - Added in HTML request version

ReefAngel_Wifi - Updated content length of the relay request

ReefAngel.cpp - Overheat temperature is now always read from Internal Memory
The overheat temperature was only read from the InternalMemory if
overheat setup was defined and used. Now it is always read from memory to
allow it work better with the wifi interface updating.

Feeding & LCD Timers always use internal memory values
The Feeding and LCD Timers used to use hard coded values unless
SetupExtras was defined. This has been changed to always using the value
stored in InternalMemory. The value should always be set due to requiring
users to update their InternalMemory before loading the dev code.

Feeding and LCD timers are now reloaded if their value is changed via
the wifi interface.

Added PWM values to XML data that's sent with the /r99 request

Added numbers only fonts
In addition to the additional fonts, since most of the fonts being displayed
are going to be used for numbers on the main screen, the corresponding
numbers to the fonts have been isolated. This saves on memory space and
allows people to use the fonts.

The numbers available are: 8x8, 8x16, 12x16 and 16x16

DrawHugeText now takes a last parameter of a font height which is an
enum of either Font12x16 or Num12x16.

Moved menu strings to PROGMEM
Also commented out PWMExpansionRelay by default

PWM Expansion Relay - Menu and code added
- PWM Menu entry added with the clouds and thunderstorms plus the ability to
specify a percentage to turn on all the PWM ports on the expansion module.
- Fixed a couple compile errors with having DisplayLEDPWM and RemoveAllLights
- PWM Expansion is enabled with #define PWMExpansionRelay
- This is independent from the Actinic & Daylight PWM ports on the head unit
- You can enable and control the ports and pwm expansion relay independently

Features - Added in comments about PWM Expansion device

ReefAngel - Fixed StandardFan Temp1 == 0 was missing
StandardFan now checks if the temp is 0. If it is, it just returns
and does not turn on or off the Fan relay.
Thanks rygh.

Wifi - Cleanup and Additions
Added a request option to set the date & time. Currently unable to but
the request type and switch exists.
Added an unknown request type to be a catch-all.
Some code cleanup for HTML responses, reuse code.

Wifi - Added in unknown request handling

Wifi - Improved XML sending of all memory locations
The total size of the page is computed before the page is sent out. This
will better conform to XML standards and allow the page to be viewed
inside a standard web browser without receiving errors.

Wifi Updates with XML tags
- Wifi memory read/write responses will be sent with the location in
the tag. Ex Read: <M800>8</M800>, Write: <M800>OK</M800>
- Errors will not contain the memory location because there is a possibility
that the memory location is unknown. Ex Error: <M>ERR</M>
- All memory request will be encapsulated with <MEM> tags.
Ex: <MEM><M800>8</M800><M801>30</M801>...<M840>324</M840></MEM>
- Fixed all memory request processing, was doing wrong comparison

Merge branch 'HugeNumbers'
Merged the HugeNumbers branch with the alternate fonts.

Updated Font Diplaying and Functions
Merged the DrawLargeTextLine functions together for the fonts 8x8, 8x16
and 12x16. This function is used by all three of these fonts with
the distinction being made by the last parameter which is the size.
The size is actually an enumerated value:
Font8x8
Font8x16
Font12x16

If the size is omitted, it is assumed to be Font8x8, so this could
have problems displaying the proper font if improperly used. No way
to safeguard around this.

ReefAngel_NokiaLCD - Added in fonts 8x8, 8x16 and 12x16
Added in the ability to enable the fonts for use in custom main screen
creation. They can be enabled by the defines: FONT_8x8, FONT_8x16
and FONT_12x16 along with the NUMBERS_16x16 define
When defined, you will have a function to call to use the appropriate font
8x8 - DrawLargeText(..., 8)
8x16 - DrawLargeText(..., 16)
12x16 - DrawHugeText(...)
16x16 - DrawNumbersText(...)

The DrawLargeText has the same parameters except the last parameter
specifies the height of the font to use. If you want the 8x8 font you
must specify 8 and if you want the 8x16 font you must specify 16.

Also, currently DrawNumbersText only works with a string, so you
cannot pass in actual numbers. This may change but for now it must be
a string that is passed in.

ReefAngel_NokiaLCD - Removed some commented out code

ReefAngel_NokiaLCD - Updated huge numbers font

ReefAngel_Wifi: Added in all memory request
All the memory values are now able to be sent in one reply. Issue the
GET /ma command and all the memory values are sent out at once. This
is beneficial so you don't have to manually request all the individual
values thus saving time.

ReefAngel_Wifi - Added request for version
Library version is now able to be retrieved by issuing the command "GET /v " to the controller.

ReefAngel_Wifi - Changed memory response strings to be PROGMEM strings
Started to add the bulk memory request handling so we can send all the memory values at once instead of having to request each individual memory location.

Temperature Conversion
The setup menus now display the appropriate units based on the controller's unit instead of being hard coded to F. The ranges for the temps are now changed appropriately. There is a function that can be called to convert the internal memory values from F to C or vice versa. It's not called by default to save space. It should be called when we have more space to work with. This will ensure that no matter what you set the internal memory values to, they will be converted properly based on the temperature setting on the controller.

ReefAngel_Wifi.cpp - Updated wifi sending memory values

ReefAngel_Features.h - Commented out SIMPLE_MENU by default

Simplified Menu Added
Added in simplified menu. Enabled by #define SIMPLE_MENU
It's a single menu screen with the basic options in it. Useful
for those who want the bare minimum on the controller and setup
everything elsewhere (ClientSuite, SetInternalMemory PDE, etc).
Also added in functions for Starting FeedingMode and WaterChangeMode
as well as clearing the ATO Timeout and Overheat Timeout.

ReefAngel_Nokia.cpp - Minor update to outlet box
Updated the displaying of the outlet box. It appeared that the relay blocks/boxes were shifted over 1 pixel from the borders on the box.

Added Huge Numbers (16x16)
Added in the ability to display huge numbers. You need to enable them with the define NUMBERS_16x16. Once enabled, you can call the DrawHugeNumbers and pass it a string of numbers.
Also did some minor formatting cleanups.

ReefAngel.cpp - Updated SingleATO
Flipped the SingleATO code around to work if it is mounted with the 2 wires up out of the water, like the LOW switch in the StandardATO.
Updated the hour interval check. It was not activating the first time.

Commented out CUSTOM_MAIN define statement

Updated Display code
Cleaned up some variable sizes to reduce overall footprint. Also moved font to PROGMEM instead of ram. Should help decrease amount of RAM being used.

Updated information about CUSTOM_MAIN in Features file

Ability to create a Customized Main screen from PDE
The ability to create your own customized main screen from within your PDE instead of using the standard one. To activate, you must:
- Define CUSTOM_MAIN in the Features file
- Create DrawCustomMain and DrawCustomGraph functions inside your PDE file

Then just write the code to display your custom main screen and custom graph (if desired). You will still have the ability to use the menu driven system and everything.

If you want to return to the standard screen, just remove the CUSTOM_MAIN define from the Features file and delete your DrawCustomMain and DrawCustomGraph functions.

Merge branch 'master' into dev

DelayedOn function added
The DelayedOn function has been added. This will allow the specified ports the ability to delay turning on in the following modes:
* Controller Power Up
* Feeding Mode (if toggled during mode)
* Water Change Mode (if toggled during mode)
The delay is in minutes. For the always on ports that will have a delay, you need to use the new function and place it in the loop().
Usage is: ReefAngel.DelayedOn(PORT, MINUTE_DELAY);

ReefAngel.cpp - Fixed flicker on Feeding Mode countdown timer

Expansion Modules update
Removed the Developer mode, wasn't being used at all. Changed the version screen around to show Wifi instead of Wifi Enabled and also added in the number of expansion modules installed (only a single number displayed to keep memory usaged down). Added in a define statement to the Features file called InstalledRelayExpansionModulese to allow for designating how many expansion modules are installed. If left undefined and expansion relays are enabled, it is assumed you have 1 expansion module. WebBanner now sends out all the data for all 8 expansion modules. The number of modules it sends out is dependent on how many InstalledRelayExpansionModules are defined.

Bumped version up to 0.8.5.15

ReefAngel_Wifi.cpp - code fixup, change int to byte
Changed a loop through the expansion relays to use a byte variable instead of an int variable to reduce the amount of storage used.

ReefAngel.cpp - PH Calibration values take affect immediately instead of on controller reboot.

Updated Feeding and Water Change Modes
Feeding and water change modes now process all the normal controller functions. The loop() is now being processed so the controller still monitors the devices. The web interface is now active during these modes as well. Future improvements may be needed. The devices that get turned on in the loop() that get toggled off for the modes may get activated by the controller. The only devices that currently respond appropriately are Wavemakers and Always On devices (turned on in the setup() ).
ReefAngel.cpp, ReefAngel.h, ReefAngel_Globals.h

ReefAngel_Wifi.cpp - Fixed error with no wavemakers in use
When setting the internal memory from the web interface, if the memory location is a Wavemaker we would restart the wavemaker timers. If wavemakers are not in use, this code would error out due to missing / undeclared variables. The code is now updated to only restart if a wavemaker is declared (by defining WavemakerSetup in the Features file).

ReefAngel_Wifi.cpp: Wrap memory read/write responses in xml
To facilitate the reading/writing of memory values for the Client Suite, the return values from the web memory commands will be wrapped in a xml tag (<M></M>) to indicate that the response is from the memory requests.

ReefAngel.cpp: Fixed SetupOption call for LCD Timeout

v0.8.5.14
---------
Updated version to 0.8.5.14
Fixed RelayExpansion Off code bug (using bitSet instead of bitClear)
Updated Copyright notice, added contribution notice

v0.8.5.13
---------
Updated Wavemaker Timers get reloaded after changing values Separate timer reload command is removed, only the wavemakers are required to be reloaded. The dosing pump timers get reset before each use. Also, if Feeding or LCD timers get changed, the controller should be reset. These don't get changed very often, so no worries with this.
Memory reading / writing via web interface implemented Now able to read/write memory location values from the web interface. Simple error checking is done for malformed strings. The client interface should be the one that limits the creation of malformed strings.
Usage is as follows:
for BYTE values,
READ "GET /mbLOC "
WRITE "GET /mbLOC,VAL "
for INT values,
READ "GET /miLOC "
WRITE "GET /miLOC,VAL "
Graph plot fix after change %10 check Backed out additional ATO switch checks with XML data sending
Adjusted XML data size based on Relay expansion block, 0.8.3.11 change
Removed DAVE_TEST blocks of code
Added 2 web request commands
- Added memory location reading
- Added empty command shell for reloading all the timers after change
Added additional ATO switch checks when printing XML data
PWMSlope fix for startPWM > 0
Updated S manually by 2 for counting ATO param size
Turn on heater if temp is <= LowTemp and if Temp > 0
T1Pointer write on %10
Updated Dosing Pump Setup screens
- Both dosing pump options/types are available from setup screen
- Menu display entries are still being finalized
- Features file contains the new define statement for the dosing pump interval
- Grouped dosing pump defines together
Added Dosing Pump Repeat Interval functionality
- Repeat Interval for dosing pumps is added
- Currently does not have a setup menu option / screen, so needs to be set manually in PDE file or set the internal memory values and use them
- Uses the same run time as the standard dosing pump (run time is in seconds)
- Repeat interval is in minutes (1440 minutes (1 day) or less)
- The repeat interval works best with an interval that evenly divides into 24 hours (1440 minutes).
- Odd intervals may not run properly when going through midnight, there may be additional lags/delays with the run times
- The intervals are based from the midnight the current day when being computed
Fixed RelayExpansion sending XML data bug - Forgot to include number data type for Serial.print
Fixed error with RelayExpansion module and wifi - Missing close parenthesis - Misspelled fuction name

v0.8.5.12
---------
Added ability to write memory values from web - process /mbLOC,VALUE and /miLOC,VALUE requests - /mb is for writing a byte - /mi is for writing an int - returns OK on write, ERR if no write - Better organized IF statement for relay mask processing -- changed separate IF statements into if-else to speed up processing
Removed commented out code
Compute actual relaydata values based on the relay masks
Migrate request type processing to switch statement instead of multiple if statements
Reverted to original relay mask toggling
Switched relay mask toggling to use regular relay toggle functions
Added in expansion module checks for relay mask
Removed commented out code
Added defines for the web request types
Fixed my error with reqtype not working properly
ifdef'd MoonlightPWM function to be removed if DisplayLEDPWM is not defined
Added ifdef for testing functions for Dave
Added Relay Expansion modules to XML data
Fixed Expansion Relay bug
Fixed WebBanner function
Replaced XML printing with a function, saved 112 bytes
Updated gitignore
Added WebBanner function for displaying web banner from PROGMEM instead of RAM
Added PCLogging function for Dave's PC client - Reads the strings from PROGMEM instead of RAM - Mimics the XML data sending like with wifi - Reduces having to manually type the strings in the PDE file - Makes code look cleaner
Beginning of moving WebBanner strings to PROGMEM
Fixed compilation problem with wifi enabled.
Fixed WIFI XML bug with wrong ATO statement

v0.8.5.11
---------
Added all fixes / updates from 0.8.3.3 to 0.8.3.8 Added more RAPlus code Added in expansion module code Added in MoonlightPWM code Added in PWMSlope code
Added code for ReefAngelPlus
Removed Phillips6610LCDInv files from library, not used

v0.8.5.10
---------
Merged v0.8.3.3 wifi fixes and authentication
- Moved wifi code to ReefAngel_Wifi library
Deleted Stack files
Restored PWM values on controller init and Update values on changing from menu

v0.8.5.9
--------
Updated wifi server string to match v0.8.3.2 libraries Changed versioning to 0.8.5.9 Removed Beta distinguishing in version string

v0.8.5.8
--------
Moved COLORS_PDE define to Features.h file
Added note about creating/separating custom colors from Globals.h
Updated version to Beta8
Removed comment from file
Merge branch 'colors' into dev
- Custom color definitions now can be separated out and controlled by a single file. Must uncomment the DEFINE statement at the top of the Globals header file. If the DEFINE statement is used, there are 2 more includes to add to your PDE file and the RAGenerator application must be updated to work with it.
Fixed WavemakerSetup define problem with Wavemaker1 & 2 functions
Updated file modes

v0.8.5.7
--------
Fixed Lights On to use the PWM values from memory instead of hard coded Updated TODO
Fixed bug with MHLights not turning on after delay.
- Delay was being computed as milliseconds when the checks were returning seconds. So the number of seconds for the delay was being multiplied by 1000 thus creating a REALLY large delay.
Updated TODO
Improved restarting wavemaker ports after updating timers
Added in LightsOnPorts relay mask to allow for easy customization of what ports are turned on when the lights are turned on.
Improved toggling ports during feeding & water change modes
Added OverheatShutoffPorts relay mask for easy selection of what ports get shutoff when overheat temp is reached.
Added Simplified Interface functions
- Added Wavemaker functions
- Removed wavemaker checks from ShowInterface() function call to simplify the removal of Wavemakers
Updated TODO
Updated TODO
Added check if Temp1 is 0, do not turn on Heater
Changed to Beta 7
Added ability to easily toggle what ports get turned on & off during water change and feeding mode via byte variables
Migrated colors to 2 separate header files
- Allows color defines to be in their own file
- Allows custom color configuration for controller to be in it's own file (possibility to have file auto-generated)

v0.8.5.6
--------
Updated TODO
Added more functionality
- Added in more EEPROM functions
- ATOHourInterval (for low switch)
- ATOHighHourInterval (for high switch)
- ATOHighTimeout (for high switch)
- Added SingleATO setup screens
- Added IFDEF for SingleATOSetup
- Added IFDEF for StandardLightSetup
- Added IFDEF for RemoveAllLights
- Added IFDEF for SaveRelayState (to save the state of the relay box before entering Feeding or Water change modes, but needs to be tested)
Added in more IFDEFs even though not configured
- Also added in more memory locations
Improved screen pulsing by adding back in some screen clearing
Added another check for working with features
Added ReefAngel_Features.h file for enabling/disabling features.
Updated some comments
Updated TODO file, cleaned up features list and added a WISH list
Preparing for beta 6 release
Add IFDEF for saving relay state when entering Feeding and Water Change modes
Improved Setup Display Option
- Merged SetupSingleOption and SetupDoubleOption into 1 function
- Moved the SetupLights options up a line to match the rest of the setup screens
- All standard setup screens can fit, only ones that cannot are Feeding Timeout, LCD Timeout, & Overheat timeout
Migrated TempUnit to ReefAngel_TempSensor class
Updated TempSensor Reading
- Added in a new way to read temp sensor values. Compare the previous temp with the current temp and see if it is greater than a predefined value. If it is, then do not update the temperature. This will help better compensate for large temp fluctations within 1 second. The temperature should not change drastically (over 10 degrees, even over 5 degrees) within 1 second especially in a fish tank environment.
- Added in ability to revert back to previous temp method of always storing the value read in by the sensor. Use #define DirectTempSensor to always have the temp updated.
- Removed a few extra LCD.Clears of a single pixel while storing the temp parameters in memory.
- Trimmed down Developer Mode string on version page to just be Dev Mode.
- Minor code cleanup to save memory
Added in more IFDEFs
- Added MetalHalideSetup IFDEF
- Added ATOSetup IFDEF
- Added in more comments about how much each feature will increase the compile size
- Removed some unused/commented out code
Commented out DEV_MODE
Added DosingPump Setup screen
Added the following new items:
- DosingPump Setup screen
- Fixed wavemaker ifdef not working properly
- DeveloperMode which just displays an extra line in the Version Function to indicate it (not useful for anything else)
Added in IFDEF's for removal of unwanted features
Added in the following IFDEF's
- Wavemaker Setup
- Dosing Pump Setup
- Date/Time Setup
- Version Display
- LED PWM (all references)
Updated Graph Range
Updated the graph range mapping to use global defines instead of hard coded values for easier to alter ranges.
Improving graphing ability
- Moved ReefAngel_Memory Memory variable to global variable
- Changed PH mapping values to be between PH7 (550) and PH10 (840)
- Added another color define (dotted line on graph in middle)
- DrawSingleGraph now uses Memory.Read() to get the values from EEPROM instead of using own way
- Cleaned up DrawSingleGraph parameters to always use I2CEEPROM1
Updated ignore file
Removal of unneeded additional comments

v0.8.5.5
--------
Updated TODO
Improvements with EEPROM functions
- DrawGraph is improved to only work for the T1Pointer
- Updated another Clear call for background colors
- Merged EEPROM.h library into ReefAngel_EEPROM class, now EEPROM.h is not needed
- InternalMemory is now accessible outside of ReefAngel class for EEPROM reading/writing
- Notes on how to use EEPROM memory locations have been added
Code Cleanup
Code Cleanup
Added ability to completely customize screen colors Code Cleanup
Code Cleanup
Code Cleanup
- Removed EEPROM_read/write anything
- Migrated reading/writing T1pointer to ReefAngel_EEPROM functions
- Consolidated LoadMenu functions into 1 function
- Various code cleanups
More changes to create beta 5
- Lots of code cleanup
- Addition of Date & Time setup
- ifdef's for removing non-standard or not often used setup screens
- Shell for DosingPump setup screen
Continued work with Date & Time setup
- Cleaned up code, removed unneeded variables
- Condensed compile size
- Added IFDEF for displaying graphics or not
- Added Date & Time setup, but changing of date or time causes controller to lockup
Added LeapYear function for Date / Time setup
Updated TODO list
Updated Lights Setup screen layout
Code Cleanup
Code Cleanup
Menus working again
- For some reason, a function call was preventing the Joystick from working. Still have to investigate the reason for this, but the code is functioning again.
Updated .gitignore to ignore patch files
Begin implementing Date/Time setting
- DrawOption was modified to allow for only clearing a specified number of digits. Also it starts displaying at the specified X coordinate instead of before the X coordinate. For some reason when these changes compile, the joystick button does not work. This will get fixed, but use caution if pulling this commit down.
Also did some simple cleanup of some code.
Updated TODO list
Updated DrawOption
DrawOption can display up to 5 digits. Starts at leftmost position specified and displays the digits. Can specify a max length/number of digits to prevent a larger space from being cleared.
Code cleanup (removal of unused/commented out functions)

v0.8.5.4
--------
Improved Nested Menus
- Switched to different menu layout scheme
- Removed ReefAngel_ByteStack library
Begin incorporating Setup Menus
- Improved InternalMemory write improvements (add const to write)
- Added DrawCalibrate for PH Calibration
- Setup Menu has limited / minimal functions
- PH Calibration works
- All functions compiled causes problems, considering out of RAM
- Read PH values from memory, not default memory
Use This Commit With Caution, needed to commit in order to branch to test out different menu scheme.
Added DrawCalibration
- Allows for calibrating the PH for the unit.
Code cleanup
- Cleaned up some erroneous functions (commented out)
- Reduced code size by "hopefully" 500 bytes
- Changed redraw to redrawmenu for more clarity
- Moved some 1 line functions to inline for better compilation
- Hopefully fixed the menu navigation now
- Commented out Processing the Setup Menu Items (except returning from setup)

v0.8.5.3
--------
Merge branch 'single-ato' into master
Updated TODO file
Fixed some minor bugs & updated version
- Changed Sump to Port8
- Added some improved function declarations for more C++ keywords/functions
- Fixed menu loop (getting stuck with an empty menu) when navigating the menus
Updated TODO file with new items
Removed a commented out line
SingleATO function implements hour delay
- The hourly delay should be working now with SingleATO. When the ATO pump shuts off, it is not allowed to run again until the HourDelay has elapsed.
Updated TODO list
Updated SingleATO function
- Allow SingleATO to be called with the optional Hour Delay. The shell exists however getting the time delay to work properly is not obvious right now.
Minor tweaks to SingleATO function
- Changed 2 parameter names in function. Initialize ATO timer variable to 0.
Added some C++ fixes
- Some undefined functions were added to make C++ more complete.
Fixed SingleATO timeout check
Updated TODO list with Single ATO items
ATO switches separated for independent function
- Added SingleATO base function, the function allows for independent usage of each ATO switch with a timeout value in seconds (need to verify timeout). The hour delay does not currently work.
- Moved all named ports to Port# instead of Sump, Chiller, Heater, etc.
- Added pure virtual function support (implementation for c++)
- Separated out ATO class into 2 separate classes, LowATO and HighATO for independent switch usage
- Modified StandardATO function to use the new ATO switch style
- ATO Timeout Clear menu entry clears both high & low timeouts (should separate out into 2 menu entries)
tested some changes with todo file
Fixed DrawOption function to not draw extra spaces if no unit or subunit is specified
Fixed TODO.txt after misreading a merge. TODO file restored back to correct status.
Merged TODO.txt file
Updated TODO.txt with some recent changes
Created RAStart variable and modified MHLights function
Curt's uncommited code
Added TODO list to project
Added MHDelay, DP1 & DP2 OnHour and OnMinute memory reading and writing
Removed saved code for testing
Added in phillips driver to control testing
Added project main readme file

v0.8.5.2
--------
Changed version
import readme files and ignore file for project
initial project import
Locked