First implementations for Arduino

This commit is contained in:
dario
2024-02-09 14:30:51 +01:00
parent 436e7a7336
commit 7f451cd868
8 changed files with 134 additions and 31 deletions

View File

@@ -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}
{

View File

@@ -0,0 +1,51 @@
#include <sta/devices/arduino/bus/spi.hpp>
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

View File

@@ -134,7 +134,6 @@ namespace sta
}
} // namespace sta
#endif // STA_PLATFORM_RASPI