diff --git a/include/sta/config.hpp b/include/sta/config.hpp new file mode 100644 index 0000000..1e53727 --- /dev/null +++ b/include/sta/config.hpp @@ -0,0 +1,3 @@ +#include + +#define STA_PRINTF_USE_STDLIB \ No newline at end of file diff --git a/include/sta/devices/arduino/bus/i2c.hpp b/include/sta/devices/arduino/bus/i2c.hpp index ff9a4e9..44ac845 100644 --- a/include/sta/devices/arduino/bus/i2c.hpp +++ b/include/sta/devices/arduino/bus/i2c.hpp @@ -12,22 +12,20 @@ namespace sta class ArduinoI2C : public I2C { public: - ArduinoI2C(Mutex * mutex=nullptr, uint16_t address); - + ArduinoI2C(Mutex * mutex = nullptr); + + void transfer(uint8_t value) override; void transfer16(uint16_t value) override; void transfer(const uint8_t * buffer, size_t size) override; - void transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) override; void receive(uint8_t * buffer, size_t size) override; - void fill(uint8_t value, size_t count) override; - void acquire(); - void release(); + void fill(uint8_t value, size_t count) override; }; class ArduinoI2CDevice : public I2CDevice { public: - ArduinoI2CDevice(I2C * intf, int address, bool master=false, bool blocking=true); + ArduinoI2CDevice(I2C * intf, uint8_t address, bool master=true, bool blocking=true); }; } // namespace sta diff --git a/include/sta/devices/arduino/bus/spi.hpp b/include/sta/devices/arduino/bus/spi.hpp index e69de29..9353863 100644 --- a/include/sta/devices/arduino/bus/spi.hpp +++ b/include/sta/devices/arduino/bus/spi.hpp @@ -0,0 +1,40 @@ +#ifndef STA_CORE_ARDUINO_SPI_HPP +#define STA_CORE_ARDUINO_SPI_HPP + +#include +#ifdef STA_PLATFORM_ARDUINO + +#include +#include + +namespace sta +{ + class ArduinoSPI : public SPI + { + public: + ArduinoSPI(const SPISettings & settings, Mutex * mutex = nullptr); + + void transfer(uint8_t value) override; + void transfer16(uint16_t value) override; + void transfer(const uint8_t * buffer, size_t size) override; + void transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) override; + void receive(uint8_t * buffer, size_t size) override; + + void fill(uint8_t value, size_t count) override; + + void acquire() override; + void release() override; + private: + + }; + + class ArduinoSPIDevice : public SPIDevice + { + public: + ArduinoSPIDevice(ArduinoSPI * intf); + }; +} // namespace sta + +#endif // STA_PLATFORM_ARDUINO + +#endif // STA_CORE_ARDUINO_SPI_HPP \ No newline at end of file diff --git a/include/sta/devices/arduino/debug_serial.hpp b/include/sta/devices/arduino/debug_serial.hpp new file mode 100644 index 0000000..cfb5bbf --- /dev/null +++ b/include/sta/devices/arduino/debug_serial.hpp @@ -0,0 +1,7 @@ +#ifndef STA_CORE_ARDUINO_DEBUG_SERIAL_HPP +#define STA_CORE_ARDUINO_DEBUG_SERIAL_HPP + + + + +#endif // STA_CORE_ARDUINO_DEBUG_SERIAL_HPP \ No newline at end of file diff --git a/include/sta/devices/arduino/delay.hpp b/include/sta/devices/arduino/delay.hpp index bcc6ebb..6bc3cc1 100644 --- a/include/sta/devices/arduino/delay.hpp +++ b/include/sta/devices/arduino/delay.hpp @@ -6,6 +6,8 @@ #if defined(STA_PLATFORM_ARDUINO) || defined(DOXYGEN) +#include + namespace sta { /** diff --git a/src/devices/arduino/bus/i2c.cpp b/src/devices/arduino/bus/i2c.cpp index c52503a..e9733c5 100644 --- a/src/devices/arduino/bus/i2c.cpp +++ b/src/devices/arduino/bus/i2c.cpp @@ -7,30 +7,45 @@ namespace sta { - ArduinoI2C::ArduinoI2C(Mutex * mutex, uint16_t address) + ArduinoI2C::ArduinoI2C(Mutex * mutex /* = nullptr */) : I2C{mutex} { - Wire.begin(address); + Wire.begin(); + } + + void ArduinoI2C::transfer(uint8_t value) + { + Wire.beginTransmission(address_); + Wire.write(value); + Wire.endTransmission(true); } void ArduinoI2C::transfer16(uint16_t value) { + Wire.beginTransmission(address_); Wire.write(value); + Wire.endTransmission(true); } void ArduinoI2C::transfer(const uint8_t * buffer, size_t size) { + Wire.beginTransmission(address_); Wire.write(buffer, size); - } - - void ArduinoI2C::transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) - { - // NOT REALLY A THING HERE, IS IT? + Wire.endTransmission(); } void ArduinoI2C::receive(uint8_t * buffer, size_t size) { - + Wire.requestFrom(address_, size); + size_t index = 0; + + while (index < size) + { + while (Wire.available()) + { + buffer[index++] = Wire.read(); + } + } } void ArduinoI2C::fill(uint8_t value, size_t count) @@ -39,26 +54,14 @@ namespace sta uint8_t *buffer = new uint8_t[count]; memset(buffer, value, count); - Serial.write(buffer, count); - - delete [] buffer; - } - - void ArduinoI2C::acquire() - { - I2C::acquire(); - Wire.beginTransmission(address_); - } - - void ArduinoI2C::release() - { + Wire.write(buffer, count); Wire.endTransmission(); - I2C::release(); + delete[] buffer; } - ArduinoI2CDevice::ArduinoI2CDevice(I2C * intf, int address, bool master, bool blocking) + ArduinoI2CDevice::ArduinoI2CDevice(I2C * intf, uint8_t address, bool master /* = true */, bool blocking /* = true */) : I2CDevice{intf, address, master, blocking} { diff --git a/src/devices/arduino/bus/spi.cpp b/src/devices/arduino/bus/spi.cpp index e69de29..5b8d7a1 100644 --- a/src/devices/arduino/bus/spi.cpp +++ b/src/devices/arduino/bus/spi.cpp @@ -0,0 +1,51 @@ +#include + + +namespace sta +{ + ArduinoSPI::ArduinoSPI(const SPISettings & settings, Mutex * mutex /* = nullptr */) + : SPI{ settings, mutex } + { + + } + + void ArduinoSPI::transfer(uint8_t value) + { + + } + + void ArduinoSPI::transfer16(uint16_t value) + { + + } + + void ArduinoSPI::transfer(const uint8_t * buffer, size_t size) + { + + } + + void ArduinoSPI::transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) + { + + } + + void ArduinoSPI::receive(uint8_t * buffer, size_t size) + { + + } + + void ArduinoSPI::fill(uint8_t value, size_t count) + { + + } + + void ArduinoSPI::acquire() + { + + } + + void ArduinoSPI::release() + { + + } +} // namespace sta diff --git a/src/devices/raspi/bus/i2c.cpp b/src/devices/raspi/bus/i2c.cpp index 35850a3..6c505af 100644 --- a/src/devices/raspi/bus/i2c.cpp +++ b/src/devices/raspi/bus/i2c.cpp @@ -134,7 +134,6 @@ namespace sta } - } // namespace sta #endif // STA_PLATFORM_RASPI