root: fromat folder with clang-formatter

This commit is contained in:
Vasily Davydov 2022-10-22 13:00:03 +03:00
parent 97752f4837
commit 626e36c6e4
6 changed files with 168 additions and 134 deletions

View File

@ -11,15 +11,17 @@
#include "ModbusMaster.h" #include "ModbusMaster.h"
#include "ModbusRegister.h" #include "ModbusRegister.h"
class GMP252 { class GMP252
{
public: public:
GMP252(); GMP252 ();
int read(); int read ();
virtual ~GMP252(); virtual ~GMP252 ();
private: private:
ModbusMaster sens; ModbusMaster sens;
ModbusRegister regInt; ModbusRegister regInt;
ModbusRegister regFloat; ModbusRegister regFloat;
}; };
#endif /* GMP252_H_ */ #endif /* GMP252_H_ */

View File

@ -7,19 +7,21 @@
#include "GMP252.h" #include "GMP252.h"
GMP252::GMP252(): sens{240}, regInt{&sens, 0x0100}, regFloat{&sens, 0x0000}{ GMP252::GMP252 ()
: sens{ 240 }, regInt{ &sens, 0x0100 }, regFloat{ &sens, 0x0000 }
sens.begin(9600); {
sens.begin (9600);
} }
int GMP252:: read() { int
int result = regInt.read(); GMP252::read ()
return result; {
int result = regInt.read ();
return result;
} }
GMP252::~GMP252 ()
GMP252::~GMP252() { {
// TODO Auto-generated destructor stub // TODO Auto-generated destructor stub
} }

View File

@ -52,13 +52,16 @@ Counter::Counter (unsigned int down, unsigned int up)
void void
Counter::setInit (unsigned int newInit) Counter::setInit (unsigned int newInit)
{ {
if(newInit > up_lim){ if (newInit > up_lim)
init = up_lim; {
} init = up_lim;
else if(newInit < down_lim){ }
init = down_lim; else if (newInit < down_lim)
} {
else{ init = down_lim;
init = newInit; }
} else
{
init = newInit;
}
} }

View File

@ -12,7 +12,7 @@ extern "C"
void void
SysTick_Handler (void) SysTick_Handler (void)
{ {
systicks++; systicks++;
if (timer > 0) if (timer > 0)
timer--; timer--;
} }
@ -65,6 +65,8 @@ Timer::resetCounter ()
counter.store (0, std::memory_order_relaxed); counter.store (0, std::memory_order_relaxed);
} }
uint32_t millis() { uint32_t
return systicks; millis ()
{
return systicks;
} }

View File

