mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2024-12-25 13:41:23 +01:00
Ethernet simulated mac
Plus fixed listening port
This commit is contained in:
parent
a9a6b56654
commit
f120a1e43d
@ -69,7 +69,7 @@ void setup()
|
|||||||
// Start the WiFi interface on a MEGA, Uno cannot currently handle WiFi
|
// Start the WiFi interface on a MEGA, Uno cannot currently handle WiFi
|
||||||
|
|
||||||
#if WIFI_ON
|
#if WIFI_ON
|
||||||
WifiInterface::setup(WIFI_SERIAL_LINK_SPEED, F(WIFI_SSID), F(WIFI_PASSWORD), F(WIFI_HOSTNAME), IP_PORT);
|
WifiInterface::setup(WIFI_SERIAL_LINK_SPEED, F(WIFI_SSID), F(WIFI_PASSWORD), F(WIFI_HOSTNAME), 2560);
|
||||||
#endif // WIFI_ON
|
#endif // WIFI_ON
|
||||||
|
|
||||||
#if ETHERNET_ON
|
#if ETHERNET_ON
|
||||||
|
16
DCCTimer.cpp
16
DCCTimer.cpp
@ -54,12 +54,16 @@ INTERRUPT_CALLBACK interruptHandler=0;
|
|||||||
TCB0.INTFLAGS = TCB_CAPT_bm;
|
TCB0.INTFLAGS = TCB_CAPT_bm;
|
||||||
interruptHandler();
|
interruptHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DCCTimer::getSimulatedMacAddress(byte mac[6]) {
|
||||||
|
memcpy(mac,&SIGROW.SERNUM0,6); // serial number
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// Arduino nano, uno, mega etc
|
// Arduino nano, uno, mega etc
|
||||||
void DCCTimer::begin(INTERRUPT_CALLBACK callback) {
|
void DCCTimer::begin(INTERRUPT_CALLBACK callback) {
|
||||||
interruptHandler=callback;
|
interruptHandler=callback;
|
||||||
noInterrupts();
|
noInterrupts();
|
||||||
ADCSRA = (ADCSRA & 0b11111000) | 0b00000100; // speed up analogRead sample time
|
ADCSRA = (ADCSRA & 0b11111000) | 0b00000100; // speed up analogRead sample time
|
||||||
TCCR1A = 0;
|
TCCR1A = 0;
|
||||||
ICR1 = CLOCK_CYCLES;
|
ICR1 = CLOCK_CYCLES;
|
||||||
@ -71,4 +75,10 @@ INTERRUPT_CALLBACK interruptHandler=0;
|
|||||||
|
|
||||||
// ISR called by timer interrupt every 58uS
|
// ISR called by timer interrupt every 58uS
|
||||||
ISR(TIMER1_OVF_vect){ interruptHandler(); }
|
ISR(TIMER1_OVF_vect){ interruptHandler(); }
|
||||||
|
|
||||||
|
#include <avr/boot.h>
|
||||||
|
void DCCTimer::getSimulatedMacAddress(byte mac[6]) {
|
||||||
|
for (byte i=0; i<6; i++) mac[i]=boot_signature_byte_get(0x0E + i);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,6 +7,7 @@ typedef void (*INTERRUPT_CALLBACK)();
|
|||||||
class DCCTimer {
|
class DCCTimer {
|
||||||
public:
|
public:
|
||||||
static void begin(INTERRUPT_CALLBACK interrupt);
|
static void begin(INTERRUPT_CALLBACK interrupt);
|
||||||
|
static void getSimulatedMacAddress(byte mac[6]);
|
||||||
private:
|
private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -17,12 +17,18 @@
|
|||||||
* along with CommandStation. If not, see <https://www.gnu.org/licenses/>.
|
* along with CommandStation. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#if __has_include ( "config.h")
|
||||||
|
#include "config.h"
|
||||||
|
#else
|
||||||
|
#warning config.h not found. Using defaults from config.example.h
|
||||||
|
#include "config.example.h"
|
||||||
|
#endif
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#if ETHERNET_ON == true
|
#if ETHERNET_ON == true
|
||||||
#include "EthernetInterface.h"
|
#include "EthernetInterface.h"
|
||||||
#include "DIAG.h"
|
#include "DIAG.h"
|
||||||
#include "CommandDistributor.h"
|
#include "CommandDistributor.h"
|
||||||
|
#include "DCCTimer.h"
|
||||||
|
|
||||||
EthernetInterface * EthernetInterface::singleton=NULL;
|
EthernetInterface * EthernetInterface::singleton=NULL;
|
||||||
/**
|
/**
|
||||||
@ -44,10 +50,15 @@ void EthernetInterface::setup()
|
|||||||
*/
|
*/
|
||||||
EthernetInterface::EthernetInterface()
|
EthernetInterface::EthernetInterface()
|
||||||
{
|
{
|
||||||
byte mac[]=MAC_ADDRESS;
|
byte mac[6];
|
||||||
|
DCCTimer::getSimulatedMacAddress(mac);
|
||||||
|
DIAG(F("\n+++++ Ethernet Setup. Simulatd mac="));
|
||||||
|
for (byte i=0;i<sizeof(mac); i++) {
|
||||||
|
DIAG(F("%x:"),mac[i]);
|
||||||
|
}
|
||||||
|
DIAG(F("\n"));
|
||||||
|
|
||||||
DIAG(F("\n+++++ Ethernet Setup "));
|
connected=false;
|
||||||
connected=false;
|
|
||||||
|
|
||||||
#ifdef IP_ADDRESS
|
#ifdef IP_ADDRESS
|
||||||
Ethernet.begin(mac, IP_ADDRESS);
|
Ethernet.begin(mac, IP_ADDRESS);
|
||||||
|
@ -38,11 +38,8 @@
|
|||||||
* @brief Network Configuration
|
* @brief Network Configuration
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef MAC_ADDRESS
|
|
||||||
#error define MAC_ADDRESS in config.h
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define LISTEN_PORT 2560 // default listen port for the server
|
#define LISTEN_PORT 2560 // standard listen port for the server
|
||||||
#define MAX_ETH_BUFFER 512
|
#define MAX_ETH_BUFFER 512
|
||||||
#define OUTBOUND_RING_SIZE 2048
|
#define OUTBOUND_RING_SIZE 2048
|
||||||
|
|
||||||
|
@ -26,12 +26,6 @@ The configuration file for DCC-EX Command Station
|
|||||||
//
|
//
|
||||||
#define MOTOR_SHIELD_TYPE STANDARD_MOTOR_SHIELD
|
#define MOTOR_SHIELD_TYPE STANDARD_MOTOR_SHIELD
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// The IP port to talk to a WIFI or Ethernet shield.
|
|
||||||
//
|
|
||||||
#define IP_PORT 2560
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// NOTE: Only supported on Arduino Mega
|
// NOTE: Only supported on Arduino Mega
|
||||||
@ -89,26 +83,6 @@ The configuration file for DCC-EX Command Station
|
|||||||
//
|
//
|
||||||
//#define IP_ADDRESS { 192, 168, 1, 200 }
|
//#define IP_ADDRESS { 192, 168, 1, 200 }
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// DEFINE MAC ADDRESS ARRAY FOR ETHERNET COMMUNICATIONS INTERFACE
|
|
||||||
//
|
|
||||||
// Uncomment to use with Ethernet Shields
|
|
||||||
//
|
|
||||||
// Ethernet Shields do not have have a MAC address in hardware. There may be one on
|
|
||||||
// a sticker on the Shield that you should use. Otherwise choose one of the ones below
|
|
||||||
// Be certain that no other device on your network has this same MAC address!
|
|
||||||
//
|
|
||||||
// 52:b8:8a:8e:ce:21
|
|
||||||
// e3:e9:73:e1:db:0d
|
|
||||||
// 54:2b:13:52:ac:0c
|
|
||||||
|
|
||||||
// NOTE: This is not used with ESP8266 WiFi modules.
|
|
||||||
|
|
||||||
//#define MAC_ADDRESS { 0x52, 0xB8, 0x8A, 0x8E, 0xCE, 0x21 } // MAC address of your networking card found on the sticker on your card or take one from above
|
|
||||||
|
|
||||||
//
|
|
||||||
// #define MAC_ADDRESS { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF }
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user