From 8266fba42a97b77d93649dfe7df52c0d3e890503 Mon Sep 17 00:00:00 2001 From: andreas Date: Thu, 26 Oct 2023 11:55:57 +0200 Subject: [PATCH] intermediate: add iic task --- lib/hardware/GwHardware.h | 58 +++++++++++++++++++++++++++++++++++++-- lib/iictask/GwIicTask.cpp | 27 ++++++++++++++++++ lib/iictask/GwIicTask.h | 5 ++++ 3 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 lib/iictask/GwIicTask.cpp create mode 100644 lib/iictask/GwIicTask.h diff --git a/lib/hardware/GwHardware.h b/lib/hardware/GwHardware.h index f3d5b77..9ef1b92 100644 --- a/lib/hardware/GwHardware.h +++ b/lib/hardware/GwHardware.h @@ -135,20 +135,29 @@ //M5 Serial (Atomic RS232 Base) #ifdef M5_SERIAL_KIT_232 + #define _GWM5_BOARD #define GWSERIAL_TX BOARD_LEFT2 #define GWSERIAL_RX BOARD_LEFT1 #define GWSERIAL_TYPE GWSERIAL_TYPE_BI #endif //M5 Serial (Atomic RS485 Base) -#ifdef M5_SERIAL_KIT_485 +#ifdef M5_SERIAL_KIT_485 + #ifdef _GWM5_BOARD + #error "can only define one M5 base" + #endif + #define _GWM5_BOARD #define GWSERIAL_TX BOARD_LEFT2 #define GWSERIAL_RX BOARD_LEFT1 #define GWSERIAL_TYPE GWSERIAL_TYPE_UNI #endif //M5 GPS (Atomic GPS Base) -#ifdef M5_GPS_KIT +#ifdef M5_GPS_KIT + #ifdef _GWM5_BOARD + #error "can only define one M5 base" + #endif + #define _GWM5_BOARD #define GWSERIAL_RX BOARD_LEFT1 #define GWSERIAL_TYPE GWSERIAL_TYPE_RX #define CFGDEFAULT_serialBaud "9600" @@ -162,6 +171,7 @@ //we use serial2 for groove serial if serial1 is already defined //before (e.g. by serial kit) #ifdef SERIAL_GROOVE_485 + #define _GWM5_GROOVE #ifdef GWSERIAL_TYPE #define GWSERIAL2_TX GROOVE_PIN_2 #define GWSERIAL2_RX GROOVE_PIN_1 @@ -173,6 +183,10 @@ #endif #endif #ifdef SERIAL_GROOVE_232 + #ifdef _GWM5_GROOVE + #error "can only have one groove device" + #endif + #define _GWM5_GROOVE #ifdef GWSERIAL_TYPE #define GWSERIAL2_TX GROOVE_PIN_2 #define GWSERIAL2_RX GROOVE_PIN_1 @@ -186,6 +200,10 @@ //http://docs.m5stack.com/en/unit/gps #ifdef M5_GPS_UNIT + #ifdef _GWM5_GROOVE + #error "can only have one M5 groove" + #endif + #define _GWM5_GROOVE #ifdef GWSERIAL_TYPE #define GWSERIAL2_RX GROOVE_PIN_1 #define GWSERIAL2_TYPE GWSERIAL_TYPE_RX @@ -201,15 +219,51 @@ //can kit for M5 Atom #ifdef M5_CAN_KIT + #ifdef _GWM5_BOARD + #error "can only define one M5 base" + #endif + #define _GWM5_BOARD #define ESP32_CAN_TX_PIN BOARD_LEFT1 #define ESP32_CAN_RX_PIN BOARD_LEFT2 #endif //CAN via groove #ifdef M5_CANUNIT + #ifdef _GWM5_GROOVE + #error "can only have one M5 groove" + #endif + #define _GWM5_GROOVE #define ESP32_CAN_TX_PIN GROOVE_PIN_2 #define ESP32_CAN_RX_PIN GROOVE_PIN_1 #endif +#ifdef M5_GROOVEIIC + #ifdef _GWM5_GROOVE + #error "can only have one M5 groove" + #endif + #define _GWM5_GROOVE + #ifdef GWIIC_SCL + #error "you cannot define both GWIIC_SCL and M5_GROOVEIIC" + #endif + #define GWIIC_SCL GROOVE_PIN_1 + #ifdef GWIIC_SDA + #error "you cannot define both GWIIC_SDA and M5_GROOVEIIC" + #endif + #define GWIIC_SDA GROOVE_PIN_2 +#endif + +#ifdef GWIIC_SDA + #ifndef GWIIC_SCL + #error "you must both define GWIIC_SDA and GWIIC_SCL + #endif +#endif +#ifdef GWIIC_SCL + #ifndef GWIIC_SDA + #error "you must both define GWIIC_SDA and GWIIC_SCL + #endif + #define _GWIIC +#endif + + #ifndef GWLED_TYPE #ifdef GWLED_CODE #if GWLED_CODE == 0 diff --git a/lib/iictask/GwIicTask.cpp b/lib/iictask/GwIicTask.cpp new file mode 100644 index 0000000..5d7e7d0 --- /dev/null +++ b/lib/iictask/GwIicTask.cpp @@ -0,0 +1,27 @@ +//#ifdef _GWIIC +#include "GwIicTask.h" +#include "GwHardware.h" +#include +void runIicTask(GwApi *api){ + GwLog *logger=api->getLogger(); + #ifndef _GWIIC + LOG_DEBUG(GwLog::LOG,"no iic defined, iic task stopped"); + vTaskDelete(NULL); + return; + #endif + #ifndef GWIIC_SDA + #define GWIIC_SDA -1 + #endif + #ifndef GWIIC_SCL + #define GWIIC_SCL -1 + #endif + LOG_DEBUG(GwLog::LOG,"iic task started"); + bool rt=Wire.begin(GWIIC_SDA,GWIIC_SCL); + if (! rt){ + LOG_DEBUG(GwLog::ERROR,"unable to initialize IIC"); + vTaskDelete(NULL); + return; + } + vTaskDelete(NULL); +} +//#endif diff --git a/lib/iictask/GwIicTask.h b/lib/iictask/GwIicTask.h new file mode 100644 index 0000000..e2af38f --- /dev/null +++ b/lib/iictask/GwIicTask.h @@ -0,0 +1,5 @@ +#ifndef _GWIICTASK +#define _GWIICTASK +#include "GwApi.h" +DECLARE_USERTASK(runIicTask) +#endif \ No newline at end of file