15#include "Vrekrer_scpi_parser.h"
18#include "esp_system.h"
21RTC_DATA_ATTR
bool hasResetAfterBoot =
false;
26RTC_DATA_ATTR uint32_t bootCount = 0;
33SCPI* scpi_instrument =
nullptr;
37const char* resetReasonToString(esp_reset_reason_t reason) {
39 case ESP_RST_UNKNOWN:
return "UNKNOWN";
40 case ESP_RST_POWERON:
return "POWERON";
41 case ESP_RST_EXT:
return "EXT";
42 case ESP_RST_SW:
return "SW";
43 case ESP_RST_PANIC:
return "PANIC";
44 case ESP_RST_INT_WDT:
return "INT_WDT";
45 case ESP_RST_TASK_WDT:
return "TASK_WDT";
46 case ESP_RST_WDT:
return "WDT";
47 case ESP_RST_DEEPSLEEP:
return "DEEPSLEEP";
48 case ESP_RST_BROWNOUT:
return "BROWNOUT";
49 case ESP_RST_SDIO:
return "SDIO";
50 default:
return "UNMAPPED";
58 pinMode(POWER_GOOD_PIN, INPUT);
60 flash_memory.initFlashMemory();
62 scpi_instrument =
new SCPI();
65 int ethernet_reset_pin = flash_memory.preferences.getInt(
"ETHERNET-RESET-PIN", ETHERNET_RESET_PIN);
69 pinMode(ethernet_reset_pin, OUTPUT);
70 digitalWrite(ethernet_reset_pin, LOW);
72 digitalWrite(ethernet_reset_pin, HIGH);
76 int address1 = flash_memory.preferences.getInt(
"STEPPER1-ADDRESS", STEPPER1_ADDRESS);
77 int address2 = flash_memory.preferences.getInt(
"STEPPER2-ADDRESS", STEPPER2_ADDRESS);
78 int step_pin1 = flash_memory.preferences.getInt(
"MOTOR1-STEP-PIN", MOTOR1_STEP_PIN);
79 int enable_pin1 = flash_memory.preferences.getInt(
"MOTOR1-ENABLE-PIN", MOTOR1_ENABLE_PIN);
80 int step_pin2 = flash_memory.preferences.getInt(
"MOTOR2-STEP-PIN", MOTOR2_STEP_PIN);
81 int enable_pin2 = flash_memory.preferences.getInt(
"MOTOR2-ENABLE-PIN", MOTOR2_ENABLE_PIN);
84 stepper1 =
new STEPPER(address1, step_pin1, enable_pin1);
85 stepper2 =
new STEPPER(address2, step_pin2, enable_pin2);
92 scpi_instrument->setup();
98 esp_reset_reason_t resetReason = esp_reset_reason();
99 Serial.println(
"Test123");
101 Serial.println(
"Test1234");
103 Serial.printf(
"Reset reason: %d\n", esp_reset_reason());
105 if ((resetReason == ESP_RST_POWERON || resetReason == ESP_RST_BROWNOUT || resetReason == ESP_RST_UNKNOWN || resetReason == ESP_RST_EXT) && hasResetAfterBoot ==
false) {
106 Serial.println(
"Cold/unstable boot detected, scheduling hardware reset...");
109 hasResetAfterBoot =
true;
126 scpi_instrument->processSerial();
128 scpi_instrument->processEthernet();
This class handles access to the flash memory of the ESP32. It is also used to initialize the flash m...
This class handles the SCPI communication with the instrument. It is responsible for parsing SCPI com...
The STEPPER class is used to manage stepper motor instances. It provides methods to control the motor...
Configuration file for the entire project.
Handles the flash memory for the ESP32.
This file contains the functions and classes related to SCPI communication.