1
0
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:
Asbelos 2021-02-07 15:46:36 +00:00
parent a9a6b56654
commit f120a1e43d
6 changed files with 31 additions and 38 deletions

View File

@ -69,7 +69,7 @@ void setup()
// Start the WiFi interface on a MEGA, Uno cannot currently handle WiFi
#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
#if ETHERNET_ON

View File

@ -55,6 +55,10 @@ INTERRUPT_CALLBACK interruptHandler=0;
interruptHandler();
}
void DCCTimer::getSimulatedMacAddress(byte mac[6]) {
memcpy(mac,&SIGROW.SERNUM0,6); // serial number
}
#else
// Arduino nano, uno, mega etc
void DCCTimer::begin(INTERRUPT_CALLBACK callback) {
@ -71,4 +75,10 @@ INTERRUPT_CALLBACK interruptHandler=0;
// ISR called by timer interrupt every 58uS
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

View File

@ -7,6 +7,7 @@ typedef void (*INTERRUPT_CALLBACK)();
class DCCTimer {
public:
static void begin(INTERRUPT_CALLBACK interrupt);
static void getSimulatedMacAddress(byte mac[6]);
private:
};

View File

@ -17,12 +17,18 @@
* 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"
#if ETHERNET_ON == true
#include "EthernetInterface.h"
#include "DIAG.h"
#include "CommandDistributor.h"
#include "DCCTimer.h"
EthernetInterface * EthernetInterface::singleton=NULL;
/**
@ -44,9 +50,14 @@ void EthernetInterface::setup()
*/
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;
#ifdef IP_ADDRESS

View File

@ -38,11 +38,8 @@
* @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 OUTBOUND_RING_SIZE 2048

View File

@ -26,12 +26,6 @@ The configuration file for DCC-EX Command Station
//
#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
@ -89,26 +83,6 @@ The configuration file for DCC-EX Command Station
//
//#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 }
/////////////////////////////////////////////////////////////////////////////////////
//