intermediate: add iic task

This commit is contained in:
andreas 2023-10-26 11:55:57 +02:00
parent 30facdbf4d
commit 8266fba42a
3 changed files with 88 additions and 2 deletions

View File

@ -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

27
lib/iictask/GwIicTask.cpp Normal file
View File

@ -0,0 +1,27 @@
//#ifdef _GWIIC
#include "GwIicTask.h"
#include "GwHardware.h"
#include <Wire.h>
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

5
lib/iictask/GwIicTask.h Normal file
View File

@ -0,0 +1,5 @@
#ifndef _GWIICTASK
#define _GWIICTASK
#include "GwApi.h"
DECLARE_USERTASK(runIicTask)
#endif