Files
OBPkp61/include/main.h
2026-01-28 20:17:22 +01:00

147 lines
3.5 KiB
C

#pragma once
#include <Arduino.h>
#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;