arduino stuffs
Diffstat (limited to 'libraries/Firmata/utility/SerialFirmata.h')
| -rw-r--r-- | libraries/Firmata/utility/SerialFirmata.h | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/libraries/Firmata/utility/SerialFirmata.h b/libraries/Firmata/utility/SerialFirmata.h deleted file mode 100644 index 2319951..0000000 --- a/libraries/Firmata/utility/SerialFirmata.h +++ /dev/null @@ -1,208 +0,0 @@ -/* - SerialFirmata.h - Copyright (C) 2016 Jeff Hoefs. All rights reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - See file LICENSE.txt for further informations on licensing terms. - - This version of SerialFirmata.h differs from the ConfigurableFirmata - version in the following ways: - - - Defines FIRMATA_SERIAL_FEATURE (could add to Configurable version as well) - - Imports Firmata.h rather than ConfigurableFirmata.h - - Last updated October 16th, 2016 -*/ - -#ifndef SerialFirmata_h -#define SerialFirmata_h - -#include <Firmata.h> -#include "FirmataFeature.h" -// SoftwareSerial is currently only supported for AVR-based boards and the Arduino 101. -// Limited to Arduino 1.6.6 or higher because Arduino builder cannot find SoftwareSerial -// prior to this release. -#if (ARDUINO > 10605) && (defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_ARC32)) -#include <SoftwareSerial.h> -#endif - -#define FIRMATA_SERIAL_FEATURE - -// Serial port Ids -#define HW_SERIAL0 0x00 -#define HW_SERIAL1 0x01 -#define HW_SERIAL2 0x02 -#define HW_SERIAL3 0x03 -#define HW_SERIAL4 0x04 -#define HW_SERIAL5 0x05 -#define HW_SERIAL6 0x06 -// extensible up to 0x07 - -#define SW_SERIAL0 0x08 -#define SW_SERIAL1 0x09 -#define SW_SERIAL2 0x0A -#define SW_SERIAL3 0x0B -// extensible up to 0x0F - -#define SERIAL_PORT_ID_MASK 0x0F -#define MAX_SERIAL_PORTS 8 -#define SERIAL_READ_ARR_LEN 12 - -// map configuration query response resolution value to serial pin type -#define RES_RX1 0x02 -#define RES_TX1 0x03 -#define RES_RX2 0x04 -#define RES_TX2 0x05 -#define RES_RX3 0x06 -#define RES_TX3 0x07 -#define RES_RX4 0x08 -#define RES_TX4 0x09 -#define RES_RX5 0x0a -#define RES_TX5 0x0b -#define RES_RX6 0x0c -#define RES_TX6 0x0d - -// Serial command bytes -#define SERIAL_CONFIG 0x10 -#define SERIAL_WRITE 0x20 -#define SERIAL_READ 0x30 -#define SERIAL_REPLY 0x40 -#define SERIAL_CLOSE 0x50 -#define SERIAL_FLUSH 0x60 -#define SERIAL_LISTEN 0x70 - -// Serial read modes -#define SERIAL_READ_CONTINUOUSLY 0x00 -#define SERIAL_STOP_READING 0x01 -#define SERIAL_MODE_MASK 0xF0 - -namespace { - - struct serial_pins { - uint8_t rx; - uint8_t tx; - }; - - /* - * Get the serial serial pin type (RX1, TX1, RX2, TX2, etc) for the specified pin. - */ - inline uint8_t getSerialPinType(uint8_t pin) { - #if defined(PIN_SERIAL_RX) - // TODO when use of HW_SERIAL0 is enabled - #endif - #if defined(PIN_SERIAL1_RX) - if (pin == PIN_SERIAL1_RX) return RES_RX1; - if (pin == PIN_SERIAL1_TX) return RES_TX1; - #endif - #if defined(PIN_SERIAL2_RX) - if (pin == PIN_SERIAL2_RX) return RES_RX2; - if (pin == PIN_SERIAL2_TX) return RES_TX2; - #endif - #if defined(PIN_SERIAL3_RX) - if (pin == PIN_SERIAL3_RX) return RES_RX3; - if (pin == PIN_SERIAL3_TX) return RES_TX3; - #endif - #if defined(PIN_SERIAL4_RX) - if (pin == PIN_SERIAL4_RX) return RES_RX4; - if (pin == PIN_SERIAL4_TX) return RES_TX4; - #endif - #if defined(PIN_SERIAL5_RX) - if (pin == PIN_SERIAL5_RX) return RES_RX5; - if (pin == PIN_SERIAL5_TX) return RES_TX5; - #endif - #if defined(PIN_SERIAL6_RX) - if (pin == PIN_SERIAL6_RX) return RES_RX6; - if (pin == PIN_SERIAL6_TX) return RES_TX6; - #endif - return 0; - } - - /* - * Get the RX and TX pins numbers for the specified HW serial port. - */ - inline serial_pins getSerialPinNumbers(uint8_t portId) { - serial_pins pins; - switch (portId) { - #if defined(PIN_SERIAL_RX) - // case HW_SERIAL0: - // // TODO when use of HW_SERIAL0 is enabled - // break; - #endif - #if defined(PIN_SERIAL1_RX) - case HW_SERIAL1: - pins.rx = PIN_SERIAL1_RX; - pins.tx = PIN_SERIAL1_TX; - break; - #endif - #if defined(PIN_SERIAL2_RX) - case HW_SERIAL2: - pins.rx = PIN_SERIAL2_RX; - pins.tx = PIN_SERIAL2_TX; - break; - #endif - #if defined(PIN_SERIAL3_RX) - case HW_SERIAL3: - pins.rx = PIN_SERIAL3_RX; - pins.tx = PIN_SERIAL3_TX; - break; - #endif - #if defined(PIN_SERIAL4_RX) - case HW_SERIAL4: - pins.rx = PIN_SERIAL4_RX; - pins.tx = PIN_SERIAL4_TX; - break; - #endif - #if defined(PIN_SERIAL5_RX) - case HW_SERIAL5: - pins.rx = PIN_SERIAL5_RX; - pins.tx = PIN_SERIAL5_TX; - break; - #endif - #if defined(PIN_SERIAL6_RX) - case HW_SERIAL6: - pins.rx = PIN_SERIAL6_RX; - pins.tx = PIN_SERIAL6_TX; - break; - #endif - default: - pins.rx = 0; - pins.tx = 0; - } - return pins; - } - -} // end namespace - - -class SerialFirmata: public FirmataFeature -{ - public: - SerialFirmata(); - boolean handlePinMode(byte pin, int mode); - void handleCapability(byte pin); - boolean handleSysex(byte command, byte argc, byte* argv); - void update(); - void reset(); - void checkSerial(); - - private: - byte reportSerial[MAX_SERIAL_PORTS]; - int serialBytesToRead[SERIAL_READ_ARR_LEN]; - signed char serialIndex; - -#if defined(SoftwareSerial_h) - Stream *swSerial0; - Stream *swSerial1; - Stream *swSerial2; - Stream *swSerial3; -#endif - - Stream* getPortFromId(byte portId); - -}; - -#endif /* SerialFirmata_h */ |