Skip to content

Commit 1117196

Browse files
committed
Use a pointer for SPI signleton
Replaces #4
1 parent 1d8861f commit 1117196

File tree

2 files changed

+103
-103
lines changed

2 files changed

+103
-103
lines changed

src/SigFox.cpp

Lines changed: 102 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ void SIGFOXClass::noDebug() {
7070
int SIGFOXClass::begin()
7171
{
7272
#ifdef SIGFOX_SPI
73-
spi_port = SIGFOX_SPI;
73+
spi_port = &SIGFOX_SPI;
7474
reset_pin = SIGFOX_RES_PIN;
7575
poweron_pin = SIGFOX_PWRON_PIN;
7676
interrupt_pin = SIGFOX_EVENT_PIN;
@@ -95,9 +95,9 @@ int SIGFOXClass::begin()
9595
digitalWrite(reset_pin, LOW);
9696
delay(10);
9797
digitalWrite(reset_pin, HIGH);
98-
spi_port.begin();
99-
spi_port.setDataMode(SPI_MODE0);
100-
spi_port.setBitOrder(MSBFIRST);
98+
spi_port->begin();
99+
spi_port->setDataMode(SPI_MODE0);
100+
spi_port->setBitOrder(MSBFIRST);
101101

102102
delay(100);
103103

@@ -109,7 +109,7 @@ int SIGFOXClass::begin()
109109

110110
int SIGFOXClass::begin(SPIClass& spi, int reset, int poweron, int interrupt, int chip_select, int led)
111111
{
112-
spi_port = spi;
112+
spi_port = &spi;
113113
reset_pin = reset;
114114
poweron_pin = poweron;
115115
interrupt_pin = interrupt;
@@ -132,14 +132,14 @@ int SIGFOXClass::send(unsigned char mess[], int len, bool rx)
132132

133133
digitalWrite(chip_select_pin, LOW);
134134
delay(1);
135-
spi_port.beginTransaction(SPICONFIG);
135+
spi_port->beginTransaction(SPICONFIG);
136136
if (len > 12) len = 12;
137137
int i = 0;
138138

139-
spi_port.transfer(0x07);
140-
spi_port.transfer(len);
141-
spi_port.transfer(mess, len);
142-
spi_port.endTransaction();
139+
spi_port->transfer(0x07);
140+
spi_port->transfer(len);
141+
spi_port->transfer(mess, len);
142+
spi_port->endTransaction();
143143
delay(1);
144144
digitalWrite(chip_select_pin, HIGH);
145145

@@ -149,13 +149,13 @@ int SIGFOXClass::send(unsigned char mess[], int len, bool rx)
149149

150150
digitalWrite(chip_select_pin, LOW);
151151
delay(1);
152-
spi_port.beginTransaction(SPICONFIG);
152+
spi_port->beginTransaction(SPICONFIG);
153153
if (rx) {
154-
spi_port.transfer(0x0E);
154+
spi_port->transfer(0x0E);
155155
} else {
156-
spi_port.transfer(0x0D);
156+
spi_port->transfer(0x0D);
157157
}
158-
spi_port.endTransaction();
158+
spi_port->endTransaction();
159159
delay(1);
160160
digitalWrite(chip_select_pin, HIGH);
161161
int ret = 99;
@@ -198,11 +198,11 @@ int SIGFOXClass::send(unsigned char mess[], int len, bool rx)
198198
if (sig == 0 && rx) {
199199
digitalWrite(chip_select_pin, LOW);
200200
delay(1);
201-
spi_port.beginTransaction(SPICONFIG);
202-
spi_port.transfer(0x10);
203-
spi_port.transfer(MAX_RX_BUF_LEN);
204-
spi_port.transfer(rx_buffer, MAX_RX_BUF_LEN);
205-
spi_port.endTransaction();
201+
spi_port->beginTransaction(SPICONFIG);
202+
spi_port->transfer(0x10);
203+
spi_port->transfer(MAX_RX_BUF_LEN);
204+
spi_port->transfer(rx_buffer, MAX_RX_BUF_LEN);
205+
spi_port->endTransaction();
206206
delay(1);
207207
digitalWrite(chip_select_pin, HIGH);
208208

@@ -219,11 +219,11 @@ int SIGFOXClass::sendBit(bool value){
219219

220220
digitalWrite(chip_select_pin, LOW);
221221
delay(1);
222-
spi_port.beginTransaction(SPICONFIG);
222+
spi_port->beginTransaction(SPICONFIG);
223223

224-
spi_port.transfer(0x0B);
225-
spi_port.transfer(value ? 1 : 0);
226-
spi_port.endTransaction();
224+
spi_port->transfer(0x0B);
225+
spi_port->transfer(value ? 1 : 0);
226+
spi_port->endTransaction();
227227
delay(1);
228228
digitalWrite(chip_select_pin, HIGH);
229229

@@ -313,9 +313,9 @@ int SIGFOXClass::parsePacket() {
313313

314314
int SIGFOXClass::calibrateCrystal() {
315315
digitalWrite(chip_select_pin, LOW);
316-
spi_port.beginTransaction(SPICONFIG);
317-
spi_port.transfer(0x14);
318-
spi_port.endTransaction();
316+
spi_port->beginTransaction(SPICONFIG);
317+
spi_port->transfer(0x14);
318+
spi_port->endTransaction();
319319
delay(1);
320320
digitalWrite(chip_select_pin, HIGH);
321321
delay(1);
@@ -407,14 +407,14 @@ char* SIGFOXClass::getStatusSig()
407407
void SIGFOXClass::status()
408408
{
409409
digitalWrite(chip_select_pin, LOW);
410-
spi_port.beginTransaction(SPICONFIG);
411-
spi_port.transfer(0x0A);
412-
spi_port.transfer(0);
413-
ssm = spi_port.transfer(0);
414-
atm = spi_port.transfer(0);
415-
sig = spi_port.transfer(0);
416-
sig2 = spi_port.transfer(0);
417-
spi_port.endTransaction();
410+
spi_port->beginTransaction(SPICONFIG);
411+
spi_port->transfer(0x0A);
412+
spi_port->transfer(0);
413+
ssm = spi_port->transfer(0);
414+
atm = spi_port->transfer(0);
415+
sig = spi_port->transfer(0);
416+
sig2 = spi_port->transfer(0);
417+
spi_port->endTransaction();
418418
digitalWrite(chip_select_pin, HIGH);
419419
delay(1);
420420
}
@@ -423,9 +423,9 @@ float SIGFOXClass::internalTemperature()
423423
{
424424
digitalWrite(chip_select_pin, LOW);
425425
delay(1);
426-
spi_port.beginTransaction(SPICONFIG);
427-
spi_port.transfer(0x14);
428-
spi_port.endTransaction();
426+
spi_port->beginTransaction(SPICONFIG);
427+
spi_port->transfer(0x14);
428+
spi_port->endTransaction();
429429
delay(1);
430430
digitalWrite(chip_select_pin, HIGH);
431431
delay(1);
@@ -443,17 +443,17 @@ float SIGFOXClass::internalTemperature()
443443

444444
digitalWrite(chip_select_pin, LOW);
445445
delay(1);
446-
spi_port.beginTransaction(SPICONFIG);
447-
spi_port.transfer(0x13);
448-
spi_port.transfer(0);
449-
vlidle = spi_port.transfer(0);
450-
vhidle = spi_port.transfer(0);
451-
vlactive = spi_port.transfer(0);
452-
vhactive = spi_port.transfer(0);
453-
temperatureL = spi_port.transfer(0);
454-
temperatureH = spi_port.transfer(0);
446+
spi_port->beginTransaction(SPICONFIG);
447+
spi_port->transfer(0x13);
448+
spi_port->transfer(0);
449+
vlidle = spi_port->transfer(0);
450+
vhidle = spi_port->transfer(0);
451+
vlactive = spi_port->transfer(0);
452+
vhactive = spi_port->transfer(0);
453+
temperatureL = spi_port->transfer(0);
454+
temperatureH = spi_port->transfer(0);
455455
delay(1);
456-
spi_port.endTransaction();
456+
spi_port->endTransaction();
457457
digitalWrite(chip_select_pin, HIGH);
458458
delay(1);
459459

@@ -465,17 +465,17 @@ char* SIGFOXClass::readConfig(int* len)
465465

466466
digitalWrite(chip_select_pin, LOW);
467467
delay(1);
468-
spi_port.beginTransaction(SPICONFIG);
469-
spi_port.transfer(0x1F);
470-
spi_port.endTransaction();
468+
spi_port->beginTransaction(SPICONFIG);
469+
spi_port->transfer(0x1F);
470+
spi_port->endTransaction();
471471
digitalWrite(chip_select_pin, HIGH);
472472

473473
delay(5);
474474

475475
digitalWrite(chip_select_pin, LOW);
476-
spi_port.beginTransaction(SPICONFIG);
477-
spi_port.transfer(0x20);
478-
spi_port.transfer(0);
476+
spi_port->beginTransaction(SPICONFIG);
477+
spi_port->transfer(0x20);
478+
spi_port->transfer(0);
479479
tx_freq = SPI.transfer(0) | tx_freq << 8;
480480
tx_freq = SPI.transfer(0) | tx_freq << 8;
481481
tx_freq = SPI.transfer(0) | tx_freq << 8;
@@ -484,9 +484,9 @@ char* SIGFOXClass::readConfig(int* len)
484484
rx_freq = SPI.transfer(0) | rx_freq << 8;
485485
rx_freq = SPI.transfer(0) | rx_freq << 8;
486486
rx_freq = SPI.transfer(0) | rx_freq << 8;
487-
repeat = spi_port.transfer(0);
488-
configuration = spi_port.transfer(0);
489-
spi_port.endTransaction();
487+
repeat = spi_port->transfer(0);
488+
configuration = spi_port->transfer(0);
489+
spi_port->endTransaction();
490490
delay(1);
491491
digitalWrite(chip_select_pin, HIGH);
492492
delay(1);
@@ -503,12 +503,12 @@ char* SIGFOXClass::readConfig(int* len)
503503
String SIGFOXClass::AtmVersion()
504504
{
505505
digitalWrite(chip_select_pin, LOW);
506-
spi_port.beginTransaction(SPICONFIG);
507-
spi_port.transfer(0x06);
508-
spi_port.transfer(0);
509-
byte mv = spi_port.transfer(0);
510-
byte lv = spi_port.transfer(0);
511-
spi_port.endTransaction();
506+
spi_port->beginTransaction(SPICONFIG);
507+
spi_port->transfer(0x06);
508+
spi_port->transfer(0);
509+
byte mv = spi_port->transfer(0);
510+
byte lv = spi_port->transfer(0);
511+
spi_port->endTransaction();
512512
digitalWrite(chip_select_pin, HIGH);
513513
delay(1);
514514
snprintf(buffer, BLEN, "%d.%d", mv, lv);
@@ -518,12 +518,12 @@ String SIGFOXClass::AtmVersion()
518518
String SIGFOXClass::SigVersion()
519519
{
520520
digitalWrite(chip_select_pin, LOW);
521-
spi_port.beginTransaction(SPICONFIG);
522-
spi_port.transfer(0x06);
523-
spi_port.transfer(0);
524-
byte mv = spi_port.transfer(0);
525-
byte lv = spi_port.transfer(0);
526-
spi_port.endTransaction();
521+
spi_port->beginTransaction(SPICONFIG);
522+
spi_port->transfer(0x06);
523+
spi_port->transfer(0);
524+
byte mv = spi_port->transfer(0);
525+
byte lv = spi_port->transfer(0);
526+
spi_port->endTransaction();
527527
digitalWrite(chip_select_pin, HIGH);
528528
delay(1);
529529
snprintf(buffer, BLEN, "%d.%d", mv, lv);
@@ -533,14 +533,14 @@ String SIGFOXClass::SigVersion()
533533
String SIGFOXClass::ID()
534534
{
535535
digitalWrite(chip_select_pin, LOW);
536-
spi_port.beginTransaction(SPICONFIG);
537-
spi_port.transfer(0x12);
538-
spi_port.transfer(0);
539-
byte ID3 = spi_port.transfer(0);
540-
byte ID2 = spi_port.transfer(0);
541-
byte ID1 = spi_port.transfer(0);
542-
byte ID0 = spi_port.transfer(0);
543-
spi_port.endTransaction();
536+
spi_port->beginTransaction(SPICONFIG);
537+
spi_port->transfer(0x12);
538+
spi_port->transfer(0);
539+
byte ID3 = spi_port->transfer(0);
540+
byte ID2 = spi_port->transfer(0);
541+
byte ID1 = spi_port->transfer(0);
542+
byte ID0 = spi_port->transfer(0);
543+
spi_port->endTransaction();
544544
digitalWrite(chip_select_pin, HIGH);
545545
delay(1);
546546
snprintf(buffer, BLEN, "%02X%02X%02X%02X", ID0, ID1, ID2, ID3);
@@ -551,13 +551,13 @@ String SIGFOXClass::PAC()
551551
{
552552
uint8_t pac[16];
553553
digitalWrite(chip_select_pin, LOW);
554-
spi_port.beginTransaction(SPICONFIG);
555-
spi_port.transfer(0x0F);
556-
spi_port.transfer(0);
554+
spi_port->beginTransaction(SPICONFIG);
555+
spi_port->transfer(0x0F);
556+
spi_port->transfer(0);
557557
for (int i = 0; i < 16; i++) {
558-
pac[i] = spi_port.transfer(0);
558+
pac[i] = spi_port->transfer(0);
559559
}
560-
spi_port.endTransaction();
560+
spi_port->endTransaction();
561561
digitalWrite(chip_select_pin, HIGH);
562562
delay(1);
563563
for (int i = 0; i < 8; i++) {
@@ -569,39 +569,39 @@ String SIGFOXClass::PAC()
569569
void SIGFOXClass::reset()
570570
{
571571
digitalWrite(chip_select_pin, LOW);
572-
spi_port.beginTransaction(SPICONFIG);
573-
spi_port.transfer(0x01);
574-
spi_port.endTransaction();
572+
spi_port->beginTransaction(SPICONFIG);
573+
spi_port->transfer(0x01);
574+
spi_port->endTransaction();
575575
digitalWrite(chip_select_pin, HIGH);
576576
delay(1);
577577
}
578578

579579
void SIGFOXClass::testMode(bool on)
580580
{
581581
digitalWrite(chip_select_pin, LOW);
582-
spi_port.beginTransaction(SPICONFIG);
583-
spi_port.transfer(0x17);
582+
spi_port->beginTransaction(SPICONFIG);
583+
spi_port->transfer(0x17);
584584
if (on) {
585-
spi_port.transfer(0x11);
585+
spi_port->transfer(0x11);
586586
} else {
587-
spi_port.transfer(0x00);
587+
spi_port->transfer(0x00);
588588
}
589-
spi_port.endTransaction();
589+
spi_port->endTransaction();
590590
digitalWrite(chip_select_pin, HIGH);
591591
delay(1);
592592
}
593593

594594
void SIGFOXClass::setMode(Country EUMode, TxRxMode tx_rx)
595595
{
596596
digitalWrite(chip_select_pin, LOW);
597-
spi_port.beginTransaction(SPICONFIG);
598-
spi_port.transfer(0x11);
599-
spi_port.transfer(0);
600-
spi_port.transfer(1);
601-
spi_port.transfer(0x2);
597+
spi_port->beginTransaction(SPICONFIG);
598+
spi_port->transfer(0x11);
599+
spi_port->transfer(0);
600+
spi_port->transfer(1);
601+
spi_port->transfer(0x2);
602602
uint8_t mode = (0x3 << 4) | (1 << 3) | (EUMode << 2) | (tx_rx << 1) | 1;
603-
spi_port.transfer(mode);
604-
spi_port.endTransaction();
603+
spi_port->transfer(mode);
604+
spi_port->endTransaction();
605605
digitalWrite(chip_select_pin, HIGH);
606606
delay(1);
607607

@@ -620,9 +620,9 @@ void SIGFOXClass::setMode(Country EUMode, TxRxMode tx_rx)
620620
}
621621

622622
digitalWrite(chip_select_pin, LOW);
623-
spi_port.beginTransaction(SPICONFIG);
624-
spi_port.transfer(0x05);
625-
spi_port.endTransaction();
623+
spi_port->beginTransaction(SPICONFIG);
624+
spi_port->transfer(0x05);
625+
spi_port->endTransaction();
626626
digitalWrite(chip_select_pin, HIGH);
627627
delay(100);
628628
}
@@ -633,9 +633,9 @@ void SIGFOXClass::end()
633633
delay(1);
634634
digitalWrite(chip_select_pin, LOW);
635635
delay(1);
636-
spi_port.beginTransaction(SPICONFIG);
637-
spi_port.transfer(0x05);
638-
spi_port.endTransaction();
636+
spi_port->beginTransaction(SPICONFIG);
637+
spi_port->transfer(0x05);
638+
spi_port->endTransaction();
639639
delay(1);
640640
digitalWrite(chip_select_pin, HIGH);
641641
delay(1);

src/SigFox.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ class SIGFOXClass : public Stream
188188
unsigned char rx_buffer[MAX_RX_BUF_LEN];
189189
unsigned char tx_buffer[MAX_TX_BUF_LEN];
190190
int tx_buffer_index = -1;
191-
SPIClass& spi_port = SPI;
191+
SPIClass *spi_port;
192192
int reset_pin;
193193
int poweron_pin;
194194
int interrupt_pin;

0 commit comments

Comments
 (0)