Skip to content

Commit f5b3613

Browse files
committed
moved SLEEP mode settings to use bit masks and proper frobbing
1 parent ce4dd01 commit f5b3613

File tree

2 files changed

+10
-93
lines changed

2 files changed

+10
-93
lines changed

src/SparkFun_TMAG5273_Arduino_Library.cpp

Lines changed: 8 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -599,105 +599,20 @@ int8_t TMAG5273::setMagneticChannel(uint8_t channelMode)
599599
/// @return Error code (0 is success, negative is failure, positive is warning)
600600
int8_t TMAG5273::setSleeptime(uint8_t sleepTime)
601601
{
602+
// validate the sleepTime input ( valid <= TMAG5273_SLEEP_20000MS (0xC) )
603+
if (sleepTime > TMAG5273_SLEEP_20000MS)
604+
return -1; // invalid sleepTime
605+
602606
uint8_t mode = 0;
603607

604608
sfTkError_t rc = _theI2CBus.readRegister(TMAG5273_REG_SENSOR_CONFIG_1, mode);
605609
if (rc != ksfTkErrOk)
606610
return -1;
607611

608-
if (sleepTime == 0X0) // 0b0000
609-
{
610-
bitWrite(mode, 0, 0);
611-
bitWrite(mode, 1, 0);
612-
bitWrite(mode, 2, 0);
613-
bitWrite(mode, 3, 0);
614-
}
615-
else if (sleepTime == 0X1) // 0b0001
616-
{
617-
bitWrite(mode, 0, 1);
618-
bitWrite(mode, 1, 0);
619-
bitWrite(mode, 2, 0);
620-
bitWrite(mode, 3, 0);
621-
}
622-
else if (sleepTime == 0X2) // 0b0010
623-
{
624-
bitWrite(mode, 0, 0);
625-
bitWrite(mode, 1, 1);
626-
bitWrite(mode, 2, 0);
627-
bitWrite(mode, 3, 0);
628-
}
629-
else if (sleepTime == 0X3) // 0b0011
630-
{
631-
bitWrite(mode, 0, 1);
632-
bitWrite(mode, 1, 1);
633-
bitWrite(mode, 2, 0);
634-
bitWrite(mode, 3, 0);
635-
}
636-
else if (sleepTime == 0X4) // 0b0100
637-
{
638-
bitWrite(mode, 0, 0);
639-
bitWrite(mode, 1, 0);
640-
bitWrite(mode, 2, 1);
641-
bitWrite(mode, 3, 0);
642-
}
643-
else if (sleepTime == 0X5) // 0b0101
644-
{
645-
bitWrite(mode, 0, 1);
646-
bitWrite(mode, 1, 0);
647-
bitWrite(mode, 2, 1);
648-
bitWrite(mode, 3, 0);
649-
}
650-
else if (sleepTime == 0X6) // 0b0110
651-
{
652-
bitWrite(mode, 0, 0);
653-
bitWrite(mode, 1, 1);
654-
bitWrite(mode, 2, 1);
655-
bitWrite(mode, 3, 0);
656-
}
657-
else if (sleepTime == 0X7) // 0b0111
658-
{
659-
bitWrite(mode, 0, 1);
660-
bitWrite(mode, 1, 1);
661-
bitWrite(mode, 2, 1);
662-
bitWrite(mode, 3, 0);
663-
}
664-
else if (sleepTime == 0X8) // 0b1000
665-
{
666-
bitWrite(mode, 0, 0);
667-
bitWrite(mode, 1, 0);
668-
bitWrite(mode, 2, 0);
669-
bitWrite(mode, 3, 1);
670-
}
671-
else if (sleepTime == 0X9) // 0b1001
672-
{
673-
bitWrite(mode, 0, 1);
674-
bitWrite(mode, 1, 0);
675-
bitWrite(mode, 2, 0);
676-
bitWrite(mode, 3, 1);
677-
}
678-
else if (sleepTime == 0XA) // 0b1010
679-
{
680-
bitWrite(mode, 0, 0);
681-
bitWrite(mode, 1, 1);
682-
bitWrite(mode, 2, 0);
683-
bitWrite(mode, 3, 1);
684-
}
685-
else if (sleepTime == 0XB) // 0b1011
686-
{
687-
bitWrite(mode, 0, 1);
688-
bitWrite(mode, 1, 1);
689-
bitWrite(mode, 2, 0);
690-
bitWrite(mode, 3, 1);
691-
}
692-
else if (sleepTime == 0XC) // 0b1100
693-
{
694-
bitWrite(mode, 0, 0);
695-
bitWrite(mode, 1, 0);
696-
bitWrite(mode, 2, 1);
697-
bitWrite(mode, 3, 1);
698-
}
699-
else
700-
return -1; // invalid channelMode
612+
mode &= ~TMAG5273_SLEEP_MODE_BITS; // clear our bits
613+
614+
// Since sleepTime passed in is the same as the bit pattern we want, just use that to set the bit
615+
mode |= (sleepTime << TMAG5273_SLEEP_MODE_LSB);
701616

702617
rc = _theI2CBus.writeRegister(TMAG5273_REG_SENSOR_CONFIG_1, mode);
703618
if (rc != ksfTkErrOk)

src/SparkFun_TMAG5273_Arduino_Library_Defs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ Features as per datasheet
7676
#define TMAG5273_YZY_ENABLE 0XA // YZY Channel enabled
7777
#define TMAG5273_XZX_ENABLE 0XB // XZX Channel enabled
7878

79+
#define TMAG5273_SLEEP_MODE_BITS 0x0F // Bits 3-0
80+
#define TMAG5273_SLEEP_MODE_LSB 0
7981
#define TMAG5273_SLEEP_1MS 0X0 // 1ms
8082
#define TMAG5273_SLEEP_5MS 0X1 // 5ms
8183
#define TMAG5273_SLEEP_10MS 0X2 // 10 ms

0 commit comments

Comments
 (0)