@ -3,7 +3,8 @@
* *
* Created on: 21.2.2016 * Created on: 21.2.2016
* Author: krl * Author: krl
* Based on example provided by NXP Semiconductors. See copyright notice below. * Based on example provided by NXP Semiconductors. See copyright notice
* below.
*/ */
/* /*
@ -21,123 +22,141 @@
* all warranties, express or implied, including all implied warranties of * all warranties, express or implied, including all implied warranties of
* merchantability, fitness for a particular purpose and non-infringement of * merchantability, fitness for a particular purpose and non-infringement of
* intellectual property rights. NXP Semiconductors assumes no responsibility * intellectual property rights. NXP Semiconductors assumes no responsibility
* or liability for the use of the software, conveys no license or rights under any * or liability for the use of the software, conveys no license or rights under
* patent, copyright, mask work right, or any other intellectual property rights in * any patent, copyright, mask work right, or any other intellectual property
* or to any products. NXP Semiconductors reserves the right to make changes * rights in or to any products. NXP Semiconductors reserves the right to make
* in the software without notification. NXP Semiconductors also makes no * changes in the software without notification. NXP Semiconductors also makes
* representation or warranty that such application will be suitable for the * no representation or warranty that such application will be suitable for the
* specified use without further testing or modification. * specified use without further testing or modification.
* *
* @par * @par
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, under NXP Semiconductors' and its * documentation is hereby granted, under NXP Semiconductors' and its
* licensor's relevant copyrights in the software, without fee, provided that it * licensor's relevant copyrights in the software, without fee, provided that
* is used in conjunction with NXP Semiconductors microcontrollers. This * it is used in conjunction with NXP Semiconductors microcontrollers. This
* copyright, permission, and disclaimer notice must appear in all copies of * copyright, permission, and disclaimer notice must appear in all copies of
* this code. * this code.
*/ */
#include "I2C.h" #include "I2C.h"
I2C::I2C (const I2C_config &cfg) : device (nullptr)
I2C::I2C(const I2C_config &cfg): device(nullptr) {
if(cfg.device_number == 0) {
device = LPC_I2C0;
// board init must have been called before the pins can be configured
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 22, IOCON_DIGMODE_EN | cfg.i2c_mode);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 23, IOCON_DIGMODE_EN | cfg.i2c_mode);
Chip_SWM_EnableFixedPin(SWM_FIXED_I2C0_SCL);
Chip_SWM_EnableFixedPin(SWM_FIXED_I2C0_SDA);
}
else {
// currently we support only I2C number 0
}
if(device) {
/* Enable I2C clock and reset I2C peripheral - the boot ROM does not
do this */
Chip_I2C_Init(device);
/* Setup clock rate for I2C */
Chip_I2C_SetClockDiv(device, cfg.clock_divider);
/* Setup I2CM transfer rate */
Chip_I2CM_SetBusSpeed(device, cfg.speed);
/* Enable Master Mode */
Chip_I2CM_Enable(device);
}
}
I2C::~I2C() {
// TODO Auto-generated destructor stub
}
bool I2C::write(uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize)
{ {
return transaction(devAddr, txBuffPtr, txSize, nullptr, 0); if (cfg.device_number == 0)
{
device = LPC_I2C0;
// board init must have been called before the pins can be configured
Chip_IOCON_PinMuxSet (LPC_IOCON, 0, 22, IOCON_DIGMODE_EN | cfg.i2c_mode);
Chip_IOCON_PinMuxSet (LPC_IOCON, 0, 23, IOCON_DIGMODE_EN | cfg.i2c_mode);
Chip_SWM_EnableFixedPin (SWM_FIXED_I2C0_SCL);
Chip_SWM_EnableFixedPin (SWM_FIXED_I2C0_SDA);
}
else
{
// currently we support only I2C number 0
}
if (device)
{
/* Enable I2C clock and reset I2C peripheral - the boot ROM does not
do this */
Chip_I2C_Init (device);
/* Setup clock rate for I2C */
Chip_I2C_SetClockDiv (device, cfg.clock_divider);
/* Setup I2CM transfer rate */
Chip_I2CM_SetBusSpeed (device, cfg.speed);
/* Enable Master Mode */
Chip_I2CM_Enable (device);
}
} }
bool I2C::read(uint8_t devAddr, uint8_t *rxBuffPtr, uint16_t rxSize) I2C::~I2C ()
{ {
return transaction(devAddr, nullptr, 0, rxBuffPtr, rxSize); // TODO Auto-generated destructor stub
} }
bool
I2C::write (uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize)
{
return transaction (devAddr, txBuffPtr, txSize, nullptr, 0);
}
bool I2C::transaction(uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize, uint8_t *rxBuffPtr, uint16_t rxSize) { bool
I2CM_XFER_T i2cmXferRec; I2C::read (uint8_t devAddr, uint8_t *rxBuffPtr, uint16_t rxSize)
{
return transaction (devAddr, nullptr, 0, rxBuffPtr, rxSize);
}
// make sure that master is idle bool
while(!Chip_I2CM_IsMasterPending(LPC_I2C0)); I2C::transaction (uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize,
uint8_t *rxBuffPtr, uint16_t rxSize)
{
I2CM_XFER_T i2cmXferRec;
/* Setup I2C transfer record */ // make sure that master is idle
i2cmXferRec.slaveAddr = devAddr; while (!Chip_I2CM_IsMasterPending (LPC_I2C0))
i2cmXferRec.status = 0; ;
i2cmXferRec.txSz = txSize;
i2cmXferRec.rxSz = rxSize;
i2cmXferRec.txBuff = txBuffPtr;
i2cmXferRec.rxBuff = rxBuffPtr;
I2CM_XferBlocking(LPC_I2C0, &i2cmXferRec); /* Setup I2C transfer record */
// Chip_I2CM_XferBlocking returns before stop condition is fully completed i2cmXferRec.slaveAddr = devAddr;
// therefore we need to wait for master to be idle when doing back-to-back transactions (see beginning of the function) i2cmXferRec.status = 0;
i2cmXferRec.txSz = txSize;
i2cmXferRec.rxSz = rxSize;
i2cmXferRec.txBuff = txBuffPtr;
i2cmXferRec.rxBuff = rxBuffPtr;
/* Test for valid operation */ I2CM_XferBlocking (LPC_I2C0, &i2cmXferRec);
if (i2cmXferRec.status == I2CM_STATUS_OK) { // Chip_I2CM_XferBlocking returns before stop condition is fully completed
return true; // therefore we need to wait for master to be idle when doing back-to-back
} // transactions (see beginning of the function)
else {
return false; /* Test for valid operation */
} if (i2cmXferRec.status == I2CM_STATUS_OK)
{
return true;
}
else
{
return false;
}
} }
/* Transmit and Receive data in master mode */ /* Transmit and Receive data in master mode */
/* This duplicates (and combines) the functionality of Chip_I2CM_Xfer and Chip_I2CM_XferBlocking with a modification /* This duplicates (and combines) the functionality of Chip_I2CM_Xfer and
* that allows us to do a zero length write (needed to use honeywell humidity/temp sensor) * Chip_I2CM_XferBlocking with a modification that allows us to do a zero
* length write (needed to use honeywell humidity/temp sensor)
*/ */
uint32_t I2C::I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer) uint32_t
I2C::I2CM_XferBlocking (LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)
{ {
uint32_t ret = 0; uint32_t ret = 0;
/* start transfer */ /* start transfer */
/* set the transfer status as busy */ /* set the transfer status as busy */
xfer->status = I2CM_STATUS_BUSY; xfer->status = I2CM_STATUS_BUSY;
/* Clear controller state. */ /* Clear controller state. */
Chip_I2CM_ClearStatus(pI2C, I2C_STAT_MSTRARBLOSS | I2C_STAT_MSTSTSTPERR); Chip_I2CM_ClearStatus (pI2C, I2C_STAT_MSTRARBLOSS | I2C_STAT_MSTSTSTPERR);
/* Write Address and RW bit to data register */ /* Write Address and RW bit to data register */
//Chip_I2CM_WriteByte(pI2C, (xfer->slaveAddr << 1) | (xfer->txSz == 0)); // original NXP version // Chip_I2CM_WriteByte(pI2C, (xfer->slaveAddr << 1) | (xfer->txSz == 0)); //
// krl : both read and write lenght is 0 --> write (for honeywell temp sensor) // original NXP version
Chip_I2CM_WriteByte(pI2C, (xfer->slaveAddr << 1) | (xfer->txSz == 0 && xfer->rxSz != 0)); // krl : both read and write lenght is 0 --> write (for honeywell temp
/* Enter to Master Transmitter mode */ // sensor)
Chip_I2CM_SendStart(pI2C); Chip_I2CM_WriteByte (pI2C, (xfer->slaveAddr << 1)
| (xfer->txSz == 0 && xfer->rxSz != 0));
/* Enter to Master Transmitter mode */
Chip_I2CM_SendStart (pI2C);
while (ret == 0) { while (ret == 0)
/* wait for status change interrupt */ {
while (!Chip_I2CM_IsMasterPending(pI2C)) {} /* wait for status change interrupt */
/* call state change handler */ while (!Chip_I2CM_IsMasterPending (pI2C))
ret = Chip_I2CM_XferHandler(pI2C, xfer); {
} }
return ret; /* call state change handler */
ret = Chip_I2CM_XferHandler (pI2C, xfer);
}
return ret;
} }

View File

@ -10,24 +10,30 @@
#include "chip.h" #include "chip.h"
struct I2C_config { struct I2C_config
unsigned int device_number; {
unsigned int speed; unsigned int device_number;
unsigned int clock_divider; unsigned int speed;
unsigned int i2c_mode; unsigned int clock_divider;
I2C_config(): device_number(0), speed(100000), clock_divider(40), i2c_mode(IOCON_SFI2C_EN) {}; unsigned int i2c_mode;
I2C_config ()
: device_number (0), speed (100000), clock_divider (40),
i2c_mode (IOCON_SFI2C_EN){};
}; };
class I2C { class I2C
{
public: public:
I2C(const I2C_config &cfg); I2C (const I2C_config &cfg);
virtual ~I2C(); virtual ~I2C ();
bool transaction(uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize, uint8_t *rxBuffPtr, uint16_t rxSize); bool transaction (uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize,
bool write(uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize); uint8_t *rxBuffPtr, uint16_t rxSize);
bool read(uint8_t devAddr, uint8_t *rxBuffPtr, uint16_t rxSize); bool write (uint8_t devAddr, uint8_t *txBuffPtr, uint16_t txSize);
bool read (uint8_t devAddr, uint8_t *rxBuffPtr, uint16_t rxSize);
private: private:
LPC_I2C_T *device; LPC_I2C_T *device;
static uint32_t I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer); static uint32_t I2CM_XferBlocking (LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);
}; };
#endif /* I2C_H_ */ #endif /* I2C_H_ */