#pragma once #include #include "Nmea2kTwai.h" #include "N2kDeviceList.h" #define LOGE(tag, fmt, ...) \ do { if (loglevel >= ESP_LOG_ERROR) ESP_LOGE(tag, fmt, ##__VA_ARGS__); } while(0) #define LOGW(tag, fmt, ...) \ do { if (loglevel >= ESP_LOG_WARN) ESP_LOGW(tag, fmt, ##__VA_ARGS__); } while(0) #define LOGI(tag, fmt, ...) \ do { if (loglevel >= ESP_LOG_INFO) ESP_LOGI(tag, fmt, ##__VA_ARGS__); } while(0) #define LOGD(tag, fmt, ...) \ do { if (loglevel >= ESP_LOG_DEBUG) ESP_LOGD(tag, fmt, ##__VA_ARGS__); } while(0) #define LOGV(tag, fmt, ...) \ do { if (loglevel >= ESP_LOG_VERBOSE) ESP_LOGV(tag, fmt, ##__VA_ARGS__); } while(0) #define STRINGIFY_IMPL(x) #x #define STRINGIFY(x) STRINGIFY_IMPL(x) #ifndef FWVERSION #define VERSION "*undef*" #else #define VERSION STRINGIFY(FWVERSION) #endif #ifndef BUILD_DATE #define BUILD_DATE STRINGIFY(FWBUILDDATE) #endif #ifndef BUILD_TIME #define BUILD_TIME STRINGIFY(FWBUILDTIME) #endif #define FIRMWARE_TYPE STRINGIFY(PIO_ENV_BUILD) #define IDF_VERSION STRINGIFY(ESP_IDF_VERSION_MAJOR) "." STRINGIFY(ESP_IDF_VERSION_MINOR) "." STRINGIFY(ESP_IDF_VERSION_PATCH) #define PREF_NAME "nvs" // WIFI AP #define WIFI_CHANNEL 9 #define WIFI_MAX_STA 2 // NMEA2000 defaults #define N2K_DEFAULT_NODEID 124 #define NMEA2000_HEARTBEAT_INTERVAL 5000 // milliseconds // Keys #define KEY_1 GPIO_NUM_5 // D2 #define KEY_2 GPIO_NUM_6 // D3 #define KEY_3 GPIO_NUM_7 // D4 #define KEY_4 GPIO_NUM_8 // D5 #define KEY_5 GPIO_NUM_9 // D6 #define KEY_6 GPIO_NUM_10 // D7 #define KEY_DST GPIO_NUM_17 // D8 // LEDC / PWM channels #define LEDC_BUZZER 0 #define LEDC_LED_A 1 #define LEDC_LED_B 2 #define LEDC_LED_C 3 #define LEDC_RGBLED_R 4 #define LEDC_RGBLED_G 5 #define LEDC_RGBLED_B 6 #define LEDC_BASE_FREQ 5000 #define LEDC_RES_BUZZER 8 // 8bit: 0..255 #define LEDC_RES_LED 12 // 12bit: 0..4095 // #define LEDC_TIMER_8_BIT 8 // Buzzer #define BUZZER GPIO_NUM_43 // TX // LEDS #define LED_A GPIO_NUM_3 // A2 #define LED_B GPIO_NUM_2 // A1 #define LED_C GPIO_NUM_1 // A0 #define RGBLED_R GPIO_NUM_14 // A7 red #define RGBLED_G GPIO_NUM_13 // A6 green #define RGBLED_B GPIO_NUM_4 // A3 blue #define LED_USER GPIO_NUM_48 // internal red user led #define LED_IR GPIO_NUM_46 // internal rgb led on strapping pins #define LED_IG GPIO_NUM_0 // ! B1 <-> Buzzer #define LED_IB GPIO_NUM_45 // CAN bus for NMEA2000 connection #define CAN_TX GPIO_NUM_18 // D9 #define CAN_RX GPIO_NUM_21 // D10 #define CAN_RECOVERY_PERIOD 3000 // I2C temp. sensor #define I2C_SDA GPIO_NUM_11 // A4 #define I2C_SCL GPIO_NUM_12 // A5 #define I2C_SPEED 100000UL // 100kHz clock speed on I2C bus // I2C addresses #define SHT31_ADDRESS 0x44 // SPI display connector (optional) #define SPI_MOSI GPIO_NUM_38 // D11 #define SPI_MISO GPIO_NUM_47 // D12 #define SPI_SCK GPIO_NUM_48 // D13 #define SPI_CS GPIO_NUM_46 // B0 // Button indices #define BUTTON_1 0 #define BUTTON_2 1 #define BUTTON_3 2 #define BUTTON_4 3 #define BUTTON_5 4 #define BUTTON_6 5 #define BUTTON_DST 6 enum class ButtonPressType : uint8_t { SHORT, // < 1 second MEDIUM, // >= 1 second and < 3 seconds LONG // >= 3 seconds }; struct ButtonEvent { uint8_t buttonId; ButtonPressType pressType; }; extern Nmea2kTwai &NMEA2000; extern tN2kDeviceList *pN2kDeviceList; extern char globalmode; extern uint8_t loglevel; extern uint64_t chipid; extern int16_t led_brightness; extern int16_t rgb_brightness; extern uint8_t keycode[6]; extern uint8_t longcode[6]; extern float temp; extern float hum;