2.0.2014111701 check_brake_release() bug fix

This commit is contained in:
Anthony Good 2014-11-17 22:40:47 -05:00
parent 940ac791b1
commit ec3d702ab5
3 changed files with 116 additions and 8 deletions

View File

@ -17,7 +17,7 @@
Testing, ideas, bug fixes, and hardware provided by Anthony M0UPU, Bent OZ1CT, Eric WB6KCN, Norm N3YKF, Jan OK2ZAW, Jim M0CKE, Paolo IT9IPQ, and many others Testing, ideas, bug fixes, and hardware provided by Anthony M0UPU, Bent OZ1CT, Eric WB6KCN, Norm N3YKF, Jan OK2ZAW, Jim M0CKE, Paolo IT9IPQ, and many others
Translations: Maximo EA1DDO, Jan OK2ZAW, Paolo IT9IPQ Translations: Maximo EA1DDO, Jan OK2ZAW, Paolo IT9IPQ, Ismael PY4PI
Pololu library LSM303 code provided by Mike AD0CZ Pololu library LSM303 code provided by Mike AD0CZ
@ -271,10 +271,16 @@
Fixed bug with LANGUAGE_CZECH (thanks Radek, OK2NMA) Fixed bug with LANGUAGE_CZECH (thanks Radek, OK2NMA)
Change in Easycom response terminator (now uses whatever command terminator was sent to it) Change in Easycom response terminator (now uses whatever command terminator was sent to it)
Easycom AZ EL command string response change to +xxx.xx +xxx.xx
OPTION_HAMLIB_EASYCOM_AZ_EL_COMMAND_HACK
LANGUAGE_PORTUGUESE_BRASIL (thanks Ismael, PY4PI)
check_brake_release() bug fix
*/ */
#define CODE_VERSION "2.0.2014110401" #define CODE_VERSION "2.0.2014111701"
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
#include <EEPROM.h> #include <EEPROM.h>
@ -1502,7 +1508,9 @@ void check_brake_release() {
} }
} }
#ifdef FEATURE_ELEVATION_CONTROL if ((az_state != IDLE) && (brake_az_engaged)) {in_az_brake_release_delay = 0;}
#ifdef FEATURE_ELEVATION_CONTROL
if ((el_state == IDLE) && (brake_el_engaged)) { if ((el_state == IDLE) && (brake_el_engaged)) {
if (in_el_brake_release_delay) { if (in_el_brake_release_delay) {
if ((millis() - el_brake_delay_start_time) > EL_BRAKE_DELAY) { if ((millis() - el_brake_delay_start_time) > EL_BRAKE_DELAY) {
@ -1514,7 +1522,9 @@ void check_brake_release() {
in_el_brake_release_delay = 1; in_el_brake_release_delay = 1;
} }
} }
#endif // FEATURE_ELEVATION_CONTROL
if ((el_state != IDLE) && (brake_el_engaged)) {in_el_brake_release_delay = 0;}
#endif // FEATURE_ELEVATION_CONTROL
} /* check_brake_release */ } /* check_brake_release */
@ -2063,12 +2073,46 @@ void check_serial(){
// if it is an Easycom command and we have a space, line feed, or carriage return, process it // if it is an Easycom command and we have a space, line feed, or carriage return, process it
if (((incoming_serial_byte == 10) || (incoming_serial_byte == 13) || (incoming_serial_byte == 32)) && (control_port_buffer[0] != '\\') && (control_port_buffer[0] != '/')){ if (((incoming_serial_byte == 10) || (incoming_serial_byte == 13) || (incoming_serial_byte == 32)) && (control_port_buffer[0] != '\\') && (control_port_buffer[0] != '/')){
#if defined(OPTION_HAMLIB_EASYCOM_AZ_EL_COMMAND_HACK) && defined(FEATURE_ELEVATION_CONTROL)
if ((control_port_buffer[0]=='A') && (control_port_buffer[1]=='Z') && (control_port_buffer_index == 2)){
unsigned long start_time_hack = millis();
if (!control_port->available()){
while (((millis() - start_time_hack) < 200) && (!control_port->available())){} // wait 200 mS for something else to pop up on the serial port
}
if (control_port->available()){ // is there also 'EL ' waiting for us in the buffer?
start_time_hack = millis();
while ( (control_port->available()) && ((millis() - start_time_hack) < 200) ) {
control_port->read();
}
control_port_buffer[0] = 'Z';
process_easycom_command(control_port_buffer,1,CONTROL_PORT0,return_string);
//control_port->println(return_string); zzzzzz
control_port->print(return_string);
control_port->write(incoming_serial_byte);
} else { // we got just a bare AZ command
process_easycom_command(control_port_buffer,control_port_buffer_index,CONTROL_PORT0,return_string);
//control_port->println(return_string); zzzzzz
control_port->print(return_string);
control_port->write(incoming_serial_byte);
}
} else {
if (control_port_buffer_index > 1){
process_easycom_command(control_port_buffer,control_port_buffer_index,CONTROL_PORT0,return_string);
//control_port->println(return_string); zzzzzz
control_port->print(return_string);
control_port->write(incoming_serial_byte);
}
}
#else //defined(OPTION_HAMLIB_EASYCOM_AZ_EL_COMMAND_HACK) && defined(FEATURE_ELEVATION_CONTROL)
if (control_port_buffer_index > 1){ if (control_port_buffer_index > 1){
process_easycom_command(control_port_buffer,control_port_buffer_index,CONTROL_PORT0,return_string); process_easycom_command(control_port_buffer,control_port_buffer_index,CONTROL_PORT0,return_string);
//control_port->println(return_string); zzzzzz //control_port->println(return_string); zzzzzz
control_port->print(return_string); control_port->print(return_string);
control_port->write(incoming_serial_byte); control_port->write(incoming_serial_byte);
} }
#endif //defined(OPTION_HAMLIB_EASYCOM_AZ_EL_COMMAND_HACK) && defined(FEATURE_ELEVATION_CONTROL)
clear_command_buffer(); clear_command_buffer();
} else { } else {
// if it is a backslash command, process it if we have a carriage return // if it is a backslash command, process it if we have a carriage return
@ -2183,7 +2227,7 @@ void check_buttons(){
debug_println("check_buttons: button_cw pushed"); debug_println("check_buttons: button_cw pushed");
#endif // DEBUG_BUTTONS #endif // DEBUG_BUTTONS
#ifdef OPTION_AZ_MANUAL_ROTATE_LIMITS #ifdef OPTION_AZ_MANUAL_ROTATE_LIMITS
if (raw_azimuth < (AZ_MANUAL_ROTATE_CW_LIMIT * HEADING_MULTIPLIER)) { if (raw_azimuth < (AZ_MANUAL_ROTATE_CW_LIMIT * HEADING_MULTIPLIER)) {
#endif #endif
submit_request(AZ, REQUEST_CW, 0, 61); submit_request(AZ, REQUEST_CW, 0, 61);
azimuth_button_was_pushed = 1; azimuth_button_was_pushed = 1;
@ -10770,12 +10814,27 @@ void process_easycom_command(byte * easycom_command_buffer, int easycom_command_
strcpy(return_string,""); strcpy(return_string,"");
switch (easycom_command_buffer[0]) { // look at the first character of the command switch (easycom_command_buffer[0]) { // look at the first character of the command
#if defined(OPTION_HAMLIB_EASYCOM_AZ_EL_COMMAND_HACK) && defined(FEATURE_ELEVATION_CONTROL) //zzzzzz
case 'Z':
strcpy(return_string,"+");
dtostrf((float)azimuth/(float)HEADING_MULTIPLIER,0,1,tempstring);
strcat(return_string,tempstring);
if (elevation >= 0){
strcat(return_string,"+");
} else {
strcat(return_string,"-");
}
dtostrf((float)elevation/(float)HEADING_MULTIPLIER,0,1,tempstring);
strcat(return_string,tempstring);
break;
#endif //OPTION_HAMLIB_EASYCOM_AZ_EL_COMMAND_HACK
case 'A': // AZ case 'A': // AZ
if (easycom_command_buffer[1] == 'Z') { // format is AZx.x or AZxx.x or AZxxx.x (why didn't they make it fixed length?) if (easycom_command_buffer[1] == 'Z') { // format is AZx.x or AZxx.x or AZxxx.x (why didn't they make it fixed length?)
switch (easycom_command_buffer_index) { switch (easycom_command_buffer_index) {
#ifdef OPTION_EASYCOM_AZ_QUERY_COMMAND #ifdef OPTION_EASYCOM_AZ_QUERY_COMMAND
case 2: case 2:
strcpy(return_string,"AZ"); //strcpy(return_string,"AZ");
strcpy(return_string,"+");
dtostrf((float)azimuth/(float)HEADING_MULTIPLIER,0,1,tempstring); dtostrf((float)azimuth/(float)HEADING_MULTIPLIER,0,1,tempstring);
strcat(return_string,tempstring); strcat(return_string,tempstring);
return; return;
@ -10807,7 +10866,12 @@ void process_easycom_command(byte * easycom_command_buffer, int easycom_command_
switch (easycom_command_buffer_index) { switch (easycom_command_buffer_index) {
#ifdef OPTION_EASYCOM_EL_QUERY_COMMAND #ifdef OPTION_EASYCOM_EL_QUERY_COMMAND
case 2: case 2:
strcpy(return_string,"EL"); //strcpy(return_string,"EL");
if (elevation >= 0){
strcpy(return_string,"+");
} else {
strcpy(return_string,"-");
}
dtostrf((float)elevation/(float)HEADING_MULTIPLIER,0,1,tempstring); dtostrf((float)elevation/(float)HEADING_MULTIPLIER,0,1,tempstring);
strcat(return_string,tempstring); strcat(return_string,tempstring);
return; return;

View File

@ -24,6 +24,7 @@
//#define LANGUAGE_SPANISH //#define LANGUAGE_SPANISH
//#define LANGUAGE_CZECH //#define LANGUAGE_CZECH
//#define LANGUAGE_ITALIAN //#define LANGUAGE_ITALIAN
//#define LANGUAGE_PORTUGUESE_BRASIL
/* master and remote slave unit functionality */ /* master and remote slave unit functionality */
//#define FEATURE_REMOTE_UNIT_SLAVE // uncomment this to make this unit a remote unit controlled by a host unit //#define FEATURE_REMOTE_UNIT_SLAVE // uncomment this to make this unit a remote unit controlled by a host unit
@ -44,7 +45,7 @@
//#define FEATURE_AZ_POSITION_HH12_AS5045_SSI //#define FEATURE_AZ_POSITION_HH12_AS5045_SSI
//#define FEATURE_AZ_POSITION_INCREMENTAL_ENCODER //#define FEATURE_AZ_POSITION_INCREMENTAL_ENCODER
//#define FEATURE_EL_POSITION_POTENTIOMETER #define FEATURE_EL_POSITION_POTENTIOMETER
//#define FEATURE_EL_POSITION_ROTARY_ENCODER //#define FEATURE_EL_POSITION_ROTARY_ENCODER
//#define FEATURE_EL_POSITION_PULSE_INPUT //#define FEATURE_EL_POSITION_PULSE_INPUT
//#define FEATURE_EL_POSITION_ADXL345_USING_LOVE_ELECTRON_LIB // Uncomment for elevation ADXL345 accelerometer support using ADXL345 library //#define FEATURE_EL_POSITION_ADXL345_USING_LOVE_ELECTRON_LIB // Uncomment for elevation ADXL345 accelerometer support using ADXL345 library
@ -122,6 +123,7 @@
//#define OPTION_EXTERNAL_ANALOG_REFERENCE //Activate external analog voltage reference (needed for RemoteQTH.com unit) //#define OPTION_EXTERNAL_ANALOG_REFERENCE //Activate external analog voltage reference (needed for RemoteQTH.com unit)
//#define OPTION_SYNC_MASTER_CLOCK_TO_SLAVE //#define OPTION_SYNC_MASTER_CLOCK_TO_SLAVE
//#define OPTION_DISABLE_HMC5883L_ERROR_CHECKING //#define OPTION_DISABLE_HMC5883L_ERROR_CHECKING
//#define OPTION_HAMLIB_EASYCOM_AZ_EL_COMMAND_HACK

View File

@ -369,6 +369,48 @@ You can tweak these, but read the online documentation!
#define NNE_STRING "NNE" #define NNE_STRING "NNE"
#endif //LANGUAGE_ITALIAN #endif //LANGUAGE_ITALIAN
#ifdef LANGUAGE_PORTUGUESE_BRASIL // courtesy of Ismael, PY4PI
#define MOON_STRING "lua "
#define SUN_STRING "sol "
#define AZ_TARGET_STRING "Objetivo Az "
#define EL_TARGET_STRING "Objetivo El "
#define TARGET_STRING "Objetivo "
#define PARKED_STRING "Estacionado"
#define ROTATING_CW_STRING "Rodando DIR"
#define ROTATING_CCW_STRING "Rodando ESQ"
#define ROTATING_TO_STRING "Rodando para "
#define ELEVATING_TO_STRING "Elevando para "
#define ELEVATING_UP_STRING "Subindo"
#define ELEVATING_DOWN_STRING "Descendo"
#define ROTATING_STRING "Rodando "
#define CW_STRING "DIR"
#define CCW_STRING "ESQ"
#define UP_STRING "SOBE"
#define DOWN_STRING "DESCE"
#define AZIMUTH_STRING "Azimute "
#define AZ_STRING "Az"
#define AZ_SPACE_STRING "Az "
#define SPACE_EL_STRING " El"
#define SPACE_EL_SPACE_STRING " El "
#define GPS_STRING "GPS"
#define N_STRING "N"
#define W_STRING "O"
#define S_STRING "S"
#define E_STRING "L"
#define NW_STRING "NO"
#define SW_STRING "SO"
#define SE_STRING "SL"
#define NE_STRING "NL"
#define NNW_STRING "NNO"
#define WNW_STRING "ONO"
#define WSW_STRING "OSO"
#define SSW_STRING "SSO"
#define SSE_STRING "SSL"
#define ESE_STRING "LSL"
#define ENE_STRING "LNL"
#define NNE_STRING "NNL"
#endif //LANGUAGE_PORTUGUESE_BRASIL
#define TRACKING_ACTIVE_CHAR "*" #define TRACKING_ACTIVE_CHAR "*"
#define TRACKING_INACTIVE_CHAR "-" #define TRACKING_INACTIVE_CHAR "-"