Skip to content

Commit 5ec23cf

Browse files
added write method to expose FirmataSerial.write. Updated StandardFirmata to use Firmata.write instead of Serial.write.
1 parent e661cba commit 5ec23cf

File tree

3 files changed

+42
-35
lines changed

3 files changed

+42
-35
lines changed

Firmata.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,12 @@ void FirmataClass::sendString(const char* string)
329329
sendString(STRING_DATA, string);
330330
}
331331

332+
// expose the write method
333+
void FirmataClass::write(byte c)
334+
{
335+
FirmataSerial.write(c);
336+
}
337+
332338

333339
// Internal Actions/////////////////////////////////////////////////////////////
334340

Firmata.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,13 @@ extern "C" {
8787
class FirmataClass
8888
{
8989
public:
90-
FirmataClass(Stream &s);
90+
FirmataClass(Stream &s);
9191
/* Arduino constructors */
9292
void begin();
9393
void begin(long);
9494
void begin(Stream &s);
9595
/* querying functions */
96-
void printVersion(void);
96+
void printVersion(void);
9797
void blinkVersion(void);
9898
void printFirmwareVersion(void);
9999
//void setFirmwareVersion(byte major, byte minor); // see macro below
@@ -102,12 +102,13 @@ class FirmataClass
102102
int available(void);
103103
void processInput(void);
104104
/* serial send handling */
105-
void sendAnalog(byte pin, int value);
106-
void sendDigital(byte pin, int value); // TODO implement this
107-
void sendDigitalPort(byte portNumber, int portData);
105+
void sendAnalog(byte pin, int value);
106+
void sendDigital(byte pin, int value); // TODO implement this
107+
void sendDigitalPort(byte portNumber, int portData);
108108
void sendString(const char* string);
109109
void sendString(byte command, const char* string);
110-
void sendSysex(byte command, byte bytec, byte* bytev);
110+
void sendSysex(byte command, byte bytec, byte* bytev);
111+
void write(byte c);
111112
/* attach & detach callback functions to messages */
112113
void attach(byte command, callbackFunction newFunction);
113114
void attach(byte command, systemResetCallbackFunction newFunction);
@@ -140,7 +141,7 @@ class FirmataClass
140141

141142
/* private methods ------------------------------ */
142143
void processSysexMessage(void);
143-
void systemReset(void);
144+
void systemReset(void);
144145
void pin13strobe(int count, int onInterval, int offInterval);
145146
void sendValueAsTwo7bitBytes(int value);
146147
void startSysex(void);

examples/StandardFirmata/StandardFirmata.ino

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -459,57 +459,57 @@ void sysexCallback(byte command, byte argc, byte *argv)
459459
}
460460
break;
461461
case CAPABILITY_QUERY:
462-
Serial.write(START_SYSEX);
463-
Serial.write(CAPABILITY_RESPONSE);
462+
Firmata.write(START_SYSEX);
463+
Firmata.write(CAPABILITY_RESPONSE);
464464
for (byte pin=0; pin < TOTAL_PINS; pin++) {
465465
if (IS_PIN_DIGITAL(pin)) {
466-
Serial.write((byte)INPUT);
467-
Serial.write(1);
468-
Serial.write((byte)OUTPUT);
469-
Serial.write(1);
466+
Firmata.write((byte)INPUT);
467+
Firmata.write(1);
468+
Firmata.write((byte)OUTPUT);
469+
Firmata.write(1);
470470
}
471471
if (IS_PIN_ANALOG(pin)) {
472-
Serial.write(ANALOG);
473-
Serial.write(10);
472+
Firmata.write(ANALOG);
473+
Firmata.write(10);
474474
}
475475
if (IS_PIN_PWM(pin)) {
476-
Serial.write(PWM);
477-
Serial.write(8);
476+
Firmata.write(PWM);
477+
Firmata.write(8);
478478
}
479479
if (IS_PIN_SERVO(pin)) {
480-
Serial.write(SERVO);
481-
Serial.write(14);
480+
Firmata.write(SERVO);
481+
Firmata.write(14);
482482
}
483483
if (IS_PIN_I2C(pin)) {
484-
Serial.write(I2C);
485-
Serial.write(1); // to do: determine appropriate value
484+
Firmata.write(I2C);
485+
Firmata.write(1); // to do: determine appropriate value
486486
}
487-
Serial.write(127);
487+
Firmata.write(127);
488488
}
489-
Serial.write(END_SYSEX);
489+
Firmata.write(END_SYSEX);
490490
break;
491491
case PIN_STATE_QUERY:
492492
if (argc > 0) {
493493
byte pin=argv[0];
494-
Serial.write(START_SYSEX);
495-
Serial.write(PIN_STATE_RESPONSE);
496-
Serial.write(pin);
494+
Firmata.write(START_SYSEX);
495+
Firmata.write(PIN_STATE_RESPONSE);
496+
Firmata.write(pin);
497497
if (pin < TOTAL_PINS) {
498-
Serial.write((byte)pinConfig[pin]);
499-
Serial.write((byte)pinState[pin] & 0x7F);
500-
if (pinState[pin] & 0xFF80) Serial.write((byte)(pinState[pin] >> 7) & 0x7F);
501-
if (pinState[pin] & 0xC000) Serial.write((byte)(pinState[pin] >> 14) & 0x7F);
498+
Firmata.write((byte)pinConfig[pin]);
499+
Firmata.write((byte)pinState[pin] & 0x7F);
500+
if (pinState[pin] & 0xFF80) Firmata.write((byte)(pinState[pin] >> 7) & 0x7F);
501+
if (pinState[pin] & 0xC000) Firmata.write((byte)(pinState[pin] >> 14) & 0x7F);
502502
}
503-
Serial.write(END_SYSEX);
503+
Firmata.write(END_SYSEX);
504504
}
505505
break;
506506
case ANALOG_MAPPING_QUERY:
507-
Serial.write(START_SYSEX);
508-
Serial.write(ANALOG_MAPPING_RESPONSE);
507+
Firmata.write(START_SYSEX);
508+
Firmata.write(ANALOG_MAPPING_RESPONSE);
509509
for (byte pin=0; pin < TOTAL_PINS; pin++) {
510-
Serial.write(IS_PIN_ANALOG(pin) ? PIN_TO_ANALOG(pin) : 127);
510+
Firmata.write(IS_PIN_ANALOG(pin) ? PIN_TO_ANALOG(pin) : 127);
511511
}
512-
Serial.write(END_SYSEX);
512+
Firmata.write(END_SYSEX);
513513
break;
514514
}
515515
}

0 commit comments

Comments
 (0)