diff --git a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - AZIMUTH_ONLY - HORIZ - NX4832TO35 - v2020.03.30.01.HMI b/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - AZIMUTH_ONLY - HORIZ - NX4832TO35 - v2020.03.30.01.HMI deleted file mode 100644 index 69f51ba..0000000 Binary files a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - AZIMUTH_ONLY - HORIZ - NX4832TO35 - v2020.03.30.01.HMI and /dev/null differ diff --git a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - AZIMUTH_ONLY - HORIZ - NX4832TO35 - v2020.03.30.01.tft b/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - AZIMUTH_ONLY - HORIZ - NX4832TO35 - v2020.03.30.01.tft deleted file mode 100644 index 00416fd..0000000 Binary files a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - AZIMUTH_ONLY - HORIZ - NX4832TO35 - v2020.03.30.01.tft and /dev/null differ diff --git a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - EVERYTHING - HORIZ - NX4832TO35 - v2020.03.31.01.HMI b/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - BASE - NX4832TO35 - v2020.04.18.01.HMI similarity index 91% rename from k3ng_rotator_controller/Nextion/K3NG Rotator Controller - EVERYTHING - HORIZ - NX4832TO35 - v2020.03.31.01.HMI rename to k3ng_rotator_controller/Nextion/K3NG Rotator Controller - BASE - NX4832TO35 - v2020.04.18.01.HMI index d1b3c44..0648050 100644 Binary files a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - EVERYTHING - HORIZ - NX4832TO35 - v2020.03.31.01.HMI and b/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - BASE - NX4832TO35 - v2020.04.18.01.HMI differ diff --git a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - EVERYTHING - HORIZ - NX4832TO35 - v2020.03.31.01.tft b/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - EVERYTHING - HORIZ - NX4832TO35 - v2020.03.31.01.tft deleted file mode 100644 index c7ae0f3..0000000 Binary files a/k3ng_rotator_controller/Nextion/K3NG Rotator Controller - EVERYTHING - HORIZ - NX4832TO35 - v2020.03.31.01.tft and /dev/null differ diff --git a/k3ng_rotator_controller/k3ng_rotator_controller.ino b/k3ng_rotator_controller/k3ng_rotator_controller.ino index 380ed17..7321b19 100644 --- a/k3ng_rotator_controller/k3ng_rotator_controller.ino +++ b/k3ng_rotator_controller/k3ng_rotator_controller.ino @@ -430,7 +430,7 @@ Implemented a round robin screen redraw in rotator_k3ngdisplay.cpp 2020.03.30.01 - FEATURE_NEXTION_DISPLAY - Nextion display support UNDER DEVELOPMENT + FEATURE_NEXTION_DISPLAY_OLD - Nextion display support UNDER DEVELOPMENT Added file rotator_nextion.h Documentation in progress: https://github.com/k3ng/k3ng_rotator_controller/wiki/425-Human-Interface:-Nextion-Display @@ -447,6 +447,10 @@ 2020.04.03.01 Fixed issue with 20 column LCD displays and spacing of az and el readings (Thanks Steve VE3RX) + 2020.04.18.01 + More work on FEATURE_NEXTION_DISPLAY, Nextion Display API (UNDER DEVELOPMENT) + Documentation in progress: https://github.com/k3ng/k3ng_rotator_controller/wiki/425-Human-Interface:-Nextion-Display + All library files should be placed in directories likes \sketchbook\libraries\library1\ , \sketchbook\libraries\library2\ , etc. Anything rotator_*.* should be in the ino directory! @@ -456,7 +460,7 @@ */ -#define CODE_VERSION "2020.04.06.01" +#define CODE_VERSION "2020.04.18.01" #include #include @@ -622,14 +626,6 @@ #endif #endif -#ifdef FEATURE_NEXTION_DISPLAY - #include "Nextion.h" -#endif - -#ifdef FEATURE_NEXTION_DISPLAY_2 - #include "Nextion.h" -#endif - #include "rotator_language.h" #include "rotator_debug.h" #include "rotator_debug_log_activation.h" @@ -1136,15 +1132,6 @@ DebugClass debug; unsigned long last_activity_time_autopark = 0; #endif -#ifdef FEATURE_NEXTION_DISPLAY - #include "rotator_nextion.h" - byte nextion_current_screen = NEXTION_PAGE_SPLASH; -#endif - -#ifdef FEATURE_NEXTION_DISPLAY_2 - #include "rotator_nextion_api.h" -#endif - /* ------------------ let's start doing some stuff now that we got the formalities out of the way --------------------*/ @@ -1215,7 +1202,7 @@ void loop() { update_lcd_display(); #endif - #ifdef FEATURE_NEXTION_DISPLAY + #if defined(FEATURE_NEXTION_DISPLAY) service_nextion_display(); #endif @@ -3717,303 +3704,10 @@ char * azimuth_direction(int azimuth_in){ #endif /* ifdef FEATURE_LCD_DISPLAY */ // -------------------------------------------------------------- -// #if defined(FEATURE_NEXTION_DISPLAY) && defined(NEXTION_OBJNAME_BUTTON_CW) && defined(NEXTION_OBJID_BUTTON_CW) -// void NextionbCWPopCallback(void *ptr) { // button release -// submit_request(AZ, REQUEST_STOP, 0, DBG_NEXTION_BUTTON); - -// } -// #endif - -// -------------------------------------------------------------- -#if defined(FEATURE_NEXTION_DISPLAY) && defined(NEXTION_OBJNAME_BUTTON_CW) && defined(NEXTION_OBJID_BUTTON_CW) -void NextionbCWPushCallback(void *ptr) { // button press - - submit_request(AZ, REQUEST_CW, 0, DBG_NEXTION_BUTTON); - -} -#endif - -// -------------------------------------------------------------- -//#if defined(FEATURE_NEXTION_DISPLAY) && defined(NEXTION_OBJNAME_BUTTON_CCW) && defined(NEXTION_OBJID_BUTTON_CCW) -// void NextionbCCWPopCallback(void *ptr) { // button release - - -// submit_request(AZ, REQUEST_STOP, 0, DBG_NEXTION_BUTTON); - -// } -// #endif - -// -------------------------------------------------------------- -#if defined(FEATURE_NEXTION_DISPLAY) && defined(NEXTION_OBJNAME_BUTTON_CCW) && defined(NEXTION_OBJID_BUTTON_CCW) -void NextionbCCWPushCallback(void *ptr) { // button press - - submit_request(AZ, REQUEST_CCW, 0, DBG_NEXTION_BUTTON); - -} -#endif - -// -------------------------------------------------------------- -#if defined(FEATURE_NEXTION_DISPLAY) && defined(NEXTION_OBJNAME_BUTTON_STOP) && defined(NEXTION_OBJID_BUTTON_STOP) -void NextionbSTOPPushAndPopCallback(void *ptr) { // button press and release, just to be safe - - submit_request(AZ, REQUEST_STOP, 0, DBG_NEXTION_BUTTON); - #if defined(FEATURE_ELEVATION_CONTROL) - submit_request(EL, REQUEST_STOP, 0, DBG_NEXTION_BUTTON); - #endif - -} -#endif - -// -------------------------------------------------------------- -#if defined(FEATURE_NEXTION_DISPLAY) && defined(NEXTION_OBJNAME_BUTTON_CCW) && defined(NEXTION_OBJID_BUTTON_CCW) && defined(FEATURE_ELEVATION_CONTROL) -void NextionbUpPushCallback(void *ptr) { // button press - - submit_request(EL, REQUEST_UP, 0, DBG_NEXTION_BUTTON); - -} -#endif - -// -------------------------------------------------------------- -#if defined(FEATURE_NEXTION_DISPLAY) && defined(NEXTION_OBJNAME_BUTTON_CCW) && defined(NEXTION_OBJID_BUTTON_CCW) && defined(FEATURE_ELEVATION_CONTROL) -void NextionbDownPushCallback(void *ptr) { // button press - - submit_request(EL, REQUEST_DOWN, 0, DBG_NEXTION_BUTTON); - -} -#endif -// -------------------------------------------------------------- -#if defined(FEATURE_NEXTION_DISPLAY) -void NextionbBackPageMainPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_ABOUT_ID, NEXTION_UNDEFINED); -} -void NextionbNextPageMainPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_CONFIGURATION_ID, NEXTION_UNDEFINED); -} -void NextionbBackPageConfigurationPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_MAIN_ID, NEXTION_UNDEFINED); -} -void NextionbNextPageConfigurationPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_DIAGNOSTICS_ID, NEXTION_UNDEFINED); -} -void NextionbBackPageDiagnosticsPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_CONFIGURATION_ID, NEXTION_UNDEFINED); -} -void NextionbNextPageDiagnosticsPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_ABOUT_ID, NEXTION_UNDEFINED); -} -void NextionbBackPageAboutPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_DIAGNOSTICS_ID, NEXTION_UNDEFINED); -} -void NextionbNextPageAboutPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_MAIN_ID, NEXTION_UNDEFINED); -} -void NextionbBackPageSecondaryPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_MAIN_ID, NEXTION_UNDEFINED); -} -void NextionbNextPageSecondaryPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_TERTIARY, NEXTION_UNDEFINED); -} -void NextionbBackPageTertiaryPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_SECONDARY, NEXTION_UNDEFINED); -} -void NextionbNextPageTertiaryPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_MAIN_ID, NEXTION_UNDEFINED); -} - - -void NextionbDataEntryCancelPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_MAIN_ID, NEXTION_UNDEFINED); -} -void NextionbDataEntryEnterPushCallback(void *ptr){ - float entered_data_float = 0; - uint32_t data_entry_mode = NEXTION_UNDEFINED; - uint32_t decimal_position = 99; - uint32_t entry_value = 0; - byte request_type = REQUEST_STOP; - byte request_axis = 0; - uint32_t text_entered_length = 0; - - #if defined(DEBUG_NEXTION_DISPLAY) - debug.print("NextionbDataEntryEnterPushCallback: data_entry_mode: "); - #endif - - //get the values from the page - vDataEntryMode.getValue(&data_entry_mode); - vDataEntrySeperatorEntered.getValue(&decimal_position); - vDataEntryValue.getValue(&entry_value); - //tDataEntryEntry.getText(dummy_buffer,dummy_length); // couldn't get this to work for deriving entry length - vDataEntryDataEntryLength.getValue(&text_entered_length); - - #if defined(DEBUG_NEXTION_DISPLAY) - debug.print("NextionbDataEntryEnterPushCallback: data_entry_mode: "); - #endif - - if (data_entry_mode == NEXTION_DATA_ENTRY_MODE_AZ){ - request_type = REQUEST_AZIMUTH; - request_axis = AZ; - #if defined(DEBUG_NEXTION_DISPLAY) - debug.print("NEXTION_DATA_ENTRY_MODE_AZ "); - #endif - } - - #if defined(FEATURE_ELEVATION_CONTROL) - if (data_entry_mode == NEXTION_DATA_ENTRY_MODE_EL){ - request_type = REQUEST_ELEVATION; - request_axis = EL; - #if defined(DEBUG_NEXTION_DISPLAY) - debug.print("NEXTION_DATA_ENTRY_MODE_EL "); - #endif - } - #endif - - #if defined(DEBUG_NEXTION_DISPLAY) - debug.print("sep: "); - debug.print(decimal_position); - debug.print(" val: "); - debug.print(entry_value); - debug.print(" len: "); - debug.print(text_entered_length); - debug.println(""); - #endif - - if (request_type != REQUEST_STOP){ - entered_data_float = entry_value; - if (decimal_position != 99){ // 99 == no decimal place - do nothing - entered_data_float = entered_data_float / pow(10,(text_entered_length - decimal_position)); - #if defined(DEBUG_NEXTION_DISPLAY) - debug.print("NextionbDataEntryEnterPushCallback: entered_data_float: "); - debug.println(entered_data_float); - #endif - } - // TODO: az / el validation - submit_request(request_axis, request_type, int(entered_data_float * HEADING_MULTIPLIER), DBG_NEXTION_DATA_ENT_ENTER_PUSH_CALLBK); - } - - - // go back to the main page - NextionPageRefresh(NEXTION_PAGE_MAIN_ID, NEXTION_UNDEFINED); - -} -void NextiontAzValuePushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_DATA_ENTRY,NEXTION_DATA_ENTRY_MODE_AZ); -} -void NextiontElValuePushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_DATA_ENTRY,NEXTION_DATA_ENTRY_MODE_EL); -} - -void NextiontAzLabelPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_SECONDARY,NEXTION_UNDEFINED); -} -void NextiontElLabelPushCallback(void *ptr){ - NextionPageRefresh(NEXTION_PAGE_SECONDARY,NEXTION_UNDEFINED); -} - -#endif - -// -------------------------------------------------------------- -#if defined(FEATURE_NEXTION_DISPLAY) -void NextionPageRefresh(byte page_id,byte other_information){ - - // load up pages and populate as appropriate - - switch (page_id){ - case NEXTION_PAGE_MAIN_ID: - pageMain.show(); - - #if defined(FEATURE_ELEVATION_CONTROL) - tElLabel.setText(ELEVATION_STRING_NO_SPACE); - timerAzEl.enable(); - #else - timerAzOnly.enable(); // this runs code on the display that makes elevation related objects disappear - #endif - - tTitle.setText(TOUCH_DISPLAY_TITLE); - tAzLabel.setText(AZIMUTH_STRING_NO_SPACE); - - bCW.setText(CW_STRING); - bCCW.setText(CCW_STRING); - bSTOP.setText(TOUCH_DISPLAY_STOP_STRING); - nextion_current_screen = NEXTION_PAGE_MAIN_ID; - break; - - case NEXTION_PAGE_CONFIGURATION_ID: - pageConfiguration.show(); - nextion_current_screen = NEXTION_PAGE_CONFIGURATION_ID; - break; - - case NEXTION_PAGE_DIAGNOSTICS_ID: - pageDiagnostics.show(); - nextion_current_screen = NEXTION_PAGE_DIAGNOSTICS_ID; - tDiag.setText("Test 1 2 3\r\n4 5 6\n7 8 9\r\n"); - break; - - case NEXTION_PAGE_ABOUT_ID: - pageAbout.show(); - nextion_current_screen = NEXTION_PAGE_ABOUT_ID; - tCV.setText(CODE_VERSION); - break; - - case NEXTION_PAGE_DATA_ENTRY: - pageDataEntry.show(); - nextion_current_screen = NEXTION_PAGE_DATA_ENTRY; - bDataEntryCancel.setText(TOUCH_DISPLAY_DATA_ENTRY_CANCEL); - bDataEntryEnter.setText(TOUCH_DISPLAY_DATA_ENTRY_ENTER); - bDataEntryDelete.setText(TOUCH_DISPLAY_DATA_ENTRY_DELETE); - bDataEntrySeperator.setText(TOUCH_DISPLAY_DATA_ENTRY_SEPERATOR); - vDataEntryMode.setValue(other_information); // the data entry mode (az or el) gets passed to a Nextion global variable - switch(other_information){ - case NEXTION_DATA_ENTRY_MODE_AZ: - tDataEntryTitle.setText(TOUCH_DISPLAY_ENTER_AZ); - break; - case NEXTION_DATA_ENTRY_MODE_EL: - tDataEntryTitle.setText(TOUCH_DISPLAY_ENTER_EL); - break; - } - break; - - case NEXTION_PAGE_SECONDARY: - pageSecondary.show(); - //tTitleSecondary.setText(TOUCH_DISPLAY_TITLE); - break; - - case NEXTION_PAGE_TERTIARY: - pageTertiary.show(); - //tTitleTertiary.setText(TOUCH_DISPLAY_TITLE); - break; - - } - -} -#endif -// -------------------------------------------------------------- -//zzzzzz -#if defined(FEATURE_NEXTION_DISPLAY) +#if defined(FEATURE_NEXTION_DISPLAY_OLD) void service_nextion_display(){ - /* - - TODO: - - Azimuth & Elevation Data Entry in Display - Azimuth Direction - - Pages - Secondary - Presets - Park Button - Long path - Moon - Sun - Data Entry - Configuration - Event Log? - Diagnostics - Serial Sniff? - Debug Log? - - */ - char workstring1[32] = ""; @@ -4462,12 +4156,400 @@ void service_nextion_display(){ } -#endif // defined(FEATURE_NEXTION_DISPLAY) +#endif // defined(FEATURE_NEXTION_DISPLAY_OLD) // -------------------------------------------------------------- +#if defined(FEATURE_NEXTION_DISPLAY) +void sendNextionCommand(const char* send_command){ + + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_SEND) + debug.print("\r\nsendNextionCommand: send:"); + debug.println(send_command); + #endif + + nexSerial.print(send_command); + nexSerial.write(0xFF); + nexSerial.write(0xFF); + nexSerial.write(0xFF); +} +#endif //FEATURE_NEXTION_DISPLAY +// -------------------------------------------------------------- +#if defined(FEATURE_NEXTION_DISPLAY) +uint16_t recvNextionRetString(char *buffer, uint16_t len, uint32_t timeout){ + + uint16_t ret = 0; + bool received_start_byte = false; + uint8_t counter_0xff_bytes = 0; + String temp = String(""); + uint8_t serial_byte = 0; + unsigned long start; + + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_RECV) + debug.print("\r\nrecvNextionRetString: rcv:"); + #endif + + start = millis(); + while ((millis() - start) <= timeout){ + while (nexSerial.available()){ + serial_byte = nexSerial.read(); + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_RECV) + debug.write(serial_byte); + #endif + if (received_start_byte){ + if (serial_byte == 0xFF){ + counter_0xff_bytes++; + if (counter_0xff_bytes >= 3){ + break; + } + } else { + temp += (char)serial_byte; + } + } else if (serial_byte == 0x70){ //0x70 is starting byte that is discarded + received_start_byte = true; + } + } + + if (counter_0xff_bytes >= 3){ + break; + } + } + + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_RECV) + debug.println("$"); + if (millis() - start > timeout){ + debug.println("\r\nrecvNextionRetString: timeout"); + } + #endif + + ret = temp.length(); + if (ret > len){ + ret = len; + } + + strncpy(buffer, temp.c_str(), ret); + + return ret; + +} +#endif //FEATURE_NEXTION_DISPLAY +// -------------------------------------------------------------- +#if defined(FEATURE_NEXTION_DISPLAY) +void service_nextion_display(){ + + char workstring1[32] = ""; + char workstring2[32] = ""; + static int last_azimuth = 0; + static unsigned long last_az_update = 0; + static unsigned long last_various_things_update = 0; + int temp = 0; + char *buffer; + uint16_t len; + #if defined(FEATURE_ELEVATION_CONTROL) + static int last_elevation = 0; + static unsigned long last_el_update = 0; + #endif + #if defined(FEATURE_CLOCK) + static int last_clock_seconds = 0; + #endif + + #if defined(FEATURE_GPS) && defined(FEATURE_CLOCK) + static byte last_clock_status = clock_status; + static byte last_gps_sats = 0; + #endif + + static byte last_az_state = IDLE; + #if defined(FEATURE_ELEVATION_CONTROL) + static byte last_el_state = IDLE; + #endif + + #if defined(FEATURE_GPS) + static unsigned long last_grid_update = 0; + #endif + + #if defined(FEATURE_GPS) + static unsigned long last_coord_update = 0; + static unsigned long last_gps_update = 0; + unsigned long gps_fix_age_temp = 0; + float gps_lat_temp = 0; + float gps_long_temp = 0; + #endif + + #if defined(ANALOG_AZ_OVERLAP_DEGREES) + static byte last_overlap_indicator = 0; + byte overlap_indicator = 0;; + #endif + + #if defined(FEATURE_PARK) + static byte last_park_status = NOT_PARKED; + #endif + + #if defined(ANALOG_AZ_OVERLAP_DEGREES) + static unsigned long last_status3_update = 0; + #endif + +//zzzzzz + + #define NEXTION_FREQUENT_UPDATE_MS 500 + #define NEXTION_LESS_FREQUENT_UPDATE_MS 1000 + + uint8_t serial_byte = 0; + unsigned long last_serial_receive_time = 0; + static int nextion_port_buffer_index = 0; + static byte nextion_port_buffer[32]; + char return_string[32]; + static byte received_backslash = 0; + + // Get incoming commands + if (nexSerial.available()){ + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_RECV) + debug.print("\r\nservice_nextion_display: recv:"); + #endif + while (nexSerial.available()){ + serial_byte = nexSerial.read(); + + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_RECV) + debug.write(serial_byte); + #endif + + last_serial_receive_time = millis(); + if ((serial_byte > 96) && (serial_byte < 123)) { // uppercase it + serial_byte = serial_byte - 32; + } + + if (serial_byte == '\\'){ + received_backslash = 1; + } + + if ((serial_byte != 10) && (serial_byte != 13) && received_backslash) { // add it to the buffer if it's not a line feed or carriage return + nextion_port_buffer[nextion_port_buffer_index] = serial_byte; + nextion_port_buffer_index++; + } + + if ((serial_byte == 13) || (nextion_port_buffer_index > 31)){ // do we have a carriage return or have we hit the end of the buffer? + process_backslash_command(nextion_port_buffer, nextion_port_buffer_index, 0, return_string); + nextion_port_buffer_index = 0; + received_backslash = 0; + last_serial_receive_time = 0; + + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_RECV) + debug.print("\r\nservice_nextion_display: recv: return_string:"); + debug.println(return_string); + #endif + } + + } //while (nexSerial.available()) + #if defined(DEBUG_NEXTION_DISPLAY_SERIAL_RECV) + debug.println("$"); + #endif + + } //if (nexSerial.available()) + + // timeout the receive buffer if it's been sitting there awhile with no carriage return + if ((millis() - last_serial_receive_time) > 3000){ + nextion_port_buffer_index = 0; + received_backslash = 0; + last_serial_receive_time = 0; + } + + // Update various things + if ((millis() - last_various_things_update) > NEXTION_LESS_FREQUENT_UPDATE_MS){ + // Rotator Controller API Implementation Version + sendNextionCommand("vRCAPIv.txt=\"2020041701\""); + + // Rotator Controller Arduino Code Version + strcpy(workstring1,"vRCVersion.txt=\""); + strcat(workstring1,CODE_VERSION); + strcat(workstring1,"\""); + sendNextionCommand(workstring1); + + // System Capabilities + #if defined(FEATURE_YAESU_EMULATION) + #if defined(OPTION_GS_232B_EMULATION) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_GS_232B; //2 + #else + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_GS_232A; //1 + #endif + #endif + #if defined(FEATURE_EASYCOM_EMULATION) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_EASYCOM; //4 + #endif + #if defined(FEATURE_DCU_1_EMULATION) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_DCU_1; //8 + #endif + #if defined(FEATURE_ELEVATION_CONTROL) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_ELEVATION; //16 + #endif + #if defined(FEATURE_CLOCK) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_CLOCK; //32 + #endif + #if defined(FEATURE_GPS) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_GPS; //64 + #endif + #if defined(FEATURE_MOON_TRACKING) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_MOON; //128 + #endif + #if defined(FEATURE_SUN_TRACKING) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_SUN; //256 + #endif + #if defined(FEATURE_RTC_DS1307) || defined(FEATURE_RTC_PCF8583) + temp = temp | NEXTION_API_SYSTEM_CAPABILITIES_RTC; //512 + #endif + strcpy(workstring1,"gSC="); + dtostrf(temp, 1, 0, workstring2); + strcat(workstring1,workstring2); + sendNextionCommand(workstring1); + + last_various_things_update = millis(); + } + + // Azimuth + if (((azimuth != last_azimuth) || ((millis() - last_az_update) > NEXTION_FREQUENT_UPDATE_MS))){ + dtostrf(azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring1); + //strcat(workstring1,"\xF8"/*DISPLAY_DEGREES_STRING*/); // haven't figured out how the hell to get degrees symbol to display + strcpy(workstring2,"vAz.txt=\""); + strcat(workstring2,workstring1); + strcat(workstring2,"\""); + #if defined(DEBUG_NEXTION_DISPLAY) + debug.print("service_nextion_display: cmd: "); + debug.println(workstring2); + #endif + sendNextionCommand(workstring2); + last_azimuth = azimuth; + last_az_update = millis(); + + #if defined(DEBUG_NEXTION_DISPLAY) + sendNextionCommand("prints vAz.txt,6"); + // sendNextionCommand("get vAz.txt"); + len = 6; + recvNextionRetString(buffer,len,500); + debug.print("\r\nservice_nextion_display: get recv len: "); + debug.print(len); + debug.print(" buffer: "); + debug.println(buffer); + #endif + + } + + // Elevation + #if defined(FEATURE_ELEVATION_CONTROL) + if ((elevation != last_elevation) || ((millis() - last_el_update) > NEXTION_FREQUENT_UPDATE_MS)){ + dtostrf(elevation / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring1); + //strcat(workstring1,"\xF8"/*DISPLAY_DEGREES_STRING*/); + strcpy(workstring2,"vEl.txt=\""); + strcat(workstring2,workstring1); + strcat(workstring2,"\""); + sendNextionCommand(workstring2); + + last_elevation = elevation; + last_el_update = millis(); + } + #endif + + +// Clock + #if defined(FEATURE_CLOCK) + update_time(); + if (local_clock_seconds != last_clock_seconds){ + last_clock_seconds = clock_seconds; + strcpy(workstring1,"vClk.txt=\""); + #ifdef OPTION_CLOCK_ALWAYS_HAVE_HOUR_LEADING_ZERO + if (local_clock_hours < 10) { + strcpy(workstring1, "0"); + dtostrf(local_clock_hours, 0, 0, workstring2); + strcat(workstring1,workstring2); + } else { + dtostrf(local_clock_hours, 0, 0, workstring2); + strcpy(workstring1,workstring2); + } + #else + dtostrf(local_clock_hours, 0, 0, workstring2); + strcat(workstring1,workstring2); + #endif //OPTION_CLOCK_ALWAYS_HAVE_HOUR_LEADING_ZERO + strcat(workstring1,":"); + if (local_clock_minutes < 10) { + strcat(workstring1, "0"); + } + dtostrf(local_clock_minutes, 0, 0, workstring2); + strcat(workstring1,workstring2); + strcat(workstring1,":"); + if (local_clock_seconds < 10) { + strcat(workstring1, "0"); + } + dtostrf(local_clock_seconds, 0, 0, workstring2); + strcat(workstring1,workstring2); + strcat(workstring1,"\""); + sendNextionCommand(workstring1); + } + #endif //FEATURE_CLOCK + + // GPS + #if defined(FEATURE_GPS) && defined(FEATURE_CLOCK) + if ((last_clock_status != clock_status) || (last_gps_sats != gps.satellites()) || ((millis()-last_gps_update) > NEXTION_FREQUENT_UPDATE_MS)){ + if ((clock_status == GPS_SYNC) || (clock_status == SLAVE_SYNC_GPS)) { + strcpy(workstring1,"vGPS.txt=\""); + strcat(workstring1,GPS_STRING); + strcat(workstring1," "); + dtostrf(gps.satellites(),0,0,workstring2); + strcat(workstring1,workstring2); + strcat(workstring1," Sats"); + strcat(workstring1,"\""); + sendNextionCommand(workstring1); + last_gps_sats = gps.satellites(); + } else { + sendNextionCommand("vGPS.txt=\"\""); + } + last_gps_sats = gps.satellites(); + last_clock_status = clock_status; + last_gps_update = millis(); + } + #endif //defined(FEATURE_GPS) + + + //GRID + #if defined(FEATURE_GPS) + if ((millis() - last_grid_update) > (NEXTION_LESS_FREQUENT_UPDATE_MS-125)){ + strcpy(workstring1,"vGrid.txt=\""); + strcat(workstring1,coordinates_to_maidenhead(latitude,longitude)); + strcat(workstring1,"\""); + sendNextionCommand(workstring1); + last_grid_update = millis(); + } + #endif + + + //COORDINATES + #if defined(FEATURE_GPS) + if ((millis() - last_coord_update) > (NEXTION_LESS_FREQUENT_UPDATE_MS+125)){ + if ((clock_status == GPS_SYNC) || (clock_status == SLAVE_SYNC_GPS)) { + gps.f_get_position(&gps_lat_temp,&gps_long_temp,&gps_fix_age_temp); + strcpy(workstring1,"vCrd.txt=\""); + dtostrf(gps_lat_temp,4,4,workstring2); + strcat(workstring1,workstring2); + strcat(workstring1," "); + dtostrf(gps_long_temp,4,4,workstring2); + strcat(workstring1,workstring2); + strcat(workstring1," "); + dtostrf(gps.altitude()/100,0,0,workstring2); + strcat(workstring1,workstring2); + strcat(workstring1,"m"); + strcat(workstring1,"\""); + sendNextionCommand(workstring1); + } else { + sendNextionCommand("vCrd.txt=\"\""); + } + last_coord_update = millis(); + } + #endif + + +} +#endif //FEATURE_NEXTION_DISPLAY + + +// -------------------------------------------------------------- #if defined(FEATURE_LCD_DISPLAY) void update_lcd_display(){ @@ -5320,6 +5402,8 @@ void update_lcd_display(){ #endif // defined(FEATURE_LCD_DISPLAY) + + // -------------------------------------------------------------- #if defined(FEATURE_REMOTE_UNIT_SLAVE) || defined(FEATURE_YAESU_EMULATION) || defined(FEATURE_EASYCOM_EMULATION) void get_keystroke(){ @@ -8431,75 +8515,16 @@ void initialize_peripherals(){ //zzzzzzzzz + #ifdef FEATURE_NEXTION_DISPLAY - nexInit(); - timerInvokeReset.enable(); // manually invoke a hardware reset - this is to fix issues with data entry page + nexSerial.begin(NEXTION_SERIAL_BAUD); + delay(250); + sendNextionCommand("rest"); + + #endif //FEATURE_NEXTION_DISPLAY + - // Register events - #if defined(NEXTION_OBJNAME_BUTTON_CW) && defined(NEXTION_OBJID_BUTTON_CW) - bCW.attachPush(NextionbCWPushCallback, &bCW); - #endif - #if defined(NEXTION_OBJNAME_BUTTON_CCW) && defined(NEXTION_OBJID_BUTTON_CCW) - bCCW.attachPush(NextionbCCWPushCallback, &bCCW); - #endif - #if defined(NEXTION_OBJNAME_BUTTON_STOP) && defined(NEXTION_OBJID_BUTTON_STOP) - bSTOP.attachPush(NextionbSTOPPushAndPopCallback, &bSTOP); - bSTOP.attachPop(NextionbSTOPPushAndPopCallback, &bSTOP); - #endif - - // Azimuth Value Press (go to data entry page) - tAzValue.attachPush(NextiontAzValuePushCallback, &tAzValue); - - #if defined(FEATURE_ELEVATION_CONTROL) - #if defined(NEXTION_OBJNAME_BUTTON_UP) && defined(NEXTION_OBJID_BUTTON_UP) - bUp.attachPush(NextionbUpPushCallback, &bUp); - #endif - #if defined(NEXTION_OBJNAME_BUTTON_DOWN) && defined(NEXTION_OBJID_BUTTON_DOWN) - bDown.attachPush(NextionbDownPushCallback, &bDown); - #endif - // Elevation Value Press (go to data entry page) - #if defined(NEXTION_OBJNAME_ELEVATION_VALUE) && defined(NEXTION_OBJID_ELEVATION_VALUE) - tElValue.attachPush(NextiontElValuePushCallback, &tElValue); - #endif - #endif - - // Azimuth and Elevation Label pushes (go to Secondary page) - - tAzLabel.attachPush(NextiontAzLabelPushCallback, &tAzLabel); - - #if defined(FEATURE_ELEVATION_CONTROL) && defined(NEXTION_OBJNAME_ELEVATION_LABEL) && defined(NEXTION_OBJID_ELEVATION_LABEL) - tElLabel.attachPush(NextiontElLabelPushCallback, &tElLabel); - #endif - - #if defined(NEXTION_OBJNAME_DATAENT_CANCEL) && defined(NEXTION_OBJNAME_DATAENT_CANCEL) - bDataEntryCancel.attachPush(NextionbDataEntryCancelPushCallback, &bDataEntryCancel); - #endif - #if defined(NEXTION_OBJNAME_DATAENT_ENTER) && defined(NEXTION_OBJID_DATAENT_ENTER) - bDataEntryEnter.attachPush(NextionbDataEntryEnterPushCallback, &bDataEntryEnter); - #endif - - bBackPageMain.attachPush(NextionbBackPageMainPushCallback, &bBackPageMain); - bNextPageMain.attachPush(NextionbNextPageMainPushCallback, &bNextPageMain); - - bBackPageConfiguration.attachPush(NextionbBackPageConfigurationPushCallback, &bBackPageConfiguration); - bNextPageConfiguration.attachPush(NextionbNextPageConfigurationPushCallback, &bNextPageConfiguration); - - bBackPageDiagnostics.attachPush(NextionbBackPageDiagnosticsPushCallback, &bBackPageDiagnostics); - bNextPageDiagnostics.attachPush(NextionbNextPageDiagnosticsPushCallback, &bNextPageDiagnostics); - - bBackPageAbout.attachPush(NextionbBackPageAboutPushCallback, &bBackPageAbout); - bNextPageAbout.attachPush(NextionbNextPageAboutPushCallback, &bNextPageAbout); - - bBackPageSecondary.attachPush(NextionbBackPageSecondaryPushCallback, &bBackPageSecondary); - bNextPageSecondary.attachPush(NextionbNextPageSecondaryPushCallback, &bNextPageSecondary); - - bBackPageTertiary.attachPush(NextionbBackPageTertiaryPushCallback, &bBackPageTertiary); - bNextPageTertiary.attachPush(NextionbNextPageTertiaryPushCallback, &bNextPageTertiary); - - #endif - - #ifdef FEATURE_AZ_POSITION_HMC5883L compass = HMC5883L(); @@ -13124,7 +13149,8 @@ Not implemented yet: */ - if ((input_buffer[2] == 'D') && (input_buffer[3] == 'I')) { // \?DIxx - digital pin initialize as input; xx = pin # + + if ((input_buffer[2] == 'D') && (input_buffer[3] == 'I')) { // \?DIxx - digital pin initialize as input; xx = pin # if ((((input_buffer[4] > 47) && (input_buffer[4] < 58)) || (toupper(input_buffer[4]) == 'A')) && (input_buffer[5] > 47) && (input_buffer[5] < 58)) { byte pin_value = 0; if (toupper(input_buffer[4]) == 'A') { @@ -13217,33 +13243,85 @@ Not implemented yet: } } //if ((input_buffer_index == 6) + int hit_decimal = 0; + + if ((input_buffer[2] == 'G') && (input_buffer[3] == 'A')) { // \?GAxxx.x - go to AZ xxx.x + heading = 0; + for (int x = 4;x < input_buffer_index;x++){ + if(input_buffer[x] == '.'){ + hit_decimal = 10; + } else { + if (hit_decimal > 0){ + heading = heading + ((float)(input_buffer[x] - 48) / (float)hit_decimal); + hit_decimal = hit_decimal * 10; + } else { + heading = (heading * 10) + (input_buffer[x] - 48); + } + } + } + // debug.print("process_backslash_command: heading:"); + // debug.println(heading); + if ((heading >= 0) && (heading < 451)) { + submit_request(AZ, REQUEST_AZIMUTH, (heading * HEADING_MULTIPLIER), 136); + strcpy(return_string,"\\!OKGA"); + } else { + strcpy(return_string,"\\!??GA"); + } + } + if ((input_buffer[2] == 'G') && (input_buffer[3] == 'E')) { // \?GExxx.x - go to EL + #ifdef FEATURE_ELEVATION_CONTROL + heading = 0; + for (int x = 4;x < input_buffer_index;x++){ + if(input_buffer[x] == '.'){ + hit_decimal = 10; + } else { + if (hit_decimal > 0){ + heading = heading + ((float)(input_buffer[x] - 48) / (float)hit_decimal); + hit_decimal = hit_decimal * 10; + } else { + heading = (heading * 10) + (input_buffer[x] - 48); + } + } + } + // debug.print("process_backslash_command: heading:"); + // debug.println(heading); + if ((heading >= 0) && (heading < 181)) { + submit_request(EL, REQUEST_ELEVATION, (heading * HEADING_MULTIPLIER), 37); + strcpy(return_string,"\\!OKGE"); + } else { + strcpy(return_string,"\\!??GE"); + } + #else + strcpy(return_string,"\\!OKGE"); + #endif // #FEATURE_ELEVATION_CONTROL + } if (input_buffer_index == 9) { - if ((input_buffer[2] == 'G') && (input_buffer[3] == 'A')) { // \?GAxxx.x - go to AZ xxx.x - heading = ((input_buffer[4] - 48) * 100.) + ((input_buffer[5] - 48) * 10.) + (input_buffer[6] - 48.) + ((input_buffer[8] - 48) / 10.); - if (((heading >= 0) && (heading < 451)) && (input_buffer[7] == '.')) { - submit_request(AZ, REQUEST_AZIMUTH, (heading * HEADING_MULTIPLIER), 136); - strcpy(return_string,"\\!OKGA"); - } else { - strcpy(return_string,"\\!??GA"); - } - } - if ((input_buffer[2] == 'G') && (input_buffer[3] == 'E')) { // \?GExxx.x - go to EL - #ifdef FEATURE_ELEVATION_CONTROL - heading = ((input_buffer[4] - 48) * 100.) + ((input_buffer[5] - 48) * 10.) + (input_buffer[5] - 48) + ((input_buffer[8] - 48) / 10.); - if (((heading >= 0) && (heading < 181)) && (input_buffer[7] == '.')) { - submit_request(EL, REQUEST_ELEVATION, (heading * HEADING_MULTIPLIER), 37); - strcpy(return_string,"\\!OKGE"); - } else { - strcpy(return_string,"\\!??GE"); - } - #else - strcpy(return_string,"\\!OKGE"); - #endif // #FEATURE_ELEVATION_CONTROL - } + // if ((input_buffer[2] == 'G') && (input_buffer[3] == 'A')) { // \?GAxxx.x - go to AZ xxx.x + // heading = ((input_buffer[4] - 48) * 100.) + ((input_buffer[5] - 48) * 10.) + (input_buffer[6] - 48.) + ((input_buffer[8] - 48) / 10.); + // if (((heading >= 0) && (heading < 451)) && (input_buffer[7] == '.')) { + // submit_request(AZ, REQUEST_AZIMUTH, (heading * HEADING_MULTIPLIER), 136); + // strcpy(return_string,"\\!OKGA"); + // } else { + // strcpy(return_string,"\\!??GA"); + // } + // } + // if ((input_buffer[2] == 'G') && (input_buffer[3] == 'E')) { // \?GExxx.x - go to EL + // #ifdef FEATURE_ELEVATION_CONTROL + // heading = ((input_buffer[4] - 48) * 100.) + ((input_buffer[5] - 48) * 10.) + (input_buffer[5] - 48) + ((input_buffer[8] - 48) / 10.); + // if (((heading >= 0) && (heading < 181)) && (input_buffer[7] == '.')) { + // submit_request(EL, REQUEST_ELEVATION, (heading * HEADING_MULTIPLIER), 37); + // strcpy(return_string,"\\!OKGE"); + // } else { + // strcpy(return_string,"\\!??GE"); + // } + // #else + // strcpy(return_string,"\\!OKGE"); + // #endif // #FEATURE_ELEVATION_CONTROL + // } if ((input_buffer[2] == 'A') && (input_buffer[3] == 'W')) { // \?AWxxyyy - analog pin write; xx = pin #, yyy = value to write (0 - 255) diff --git a/k3ng_rotator_controller/rotator.h b/k3ng_rotator_controller/rotator.h index dbaacc1..8dfa176 100755 --- a/k3ng_rotator_controller/rotator.h +++ b/k3ng_rotator_controller/rotator.h @@ -196,5 +196,17 @@ #define DBG_SERVICE_SUN_TRACKING 253 #define DBG_SERVICE_MOON_TRACKING 254 +#define NEXTION_API_SYSTEM_CAPABILITIES_GS_232A 1 +#define NEXTION_API_SYSTEM_CAPABILITIES_GS_232B 2 +#define NEXTION_API_SYSTEM_CAPABILITIES_EASYCOM 4 +#define NEXTION_API_SYSTEM_CAPABILITIES_DCU_1 8 +#define NEXTION_API_SYSTEM_CAPABILITIES_ELEVATION 16 +#define NEXTION_API_SYSTEM_CAPABILITIES_CLOCK 32 +#define NEXTION_API_SYSTEM_CAPABILITIES_GPS 64 +#define NEXTION_API_SYSTEM_CAPABILITIES_MOON 128 +#define NEXTION_API_SYSTEM_CAPABILITIES_SUN 256 +#define NEXTION_API_SYSTEM_CAPABILITIES_RTC 512 + + /* ------end of macros ------- */ diff --git a/k3ng_rotator_controller/rotator_debug_log_activation.h b/k3ng_rotator_controller/rotator_debug_log_activation.h index 924c8bf..fddea17 100644 --- a/k3ng_rotator_controller/rotator_debug_log_activation.h +++ b/k3ng_rotator_controller/rotator_debug_log_activation.h @@ -60,4 +60,6 @@ // #define DEBUG_A2_ENCODER_LOOPBACK_TEST // #define DEBUG_QMC5883 // #define DEBUG_ROTATION_STALL_DETECTION -// #define DEBUG_NEXTION_DISPLAY \ No newline at end of file +// #define DEBUG_NEXTION_DISPLAY +// #define DEBUG_NEXTION_DISPLAY_SERIAL_SEND +// #define DEBUG_NEXTION_DISPLAY_SERIAL_RECV \ No newline at end of file diff --git a/k3ng_rotator_controller/rotator_dependencies.h b/k3ng_rotator_controller/rotator_dependencies.h index bee934f..3b2a1fe 100755 --- a/k3ng_rotator_controller/rotator_dependencies.h +++ b/k3ng_rotator_controller/rotator_dependencies.h @@ -140,6 +140,10 @@ #define CONTROL_PROTOCOL_EMULATION #endif +#if (defined(OPTION_SAVE_MEMORY_EXCLUDE_EXTENDED_COMMANDS) || defined(OPTION_SAVE_MEMORY_EXCLUDE_BACKSLASH_CMDS)) && defined(FEATURE_NEXTION_DISPLAY) +#error "FEATURE_NEXTION_DISPLAY requires extended commands. Disable OPTION_SAVE_MEMORY_EXCLUDE_EXTENDED_COMMANDS and OPTION_SAVE_MEMORY_EXCLUDE_BACKSLASH_CMDS." +#endif + diff --git a/k3ng_rotator_controller/rotator_features_test.h b/k3ng_rotator_controller/rotator_features_test.h index 9e46e8f..8e97e6f 100755 --- a/k3ng_rotator_controller/rotator_features_test.h +++ b/k3ng_rotator_controller/rotator_features_test.h @@ -86,9 +86,8 @@ // #define FEATURE_FABO_LCD_PCF8574_DISPLAY // #define FEATURE_HD44780_I2C_DISPLAY // Not working yet -// #define FEATURE_NEXTION_DISPLAY // Under Development Documentation: https://github.com/k3ng/k3ng_rotator_controller/wiki/425-Human-Interface:-Nextion-Display +#define FEATURE_NEXTION_DISPLAY // Under Development Documentation: https://github.com/k3ng/k3ng_rotator_controller/wiki/425-Human-Interface:-Nextion-Display -#define FEATURE_NEXTION_DISPLAY_2 // #define FEATURE_ANALOG_OUTPUT_PINS diff --git a/k3ng_rotator_controller/rotator_nextion.h b/k3ng_rotator_controller/rotator_nextion.h deleted file mode 100644 index 505e289..0000000 --- a/k3ng_rotator_controller/rotator_nextion.h +++ /dev/null @@ -1,426 +0,0 @@ -/* Nextion display settings and macros - - Documentation: https://github.com/k3ng/k3ng_rotator_controller/wiki/425-Human-Interface:-Nextion-Display - - - IMPORTANT ! - - - Be sure to edit NexConfig.h in your Nextion library directory: - - Comment out line 27 as follows: - //#define DEBUG_SERIAL_ENABLE - - Comment out line 32 as follows: - //#define dbSerial Serial - - Edit line 37: - #define nexSerial Serial //<-- Change "Serial to whatever Arduino Serial port you're connecting the Nextion display to (probably Serial1 or Serial2) - - - Also, change the following lines in NexHardware.cpp from: - - dbSerialBegin(9600); - nexSerial.begin(9600); - - To: - - dbSerialBegin(115200); - nexSerial.begin(115200); - -*/ - -// Various Settings -#define NEXTION_DISPLAY_UPDATE_MS 500 -#define NEXTION_DISPLAY_OVERLAP_UPDATE_MS 1500 -#define NEXTION_OBJECT_DISABLE_COLOR 65535 // WHITE - -// Page IDs -#define NEXTION_PAGE_MAIN_ID 0 -#define NEXTION_PAGE_CONFIGURATION_ID 1 -#define NEXTION_PAGE_DIAGNOSTICS_ID 2 -#define NEXTION_PAGE_ABOUT_ID 3 -#define NEXTION_PAGE_DATA_ENTRY 4 -#define NEXTION_PAGE_SPLASH 5 -#define NEXTION_PAGE_SECONDARY 6 -#define NEXTION_PAGE_TERTIARY 7 - - -// Object Mappings - Update these to match the object names and IDs of the objects in your Nextion Editor HMI file. Comment out unused objects. - - - // Page Main (and global stuff) - - #define NEXTION_OBJNAME_TIMER_RESET "tmInvokeReset" // this timer is enabled to trigger a reset and fix weirdness with the data entry screen - #define NEXTION_OBJID_TIMER_RESET 20 - - #define NEXTION_OBJNAME_TIMER_AZ_ONLY "tmAzOnly" // this timer is enabled to make elevation objects disappear - #define NEXTION_OBJID_TIMER_AZ_ONLY 21 - - #define NEXTION_OBJNAME_TIMER_AZ_EL "tmAzEl" // this timer is enabled to make elevation objects disappear - #define NEXTION_OBJID_TIMER_AZ_EL 24 - - #define NEXTION_OBJNAME_MAIN_TITLE "tTitle" - #define NEXTION_OBJID_MAIN_TITLE 1 - - #define NEXTION_OBJNAME_STATUS "tStat" - #define NEXTION_OBJID_STATUS 7 - - #define NEXTION_OBJNAME_STATUS2 "tStat2" - #define NEXTION_OBJID_STATUS2 19 - - #define NEXTION_OBJNAME_STATUS3 "tStat3" - #define NEXTION_OBJID_STATUS3 18 - - // Small Azimuth - az / el system - #define NEXTION_OBJNAME_AZIMUTH_LABEL_SMALL "tlblAzSm" - #define NEXTION_OBJID_AZIMUTH_LABEL_SMALL 2 - - #define NEXTION_OBJNAME_AZIMUTH_VALUE_SMALL "tAzSm" - #define NEXTION_OBJID_AZIMUTH_VALUE_SMALL 3 - - // Large Azimuth - az only system - #define NEXTION_OBJNAME_AZIMUTH_LABEL_LARGE "tlblAzLg" - #define NEXTION_OBJID_AZIMUTH_LABEL_LARGE 22 - - #define NEXTION_OBJNAME_AZIMUTH_VALUE_LARGE "tAzLg" - #define NEXTION_OBJID_AZIMUTH_VALUE_LARGE 23 - - - #define NEXTION_OBJNAME_BUTTON_CW "bCW" - #define NEXTION_OBJID_BUTTON_CW 17 - - #define NEXTION_OBJNAME_BUTTON_CCW "bCCW" - #define NEXTION_OBJID_BUTTON_CCW 4 - - #define NEXTION_OBJNAME_BUTTON_UP "bUp" - #define NEXTION_OBJID_BUTTON_UP 15 - - #define NEXTION_OBJNAME_BUTTON_DOWN "bDown" - #define NEXTION_OBJID_BUTTON_DOWN 16 - - #define NEXTION_OBJNAME_BUTTON_STOP "bSTOP" - #define NEXTION_OBJID_BUTTON_STOP 5 - - #define NEXTION_OBJNAME_ELEVATION_LABEL "tlblEl" - #define NEXTION_OBJID_ELEVATION_LABEL 13 - - #define NEXTION_OBJNAME_ELEVATION_VALUE "tEl" - #define NEXTION_OBJID_ELEVATION_VALUE 14 - - #define NEXTION_OBJNAME_GPS "tGPS" - #define NEXTION_OBJID_GPS 7 - - #define NEXTION_OBJNAME_CLOCK "tClk" - #define NEXTION_OBJID_CLOCK 8 - - #define NEXTION_OBJNAME_GRID "tGrid" - #define NEXTION_OBJID_GRID 9 - - #define NEXTION_OBJNAME_COORDINATES "tCoord" - #define NEXTION_OBJID_COORDINATES 10 - - #define NEXTION_OBJNAME_CODEVERSION "tCV" - #define NEXTION_OBJID_CODEVERSION 5 - - // Page Diagnostics - - #define NEXTION_OBJNAME_DIAGWINDOW "tDiag" - #define NEXTION_OBJID_DIAGWINDOW 4 - - // Page Data Entry - - #define NEXTION_OBJNAME_DATAENT_TITLE "tTitle" - #define NEXTION_OBJID_DATAENT_TITLE 20 - - #define NEXTION_OBJNAME_DATAENT_ENTRY "tEntry" - #define NEXTION_OBJID_DATAENT_ENTRY 15 - - #define NEXTION_OBJNAME_DATAENT_MSG "tMsg" - #define NEXTION_OBJID_DATAENT_MSG 16 - - #define NEXTION_OBJNAME_DATAENT_CANCEL "bCan" - #define NEXTION_OBJID_DATAENT_CANCEL 14 - - #define NEXTION_OBJNAME_DATAENT_ENTER "bEnt" - #define NEXTION_OBJID_DATAENT_ENTER 13 - - #define NEXTION_OBJNAME_DATAENT_DEL "bDel" - #define NEXTION_OBJID_DATAENT_DEL 12 - - #define NEXTION_OBJNAME_DATAENT_SEPERATOR "bSep" - #define NEXTION_OBJID_DATAENT_SEPERATOR 11 - - #define NEXTION_OBJNAME_VAR_SEPERATOR "vaSepEntered" - #define NEXTION_OBJID_VAR_SEPERATOR 17 - - #define NEXTION_OBJNAME_VAR_ENTRYVAL "vaEntValue" - #define NEXTION_OBJID_VAR_ENTRYVAL 18 - - #define NEXTION_OBJNAME_VAR_ENTRYMODE "vaEntryMode" - #define NEXTION_OBJID_VAR_ENTRYMODE 19 - - #define NEXTION_OBJNAME_VAR_ENTLEN "vaEntLen" - #define NEXTION_OBJID_VAR_ENTLEN 21 - - -// Declare Nextion objects (page id, component id,component name) - do not touch these unless you know what you are doing - -// Main Page - -#if defined(NEXTION_OBJNAME_TIMER_RESET) && defined(NEXTION_OBJID_TIMER_RESET) - NexTimer timerInvokeReset= NexTimer(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_TIMER_RESET,NEXTION_OBJNAME_TIMER_RESET); -#endif - -#if defined(NEXTION_OBJNAME_TIMER_AZ_ONLY) && defined(NEXTION_OBJID_TIMER_AZ_ONLY) - NexTimer timerAzOnly= NexTimer(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_TIMER_AZ_ONLY,NEXTION_OBJNAME_TIMER_AZ_ONLY); -#endif - -#if defined(NEXTION_OBJNAME_TIMER_AZ_EL) && defined(NEXTION_OBJID_TIMER_AZ_EL) - NexTimer timerAzEl= NexTimer(NEXTION_OBJID_TIMER_AZ_EL, NEXTION_OBJID_TIMER_AZ_EL,NEXTION_OBJNAME_TIMER_AZ_EL); -#endif - -#if defined(NEXTION_OBJNAME_MAIN_TITLE) && defined(NEXTION_OBJID_MAIN_TITLE) - NexText tTitle = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_MAIN_TITLE, NEXTION_OBJNAME_MAIN_TITLE); -#endif - -#if defined(FEATURE_ELEVATION_CONTROL) // switch between large and small azimuth object for az-only and az/el systems - #if defined(NEXTION_OBJNAME_AZIMUTH_LABEL_SMALL) && defined(NEXTION_OBJID_AZIMUTH_LABEL_SMALL) - NexText tAzLabel = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_AZIMUTH_LABEL_SMALL, NEXTION_OBJNAME_AZIMUTH_LABEL_SMALL); - #endif - #if defined(NEXTION_OBJNAME_AZIMUTH_VALUE_SMALL) && defined(NEXTION_OBJID_AZIMUTH_VALUE_SMALL) - NexText tAzValue = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_AZIMUTH_VALUE_SMALL, NEXTION_OBJNAME_AZIMUTH_VALUE_SMALL); - #endif -#else - #if defined(NEXTION_OBJNAME_AZIMUTH_LABEL_LARGE) && defined(NEXTION_OBJID_AZIMUTH_LABEL_LARGE) - NexText tAzLabel = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_AZIMUTH_LABEL_LARGE, NEXTION_OBJNAME_AZIMUTH_LABEL_LARGE); - #endif - #if defined(NEXTION_OBJNAME_AZIMUTH_VALUE_LARGE) && defined(NEXTION_OBJID_AZIMUTH_VALUE_LARGE) - NexText tAzValue = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_AZIMUTH_VALUE_LARGE, NEXTION_OBJNAME_AZIMUTH_VALUE_LARGE); - #endif -#endif - - - -#if defined(NEXTION_OBJNAME_STATUS) && defined(NEXTION_OBJID_STATUS) - NexText tStatus = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_STATUS, NEXTION_OBJNAME_STATUS); -#endif - -#if defined(NEXTION_OBJNAME_STATUS2) && defined(NEXTION_OBJID_STATUS2) - NexText tStatus2 = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_STATUS2, NEXTION_OBJNAME_STATUS2); -#endif - -#if defined(NEXTION_OBJNAME_STATUS3) && defined(NEXTION_OBJID_STATUS3) - NexText tStatus3 = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_STATUS3, NEXTION_OBJNAME_STATUS3); -#endif - -#if defined(NEXTION_OBJNAME_GPS) && defined(NEXTION_OBJID_GPS) - NexText tGPS = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_GPS, NEXTION_OBJNAME_GPS); -#endif - -#if defined(NEXTION_OBJNAME_CLOCK) && defined(NEXTION_OBJID_CLOCK) - NexText tClock = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_CLOCK, NEXTION_OBJNAME_CLOCK); -#endif - -#if defined(NEXTION_OBJNAME_ELEVATION_LABEL) && defined(NEXTION_OBJID_ELEVATION_LABEL) - NexText tElLabel = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_ELEVATION_LABEL, NEXTION_OBJNAME_ELEVATION_LABEL); -#endif - -#if defined(NEXTION_OBJNAME_ELEVATION_VALUE) && defined(NEXTION_OBJID_ELEVATION_VALUE) - NexText tElValue = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_ELEVATION_VALUE, NEXTION_OBJNAME_ELEVATION_VALUE); -#endif - -#if defined(NEXTION_OBJNAME_BUTTON_CW) && defined(NEXTION_OBJID_BUTTON_CW) - NexButton bCW = NexButton(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_BUTTON_CW, NEXTION_OBJNAME_BUTTON_CW); -#endif - -#if defined(NEXTION_OBJNAME_BUTTON_CCW) && defined(NEXTION_OBJID_BUTTON_CCW) - NexButton bCCW = NexButton(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_BUTTON_CCW, NEXTION_OBJNAME_BUTTON_CCW); -#endif - -#if defined(NEXTION_OBJNAME_BUTTON_UP) && defined(NEXTION_OBJID_BUTTON_UP) - NexButton bUp = NexButton(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_BUTTON_UP, NEXTION_OBJNAME_BUTTON_UP); -#endif - -#if defined(NEXTION_OBJNAME_BUTTON_DOWN) && defined(NEXTION_OBJID_BUTTON_DOWN) - NexButton bDown = NexButton(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_BUTTON_DOWN, NEXTION_OBJNAME_BUTTON_DOWN); -#endif - -#if defined(NEXTION_OBJNAME_BUTTON_STOP) && defined(NEXTION_OBJID_BUTTON_STOP) - NexButton bSTOP = NexButton(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_BUTTON_STOP, NEXTION_OBJNAME_BUTTON_STOP); -#endif - -#if defined(NEXTION_OBJNAME_GRID) && defined(NEXTION_OBJID_GRID) - NexText tGrid = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_GRID, NEXTION_OBJNAME_GRID); -#endif - -#if defined(NEXTION_OBJNAME_COORDINATES) && defined(NEXTION_OBJID_COORDINATES) - NexText tCoordinates = NexText(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_COORDINATES, NEXTION_OBJNAME_COORDINATES); -#endif - -#if defined(NEXTION_OBJID_CODEVERSION) && defined(NEXTION_OBJNAME_CODEVERSION) - NexText tCV = NexText(NEXTION_PAGE_ABOUT_ID, NEXTION_OBJID_CODEVERSION, NEXTION_OBJNAME_CODEVERSION); -#endif - - -// Diagnostics Page -#if defined(NEXTION_OBJNAME_DIAGWINDOW) && defined(NEXTION_OBJID_DIAGWINDOW) - NexText tDiag = NexText(NEXTION_PAGE_DIAGNOSTICS_ID, NEXTION_OBJID_DIAGWINDOW, NEXTION_OBJNAME_DIAGWINDOW); -#endif - - -// Data Entry Page - -#if defined(NEXTION_OBJID_DATAENT_TITLE) && defined(NEXTION_OBJNAME_DATAENT_TITLE) - NexText tDataEntryTitle = NexText(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_DATAENT_TITLE, NEXTION_OBJNAME_DATAENT_TITLE); -#endif - -#if defined(NEXTION_OBJID_DATAENT_ENTRY) && defined(NEXTION_OBJNAME_DATAENT_ENTRY) - NexText tDataEntryEntry = NexText(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_DATAENT_ENTRY, NEXTION_OBJNAME_DATAENT_ENTRY); -#endif - -#if defined(NEXTION_OBJNAME_DATAENT_CANCEL) && defined(NEXTION_OBJID_DATAENT_CANCEL) - NexButton bDataEntryCancel = NexButton(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_DATAENT_CANCEL, NEXTION_OBJNAME_DATAENT_CANCEL); -#endif - -#if defined(NEXTION_OBJNAME_DATAENT_ENTER) && defined(NEXTION_OBJID_DATAENT_ENTER) - NexButton bDataEntryEnter = NexButton(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_DATAENT_ENTER, NEXTION_OBJNAME_DATAENT_ENTER); -#endif - -#if defined(NEXTION_OBJNAME_DATAENT_DEL) && defined(NEXTION_OBJID_DATAENT_DEL) - NexButton bDataEntryDelete = NexButton(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_DATAENT_DEL, NEXTION_OBJNAME_DATAENT_DEL); -#endif - -#if defined(NEXTION_OBJNAME_DATAENT_SEPERATOR) && defined(NEXTION_OBJID_DATAENT_SEPERATOR) - NexButton bDataEntrySeperator = NexButton(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_DATAENT_SEPERATOR, NEXTION_OBJNAME_DATAENT_SEPERATOR); -#endif - -#if defined(NEXTION_OBJID_DATAENT_MSG) && defined(NEXTION_OBJNAME_DATAENT_MSG) - NexText tDataEntryMsg = NexText(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_DATAENT_MSG, NEXTION_OBJNAME_DATAENT_MSG); -#endif - -#if defined(NEXTION_OBJID_VAR_SEPERATOR) && defined(NEXTION_OBJNAME_VAR_SEPERATOR) - NexVariable vDataEntrySeperatorEntered = NexVariable(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_VAR_SEPERATOR, NEXTION_OBJNAME_VAR_SEPERATOR); -#endif - -#if defined(NEXTION_OBJID_VAR_ENTRYVAL) && defined(NEXTION_OBJNAME_VAR_ENTRYVAL) - NexVariable vDataEntryValue = NexVariable(NEXTION_PAGE_DATA_ENTRY,NEXTION_OBJID_VAR_ENTRYVAL,NEXTION_OBJNAME_VAR_ENTRYVAL); -#endif - -#if defined(NEXTION_OBJID_VAR_ENTRYMODE) && defined(NEXTION_OBJNAME_VAR_ENTRYMODE) - NexVariable vDataEntryMode = NexVariable(NEXTION_PAGE_DATA_ENTRY,NEXTION_OBJID_VAR_ENTRYMODE,NEXTION_OBJNAME_VAR_ENTRYMODE); -#endif - -#if defined(NEXTION_OBJID_VAR_ENTLEN) && defined(NEXTION_OBJNAME_VAR_ENTLEN) - NexVariable vDataEntryDataEntryLength = NexVariable(NEXTION_PAGE_DATA_ENTRY, NEXTION_OBJID_VAR_ENTLEN, NEXTION_OBJNAME_VAR_ENTLEN); -#endif - -// Page Navigation Buttons - we have to detect page changes because the data in the objects is volatile. (Why, Nextion, why?) -#define NEXTION_OBJNAME_BUTTON_BACK "bBack" -#define NEXTION_OBJNAME_BUTTON_NEXT "bNext" - -#define NEXTION_OBJID_PAGE_MAIN_BUTTON_BACK 12 -#define NEXTION_OBJID_PAGE_MAIN_BUTTON_NEXT 11 - -#define NEXTION_OBJID_PAGE_CONFIGURATION_BUTTON_BACK 1 -#define NEXTION_OBJID_PAGE_CONFIGURATION_BUTTON_NEXT 2 - -#define NEXTION_OBJID_PAGE_DIAGNOSTICS_BUTTON_BACK 2 -#define NEXTION_OBJID_PAGE_DIAGNOSTICS_BUTTON_NEXT 1 - -#define NEXTION_OBJID_PAGE_ABOUT_BUTTON_BACK 3 -#define NEXTION_OBJID_PAGE_ABOUT_BUTTON_NEXT 4 - -#define NEXTION_OBJID_PAGE_SECONDARY_BUTTON_BACK 1 -#define NEXTION_OBJID_PAGE_SECONDARY_BUTTON_NEXT 12 - -#define NEXTION_OBJID_PAGE_TERTIARY_BUTTON_BACK 1 -#define NEXTION_OBJID_PAGE_TERTIARY_BUTTON_NEXT 3 - - -NexButton bBackPageMain = NexButton(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_PAGE_MAIN_BUTTON_BACK, NEXTION_OBJNAME_BUTTON_BACK); -NexButton bNextPageMain = NexButton(NEXTION_PAGE_MAIN_ID, NEXTION_OBJID_PAGE_MAIN_BUTTON_NEXT, NEXTION_OBJNAME_BUTTON_NEXT); - -NexButton bBackPageSecondary = NexButton(NEXTION_PAGE_SECONDARY, NEXTION_OBJID_PAGE_SECONDARY_BUTTON_BACK, NEXTION_OBJNAME_BUTTON_BACK); -NexButton bNextPageSecondary = NexButton(NEXTION_PAGE_SECONDARY, NEXTION_OBJID_PAGE_SECONDARY_BUTTON_NEXT, NEXTION_OBJNAME_BUTTON_NEXT); - -NexButton bBackPageTertiary = NexButton(NEXTION_PAGE_TERTIARY, NEXTION_OBJID_PAGE_TERTIARY_BUTTON_BACK, NEXTION_OBJNAME_BUTTON_BACK); -NexButton bNextPageTertiary = NexButton(NEXTION_PAGE_TERTIARY, NEXTION_OBJID_PAGE_TERTIARY_BUTTON_NEXT, NEXTION_OBJNAME_BUTTON_NEXT); - -NexButton bBackPageConfiguration = NexButton(NEXTION_PAGE_CONFIGURATION_ID, NEXTION_OBJID_PAGE_CONFIGURATION_BUTTON_BACK, NEXTION_OBJNAME_BUTTON_BACK); -NexButton bNextPageConfiguration = NexButton(NEXTION_PAGE_CONFIGURATION_ID, NEXTION_OBJID_PAGE_CONFIGURATION_BUTTON_NEXT, NEXTION_OBJNAME_BUTTON_NEXT); - -NexButton bBackPageDiagnostics = NexButton(NEXTION_PAGE_DIAGNOSTICS_ID, NEXTION_OBJID_PAGE_DIAGNOSTICS_BUTTON_BACK, NEXTION_OBJNAME_BUTTON_BACK); -NexButton bNextPageDiagnostics = NexButton(NEXTION_PAGE_DIAGNOSTICS_ID, NEXTION_OBJID_PAGE_DIAGNOSTICS_BUTTON_NEXT, NEXTION_OBJNAME_BUTTON_NEXT); - -NexButton bBackPageAbout = NexButton(NEXTION_PAGE_ABOUT_ID, NEXTION_OBJID_PAGE_ABOUT_BUTTON_BACK, NEXTION_OBJNAME_BUTTON_BACK); -NexButton bNextPageAbout = NexButton(NEXTION_PAGE_ABOUT_ID, NEXTION_OBJID_PAGE_ABOUT_BUTTON_NEXT, NEXTION_OBJNAME_BUTTON_NEXT); - -// Pages -NexPage pageMain = NexPage(NEXTION_PAGE_MAIN_ID, 0, "Main"); -NexPage pageConfiguration = NexPage(NEXTION_PAGE_CONFIGURATION_ID, 0, "Configuration"); -NexPage pageDiagnostics = NexPage(NEXTION_PAGE_DIAGNOSTICS_ID, 0, "Diagnostics"); -NexPage pageAbout = NexPage(NEXTION_PAGE_ABOUT_ID, 0, "About"); -NexPage pageDataEntry = NexPage(NEXTION_PAGE_DATA_ENTRY, 0, "DataEntry"); -NexPage pageSecondary = NexPage(NEXTION_PAGE_SECONDARY, 0, "Secondary"); -NexPage pageTertiary = NexPage(NEXTION_PAGE_TERTIARY, 0, "Tertiary"); - -// Button registrations - do not touch these unless you know what you are doing -NexTouch *nex_listen_list[] = { - #if defined(NEXTION_OBJNAME_BUTTON_CW) && defined(NEXTION_OBJID_BUTTON_CW) - &bCW, - #endif - #if defined(NEXTION_OBJNAME_BUTTON_CCW) && defined(NEXTION_OBJID_BUTTON_CCW) - &bCCW, - #endif - #if defined(NEXTION_OBJNAME_BUTTON_STOP) && defined(NEXTION_OBJID_BUTTON_STOP) - &bSTOP, - #endif - #if defined(NEXTION_OBJNAME_BUTTON_DOWN) && defined(NEXTION_OBJID_BUTTON_DOWN) - &bDown, - #endif - #if defined(NEXTION_OBJNAME_BUTTON_UP) && defined(NEXTION_OBJID_BUTTON_UP) - &bUp, - #endif - #if defined(NEXTION_OBJNAME_DATAENT_CANCEL) && defined(NEXTION_OBJNAME_DATAENT_CANCEL) - &bDataEntryCancel, - #endif - #if defined(NEXTION_OBJNAME_DATAENT_ENTER) && defined(NEXTION_OBJID_DATAENT_ENTER) - &bDataEntryEnter, - #endif - #if defined(NEXTION_OBJNAME_DATAENT_DEL) && defined(NEXTION_OBJID_DATAENT_DEL) - &bDataEntryDelete, - #endif - #if defined(NEXTION_OBJNAME_DATAENT_SEPERATOR) && defined(NEXTION_OBJID_DATAENT_SEPERATOR) - &bDataEntrySeperator, - #endif - &tAzValue, - #if defined(NEXTION_OBJNAME_ELEVATION_VALUE) && defined(NEXTION_OBJID_ELEVATION_VALUE) - &tElValue, - #endif - &tAzLabel, - #if defined(NEXTION_OBJNAME_ELEVATION_LABEL) && defined(NEXTION_OBJID_ELEVATION_LABEL) - &tElLabel, - #endif - &bBackPageMain, - &bNextPageMain, - &bBackPageConfiguration, - &bNextPageConfiguration, - &bBackPageDiagnostics, - &bNextPageDiagnostics, - &bBackPageAbout, - &bNextPageAbout, - &bBackPageSecondary, - &bNextPageSecondary, - &bBackPageTertiary, - &bNextPageTertiary, - NULL -}; - - -// Macros for stuff - -#define NEXTION_UNDEFINED 0 -#define NEXTION_DATA_ENTRY_MODE_AZ 1 -#define NEXTION_DATA_ENTRY_MODE_EL 2 - diff --git a/k3ng_rotator_controller/rotator_nextion_api.h b/k3ng_rotator_controller/rotator_nextion_api.h deleted file mode 100644 index 61bbf64..0000000 --- a/k3ng_rotator_controller/rotator_nextion_api.h +++ /dev/null @@ -1,636 +0,0 @@ -/* Nextion display settings and macros - - -API Based Solution - In Development - - - IMPORTANT ! - - - Be sure to edit NexConfig.h in your Nextion library directory: - - Comment out line 27 as follows: - //#define DEBUG_SERIAL_ENABLE - - Comment out line 32 as follows: - //#define dbSerial Serial - - Edit line 37: - #define nexSerial Serial //<-- Change "Serial to whatever Arduino Serial port you're connecting the Nextion display to (probably Serial1 or Serial2) - - - Also, change the following lines in NexHardware.cpp from: - - dbSerialBegin(9600); - nexSerial.begin(9600); - - To: - - dbSerialBegin(115200); - nexSerial.begin(115200); - -*/ - -#define NEXTION_API_PAGE_ID 0 // This is the page ID where all the API global variables are defined -#define NEXTION_API_VERSION 2020041201 // This API version - -//----------------------------------------------------------------------------------------------------------------------------- - -/* - - - API Version Declaration - - -*/ - - -// DESCRIPTION: The version of the API implementation in the display unit -// DATATYPE: Numeric -// DATA FLOW: Rotator Controller <- Nextion -// PURPOSE: Used to determine if their is an API version mismatch between the rotator controller and the Nextion unit -#define NEXTION_API_NEXTION_API_VERSION_OBJECT_ID 1 -#define NEXTION_API_NEXTION_API_VERSION_OBJECT_NAME "v001NxAPIv" - -//----------------------------------------------------------------------------------------------------------------------------- -// DESCRIPTION: The version of the API implementation in the rotator controller -// DATATYPE: Numeric -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Used to determine if their is an API version mismatch between the rotator controller and the Nextion unit -#define NEXTION_API_ROTATOR_CONTROLLER_API_VERSION_OBJECT_ID 2 -#define NEXTION_API_ROTATOR_CONTROLLER_API_VERSION_OBJECT_NAME "v002RCAPIv" - -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- - - -/* - - - Rotator Controller and Nextion Unit System States - - -*/ - - -// DESCRIPTION: The current state of the Nextion display -// DATATYPE: Numeric -// DATA FLOW: Rotator Controller <- Nextion -// PURPOSE: Used to determine the current state of the Nextion display -#define NEXTION_API_NEXTION_STATE_OBJECT_ID 3 -#define NEXTION_API_NEXTION_STATE_OBJECT_NAME "v003NxSt" - // STATES - #define NEXTION_API_NEXTION_STATE_UNDEFINED 0 - #define NEXTION_API_NEXTION_STATE_INITIALIZING 1 - #define NEXTION_API_NEXTION_STATE_RUNNING 2 - - - -//----------------------------------------------------------------------------------------------------------------------------- - - -// DESCRIPTION: The current state of the Rotator Controller -// DATATYPE: Numeric -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Used to determine the current state of the Rotator Controller -#define NEXTION_API_RC_STATE_OBJECT_ID 4 -#define NEXTION_API_RC_STATE_OBJECT_NAME "v004RCSt" - // STATES - #define NEXTION_API_RC_STATE_UNDEFINED 0 - #define NEXTION_API_RC_STATE_INITIALIZING 1 - #define NEXTION_API_RC_STATE_RUNNING 2 - - - -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- - -/* - - - Rotator Controller to Nextion Command - - -*/ - - -// DESCRIPTION: Nextion Unit Command -// DATATYPE: Numeric -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Send a command to the Nextion -#define NEXTION_API_NEXTION_COMMAND_OBJECT_ID 5 -#define NEXTION_API_NEXTION_COMMAND_OBJECT_NAME "v005NxCmd" - - #define NEXTION_API_NEXTION_COMMAND_NO_CMD 0 - #define NEXTION_API_NEXTION_COMMAND_RESET 1 - - // DESCRIPTION: Nextion Unit Command Numeric Argument 1 - // DATATYPE: Numeric - // DATA FLOW: Rotator Controller -> Nextion - // PURPOSE: Send a numeric argument with a command to the Nextion - #define NEXTION_API_NEXTION_COMMANDN_NUM_ARG1_OBJECT_ID 6 - #define NEXTION_API_NEXTION_COMMAND_NUM_ARG1_OBJECT_NAME "v006NxCmdNum1" - - // DESCRIPTION: Nextion Unit Command Numeric Argument 2 - // DATATYPE: Numeric - // DATA FLOW: Rotator Controller -> Nextion - // PURPOSE: Send a numeric argument with a command to the Nextion - #define NEXTION_API_NEXTION_COMMAND_NUM_ARG2_OBJECT_ID 7 - #define NEXTION_API_NEXTION_COMMAND_NUM_ARG2_OBJECT_NAME "v007NxCmdNum2" - - - // DESCRIPTION: Nextion Unit Command Numeric Argument 3 - // DATATYPE: Numeric - // DATA FLOW: Rotator Controller -> Nextion - // PURPOSE: Send a numeric argument with a command to the Nextion - #define NEXTION_API_NEXTION_COMMAND_NUM_ARG3_OBJECT_ID 8 - #define NEXTION_API_NEXTION_COMMAND_NUM_ARG3_OBJECT_NAME "v008NxCmdNum3" - - - // DESCRIPTION: Nextion Unit Command String Argument 1 - // DATATYPE: String [32] - // DATA FLOW: Rotator Controller -> Nextion - // PURPOSE: Send a text string argument with a command to the Nextion - #define NEXTION_API_NEXTION_COMMAND_STR_ARG1_OBJECT_ID 9 - #define NEXTION_API_NEXTION_COMMAND_STR_ARG1_OBJECT_NAME "v009NxCmdStr1" - - - // DESCRIPTION: Nextion Unit Command String Argument 2 - // DATATYPE: String [32] - // DATA FLOW: Rotator Controller -> Nextion - // PURPOSE: Send a text string argument with a command to the Nextion - #define NEXTION_API_NEXTION_COMMAND_STR_ARG2_OBJECT_ID 10 - #define NEXTION_API_NEXTION_COMMAND_STR_ARG2_OBJECT_NAME "v010NxCmdStr2" - - - // DESCRIPTION: Nextion Unit Command String Argument 3 - // DATATYPE: String [32] - // DATA FLOW: Rotator Controller -> Nextion - // PURPOSE: Send a text string argument with a command to the Nextion - #define NEXTION_API_NEXTION_COMMAND_STR_ARG3_OBJECT_ID 11 - #define NEXTION_API_NEXTION_COMMAND_STR_ARG3_OBJECT_NAME "v011NxCmdStr3" - - -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- - -/* - - - Nextion to Rotator Controller Command - - -*/ - -// DESCRIPTION: Rotator Controller Command -// DATATYPE: Numeric -// DATA FLOW: Rotator Controller <- Nextion -// PURPOSE: Send a command to the Rotator Controller -#define NEXTION_API_RC_COMMAND_OBJECT_ID 12 -#define NEXTION_API_RC_COMMAND_OBJECT_NAME "v012RCCmd" - - #define NEXTION_API_RC_COMMAND_NO_CMD 0 - #define NEXTION_API_RC_COMMAND_STOP_ALL 1 - #define NEXTION_API_RC_COMMAND_STOP_AZ 2 - #define NEXTION_API_RC_COMMAND_STOP_EL 3 - #define NEXTION_API_RC_COMMAND_KILL_ALL 4 - #define NEXTION_API_RC_COMMAND_KILL_AZ 5 - #define NEXTION_API_RC_COMMAND_KILL_EL 6 - #define NEXTION_API_RC_COMMAND_ROTATE_CCW 7 - #define NEXTION_API_RC_COMMAND_ROTATE_CW 8 - #define NEXTION_API_RC_COMMAND_UP 9 - #define NEXTION_API_RC_COMMAND_DOWN 10 - - #define NEXTION_API_RC_COMMAND_ROTATE_AZ_REAL_TO 20 - #define NEXTION_API_RC_COMMAND_ROTATE_AZ_RAW_TO 21 - #define NEXTION_API_RC_COMMAND_ROTATE_EL_TO 22 - #define NEXTION_API_RC_COMMAND_PARK 23 - #define NEXTION_API_RC_COMMAND_LONG_PATH 24 - #define NEXTION_API_RC_COMMAND_MOON_TRACK 25 - #define NEXTION_API_RC_COMMAND_SUN_TRACK 26 - - #define NEXTION_API_RC_COMMAND_DISENGAGE_BRAKE_AZ 50 - #define NEXTION_API_RC_COMMAND_ENGAGE_BRAKE_AZ 51 - #define NEXTION_API_RC_COMMAND_DISENGAGE_BRAKE_EL 52 - #define NEXTION_API_RC_COMMAND_ENGAGE_BRAKE_EL 53 - - #define NEXTION_API_RC_COMMAND_AUTOPARK_ENABLE 60 - #define NEXTION_API_RC_COMMAND_AUTOPARK_DISABLE 61 - #define NEXTION_API_RC_COMMAND_AUTOPARK_SET_TIMER 62 - - #define NEXTION_API_RC_COMMAND_CALIB_AZ_OFFSET 100 - #define NEXTION_API_RC_COMMAND_CALIB_AZ_FULLSCALE 101 - #define NEXTION_API_RC_COMMAND_CALIB_EL_0 102 - #define NEXTION_API_RC_COMMAND_CALIB_EL_180 103 - #define NEXTION_API_RC_COMMAND_CALIB_AZ_EL_MOON 104 - #define NEXTION_API_RC_COMMAND_CALIB_AZ_EL_SUN 105 - - #define NEXTION_API_RC_COMMAND_MAN_SET_AZ 110 - #define NEXTION_API_RC_COMMAND_MAN_SET_EL 111 - - #define NEXTION_API_RC_COMMAND_AZ_SET_START 120 - #define NEXTION_API_RC_COMMAND_AZ_SET_CAPABILITY 121 - - #define NEXTION_API_RC_COMMAND_SET_PIN_HIGH 200 - #define NEXTION_API_RC_COMMAND_SET_PIN_LOW 201 - #define NEXTION_API_RC_COMMAND_SET_PIN_PWM 202 - #define NEXTION_API_RC_COMMAND_SET_PIN_TONE 203 - #define NEXTION_API_RC_COMMAND_SET_PIN_NOTONE 204 - - #define NEXTION_API_RC_COMMAND_SET_CLOCK 220 - #define NEXTION_API_RC_COMMAND_SET_CLOCK_OFFSET 221 - - #define NEXTION_API_RC_COMMAND_REBOOT 255 - - // DESCRIPTION: Rotator Controller Command Numeric Argument 1 - // DATATYPE: Numeric - // DATA FLOW: Rotator Controller <- Nextion - // PURPOSE: Send a numeric argument with a command to the Rotator Controller - #define NEXTION_API_RC_COMMAND_NUM_ARG1_OBJECT_ID 13 - #define NEXTION_API_RC_COMMAND_NUM_ARG1_OBJECT_NAME "v013RCCmdNum1" - - // DESCRIPTION: Rotator Controller Command Numeric Argument 2 - // DATATYPE: Numeric - // DATA FLOW: Rotator Controller <- Nextion - // PURPOSE: Send a numeric argument with a command to the Rotator Controller - #define NEXTION_API_RC_COMMAND_NUM_ARG2_OBJECT_ID 14 - #define NEXTION_API_RC_COMMAND_NUM_ARG2_OBJECT_NAME "v014RCCmdNum2" - - // DESCRIPTION: Rotator Controller Command Numeric Argument 3 - // DATATYPE: Numeric - // DATA FLOW: Rotator Controller <- Nextion - // PURPOSE: Send a numeric argument with a command to the Rotator Controller - #define NEXTION_API_RC_COMMAND_NUM_ARG3_OBJECT_ID 15 - #define NEXTION_API_RC_COMMAND_NUM_ARG3_OBJECT_NAME "v015RCCmdNum3" - - // DESCRIPTION: Rotator Controller Command String Argument 1 - // DATATYPE: String [32] - // DATA FLOW: Rotator Controller <- Nextion - // PURPOSE: Send a text string argument with a command to the Rotator Controller - #define NEXTION_API_RC_COMMAND_STR_ARG1_OBJECT_ID 16 - #define NEXTION_API_RC_COMMAND_STR_ARG1_OBJECT_NAME "v016RCCmdStr1" - - // DESCRIPTION: Rotator Controller Command String Argument 2 - // DATATYPE: String [32] - // DATA FLOW: Rotator Controller <- Nextion - // PURPOSE: Send a text string argument with a command to the Rotator Controller - #define NEXTION_API_RC_COMMAND_STR_ARG2_OBJECT_ID 17 - #define NEXTION_API_RC_COMMAND_STR_ARG2_OBJECT_NAME "v017RCCmdStr2" - - // DESCRIPTION: Rotator Controller Command String Argument 3 - // DATATYPE: String [32] - // DATA FLOW: Rotator Controller <- Nextion - // PURPOSE: Send a text string argument with a command to the Rotator Controller - #define NEXTION_API_RC_COMMAND_STR_ARG3_OBJECT_ID 18 - #define NEXTION_API_RC_COMMAND_STR_ARG3_OBJECT_NAME "v018RCCmdStr3" -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- - -/* - - - Static / Configuration Items - - - These are typically set at runtime initialization - - -*/ - - -// DESCRIPTION: System Capabilities -// DATATYPE: Numeric -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Set the supported capabilities -// DATA FORMAT: Bitmapped (see bit definitions below) -#define NEXTION_API_SYSTEM_CAPABILITIES_OBJECT_ID 19 -#define NEXTION_API_SYSTEM_CAPABILITIES_OBJECT_NAME "v019SysCap" - // bits - #define NEXTION_API_SYSTEM_CAPABILITIES_GS_232A 1 - #define NEXTION_API_SYSTEM_CAPABILITIES_GS_232B 2 - #define NEXTION_API_SYSTEM_CAPABILITIES_EASYCOM 4 - #define NEXTION_API_SYSTEM_CAPABILITIES_DCU_1 8 - #define NEXTION_API_SYSTEM_CAPABILITIES_ELEVATION 16 - #define NEXTION_API_SYSTEM_CAPABILITIES_CLOCK 32 - #define NEXTION_API_SYSTEM_CAPABILITIES_GPS 64 - #define NEXTION_API_SYSTEM_CAPABILITIES_MOON 128 - #define NEXTION_API_SYSTEM_CAPABILITIES_SUN 256 - #define NEXTION_API_SYSTEM_CAPABILITIES_RTC 512 - - -// DESCRIPTION: Rotator Controller Code Version -// DATATYPE: String [13] -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Provide rotator controller code version to Nextion unit -// EXAMPLE: 2020.04.06.01 -#define NEXTION_API_SYSTEM_RC_CODE_VERSION_OBJECT_ID 20 -#define NEXTION_API_SYSTEM_RC_CODE_OBJECT_NAME "v020RCVersion" - -// DESCRIPTION: Azimuth Starting Point -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the azimuth starting point in degrees. This is a stright integer with no multiplier. -// TYPICAL VAL: 0 or 180 -#define NEXTION_API_AZ_SP_OBJECT_ID 21 -#define NEXTION_API_AZ_SP_OBJECT_NAME "v021AzSP" - -// DESCRIPTION: Azimuth Rotation Capability -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the azimuth rotation capability in degrees. This is a stright integer with no multiplier. -// TYPICAL VAL: 360 or 450 -#define NEXTION_API_AZ_RC_OBJECT_ID 22 -#define NEXTION_API_AZ_RC_OBJECT_NAME "v022AzRP" - - - - -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------------------------------------- - -// Dynamically / Frequently Updated Variables - -// DESCRIPTION: Real Azimuth -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the current real azimuth (0 - 360 degrees). Since the Nextion only handles integers, -// this is the real azimuth * 1000 -#define NEXTION_API_AZ_OBJECT_ID 23 -#define NEXTION_API_AZ_OBJECT_NAME "v023Az" - -// DESCRIPTION: Raw Azimuth -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the current raw azimuth (in overlap this is equal to real azimuth + 360). Since the Nextion only handles integers, -// this is the raw azimuth * 1000 -#define NEXTION_API_RAW_AZ_OBJECT_ID 24 -#define NEXTION_API_RAW_AZ_OBJECT_NAME "v024AzRaw" - -// DESCRIPTION: Elevation -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the current elevation. Since the Nextion only handles integers, -// this is the elevation * 1000 -#define NEXTION_API_EL_OBJECT_ID 25 -#define NEXTION_API_EL_OBJECT_NAME "v025El" - -// DESCRIPTION: Azimuth Detailed State -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current state of azimuthal rotation -#define NEXTION_API_AZ_STATE_DETAILED_OBJECT_ID 26 -#define NEXTION_API_AZ_STATE_DETAILED_OBJECT_NAME "v026AzStDet" - - // az_state - uses the same defines from rotator.h - // #define IDLE 0 - // #define SLOW_START_CW 1 - // #define SLOW_START_CCW 2 - // #define NORMAL_CW 3 - // #define NORMAL_CCW 4 - // #define SLOW_DOWN_CW 5 - // #define SLOW_DOWN_CCW 6 - // #define INITIALIZE_SLOW_START_CW 7 - // #define INITIALIZE_SLOW_START_CCW 8 - // #define INITIALIZE_TIMED_SLOW_DOWN_CW 9 - // #define INITIALIZE_TIMED_SLOW_DOWN_CCW 10 - // #define TIMED_SLOW_DOWN_CW 11 - // #define TIMED_SLOW_DOWN_CCW 12 - // #define INITIALIZE_DIR_CHANGE_TO_CW 13 - // #define INITIALIZE_DIR_CHANGE_TO_CCW 14 - // #define INITIALIZE_NORMAL_CW 15 - // #define INITIALIZE_NORMAL_CCW 16 - - - -// DESCRIPTION: Elevation Detailed State -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current state of elvation rotation -#define NEXTION_API_EL_STATE_DETAILED_OBJECT_ID 27 -#define NEXTION_API_EL_STATE_DETAILED_OBJECT_NAME "v027ElStDet" - - // el_state - uses the same defines from rotator.h - // #define IDLE 0 - // #define SLOW_START_UP 1 - // #define SLOW_START_DOWN 2 - // #define NORMAL_UP 3 - // #define NORMAL_DOWN 4 - // #define SLOW_DOWN_DOWN 5 - // #define SLOW_DOWN_UP 6 - // #define INITIALIZE_SLOW_START_UP 7 - // #define INITIALIZE_SLOW_START_DOWN 8 - // #define INITIALIZE_TIMED_SLOW_DOWN_UP 9 - // #define INITIALIZE_TIMED_SLOW_DOWN_DOWN 10 - // #define TIMED_SLOW_DOWN_UP 11 - // #define TIMED_SLOW_DOWN_DOWN 12 - // #define INITIALIZE_DIR_CHANGE_TO_UP 13 - // #define INITIALIZE_DIR_CHANGE_TO_DOWN 14 - // #define INITIALIZE_NORMAL_UP 15 - // #define INITIALIZE_NORMAL_DOWN 16 - - -// DESCRIPTION: Azimuth Overall State -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current state of azimuthal rotation -#define NEXTION_API_AZ_STATE_OBJECT_ID 28 -#define NEXTION_API_AZ_STATE_OBJECT_NAME "v028AzState" - - // states - same ones defined in rotator.h - // #define NOT_DOING_ANYTHING 0 - // #define ROTATING_CW 1 - // #define ROTATING_CCW 2 - - -// DESCRIPTION: Elevation Overall State -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current state of elevation rotation -#define NEXTION_API_EL_STATE_OBJECT_ID 29 -#define NEXTION_API_EL_STATE_OBJECT_NAME "v029ElState" - - // states - same ones defined in rotator.h - // #define NOT_DOING_ANYTHING 0 - // #define ROTATING_UP 3 - // #define ROTATING_DOWN 4 - - -// DESCRIPTION: Clock Hours -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current Arduino clock hours -#define NEXTION_API_CLK_H_OBJECT_ID 30 -#define NEXTION_API_CLK_H_OBJECT_NAME "v030ClkH" - -// DESCRIPTION: Clock Minutes -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current Arduino clock minutes -#define NEXTION_API_CLK_M_OBJECT_ID 31 -#define NEXTION_API_CLK_M_OBJECT_NAME "v031ClkM" - -// DESCRIPTION: Clock Seconds -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current Arduino clock seconds -#define NEXTION_API_CLK_S_OBJECT_ID 32 -#define NEXTION_API_CLK_S_OBJECT_NAME "v032ClkS" - -// DESCRIPTION: Clock Time Zone Offset -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current Arduino clock time zone offse -// DATA FORMAT: Offset hours multiplied by 100 (i.e. 1 hour offset = 100, -5 hour offset = -500, -7.5 hour offset = -7500) -#define NEXTION_API_CLK_TIMEZONE_OBJECT_ID 33 -#define NEXTION_API_CLK_TIMEZONE_OBJECT_NAME "v033ClkTZ" - -// DESCRIPTION: Grid Locator -// DATATYPE: String [6] -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current grid locator -// EXAMPLE: FN20dw -#define NEXTION_API_GRID_OBJECT_ID 34 -#define NEXTION_API_GRID_OBJECT_NAME "v034Grid" - -// DESCRIPTION: GPS Coordinates Latitude -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current GPS Latitude -// DATA FORMAT: Decimal degrees multiplied by 100000 (i.e. 45.1234 degrees = 4512340, -105.12345 degrees = -10512345) -#define NEXTION_API_GPS_LAT_OBJECT_ID 35 -#define NEXTION_API_GPS_LAT_OBJECT_NAME "v035GPSLat" - -// DESCRIPTION: GPS Coordinates Longitude -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current GPS Longitude -// DATA FORMAT: Decimal degrees multiplied by 100000 (i.e. 45.1234 degrees = 4512340, -105.12345 degrees = -10512345) -#define NEXTION_API_GPS_LONG_OBJECT_ID 36 -#define NEXTION_API_GPS_LONG_OBJECT_NAME "v036GPSLong" - -// DESCRIPTION: GPS Elevation -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: The current GPS Longitude in meters -// DATA FORMAT: Decimal degrees multiplied by 100 (i.e. 450 meters = 45000) -#define NEXTION_API_GPS_ELE_OBJECT_ID 37 -#define NEXTION_API_GPS_ELE_OBJECT_NAME "v037GPSEl" - -// DESCRIPTION: Tracking, Braking, Parking, Indicator State -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Moon and Sun Tracking -// DATA FORMAT: Bitmapped -#define NEXTION_API_TRACKING_STATE_OBJECT_ID 38 -#define NEXTION_API_TRACKING_STATE_OBJECT_NAME "v038Track" - - // bits - #define NEXTION_STATE_TRACKING_MOON_TRACKING_ON 1 - #define NEXTION_STATE_TRACKING_SUN_TRACKING_ON 4 - #define NEXTION_STATE_TRACKING_PARK_INITIATED 8 - #define NEXTION_STATE_TRACKING_PARKED 16 - #define NEXTION_STATE_TRACKING_BRAKE_AZ_ENGAGED 32 - #define NEXTION_STATE_TRACKING_BRAKE_EL_ENGAGED 64 - #define NEXTION_STATE_TRACKING_OVERLAP 128 - - -// DESCRIPTION: API Variable Change Flags -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: For the Rotator Controller to flag variables that have changed and give refresh hints to the Nextion display -// DATA FORMAT: Bitmapped; The Nextion unit sets this to 0 after it has done a refresh cycle -// NOTE: Use of this by the Nextion display and resetting it to 0 is optional. -#define NEXTION_API_CHANGE_FLAG_OBJECT_ID 39 -#define NEXTION_API_CHANGE_FLAG_OBJECT_NAME "v039ChFlag" - - #define NEXTION_API_CHANGE_FLAG_AZ 1 - #define NEXTION_API_CHANGE_FLAG_EL 2 - #define NEXTION_API_CHANGE_FLAG_GPS_SATS 4 - #define NEXTION_API_CHANGE_FLAG_CLOCK 8 - #define NEXTION_API_CHANGE_FLAG_COORDINATES_ELEVATION 16 - #define NEXTION_API_CHANGE_FLAG_MOON_HEADING 32 - #define NEXTION_API_CHANGE_FLAG_SUN_HEADING 64 - -// DESCRIPTION: Moon Azimuth -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the current real azimuth (0 - 360 degrees) of the moon. Since the Nextion only handles integers, -// this is the azimuth * 1000 -#define NEXTION_AZ_MOON_OBJECT_ID 40 -#define NEXTION_API_AZ_MOON_OBJECT_NAME "v040AzMoon" - -// DESCRIPTION: Moon Elevation -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the current elevation (0 - 180 degrees) of the moon. Since the Nextion only handles integers, -// this is the elevation * 1000 -#define NEXTION_EL_MOON_OBJECT_ID 41 -#define NEXTION_API_EL_MOON_OBJECT_NAME "v041ElMoon" - -// DESCRIPTION: Sun Azimuth -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the current real azimuth (0 - 360 degrees) of the sun. Since the Nextion only handles integers, -// this is the azimuth * 1000 -#define NEXTION_AZ_SUN_OBJECT_ID 42 -#define NEXTION_API_AZ_SUN_OBJECT_NAME "v042AzSun" - -// DESCRIPTION: Sun Elevation -// DATATYPE: Number -// DATA FLOW: Rotator Controller -> Nextion -// PURPOSE: Stores the current elevation (0 - 180 degrees) of the sun. Since the Nextion only handles integers, -// this is the elevation * 1000 -#define NEXTION_EL_SUN_OBJECT_ID 43 -#define NEXTION_API_EL_SUN_OBJECT_NAME "v043ElSun" - -NexVariable vNextionAPIVersion = NexVariable(NEXTION_API_PAGE_ID, NEXTION_API_NEXTION_API_VERSION_OBJECT_ID, NEXTION_API_NEXTION_API_VERSION_OBJECT_NAME); -NexVariable vNextionRCAPIVersion = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_ROTATOR_CONTROLLER_API_VERSION_OBJECT_ID,NEXTION_API_ROTATOR_CONTROLLER_API_VERSION_OBJECT_NAME); -NexVariable vNextionNxState = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_STATE_OBJECT_ID,NEXTION_API_NEXTION_STATE_OBJECT_NAME); -NexVariable vNextionRCState = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_STATE_OBJECT_ID,NEXTION_API_RC_STATE_OBJECT_NAME); -NexVariable vNextionNxCmd = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_COMMAND_OBJECT_ID,NEXTION_API_NEXTION_COMMAND_OBJECT_NAME); -NexVariable vNextionNxCmdArgNum1 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_COMMANDN_NUM_ARG1_OBJECT_ID,NEXTION_API_NEXTION_COMMAND_NUM_ARG1_OBJECT_NAME); -NexVariable vNextionNxCmdArgNum2 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_COMMAND_NUM_ARG2_OBJECT_ID,NEXTION_API_NEXTION_COMMAND_NUM_ARG2_OBJECT_NAME); -NexVariable vNextionNxCmdArgNum3 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_COMMAND_NUM_ARG3_OBJECT_ID,NEXTION_API_NEXTION_COMMAND_NUM_ARG3_OBJECT_NAME); -NexVariable vNextionNxCmdArgStr1 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_COMMAND_STR_ARG1_OBJECT_ID,NEXTION_API_NEXTION_COMMAND_STR_ARG1_OBJECT_NAME); -NexVariable vNextionNxCmdArgStr2 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_COMMAND_STR_ARG2_OBJECT_ID,NEXTION_API_NEXTION_COMMAND_STR_ARG2_OBJECT_NAME); -NexVariable vNextionNxCmdArgStr3 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_NEXTION_COMMAND_STR_ARG3_OBJECT_ID,NEXTION_API_NEXTION_COMMAND_STR_ARG3_OBJECT_NAME); -NexVariable vNextionRCCmd = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_COMMAND_OBJECT_ID,NEXTION_API_RC_COMMAND_OBJECT_NAME); -NexVariable vNextionRCCmdArgNum1 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_COMMAND_NUM_ARG1_OBJECT_ID,NEXTION_API_RC_COMMAND_NUM_ARG1_OBJECT_NAME); -NexVariable vNextionRCCmdArgNum2 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_COMMAND_NUM_ARG2_OBJECT_ID,NEXTION_API_RC_COMMAND_NUM_ARG2_OBJECT_NAME); -NexVariable vNextionRCCmdArgNum3 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_COMMAND_NUM_ARG3_OBJECT_ID,NEXTION_API_RC_COMMAND_NUM_ARG3_OBJECT_NAME); -NexVariable vNextionRCCmdStrNum1 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_COMMAND_STR_ARG1_OBJECT_ID,NEXTION_API_RC_COMMAND_STR_ARG1_OBJECT_NAME); -NexVariable vNextionRCCmdStrNum2 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_COMMAND_STR_ARG2_OBJECT_ID,NEXTION_API_RC_COMMAND_STR_ARG2_OBJECT_NAME); -NexVariable vNextionRCCmdStrNum3 = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RC_COMMAND_STR_ARG3_OBJECT_ID,NEXTION_API_RC_COMMAND_STR_ARG3_OBJECT_NAME); -NexVariable vNextionSystemCapabilities = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_SYSTEM_CAPABILITIES_OBJECT_ID,NEXTION_API_SYSTEM_CAPABILITIES_OBJECT_NAME); -NexVariable vNextionRCCodeVersion = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_SYSTEM_RC_CODE_VERSION_OBJECT_ID,NEXTION_API_SYSTEM_RC_CODE_OBJECT_NAME); -NexVariable vNextionAzStartingPoint = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_AZ_SP_OBJECT_ID,NEXTION_API_AZ_SP_OBJECT_NAME); -NexVariable vNextionAzRotationCapability = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_AZ_RC_OBJECT_ID,NEXTION_API_AZ_RC_OBJECT_NAME); -NexVariable vNextionAz = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_AZ_OBJECT_ID,NEXTION_API_AZ_OBJECT_NAME); -NexVariable vNextionAzRaw = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_RAW_AZ_OBJECT_ID,NEXTION_API_RAW_AZ_OBJECT_NAME); -NexVariable vNextionEl = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_EL_OBJECT_ID,NEXTION_API_EL_OBJECT_NAME); -NexVariable vNextionAzStateDetailed = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_AZ_STATE_DETAILED_OBJECT_ID,NEXTION_API_AZ_STATE_DETAILED_OBJECT_NAME); -NexVariable vNextionElStateDetailed = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_EL_STATE_DETAILED_OBJECT_ID,NEXTION_API_EL_STATE_DETAILED_OBJECT_NAME); -NexVariable vNextionAzState = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_AZ_STATE_OBJECT_ID,NEXTION_API_AZ_STATE_OBJECT_NAME); -NexVariable vNextionElState = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_EL_STATE_OBJECT_ID,NEXTION_API_EL_STATE_OBJECT_NAME); -NexVariable vNextionClockHours = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_CLK_H_OBJECT_ID,NEXTION_API_CLK_H_OBJECT_NAME); -NexVariable vNextionClockMinutes = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_CLK_M_OBJECT_ID,NEXTION_API_CLK_M_OBJECT_NAME); -NexVariable vNextionClockSeconds = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_CLK_S_OBJECT_ID,NEXTION_API_CLK_S_OBJECT_NAME); -NexVariable vNextionClockTimeZoneOffset = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_CLK_TIMEZONE_OBJECT_ID,NEXTION_API_CLK_TIMEZONE_OBJECT_NAME); -NexVariable vNextionGrid = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_GRID_OBJECT_ID,NEXTION_API_GRID_OBJECT_NAME); -NexVariable vNextionGPSLatitude = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_GPS_LAT_OBJECT_ID,NEXTION_API_GPS_LAT_OBJECT_NAME); -NexVariable vNextionGPSLongitude = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_GPS_LONG_OBJECT_ID,NEXTION_API_GPS_LONG_OBJECT_NAME); -NexVariable vNextionGPSElevation = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_GPS_ELE_OBJECT_ID,NEXTION_API_GPS_ELE_OBJECT_NAME); -NexVariable vNextionTrackingAndIndicators = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_TRACKING_STATE_OBJECT_ID,NEXTION_API_TRACKING_STATE_OBJECT_NAME); -NexVariable vNextionChangeFlags = NexVariable(NEXTION_API_PAGE_ID,NEXTION_API_CHANGE_FLAG_OBJECT_ID,NEXTION_API_CHANGE_FLAG_OBJECT_NAME); -NexVariable vNextionMoonAz = NexVariable(NEXTION_API_PAGE_ID,NEXTION_AZ_MOON_OBJECT_ID,NEXTION_API_AZ_MOON_OBJECT_NAME); -NexVariable vNextionMoonEl = NexVariable(NEXTION_API_PAGE_ID,NEXTION_EL_MOON_OBJECT_ID,NEXTION_API_EL_MOON_OBJECT_NAME); -NexVariable vNextionSunAz = NexVariable(NEXTION_API_PAGE_ID,NEXTION_AZ_SUN_OBJECT_ID,NEXTION_API_AZ_SUN_OBJECT_NAME); -NexVariable vNextionSunEl = NexVariable(NEXTION_API_PAGE_ID,NEXTION_EL_SUN_OBJECT_ID,NEXTION_API_EL_SUN_OBJECT_NAME); - - - diff --git a/k3ng_rotator_controller/rotator_settings_test.h b/k3ng_rotator_controller/rotator_settings_test.h index 2d0af21..dc3f975 100755 --- a/k3ng_rotator_controller/rotator_settings_test.h +++ b/k3ng_rotator_controller/rotator_settings_test.h @@ -361,6 +361,9 @@ You can tweak these, but read the online documentation! //#define SET_I2C_BUS_SPEED 800000L // Can set up to 800 kHz, depending on devices. 800000L = 800 khz, 400000L = 400 khz. Default is 100 khz +#define nexSerial Serial3 +#define NEXTION_SERIAL_BAUD 115200 + // ######## ######## ###### ######## // ## ## ## ## ##