2017.05.13.01

Added the \V command to FEATURE_CLOCK to set timezone offset
This commit is contained in:
Anthony Good 2017-05-13 12:22:48 -04:00
parent 886827f580
commit f56f803567
7 changed files with 49 additions and 18 deletions

View File

@ -281,13 +281,16 @@
2.0.2017042401 2.0.2017042401
configuration.brake_az_disabled is now set to 0 (not disabled) when initializing eeprom (Thanks, Patrick, TK5EP) configuration.brake_az_disabled is now set to 0 (not disabled) when initializing eeprom (Thanks, Patrick, TK5EP)
2017.05.13.01
Added the \V command to FEATURE_CLOCK to set timezone offset
All library files should be placed in directories likes \sketchbook\libraries\library1\ , \sketchbook\libraries\library2\ , etc. All library files should be placed in directories likes \sketchbook\libraries\library1\ , \sketchbook\libraries\library2\ , etc.
Anything rotator_*.* should be in the ino directory! Anything rotator_*.* should be in the ino directory!
*/ */
#define CODE_VERSION "2.0.2017042401" #define CODE_VERSION "2017.05.13.01"
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
#include <EEPROM.h> #include <EEPROM.h>
@ -513,6 +516,7 @@ struct config_t {
int azimuth_rotation_capability; int azimuth_rotation_capability;
#endif #endif
byte brake_az_disabled; byte brake_az_disabled;
float clock_timezone_offset;
} configuration; } configuration;
@ -4117,6 +4121,7 @@ void initialize_eeprom_with_defaults(){
configuration.azimuth_starting_point = AZIMUTH_STARTING_POINT_DEFAULT; configuration.azimuth_starting_point = AZIMUTH_STARTING_POINT_DEFAULT;
configuration.azimuth_rotation_capability = AZIMUTH_ROTATION_CAPABILITY_DEFAULT; configuration.azimuth_rotation_capability = AZIMUTH_ROTATION_CAPABILITY_DEFAULT;
configuration.brake_az_disabled = 0; //(brake_az ? 1 : 0); configuration.brake_az_disabled = 0; //(brake_az ? 1 : 0);
configuration.clock_timezone_offset = 0;
#ifdef FEATURE_ELEVATION_CONTROL #ifdef FEATURE_ELEVATION_CONTROL
configuration.last_elevation = elevation; configuration.last_elevation = elevation;
@ -9589,7 +9594,9 @@ char * clock_string(){
} }
dtostrf(clock_seconds, 0, 0, temp_string); dtostrf(clock_seconds, 0, 0, temp_string);
strcat(return_string, temp_string); strcat(return_string, temp_string);
if (configuration.clock_timezone_offset == 0){
strcat(return_string,"Z"); strcat(return_string,"Z");
}
return return_string; return return_string;
} /* clock_string */ } /* clock_string */
@ -9602,7 +9609,7 @@ char * clock_string(){
void update_time(){ void update_time(){
unsigned long runtime = millis() - millis_at_last_calibration; unsigned long runtime = millis() - millis_at_last_calibration;
unsigned long time = (3600L * clock_hour_set) + (60L * clock_min_set) + clock_sec_set + ((runtime + (runtime * INTERNAL_CLOCK_CORRECTION)) / 1000.0); unsigned long time = (configuration.clock_timezone_offset * 60L * 60L) + (3600L * clock_hour_set) + (60L * clock_min_set) + clock_sec_set + ((runtime + (runtime * INTERNAL_CLOCK_CORRECTION)) / 1000.0);
clock_years = clock_year_set; clock_years = clock_year_set;
clock_months = clock_month_set; clock_months = clock_month_set;
@ -9990,6 +9997,7 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte
byte temp_day = 0; byte temp_day = 0;
byte temp_minute = 0; byte temp_minute = 0;
byte temp_hour = 0; byte temp_hour = 0;
byte negative_flag = 0;
#endif // FEATURE_CLOCK #endif // FEATURE_CLOCK
#if defined(FEATURE_MOON_TRACKING) || defined(FEATURE_SUN_TRACKING) #if defined(FEATURE_MOON_TRACKING) || defined(FEATURE_SUN_TRACKING)
@ -10237,10 +10245,6 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte
clock_sec_set = 0; clock_sec_set = 0;
millis_at_last_calibration = millis(); millis_at_last_calibration = millis();
#if defined(FEATURE_RTC_DS1307) #if defined(FEATURE_RTC_DS1307)
rtc.adjust(DateTime(temp_year, temp_month, temp_day, temp_hour, temp_minute, 0)); rtc.adjust(DateTime(temp_year, temp_month, temp_day, temp_hour, temp_minute, 0));
#endif // defined(FEATURE_RTC_DS1307) #endif // defined(FEATURE_RTC_DS1307)
@ -10263,14 +10267,41 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte
update_time(); update_time();
strcat(return_string, clock_string()); strcat(return_string, clock_string());
#endif #endif
} else { } else {
strcpy(return_string, "Error. Usage: \\OYYYYMMDDHHmm"); strcpy(return_string, "Error. Usage: \\OYYYYMMDDHHmm");
} }
break; break;
#endif // FEATURE_CLOCK
case 'V': // \Vx[xxx][.][xxxx] Set time zone offset
negative_flag = 0;
place_multiplier = 1;
for (int x = input_buffer_index - 1; x > 1; x--) {
if (char(input_buffer[x]) == '-') {
negative_flag = 1;
} else {
if (char(input_buffer[x]) != '.') {
tempfloat += (input_buffer[x] - 48) * place_multiplier;
place_multiplier = place_multiplier * 10;
} else {
decimalplace = x;
}
}
}
if (decimalplace) {
tempfloat = tempfloat / pow(10, (input_buffer_index - decimalplace - 1));
}
if (negative_flag){tempfloat = tempfloat * -1.0;}
if ((tempfloat >= -24.0) && (tempfloat <= 24.0)) {
configuration.clock_timezone_offset = tempfloat;
configuration_dirty = 1;
strcpy(return_string, "Timezone offset set to ");
dtostrf(tempfloat, 0, 2, temp_string);
strcat(return_string, temp_string);
} else {
strcpy(return_string, "Error.");
}
break;
#endif // FEATURE_CLOCK
case 'D': // \D - Debug case 'D': // \D - Debug
if (debug_mode & source_port) { if (debug_mode & source_port) {

View File

@ -130,15 +130,15 @@
#define OPTION_DISPLAY_HEADING_AZ_ONLY #define OPTION_DISPLAY_HEADING_AZ_ONLY
#define OPTION_DISPLAY_HEADING_EL_ONLY #define OPTION_DISPLAY_HEADING_EL_ONLY
// #define OPTION_DISPLAY_HHMM_CLOCK // display HH:MM clock (set position with #define LCD_HHMM_CLOCK_POSITION) // #define OPTION_DISPLAY_HHMM_CLOCK // display HH:MM clock (set position with #define LCD_HHMM_CLOCK_POSITION)
//#define OPTION_DISPLAY_HHMMSS_CLOCK // display HH:MM:SS clock (set position with #define LCD_HHMMSS_CLOCK_POSITION) // #define OPTION_DISPLAY_HHMMSS_CLOCK // display HH:MM:SS clock (set position with #define LCD_HHMMSS_CLOCK_POSITION)
// #define OPTION_DISPLAY_ALT_HHMM_CLOCK_AND_MAIDENHEAD // display alternating HH:MM clock and maidenhead on LCD row 1 (set position with #define LCD_HHMMCLOCK_POSITION) // #define OPTION_DISPLAY_ALT_HHMM_CLOCK_AND_MAIDENHEAD // display alternating HH:MM clock and maidenhead on LCD row 1 (set position with #define LCD_HHMMCLOCK_POSITION)
// #define OPTION_DISPLAY_CONSTANT_HHMMSS_CLOCK_AND_MAIDENHEAD // display constant HH:MM:SS clock and maidenhead on LCD row 1 (set position with #define LCD_CONSTANT_HHMMSSCLOCK_MAIDENHEAD_POSITION) // #define OPTION_DISPLAY_CONSTANT_HHMMSS_CLOCK_AND_MAIDENHEAD // display constant HH:MM:SS clock and maidenhead on LCD row 1 (set position with #define LCD_CONSTANT_HHMMSSCLOCK_MAIDENHEAD_POSITION)
//#define OPTION_DISPLAY_BIG_CLOCK // display date & time clock (set row with #define LCD_BIG_CLOCK_ROW) #define OPTION_DISPLAY_BIG_CLOCK // display date & time clock (set row with #define LCD_BIG_CLOCK_ROW)
//#define OPTION_CLOCK_ALWAYS_HAVE_HOUR_LEADING_ZERO //#define OPTION_CLOCK_ALWAYS_HAVE_HOUR_LEADING_ZERO
#define OPTION_DISPLAY_GPS_INDICATOR // display GPS indicator on LCD - set position with LCD_GPS_INDICATOR_POSITION and LCD_GPS_INDICATOR_ROW #define OPTION_DISPLAY_GPS_INDICATOR // display GPS indicator on LCD - set position with LCD_GPS_INDICATOR_POSITION and LCD_GPS_INDICATOR_ROW
#define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY #define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY
//#define OPTION_DISPLAY_DIRECTION_STATUS // N, W, E, S, NW, etc. direction indicator //#define OPTION_DISPLAY_DIRECTION_STATUS // N, W, E, S, NW, etc. direction indicator
#define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY // #define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY
//#define OPTION_DISPLAY_MOON_OR_SUN_TRACKING_CONDITIONAL //#define OPTION_DISPLAY_MOON_OR_SUN_TRACKING_CONDITIONAL
#define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ #define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ
//#define OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE //#define OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE

View File

@ -153,7 +153,7 @@ You can tweak these, but read the online documentation!
#define BRAKE_ACTIVE_STATE HIGH #define BRAKE_ACTIVE_STATE HIGH
#define BRAKE_INACTIVE_STATE LOW #define BRAKE_INACTIVE_STATE LOW
#define EEPROM_MAGIC_NUMBER 106 #define EEPROM_MAGIC_NUMBER 107
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds #define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds

View File

@ -149,7 +149,7 @@ You can tweak these, but read the online documentation!
#define BRAKE_ACTIVE_STATE HIGH #define BRAKE_ACTIVE_STATE HIGH
#define BRAKE_INACTIVE_STATE LOW #define BRAKE_INACTIVE_STATE LOW
#define EEPROM_MAGIC_NUMBER 104 #define EEPROM_MAGIC_NUMBER 107
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds #define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds

View File

@ -149,7 +149,7 @@ You can tweak these, but read the online documentation!
#define BRAKE_ACTIVE_STATE HIGH #define BRAKE_ACTIVE_STATE HIGH
#define BRAKE_INACTIVE_STATE LOW #define BRAKE_INACTIVE_STATE LOW
#define EEPROM_MAGIC_NUMBER 104 #define EEPROM_MAGIC_NUMBER 107
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds #define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds

View File

@ -163,7 +163,7 @@ You can tweak these, but read the online documentation!
#define BRAKE_ACTIVE_STATE HIGH #define BRAKE_ACTIVE_STATE HIGH
#define BRAKE_INACTIVE_STATE LOW #define BRAKE_INACTIVE_STATE LOW
#define EEPROM_MAGIC_NUMBER 105 #define EEPROM_MAGIC_NUMBER 107
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds #define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds

View File

@ -150,7 +150,7 @@ You can tweak these, but read the online documentation!
#define BRAKE_ACTIVE_STATE HIGH #define BRAKE_ACTIVE_STATE HIGH
#define BRAKE_INACTIVE_STATE LOW #define BRAKE_INACTIVE_STATE LOW
#define EEPROM_MAGIC_NUMBER 103 #define EEPROM_MAGIC_NUMBER 107
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds #define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds