@@ -599,105 +599,20 @@ int8_t TMAG5273::setMagneticChannel(uint8_t channelMode)
599599// / @return Error code (0 is success, negative is failure, positive is warning)
600600int8_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)
0 commit comments