Files
OBPkp61/include/main.h
2026-03-07 19:32:24 +01:00

182 lines
4.3 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 HWVERSION
#define PCBVERSION "*undef*"
#else
#define PCBVERSION STRINGIFY(HWVERSION)
#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"
// Generic
#define ADMIN_PASS "obpkp61"
// WIFI AP
#define WIFI_CHANNEL 9
#define WIFI_MAX_STA 2
#define WIFI_SSID "OBPKP61"
#define WIFI_PASS "keypad61"
// NMEA2000 defaults
#define N2K_DEFAULT_NODEID 124
#define N2K_HEARTBEAT_INTERVAL 5000 // milliseconds
#define N2K_MANUFACTURERCODE 2046 // custom OBP
#define N2K_INDUSTRYGROUP 4
#define N2K_DEVFUNCT 130 // Device function=Button Interface (or 190?)
#define N2K_DEVCLASS 110 // Device class=Human Interface? (or 140?)
#define NAME_BROADCAST 0xFFFFFFFFFFFFFFFFULL // "all"
#define NAME_NONE 0x0ULL // "none"
// 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
#ifdef HARDWARE_V1
#define BUZZER GPIO_NUM_43 // TX (bad: signals while booting)
#else
#define BUZZER GPIO_NUM_14 // A7
#endif
// Light sensor
#define LDR GPIO_NUM_13 // A6
// LEDS
#define LED_A GPIO_NUM_3 // A2
#define LED_B GPIO_NUM_2 // A1
#define LED_C GPIO_NUM_1 // A0
#ifdef HARDWARE_V1
#define RGBLED_R GPIO_NUM_14 // A7 red
#define RGBLED_G GPIO_NUM_13 // A6 green
#define RGBLED_B GPIO_NUM_4 // A3 blue
#else
#define RGBLED_R GPIO_NUM_12 // A5 red
#define RGBLED_G GPIO_NUM_11 // A4 green
#define RGBLED_B GPIO_NUM_4 // A3 blue
#endif
#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
#ifdef HARDWARE_V1
#define I2C_SDA GPIO_NUM_11 // A4
#define I2C_SCL GPIO_NUM_12 // A5
#else
#define I2C_SDA GPIO_NUM_38 // D11
#define I2C_SCL GPIO_NUM_47 // D12
#endif
#define I2C_SPEED 100000UL // 100kHz clock speed on I2C bus
// I2C addresses
#define SHT31_ADDRESS 0x44
// 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 uint8_t loglevel;
extern Nmea2kTwai &NMEA2000;
extern tN2kDeviceList *pN2kDeviceList;
extern char globalmode;
extern char mode;
extern char ledmode;
extern char audiomode;
extern char destination;
extern uint64_t chipid;
extern bool ap_enabled;
extern bool buz_enabled;
extern uint8_t keycode[6];
extern uint8_t longcode[6];
extern float temp;
extern float hum;