|
|
@@ -1,7 +1,7 @@
|
|
|
|
|
|
-#include "SpiManager.h"
|
|
|
+#include "IcmSpiManager.h"
|
|
|
|
|
|
-SpiManager::SpiManager(SPI_HandleTypeDef *hspi)
|
|
|
+IcmSpiManager::IcmSpiManager(SPI_HandleTypeDef *hspi)
|
|
|
{
|
|
|
_numDevices = 0;
|
|
|
_activeDevice = -1;
|
|
|
@@ -10,27 +10,27 @@ SpiManager::SpiManager(SPI_HandleTypeDef *hspi)
|
|
|
}
|
|
|
|
|
|
|
|
|
-uint8_t SpiManager::addSlave(McuPin_typeDef *pin)
|
|
|
+uint8_t IcmSpiManager::addSlave(McuPin_typeDef *pin)
|
|
|
{
|
|
|
_pinCS[_numDevices] = pin;
|
|
|
_numDevices++;
|
|
|
return _numDevices-1;
|
|
|
}
|
|
|
|
|
|
-void SpiManager::cs_low(uint8_t index)
|
|
|
+void IcmSpiManager::cs_low(uint8_t index)
|
|
|
{
|
|
|
_pinCS[index]->port->BRR = (uint32_t)_pinCS[index]->pin;
|
|
|
}
|
|
|
|
|
|
|
|
|
-void SpiManager::cs_high(uint8_t index)
|
|
|
+void IcmSpiManager::cs_high(uint8_t index)
|
|
|
{
|
|
|
_pinCS[index]->port->BSRR = _pinCS[index]->pin;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-void SpiManager::select_user_bank(uint8_t sensorNum, userbank ub)
|
|
|
+void IcmSpiManager::select_user_bank(uint8_t sensorNum, userbank ub)
|
|
|
{
|
|
|
// toto je v poriadku iba pri pouziti jedneho senzora
|
|
|
// treba osetrit situaciu, ked je viacero senzorov.
|
|
|
@@ -51,7 +51,7 @@ void SpiManager::select_user_bank(uint8_t sensorNum, userbank ub)
|
|
|
cs_high(sensorNum);
|
|
|
}
|
|
|
|
|
|
-void SpiManager::takeBus(uint8_t index)
|
|
|
+void IcmSpiManager::takeBus(uint8_t index)
|
|
|
{
|
|
|
while(_activeDevice >= 0){
|
|
|
; // wait
|
|
|
@@ -59,12 +59,12 @@ void SpiManager::takeBus(uint8_t index)
|
|
|
_activeDevice = index;
|
|
|
}
|
|
|
|
|
|
-void SpiManager::releaseBus()
|
|
|
+void IcmSpiManager::releaseBus()
|
|
|
{
|
|
|
_activeDevice = -1;
|
|
|
}
|
|
|
|
|
|
-uint8_t* SpiManager::read_multiple_reg(uint8_t sensorNum, userbank ub, uint8_t reg, uint8_t len)
|
|
|
+uint8_t* IcmSpiManager::read_multiple_reg(uint8_t sensorNum, userbank ub, uint8_t reg, uint8_t len)
|
|
|
{
|
|
|
uint8_t read_reg = READ | reg;
|
|
|
this->select_user_bank(sensorNum, ub);
|
|
|
@@ -79,7 +79,7 @@ uint8_t* SpiManager::read_multiple_reg(uint8_t sensorNum, userbank ub, uint8_t r
|
|
|
|
|
|
|
|
|
|
|
|
-uint8_t SpiManager::read_single_reg(uint8_t sensorNum, userbank ub, uint8_t reg)
|
|
|
+uint8_t IcmSpiManager::read_single_reg(uint8_t sensorNum, userbank ub, uint8_t reg)
|
|
|
{
|
|
|
uint8_t read_reg = READ | reg;
|
|
|
uint8_t reg_val;
|
|
|
@@ -94,7 +94,7 @@ uint8_t SpiManager::read_single_reg(uint8_t sensorNum, userbank ub, uint8_t reg)
|
|
|
}
|
|
|
|
|
|
|
|
|
-void SpiManager::write_single_reg(uint8_t sensorNum, userbank ub, uint8_t reg, uint8_t val)
|
|
|
+void IcmSpiManager::write_single_reg(uint8_t sensorNum, userbank ub, uint8_t reg, uint8_t val)
|
|
|
{
|
|
|
uint8_t write_reg[2];
|
|
|
write_reg[0] = WRITE | reg;
|
|
|
@@ -108,7 +108,7 @@ void SpiManager::write_single_reg(uint8_t sensorNum, userbank ub, uint8_t reg, u
|
|
|
}
|
|
|
|
|
|
|
|
|
-void SpiManager::write_multiple_reg(uint8_t sensorNum, userbank ub, uint8_t reg, uint8_t* val, uint8_t len)
|
|
|
+void IcmSpiManager::write_multiple_reg(uint8_t sensorNum, userbank ub, uint8_t reg, uint8_t* val, uint8_t len)
|
|
|
{
|
|
|
uint8_t write_reg = WRITE | reg;
|
|
|
select_user_bank(sensorNum, ub);
|
|
|
@@ -120,7 +120,7 @@ void SpiManager::write_multiple_reg(uint8_t sensorNum, userbank ub, uint8_t reg,
|
|
|
}
|
|
|
|
|
|
|
|
|
-uint8_t SpiManager::read_single_external_reg(uint8_t sensorNum, uint8_t reg)
|
|
|
+uint8_t IcmSpiManager::read_single_external_reg(uint8_t sensorNum, uint8_t reg)
|
|
|
{
|
|
|
|
|
|
this->write_single_reg(sensorNum, ub_3, B3_I2C_SLV0_ADDR, READ | MAG_SLAVE_ADDR);
|
|
|
@@ -131,7 +131,7 @@ uint8_t SpiManager::read_single_external_reg(uint8_t sensorNum, uint8_t reg)
|
|
|
return this->read_single_reg(sensorNum, ub_0, B0_EXT_SLV_SENS_DATA_00);
|
|
|
}
|
|
|
|
|
|
-void SpiManager::write_single_external_reg(uint8_t sensorNum, uint8_t reg, uint8_t val)
|
|
|
+void IcmSpiManager::write_single_external_reg(uint8_t sensorNum, uint8_t reg, uint8_t val)
|
|
|
{
|
|
|
this->write_single_reg(sensorNum, ub_3, B3_I2C_SLV0_ADDR, WRITE | MAG_SLAVE_ADDR);
|
|
|
this->write_single_reg(sensorNum, ub_3, B3_I2C_SLV0_REG, reg);
|
|
|
@@ -139,7 +139,7 @@ void SpiManager::write_single_external_reg(uint8_t sensorNum, uint8_t reg, uint8
|
|
|
this->write_single_reg(sensorNum, ub_3, B3_I2C_SLV0_CTRL, 0x81);
|
|
|
}
|
|
|
|
|
|
-uint8_t* SpiManager::read_multiple_external_reg(uint8_t sensorNum, uint8_t reg, uint8_t len)
|
|
|
+uint8_t* IcmSpiManager::read_multiple_external_reg(uint8_t sensorNum, uint8_t reg, uint8_t len)
|
|
|
{
|
|
|
this->write_single_reg(sensorNum, ub_3, B3_I2C_SLV0_ADDR, READ | MAG_SLAVE_ADDR);
|
|
|
this->write_single_reg(sensorNum, ub_3, B3_I2C_SLV0_REG, reg);
|