Program Listing for File pal-spic-arduino.cpp

Return to documentation for file (src/framework/arduino/pal/pal-spic-arduino.cpp)

#include "pal-spic-arduino.hpp"

using namespace tle5012;

SPICIno::SPICIno(uint8_t csPin)
{
    this->csPin = csPin;
    #if defined(UC_FAMILY) && (UC_FAMILY == 1 || UC_FAMILY == 4)
        this->spi = (SPIClass3W *) &SPI;
    #else
        this->spi = new SPIClass3W();
    #endif
}

SPICIno::SPICIno(SPIClass3W &port, uint8_t csPin, uint8_t misoPin, uint8_t mosiPin, uint8_t sckPin)
{
    this->csPin   = csPin;
    this->misoPin = misoPin;
    this->mosiPin = mosiPin;
    this->sckPin  = sckPin;
    this->spi     = &port;
}

Error_t SPICIno::init()
{
    this->spi->begin(this->misoPin, this->mosiPin, this->sckPin, this->csPin);
    return OK;
}

Error_t SPICIno::deinit()
{
    this->spi->endTransaction();
    this->spi->end();
    return OK;
}

Error_t SPICIno::triggerUpdate()
{
    digitalWrite(this->sckPin, LOW);
    digitalWrite(this->mosiPin, HIGH);
    digitalWrite(this->csPin, LOW);
    //grace period for register snapshot
    delayMicroseconds(5);
    digitalWrite(this->csPin, HIGH);
    return OK;
}

Error_t SPICIno::sendReceive(uint16_t* sent_data, uint16_t size_of_sent_data, uint16_t* received_data, uint16_t size_of_received_data)
{
    this->spi->setCSPin(this->csPin);
    this->spi->sendReceiveSpi(sent_data,size_of_sent_data,received_data,size_of_received_data);
    return OK;
}