move serial channel mode to serial channel type (integer)
This commit is contained in:
		
							parent
							
								
									f36dd37b8b
								
							
						
					
					
						commit
						8c7540d956
					
				| 
						 | 
					@ -102,6 +102,29 @@ static SerialParam *getSerialParam(int id){
 | 
				
			||||||
    return nullptr;
 | 
					    return nullptr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GwChannelList:: addSerial(HardwareSerial *stream,int id,int type,int rx,int tx){
 | 
				
			||||||
 | 
					    const char *mode=nullptr;
 | 
				
			||||||
 | 
					    switch (type)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    case GWSERIAL_TYPE_UNI:
 | 
				
			||||||
 | 
					        mode="UNI";
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case GWSERIAL_TYPE_BI:
 | 
				
			||||||
 | 
					        mode="BI";
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case GWSERIAL_TYPE_RX:
 | 
				
			||||||
 | 
					        mode="RX";
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case GWSERIAL_TYPE_TX:
 | 
				
			||||||
 | 
					        mode="TX";
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (mode == nullptr) {
 | 
				
			||||||
 | 
					        LOG_DEBUG(GwLog::ERROR,"unknown serial type %d",type);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    addSerial(stream,id,mode,rx,tx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
void GwChannelList::addSerial(HardwareSerial *serialStream,int id,const String &mode,int rx,int tx){
 | 
					void GwChannelList::addSerial(HardwareSerial *serialStream,int id,const String &mode,int rx,int tx){
 | 
				
			||||||
    SerialParam *param=getSerialParam(id);
 | 
					    SerialParam *param=getSerialParam(id);
 | 
				
			||||||
    if (param == nullptr){
 | 
					    if (param == nullptr){
 | 
				
			||||||
| 
						 | 
					@ -112,6 +135,7 @@ void GwChannelList::addSerial(HardwareSerial *serialStream,int id,const String &
 | 
				
			||||||
        logger->logDebug(GwLog::ERROR,"useless config for serial %d: both rx/tx undefined");
 | 
					        logger->logDebug(GwLog::ERROR,"useless config for serial %d: both rx/tx undefined");
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    modes[id]=String(mode);
 | 
				
			||||||
    bool canRead=false;
 | 
					    bool canRead=false;
 | 
				
			||||||
    bool canWrite=false;
 | 
					    bool canWrite=false;
 | 
				
			||||||
    if (mode == "BI"){
 | 
					    if (mode == "BI"){
 | 
				
			||||||
| 
						 | 
					@ -155,6 +179,7 @@ void GwChannelList::addSerial(HardwareSerial *serialStream,int id,const String &
 | 
				
			||||||
    LOG_DEBUG(GwLog::LOG, "%s", channel->toString().c_str());
 | 
					    LOG_DEBUG(GwLog::LOG, "%s", channel->toString().c_str());
 | 
				
			||||||
    theChannels.push_back(channel);
 | 
					    theChannels.push_back(channel);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GwChannelList::begin(bool fallbackSerial){
 | 
					void GwChannelList::begin(bool fallbackSerial){
 | 
				
			||||||
    LOG_DEBUG(GwLog::DEBUG,"GwChannelList::begin");
 | 
					    LOG_DEBUG(GwLog::DEBUG,"GwChannelList::begin");
 | 
				
			||||||
    GwChannel *channel=NULL;
 | 
					    GwChannel *channel=NULL;
 | 
				
			||||||
| 
						 | 
					@ -205,9 +230,13 @@ void GwChannelList::begin(bool fallbackSerial){
 | 
				
			||||||
    #ifndef GWSERIAL_RX
 | 
					    #ifndef GWSERIAL_RX
 | 
				
			||||||
      #define GWSERIAL_RX -1
 | 
					      #define GWSERIAL_RX -1
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					    #ifdef GWSERIAL_TYPE
 | 
				
			||||||
 | 
					        addSerial(&Serial1,SERIAL1_CHANNEL_ID,GWSERIAL_TYPE,GWSERIAL_RX,GWSERIAL_TX);
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
        #ifdef GWSERIAL_MODE
 | 
					        #ifdef GWSERIAL_MODE
 | 
				
			||||||
            addSerial(&Serial1,SERIAL1_CHANNEL_ID,GWSERIAL_MODE,GWSERIAL_RX,GWSERIAL_TX);
 | 
					            addSerial(&Serial1,SERIAL1_CHANNEL_ID,GWSERIAL_MODE,GWSERIAL_RX,GWSERIAL_TX);
 | 
				
			||||||
        #endif
 | 
					        #endif
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
    //serial 2
 | 
					    //serial 2
 | 
				
			||||||
    #ifndef GWSERIAL2_TX
 | 
					    #ifndef GWSERIAL2_TX
 | 
				
			||||||
      #define GWSERIAL2_TX -1
 | 
					      #define GWSERIAL2_TX -1
 | 
				
			||||||
| 
						 | 
					@ -215,9 +244,13 @@ void GwChannelList::begin(bool fallbackSerial){
 | 
				
			||||||
    #ifndef GWSERIAL2_RX
 | 
					    #ifndef GWSERIAL2_RX
 | 
				
			||||||
      #define GWSERIAL2_RX -1
 | 
					      #define GWSERIAL2_RX -1
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					    #ifdef GWSERIAL2_TYPE
 | 
				
			||||||
 | 
					        addSerial(&Serial2,SERIAL2_CHANNEL_ID,GWSERIAL2_TYPE,GWSERIAL2_RX,GWSERIAL2_TX);
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
        #ifdef GWSERIAL2_MODE
 | 
					        #ifdef GWSERIAL2_MODE
 | 
				
			||||||
            addSerial(&Serial2,SERIAL2_CHANNEL_ID,GWSERIAL2_MODE,GWSERIAL2_RX,GWSERIAL2_TX);
 | 
					            addSerial(&Serial2,SERIAL2_CHANNEL_ID,GWSERIAL2_MODE,GWSERIAL2_RX,GWSERIAL2_TX);
 | 
				
			||||||
        #endif
 | 
					        #endif
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
    //tcp client
 | 
					    //tcp client
 | 
				
			||||||
    bool tclEnabled=config->getBool(config->tclEnabled);
 | 
					    bool tclEnabled=config->getBool(config->tclEnabled);
 | 
				
			||||||
    channel=new GwChannel(logger,"TCPClient",TCP_CLIENT_CHANNEL_ID);
 | 
					    channel=new GwChannel(logger,"TCPClient",TCP_CLIENT_CHANNEL_ID);
 | 
				
			||||||
| 
						 | 
					@ -245,6 +278,11 @@ void GwChannelList::begin(bool fallbackSerial){
 | 
				
			||||||
    LOG_DEBUG(GwLog::LOG,"%s",channel->toString().c_str());  
 | 
					    LOG_DEBUG(GwLog::LOG,"%s",channel->toString().c_str());  
 | 
				
			||||||
    logger->flush();
 | 
					    logger->flush();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					String GwChannelList::getMode(int id){
 | 
				
			||||||
 | 
					    auto it=modes.find(id);
 | 
				
			||||||
 | 
					    if (it != modes.end()) return it->second;
 | 
				
			||||||
 | 
					    return "UNKNOWN";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
int GwChannelList::getJsonSize(){
 | 
					int GwChannelList::getJsonSize(){
 | 
				
			||||||
    int rt=0;
 | 
					    int rt=0;
 | 
				
			||||||
    allChannels([&](GwChannel *c){
 | 
					    allChannels([&](GwChannel *c){
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
#include <functional>
 | 
					#include <functional>
 | 
				
			||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
 | 
					#include <map>
 | 
				
			||||||
#include <WString.h>
 | 
					#include <WString.h>
 | 
				
			||||||
#include "GwChannel.h"
 | 
					#include "GwChannel.h"
 | 
				
			||||||
#include "GwLog.h"
 | 
					#include "GwLog.h"
 | 
				
			||||||
| 
						 | 
					@ -26,10 +27,11 @@ class GwChannelList{
 | 
				
			||||||
        GwConfigHandler *config;
 | 
					        GwConfigHandler *config;
 | 
				
			||||||
        typedef std::vector<GwChannel *> ChannelList;
 | 
					        typedef std::vector<GwChannel *> ChannelList;
 | 
				
			||||||
        ChannelList theChannels;
 | 
					        ChannelList theChannels;
 | 
				
			||||||
        
 | 
					        std::map<int,String> modes;
 | 
				
			||||||
        GwSocketServer *sockets;
 | 
					        GwSocketServer *sockets;
 | 
				
			||||||
        GwTcpClient *client;
 | 
					        GwTcpClient *client;
 | 
				
			||||||
        void addSerial(HardwareSerial *stream,int id,const String &mode,int rx,int tx);
 | 
					        void addSerial(HardwareSerial *stream,int id,const String &mode,int rx,int tx);
 | 
				
			||||||
 | 
					        void addSerial(HardwareSerial *stream,int id,int type,int rx,int tx);
 | 
				
			||||||
    public:
 | 
					    public:
 | 
				
			||||||
        GwChannelList(GwLog *logger, GwConfigHandler *config);
 | 
					        GwChannelList(GwLog *logger, GwConfigHandler *config);
 | 
				
			||||||
        typedef std::function<void(GwChannel *)> ChannelAction;
 | 
					        typedef std::function<void(GwChannel *)> ChannelAction;
 | 
				
			||||||
| 
						 | 
					@ -42,6 +44,6 @@ class GwChannelList{
 | 
				
			||||||
        //single channel
 | 
					        //single channel
 | 
				
			||||||
        GwChannel *getChannelById(int sourceId);
 | 
					        GwChannel *getChannelById(int sourceId);
 | 
				
			||||||
        void fillStatus(GwApi::Status &status);
 | 
					        void fillStatus(GwApi::Status &status);
 | 
				
			||||||
 | 
					        String getMode(int id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,11 @@
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#ifndef _GWHARDWARE_H
 | 
					#ifndef _GWHARDWARE_H
 | 
				
			||||||
#define _GWHARDWARE_H
 | 
					#define _GWHARDWARE_H
 | 
				
			||||||
 | 
					#define GWSERIAL_TYPE_UNI 1
 | 
				
			||||||
 | 
					#define GWSERIAL_TYPE_BI 2
 | 
				
			||||||
 | 
					#define GWSERIAL_TYPE_RX 3
 | 
				
			||||||
 | 
					#define GWSERIAL_TYPE_TX 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <HardwareSerial.h>
 | 
					#include <HardwareSerial.h>
 | 
				
			||||||
#include "GwUserTasks.h"
 | 
					#include "GwUserTasks.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -117,7 +122,7 @@
 | 
				
			||||||
#define ESP32_CAN_RX_PIN GPIO_NUM_4
 | 
					#define ESP32_CAN_RX_PIN GPIO_NUM_4
 | 
				
			||||||
//serial input only
 | 
					//serial input only
 | 
				
			||||||
#define GWSERIAL_RX GPIO_NUM_16
 | 
					#define GWSERIAL_RX GPIO_NUM_16
 | 
				
			||||||
#define GWSERIAL_MODE "RX"
 | 
					#define GWSERIAL_TYPE GWSERIAL_TYPE_RX
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define GWBUTTON_PIN GPIO_NUM_0
 | 
					#define GWBUTTON_PIN GPIO_NUM_0
 | 
				
			||||||
#define GWBUTTON_ACTIVE LOW
 | 
					#define GWBUTTON_ACTIVE LOW
 | 
				
			||||||
| 
						 | 
					@ -132,26 +137,26 @@
 | 
				
			||||||
#ifdef SERIAL_GROOVE_485
 | 
					#ifdef SERIAL_GROOVE_485
 | 
				
			||||||
  #define GWSERIAL_TX GROOVE_PIN_1
 | 
					  #define GWSERIAL_TX GROOVE_PIN_1
 | 
				
			||||||
  #define GWSERIAL_RX GROOVE_PIN_2
 | 
					  #define GWSERIAL_RX GROOVE_PIN_2
 | 
				
			||||||
  #define GWSERIAL_MODE "UNI"
 | 
					  #define GWSERIAL_TYPE GWSERIAL_TYPE_UNI 
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef SERIAL_GROOVE_232
 | 
					#ifdef SERIAL_GROOVE_232
 | 
				
			||||||
  #define GWSERIAL_TX GROOVE_PIN_1
 | 
					  #define GWSERIAL_TX GROOVE_PIN_1
 | 
				
			||||||
  #define GWSERIAL_RX GROOVE_PIN_2
 | 
					  #define GWSERIAL_RX GROOVE_PIN_2
 | 
				
			||||||
  #define GWSERIAL_MODE "BI"
 | 
					  #define GWSERIAL_TYPE GWSERIAL_TYPE_BI
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//M5 Serial (Atomic RS232 Base)
 | 
					//M5 Serial (Atomic RS232 Base)
 | 
				
			||||||
#ifdef M5_SERIAL_KIT_232 
 | 
					#ifdef M5_SERIAL_KIT_232 
 | 
				
			||||||
  #define GWSERIAL_TX BOARD_LEFT2
 | 
					  #define GWSERIAL_TX BOARD_LEFT2
 | 
				
			||||||
  #define GWSERIAL_RX BOARD_LEFT1
 | 
					  #define GWSERIAL_RX BOARD_LEFT1
 | 
				
			||||||
  #define GWSERIAL_MODE "BI"
 | 
					  #define GWSERIAL_TYPE GWSERIAL_TYPE_BI
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//M5 Serial (Atomic RS485 Base)
 | 
					//M5 Serial (Atomic RS485 Base)
 | 
				
			||||||
#ifdef M5_SERIAL_KIT_485 
 | 
					#ifdef M5_SERIAL_KIT_485 
 | 
				
			||||||
  #define GWSERIAL_TX BOARD_LEFT2
 | 
					  #define GWSERIAL_TX BOARD_LEFT2
 | 
				
			||||||
  #define GWSERIAL_RX BOARD_LEFT1
 | 
					  #define GWSERIAL_RX BOARD_LEFT1
 | 
				
			||||||
  #define GWSERIAL_MODE "UNI"
 | 
					  #define GWSERIAL_TYPE GWSERIAL_TYPE_UNI
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//can kit for M5 Atom
 | 
					//can kit for M5 Atom
 | 
				
			||||||
| 
						 | 
					@ -165,5 +170,4 @@
 | 
				
			||||||
  #define ESP32_CAN_RX_PIN GROOVE_PIN_2
 | 
					  #define ESP32_CAN_RX_PIN GROOVE_PIN_2
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/main.cpp
								
								
								
								
							
							
						
						
									
										16
									
								
								src/main.cpp
								
								
								
								
							| 
						 | 
					@ -126,7 +126,7 @@ class Nmea2kTwaiLog : public Nmea2kTwai{
 | 
				
			||||||
 #define ESP32_CAN_RX_PIN GPIO_NUM_NC
 | 
					 #define ESP32_CAN_RX_PIN GPIO_NUM_NC
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Nmea2kTwai &NMEA2000=*(new Nmea2kTwaiLog(ESP32_CAN_TX_PIN,ESP32_CAN_RX_PIN,CAN_RECOVERY_PERIOD,&logger));
 | 
					Nmea2kTwai &NMEA2000=*(new Nmea2kTwaiLog((gpio_num_t)ESP32_CAN_TX_PIN,(gpio_num_t)ESP32_CAN_RX_PIN,CAN_RECOVERY_PERIOD,&logger));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef GWBUTTON_PIN
 | 
					#ifdef GWBUTTON_PIN
 | 
				
			||||||
bool fixedApPass=false;
 | 
					bool fixedApPass=false;
 | 
				
			||||||
| 
						 | 
					@ -433,18 +433,8 @@ class CapabilitiesRequest : public GwRequestMessage{
 | 
				
			||||||
        it != userCodeHandler.getCapabilities()->end();it++){
 | 
					        it != userCodeHandler.getCapabilities()->end();it++){
 | 
				
			||||||
          json[it->first]=it->second;
 | 
					          json[it->first]=it->second;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      #ifdef GWSERIAL_MODE
 | 
					      json["serialmode"]=channels.getMode(SERIAL1_CHANNEL_ID);
 | 
				
			||||||
      String serial(F(GWSERIAL_MODE));
 | 
					      json["serial2mode"]=channels.getMode(SERIAL2_CHANNEL_ID);
 | 
				
			||||||
      #else
 | 
					 | 
				
			||||||
      String serial(F("NONE"));
 | 
					 | 
				
			||||||
      #endif
 | 
					 | 
				
			||||||
      json["serialmode"]=serial;
 | 
					 | 
				
			||||||
      #ifdef GWSERIAL2_MODE
 | 
					 | 
				
			||||||
      String serial2(F(GWSERIAL2_MODE));
 | 
					 | 
				
			||||||
      #else
 | 
					 | 
				
			||||||
      String serial2(F("NONE"));
 | 
					 | 
				
			||||||
      #endif
 | 
					 | 
				
			||||||
      json["serial2mode"]=serial2;
 | 
					 | 
				
			||||||
      #ifdef GWBUTTON_PIN
 | 
					      #ifdef GWBUTTON_PIN
 | 
				
			||||||
      json["hardwareReset"]="true";
 | 
					      json["hardwareReset"]="true";
 | 
				
			||||||
      #endif
 | 
					      #endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue