Skip to content

Commit b2c5d93

Browse files
committed
Updates I2C class to include "SFE" in the name
* changes offset argument to "devReg" * changes address argument to "i2cAddr" * Adds YAML (which does nothing atm) to test "test.ino" for compatibility across many different IC's
1 parent 6ee3c24 commit b2c5d93

File tree

4 files changed

+161
-40
lines changed

4 files changed

+161
-40
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
name: Cross-compilation
2+
3+
on:
4+
# - push
5+
#- pull_request
6+
7+
8+
jobs:
9+
compile-sketch:
10+
runs-on: ubuntu-latest
11+
12+
strategy:
13+
fail-fast: false
14+
15+
matrix:
16+
board:
17+
# Uno
18+
# https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt
19+
- fqbn: arduino:avr:mega
20+
platforms: |
21+
- name: arduino:avr
22+
source-url: https://downloads.arduino.cc/packages/package_index.json
23+
24+
# ESP32
25+
# https://github.com/espressif/arduino-esp32/blob/master/boards.txt
26+
- fqbn: esp32:esp32:esp32
27+
platforms: |
28+
- name: esp32:esp32
29+
source-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
30+
31+
# ESP32-S2
32+
# https://github.com/espressif/arduino-esp32/blob/master/boards.txt
33+
- fqbn: esp32:esp32:esp32s2
34+
platforms: |
35+
- name: esp32:esp32
36+
source-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
37+
38+
# ESP32-C3
39+
# https://github.com/espressif/arduino-esp32/blob/master/boards.txt
40+
- fqbn: esp32:esp32:esp32c3
41+
platforms: |
42+
- name: esp32:esp32
43+
source-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
44+
45+
# Artemis / Apollo3
46+
# https://github.com/sparkfun/Arduino_Apollo3/blob/main/boards.txt
47+
- fqbn: SparkFun:apollo3:sfe_artemis_atp
48+
platforms: |
49+
- name: SparkFun:apollo3
50+
source-url: https://raw.githubusercontent.com/sparkfun/Arduino_Apollo3/master/package_sparkfun_apollo3_index.json
51+
52+
# ESP8266
53+
# https://github.com/esp8266/Arduino/blob/master/boards.txt
54+
- fqbn: esp8266:esp8266:thingdev
55+
platforms: |
56+
- name: esp8266:esp8266
57+
source-url: https://arduino.esp8266.com/stable/package_esp8266com_index.json
58+
59+
# SAMD21
60+
# https://github.com/arduino/ArduinoCore-samd/blob/master/boards.txt
61+
- fqbn: arduino:samd:mkr1000
62+
platforms: |
63+
- name: arduino:samd
64+
# source-url: https://downloads.arduino.cc/packages/package_index.json
65+
66+
# Nano BLE 33 / nRF52840
67+
# https://github.com/arduino/ArduinoCore-mbed/blob/master/boards.txt
68+
- fqbn: arduino:mbed:nano33ble
69+
platforms: |
70+
- name: arduino:mbed
71+
# source-url: https://downloads.arduino.cc/packages/package_index.json
72+
73+
# RP2040
74+
# https://github.com/arduino/ArduinoCore-mbed/blob/master/boards.txt
75+
- fqbn: rp2040:rp2040:sparkfun_promicrorp2040
76+
platforms: |
77+
- name: rp2040:rp2040
78+
source-url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
79+
80+
# STM32
81+
# https://github.com/arduino/ArduinoCore-mbed/blob/master/boards.txt
82+
- fqbn: STMicroelectronics:stm32:GenF4
83+
platforms: |
84+
- name: STMicroelectronics:stm32
85+
source-url: https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
86+
87+
steps:
88+
- name: Checkout
89+
uses: actions/checkout@v3
90+
91+
- name: Branch name
92+
run: echo running on branch ${GITHUB_REF##*/}
93+
94+
- name: Compile Sketch
95+
uses: arduino/compile-sketches@v1.1.0
96+
with:
97+
platforms: ${{ matrix.board.platforms }}
98+
fqbn: ${{ matrix.board.fqbn }}
99+
libraries: |
100+
- source-path: ./
101+
sketch-paths: |
102+
- test/test
103+
enable-warnings-report: true
104+
enable-deltas-report: true
105+
verbose: true
106+
107+
# outputs:
108+
# report-artifact-name: ${{ steps.report-artifact-name.outputs.report-artifact-name }}
109+

src/sfe_bus.cpp

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const static uint16_t buffSize = maxI2CBufferLength
3737

3838
// To repeatedly use this bus toolkit, it will need its own namespace
3939
//namespace sfe_XXX {
40-
QwI2C::QwI2C(void) : _i2cPort{nullptr}
40+
SfeI2C::SfeI2C(void) : _i2cPort{nullptr}
4141
{
4242
}
4343

@@ -46,7 +46,7 @@ QwI2C::QwI2C(void) : _i2cPort{nullptr}
4646
//
4747
// Methods to init/setup this device. The caller can provide a Wire Port, or this class
4848
// will use the default
49-
bool QwI2C::init(TwoWire &wirePort, bool bInit)
49+
bool SfeI2C::init(TwoWire &wirePort, bool bInit)
5050
{
5151

5252
// if we don't have a wire port already
@@ -66,7 +66,7 @@ bool QwI2C::init(TwoWire &wirePort, bool bInit)
6666
//
6767
// Methods to init/setup this device. The caller can provide a Wire Port, or this class
6868
// will use the default
69-
bool QwI2C::init()
69+
bool SfeI2C::init()
7070
{
7171
if( !_i2cPort )
7272
return init(Wire);
@@ -80,29 +80,29 @@ bool QwI2C::init()
8080
// ping()
8181
//
8282
// Is a device connected?
83-
bool QwI2C::ping(uint8_t i2c_address)
83+
bool SfeI2C::ping(uint8_t i2cAddr)
8484
{
8585

8686
if( !_i2cPort )
8787
return false;
8888

89-
_i2cPort->beginTransmission(i2c_address);
89+
_i2cPort->beginTransmission(i2cAddr);
9090
return _i2cPort->endTransmission() == 0;
9191
}
9292

9393
//////////////////////////////////////////////////////////////////////////////////////////////////
9494
// writeRegisterByte()
9595
//
96-
// Write a byte to a register
96+
// Write a byte to a devRegister
9797

98-
bool QwI2C::writeRegisterByte(uint8_t i2c_address, uint8_t offset, uint8_t dataToWrite)
98+
bool SfeI2C::writeRegisterByte(uint8_t i2cAddr, uint8_t devReg, uint8_t dataToWrite)
9999
{
100100

101101
if (!_i2cPort)
102102
return false;
103103

104-
_i2cPort->beginTransmission(i2c_address);
105-
_i2cPort->write(offset);
104+
_i2cPort->beginTransmission(i2cAddr);
105+
_i2cPort->write(devReg);
106106
_i2cPort->write(dataToWrite);
107107
return _i2cPort->endTransmission() == 0;
108108
}
@@ -114,11 +114,11 @@ bool QwI2C::writeRegisterByte(uint8_t i2c_address, uint8_t offset, uint8_t dataT
114114
//
115115
// Write a block of data to a device.
116116

117-
int QwI2C::writeRegisterRegion(uint8_t i2c_address, uint8_t offset, const uint8_t *data, uint16_t length)
117+
int SfeI2C::writeRegisterRegion(uint8_t i2cAddr, uint8_t devReg, const uint8_t *data, uint16_t length)
118118
{
119119

120-
_i2cPort->beginTransmission(i2c_address);
121-
_i2cPort->write(offset);
120+
_i2cPort->beginTransmission(i2cAddr);
121+
_i2cPort->write(devReg);
122122
_i2cPort->write(data, (int)length);
123123

124124
return _i2cPort->endTransmission() ? -1 : 0; // -1 = error, 0 = success
@@ -127,12 +127,12 @@ int QwI2C::writeRegisterRegion(uint8_t i2c_address, uint8_t offset, const uint8_
127127
////////////////////////////////////////////////////////////////////////////////////////////////////////////
128128
// readRegisterRegion()
129129
//
130-
// Reads a block of data from an i2c register on the devices.
130+
// Reads a block of data from an i2c devRegister on the devices.
131131
//
132132
// For large buffers, the data is chuncked over KMaxI2CBufferLength at a time
133133
//
134134
//
135-
int QwI2C::readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t numBytes)
135+
int SfeI2C::readRegisterRegion(uint8_t i2cAddr, uint8_t devReg, uint8_t *data, uint16_t numBytes)
136136
{
137137
uint8_t nChunk;
138138
uint16_t nReturned;
@@ -141,15 +141,15 @@ int QwI2C::readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t
141141
return -1;
142142

143143
int i; // counter in loop
144-
bool bFirstInter = true; // Flag for first iteration - used to send register
144+
bool bFirstInter = true; // Flag for first iteration - used to send devRegister
145145

146146
while (numBytes > 0)
147147
{
148-
_i2cPort->beginTransmission(addr);
148+
_i2cPort->beginTransmission(i2cAddr);
149149

150150
if (bFirstInter)
151151
{
152-
_i2cPort->write(reg);
152+
_i2cPort->write(devReg);
153153
bFirstInter = false;
154154
}
155155

@@ -159,7 +159,7 @@ int QwI2C::readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t
159159
// We're chunking in data - keeping the max chunk to kMaxI2CBufferLength
160160
nChunk = numBytes > buffSize ? buffSize : numBytes;
161161

162-
nReturned = _i2cPort->requestFrom((int)addr, (int)nChunk, (int)true);
162+
nReturned = _i2cPort->requestFrom((int)i2cAddr, (int)nChunk, (int)true);
163163

164164
// No data returned, no dice
165165
if (nReturned == 0)
@@ -228,7 +228,7 @@ bool SfeSPI::init(uint8_t cs, bool bInit)
228228
{
229229

230230
//If the transaction settings are not provided by the user they are built here.
231-
SPISettings spiSettings = SPISettings(3000000, MSBFIRST, SPI_MODE3);
231+
SPISettings spiSettings = SPISettings(3000000, MSB_FIRST, SPI_MODE3);
232232

233233
//In addition of the port is not provided by the user, it defaults to SPI here.
234234
return init(SPI, spiSettings, cs, bInit);
@@ -244,17 +244,17 @@ bool SfeSPI::init(uint8_t cs, bool bInit)
244244
//
245245

246246

247-
bool SfeSPI::ping(uint8_t i2c_address)
247+
bool SfeSPI::ping(uint8_t i2cAddr)
248248
{
249249
return true;
250250
}
251251

252252
//////////////////////////////////////////////////////////////////////////////////////////////////
253253
// writeRegisterByte()
254254
//
255-
// Write a byte to a register
255+
// Write a byte to a devRegister
256256

257-
bool SfeSPI::writeRegisterByte(uint8_t i2c_address, uint8_t offset, uint8_t dataToWrite)
257+
bool SfeSPI::writeRegisterByte(uint8_t i2cAddr, uint8_t devReg, uint8_t dataToWrite)
258258
{
259259

260260
if( !_spiPort )
@@ -265,7 +265,7 @@ bool SfeSPI::writeRegisterByte(uint8_t i2c_address, uint8_t offset, uint8_t data
265265
// Signal communication start
266266
digitalWrite(_cs, LOW);
267267

268-
_spiPort->transfer(offset);
268+
_spiPort->transfer(devReg);
269269
_spiPort->transfer(dataToWrite);
270270

271271
// End communcation
@@ -280,7 +280,7 @@ bool SfeSPI::writeRegisterByte(uint8_t i2c_address, uint8_t offset, uint8_t data
280280
// writeRegisterRegion()
281281
//
282282
// Write a block of data to a device.
283-
int SfeSPI::writeRegisterRegion(uint8_t i2c_address, uint8_t offset, const uint8_t *data, uint16_t length)
283+
int SfeSPI::writeRegisterRegion(uint8_t i2cAddr, uint8_t devReg, const uint8_t *data, uint16_t length)
284284
{
285285

286286
int i;
@@ -289,7 +289,7 @@ int SfeSPI::writeRegisterRegion(uint8_t i2c_address, uint8_t offset, const uint8
289289
_spiPort->beginTransaction(_sfeSPISettings);
290290
// Signal communication start
291291
digitalWrite(_cs, LOW);
292-
_spiPort->transfer(offset);
292+
_spiPort->transfer(devReg);
293293

294294
for(i = 0; i < length; i++)
295295
{
@@ -305,11 +305,11 @@ int SfeSPI::writeRegisterRegion(uint8_t i2c_address, uint8_t offset, const uint8
305305
////////////////////////////////////////////////////////////////////////////////////////////////////////////
306306
// readRegisterRegion()
307307
//
308-
// Reads a block of data from the register on the device.
308+
// Reads a block of data from the devRegister on the device.
309309
//
310310
//
311311
//
312-
int SfeSPI::readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t numBytes)
312+
int SfeSPI::readRegisterRegion(uint8_t i2cAddr, uint8_t devReg, uint8_t *data, uint16_t numBytes)
313313
{
314314
if (!_spiPort)
315315
return -1;
@@ -320,9 +320,9 @@ int SfeSPI::readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t *data, uint16_
320320
_spiPort->beginTransaction(_sfeSPISettings);
321321
// Signal communication start
322322
digitalWrite(_cs, LOW);
323-
// A leading "1" must be added to transfer with register to indicate a "read"
324-
reg = (reg | SPI_READ);
325-
_spiPort->transfer(reg);
323+
// A leading "1" must be added to transfer with devRegister to indicate a "read"
324+
devReg = (devReg | SPI_READ);
325+
_spiPort->transfer(devReg);
326326

327327
for(i = 0; i < numBytes; i++)
328328
{

src/sfe_bus.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ class QwIDeviceBus
3838
{
3939
public:
4040

41-
virtual bool ping(uint8_t address) = 0;
41+
virtual bool ping(uint8_t i2cAddr) = 0;
4242

43-
virtual bool writeRegisterByte(uint8_t address, uint8_t offset, uint8_t data) = 0;
43+
virtual bool writeRegisterByte(uint8_t i2cAddr, uint8_t devReg, uint8_t data) = 0;
4444

45-
virtual int writeRegisterRegion(uint8_t address, uint8_t offset, const uint8_t* data, uint16_t length) = 0;
45+
virtual int writeRegisterRegion(uint8_t i2cAddr, uint8_t devReg, const uint8_t* data, uint16_t length) = 0;
4646

4747
virtual int readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t* data, uint16_t numBytes) = 0;
4848

@@ -60,11 +60,11 @@ class QwI2C : public QwIDeviceBus
6060

6161
bool init(TwoWire& wirePort, bool bInit=false);
6262

63-
bool ping(uint8_t address);
63+
bool ping(uint8_t i2cAddr);
6464

65-
bool writeRegisterByte(uint8_t address, uint8_t offset, uint8_t data);
65+
bool writeRegisterByte(uint8_t i2cAddr, uint8_t devReg, uint8_t data);
6666

67-
int writeRegisterRegion(uint8_t address, uint8_t offset, const uint8_t* data, uint16_t length);
67+
int writeRegisterRegion(uint8_t i2cAddr, uint8_t devReg, const uint8_t* data, uint16_t length);
6868

6969
int readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t* data, uint16_t numBytes);
7070

@@ -75,7 +75,7 @@ class QwI2C : public QwIDeviceBus
7575

7676
// The SfeSPI class defines behavior for SPI implementation based around the SPIClass class (SPI).
7777
// This is Arduino specific.
78-
// Paramaters like "address" are kept although irrelevant to SPI due to the use of the abstract class
78+
// Paramaters like "i2cAddr" are kept although irrelevant to SPI due to the use of the abstract class
7979
// as interface, QwIDeviceBus.
8080
class SfeSPI : public QwIDeviceBus
8181
{
@@ -87,11 +87,11 @@ class SfeSPI : public QwIDeviceBus
8787

8888
bool init(SPIClass& spiPort, SPISettings& ismSPISettings, uint8_t cs, bool bInit=false);
8989

90-
bool ping(uint8_t address);
90+
bool ping(uint8_t i2cAddr);
9191

92-
bool writeRegisterByte(uint8_t address, uint8_t offset, uint8_t data);
92+
bool writeRegisterByte(uint8_t i2cAddr, uint8_t devReg, uint8_t data);
9393

94-
int writeRegisterRegion(uint8_t address, uint8_t offset, const uint8_t* data, uint16_t length);
94+
int writeRegisterRegion(uint8_t i2cAddr, uint8_t devReg, const uint8_t* data, uint16_t length);
9595

9696
int readRegisterRegion(uint8_t addr, uint8_t reg, uint8_t* data, uint16_t numBytes);
9797

test/test.ino

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#include <Wire.h>
2+
#include <SPI.h>
3+
4+
void setup()
5+
{
6+
7+
}
8+
9+
void loop()
10+
{
11+
12+
}

0 commit comments

Comments
 (0)