mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2024-12-25 13:41:23 +01:00
Merge branch 'nanoEvery2' into fastOLED
This commit is contained in:
commit
c5ddbdf8d7
1
.github/workflows/sha.yml
vendored
1
.github/workflows/sha.yml
vendored
@ -13,6 +13,7 @@ jobs:
|
|||||||
# Set the type of machine to run on
|
# Set the type of machine to run on
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
if: github.ref == 'refs/heads/master'
|
||||||
steps:
|
steps:
|
||||||
# Checks out a copy of your repository on the ubuntu-latest machine
|
# Checks out a copy of your repository on the ubuntu-latest machine
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
|
10
DCC.cpp
10
DCC.cpp
@ -45,11 +45,18 @@ const byte FN_GROUP_4=0x08;
|
|||||||
const byte FN_GROUP_5=0x10;
|
const byte FN_GROUP_5=0x10;
|
||||||
|
|
||||||
FSH* DCC::shieldName=NULL;
|
FSH* DCC::shieldName=NULL;
|
||||||
|
byte DCC::joinRelay=UNUSED_PIN;
|
||||||
|
|
||||||
void DCC::begin(const FSH * motorShieldName, MotorDriver * mainDriver, MotorDriver* progDriver) {
|
void DCC::begin(const FSH * motorShieldName, MotorDriver * mainDriver, MotorDriver* progDriver,
|
||||||
|
byte joinRelayPin) {
|
||||||
shieldName=(FSH *)motorShieldName;
|
shieldName=(FSH *)motorShieldName;
|
||||||
DIAG(F("<iDCC-EX V-%S / %S / %S G-%S>\n"), F(VERSION), F(ARDUINO_TYPE), shieldName, F(GITHUB_SHA));
|
DIAG(F("<iDCC-EX V-%S / %S / %S G-%S>\n"), F(VERSION), F(ARDUINO_TYPE), shieldName, F(GITHUB_SHA));
|
||||||
|
|
||||||
|
joinRelay=joinRelayPin;
|
||||||
|
if (joinRelay!=UNUSED_PIN) {
|
||||||
|
pinMode(joinRelay,OUTPUT);
|
||||||
|
digitalWrite(joinRelay,LOW); // high is relay disengaged
|
||||||
|
}
|
||||||
// Load stuff from EEprom
|
// Load stuff from EEprom
|
||||||
(void)EEPROM; // tell compiler not to warn this is unused
|
(void)EEPROM; // tell compiler not to warn this is unused
|
||||||
EEStore::init();
|
EEStore::init();
|
||||||
@ -223,6 +230,7 @@ void DCC::writeCVBitMain(int cab, int cv, byte bNum, bool bValue) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DCC::setProgTrackSyncMain(bool on) {
|
void DCC::setProgTrackSyncMain(bool on) {
|
||||||
|
if (joinRelay!=UNUSED_PIN) digitalWrite(joinRelay,on?HIGH:LOW);
|
||||||
DCCWaveform::progTrackSyncMain=on;
|
DCCWaveform::progTrackSyncMain=on;
|
||||||
}
|
}
|
||||||
void DCC::setProgTrackBoost(bool on) {
|
void DCC::setProgTrackBoost(bool on) {
|
||||||
|
4
DCC.h
4
DCC.h
@ -64,7 +64,8 @@ const byte MAX_LOCOS = 50;
|
|||||||
class DCC
|
class DCC
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void begin(const FSH * motorShieldName, MotorDriver *mainDriver, MotorDriver *progDriver);
|
static void begin(const FSH * motorShieldName, MotorDriver *mainDriver, MotorDriver *progDriver,
|
||||||
|
byte joinRelayPin=UNUSED_PIN);
|
||||||
static void loop();
|
static void loop();
|
||||||
|
|
||||||
// Public DCC API functions
|
// Public DCC API functions
|
||||||
@ -109,6 +110,7 @@ private:
|
|||||||
byte groupFlags;
|
byte groupFlags;
|
||||||
unsigned long functions;
|
unsigned long functions;
|
||||||
};
|
};
|
||||||
|
static byte joinRelay;
|
||||||
static byte loopStatus;
|
static byte loopStatus;
|
||||||
static void setThrottle2(uint16_t cab, uint8_t speedCode);
|
static void setThrottle2(uint16_t cab, uint8_t speedCode);
|
||||||
static void updateLocoReminder(int loco, byte speedCode);
|
static void updateLocoReminder(int loco, byte speedCode);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define GITHUB_SHA "0228345"
|
#define GITHUB_SHA "fbb9841"
|
||||||
|
@ -57,4 +57,9 @@
|
|||||||
new MotorDriver(10, 12, UNUSED_PIN, 9, A0, 2.99, 2000, UNUSED_PIN), \
|
new MotorDriver(10, 12, UNUSED_PIN, 9, A0, 2.99, 2000, UNUSED_PIN), \
|
||||||
new MotorDriver(11, 13, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN)
|
new MotorDriver(11, 13, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN)
|
||||||
|
|
||||||
|
// IBT_2 Motor Board for Main and Arduino Motor Shield for Prog
|
||||||
|
#define IBT_2_WITH_ARDUINO F("IBT_2_WITH_ARDUINO_SHIELD"), \
|
||||||
|
new MotorDriver(4, 5, 6, UNUSED_PIN, A5, 41.54, 5000, UNUSED_PIN), \
|
||||||
|
new MotorDriver(11, 13, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -35,7 +35,9 @@ Stream * WifiInterface::wifiStream;
|
|||||||
|
|
||||||
#ifndef WIFI_CONNECT_TIMEOUT
|
#ifndef WIFI_CONNECT_TIMEOUT
|
||||||
// Tested how long it takes to FAIL an unknown SSID on firmware 1.7.4.
|
// Tested how long it takes to FAIL an unknown SSID on firmware 1.7.4.
|
||||||
#define WIFI_CONNECT_TIMEOUT 14000
|
// The ES should fail a connect in 15 seconds, we don't want to fail BEFORE that
|
||||||
|
// or ot will cause issues with the following commands.
|
||||||
|
#define WIFI_CONNECT_TIMEOUT 16000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -25,7 +25,6 @@ The configuration file for DCC-EX Command Station
|
|||||||
// +-----------------------v
|
// +-----------------------v
|
||||||
//
|
//
|
||||||
#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.
|
// The IP port to talk to a WIFI or Ethernet shield.
|
||||||
@ -77,13 +76,6 @@ The configuration file for DCC-EX Command Station
|
|||||||
// this line exists or not. If you need to use an alternate channel (we recommend
|
// this line exists or not. If you need to use an alternate channel (we recommend
|
||||||
// using only 1,6, or 11) you may change it here.
|
// using only 1,6, or 11) you may change it here.
|
||||||
#define WIFI_CHANNEL 1
|
#define WIFI_CHANNEL 1
|
||||||
//
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Wifi connect timeout in milliseconds. Default is 14000 (14 seconds). You only need
|
|
||||||
// to set this if you have an extremely slow Wifi router.
|
|
||||||
//
|
|
||||||
//#define WIFI_CONNECT_TIMEOUT 14000
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
93
release_notes.md
Normal file
93
release_notes.md
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
The DCC-EX Team is pleased to release CommandStation-EX-v3.0.0 as a Production Release. This release is a major re-write of earlier versions. We've re-architected the code-base so that it can better handle new features going forward.
|
||||||
|
|
||||||
|
**Known Bugs:**
|
||||||
|
- **Consisting through JMRI** - currently does not work in this release. You may use the <M> command to do this manually.
|
||||||
|
- **Wi-Fi** - works, but can be challenging to use if you want to switch between AP mode and STA station mode.
|
||||||
|
- **Pololu Motor Shield** - is supported with this release, but the user may have to play around with some timings to enable programming mode due to limitation in its current sensing circuitry
|
||||||
|
|
||||||
|
**Summary of the key new features added to CommandStation-EX V3.0.3**
|
||||||
|
- **<W addr> command to write loco address and clear consist**
|
||||||
|
- **<R> command will allow for consist address**
|
||||||
|
- **Startup commands implemented**
|
||||||
|
|
||||||
|
**Summary of the key new features added to CommandStation-EX V3.0.2:**
|
||||||
|
- **Create new output for current in mA for ``<c>`` command** - New current response outputs current in mA, overlimit current, and maximum board capable current
|
||||||
|
- **Simultaneously update JMRI to handle new current meter**
|
||||||
|
|
||||||
|
**Summary of the key new features added to CommandStation-EX V3.0.1:**
|
||||||
|
- **Add back fix for jitter**
|
||||||
|
- **Add Turnouts, Outputs and Sensors to ```<s>``` command output**
|
||||||
|
|
||||||
|
**Summary of the key new features added to CommandStation-EX V3.0.0:**
|
||||||
|
|
||||||
|
- **New USB Browser Based Throttle** - WebThrottle-EX is a full front-end to controller to control the CS to run trains.
|
||||||
|
- **WiFi Support** - AP and station modes supported. Auto-detection of an ESP8266 WiFi module with AT firmware on a Mega's serial port. Connection to JMRI and WiThrottle clients.
|
||||||
|
- **Withrottle Integrations** - Act as a host for up to four WiThrottle clients concurrently.
|
||||||
|
- **Add LCD/OLED support** - OLED supported on Mega only
|
||||||
|
- **Improved CV programming routines** - checks for length of CV pulse, and breaks out of the wait state once it has received an ACK, now reading one CV per second.
|
||||||
|
- **Improved current sensing** - rewrote current sensing routines for safer operation. Current thresholds based on milliamps, not magic numbers
|
||||||
|
- **Individual track power control** - Ability to toggle power on either or both tracks, and to "JOIN" the tracks and make them output the same waveform for multiple power districts.
|
||||||
|
- **Single or Dual-Pin PWM output** - Allows control of H-bridges with PH/EN or dual PWM inputs
|
||||||
|
- **New, simpler function command** - ```<F>``` command allows setting functions based on their number, not based on a code as in ```<f>```
|
||||||
|
- **Function reminders** - Function reminders are sent in addition to speed reminders
|
||||||
|
- **Functions to F28** - All NMRA functions are now supported
|
||||||
|
- **Filters and user functions** - Ability to filter commands in the parser and execute custom code based on them. (ex: Redirect Turnout commands via NRF24)
|
||||||
|
- **Diagnostic ```<D>``` commands** - See documentation for a full list of new diagnostic commands
|
||||||
|
- **Rewrote DCC++ Parser** - more efficient operation, accepts multi-char input and uses less RAM
|
||||||
|
- **Rewritten waveform generator** - capable of using any pin for DCC waveform out, eliminating the need for jumpers
|
||||||
|
- **Rewritten packet generator** - Simplify and make smaller, remove idea of "registers" from original code
|
||||||
|
- **Add free RAM messages** - Free RAM messages are now printed whenever there is a decerase in available RAM
|
||||||
|
- **Fix EEPROM bugs**
|
||||||
|
- **Number of locos discovery command** - ```<#>``` command
|
||||||
|
- **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega.
|
||||||
|
- **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. ```<!>``` command added to release locos from memory.
|
||||||
|
|
||||||
|
|
||||||
|
**Key Contributors**
|
||||||
|
|
||||||
|
**Project Lead**
|
||||||
|
- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk)
|
||||||
|
|
||||||
|
**CommandStation-EX Developers**
|
||||||
|
- Chris Harlow - Bournemouth, UK (UKBloke)
|
||||||
|
- Harald Barth - Stockholm, Sweden (Haba)
|
||||||
|
- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk)
|
||||||
|
- Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting)
|
||||||
|
- M Steve Todd - - Engine Driver and JMRI Interface
|
||||||
|
- Scott Catalanno - Pennsylvania
|
||||||
|
- Gregor Baues - Île-de-France, France (grbba)
|
||||||
|
|
||||||
|
**exInstaller Software**
|
||||||
|
- Anthony W - Dayton, Ohio, USA (Dex, Dex++)
|
||||||
|
|
||||||
|
**Website and Documentation**
|
||||||
|
- Mani Kumar - Bangalor, India (Mani / Mani Kumar)
|
||||||
|
- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk)
|
||||||
|
- Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting)
|
||||||
|
- Roger Beschizza - Dorset, UK (Roger Beschizza)
|
||||||
|
- Keith Ledbetter - Chicago, Illinois, USA (Keith Ledbetter)
|
||||||
|
- Kevin Smith - (KCSmith)
|
||||||
|
|
||||||
|
**WebThrotle-EX**
|
||||||
|
- Fred Decker - Holly Springs, NC (FlightRisk/FrightRisk)
|
||||||
|
- Mani Kumar - Bangalor, India (Mani /Mani Kumar)
|
||||||
|
- Matt H -
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Beta Testing / Release Management / Support**
|
||||||
|
- Larry Dribin - Release Management
|
||||||
|
- Keith Ledbetter
|
||||||
|
- BradVan der Elst
|
||||||
|
- Andrew Pye
|
||||||
|
- Mike Bowers
|
||||||
|
- Randy McKenzie
|
||||||
|
- Roberto Bravin
|
||||||
|
- Sim Brigden
|
||||||
|
- Alan Lautenslager
|
||||||
|
- Martin Bafver
|
||||||
|
- Mário André Silva
|
||||||
|
- Anthony Kochevar
|
||||||
|
- Gajanatha Kobbekaduwe
|
||||||
|
- Sumner Patterson
|
||||||
|
- Paul - Virginia, USA
|
Loading…
Reference in New Issue
Block a user