15 #include "TextCommand.h" 16 #include "DCCpp_Uno.h" 26 #if defined(USE_EEPROM) || defined(USE_TEXTCOMMAND) 27 #if defined(USE_EEPROM) && defined(DCCPP_DEBUG_MODE) 28 if (strncmp(
EEStore::data.
id, EESTORE_ID,
sizeof(EESTORE_ID)) != 0) {
29 INTERFACE.println(F(
"Output::begin() must be called BEFORE DCCpp.begin() !"));
35 else if ((
get(
id)) == NULL) {
43 this->
set(id, pin, iFlag);
45 #ifdef USE_TEXTCOMMAND 46 INTERFACE.print(
"<O>");
47 #if !defined(USE_ETHERNET) 48 INTERFACE.println(
"");
64 ArduiEmulator::Arduino::dontCheckNextPinAccess =
true;
66 digitalWrite(this->
data.
pin, this->data.oStatus ^ bitRead(this->
data.
iFlag, 0));
68 ArduiEmulator::Arduino::dontCheckNextPinAccess =
true;
86 #ifdef USE_TEXTCOMMAND 87 INTERFACE.print(
"<Y");
90 INTERFACE.print(
" 0>");
92 INTERFACE.print(
" 1>");
93 #if !defined(USE_ETHERNET) 94 INTERFACE.println(
"");
99 #if defined(USE_EEPROM) || defined(USE_TEXTCOMMAND) 115 #ifdef USE_TEXTCOMMAND 116 INTERFACE.print(
"<X>");
117 #if !defined(USE_ETHERNET) 118 INTERFACE.println(
"");
131 #ifdef USE_TEXTCOMMAND 132 INTERFACE.print(
"<O>");
133 #if !defined(USE_ETHERNET) 134 INTERFACE.println(
"");
162 #if defined(USE_TEXTCOMMAND) 166 #ifdef DCCPP_DEBUG_MODE 168 INTERFACE.println(F(
"Output::begin() must be called BEFORE Output::load() !"));
174 tt->data.oStatus = bitRead(tt->data.iFlag, 1) ? bitRead(tt->data.iFlag, 2) : data.
oStatus;
176 ArduiEmulator::Arduino::dontCheckNextPinAccess =
true;
178 digitalWrite(tt->data.pin, tt->data.oStatus ^ bitRead(tt->data.iFlag, 0));
180 ArduiEmulator::Arduino::dontCheckNextPinAccess =
true;
182 pinMode(tt->data.pin,
OUTPUT);
212 #if defined(USE_TEXTCOMMAND) 219 switch(sscanf(c,
"%d %d %d",&n,&s,&m)){
225 #ifdef USE_TEXTCOMMAND 228 INTERFACE.print(
"<X>");
229 #if !defined(USE_ETHERNET) 230 INTERFACE.println(
"");
244 #ifdef DCCPP_PRINT_DCCPP 258 #ifdef USE_TEXTCOMMAND 259 INTERFACE.print(
"<X>");
260 #if !defined(USE_ETHERNET) 261 INTERFACE.println(
"");
267 tt->
begin(
id, pin, iFlag);
272 #endif USE_TEXTCOMMAND 274 #if defined(USE_EEPROM) || defined(USE_TEXTCOMMAND) 275 #ifdef DCCPP_PRINT_DCCPP 279 void Output::show() {
283 INTERFACE.print(
"<X>");
284 #if !defined(USE_ETHERNET) 285 INTERFACE.println(
"");
291 INTERFACE.print(
"<Y");
292 INTERFACE.print(tt->
data.
id);
293 INTERFACE.print(
" ");
295 INTERFACE.print(
" ");
299 INTERFACE.print(
" 0>");
301 INTERFACE.print(
" 1>");
302 #if !defined(USE_ETHERNET) 303 INTERFACE.println(
"");
static void parse(char *c)
static void advance(int inIncrement)
static Output * create(int id, int pin, int iFlag)
static void remove(int id)
static Output * get(int id)
void set(int id, int pin, int iFlag)
static Output * firstOutput
void begin(int id, int pin, int iFlag)