@@ -557,103 +557,20 @@ int8_t TMAG5273::setOperatingMode(uint8_t opMode)
557557// / @return Error code (0 is success, negative is failure, positive is warning)
558558int8_t TMAG5273::setMagneticChannel (uint8_t channelMode)
559559{
560+ // validate the channelMode input ( valid <= TMAG5273_XZX_ENABLE (0xB) )
561+ if (channelMode > TMAG5273_XZX_ENABLE)
562+ return -1 ; // invalid channelMode
563+
560564 uint8_t mode = 0 ;
561565
562566 sfTkError_t rc = _theI2CBus.readRegister (TMAG5273_REG_SENSOR_CONFIG_1, mode);
563567 if (rc != ksfTkErrOk)
564568 return -1 ;
565569
566- // If-Else statement for writing values to the register, bit by bit
567- if (channelMode == 0X0 ) // 0b0000
568- {
569- // Writes 0 to bit 4 of the register
570- bitWrite (mode, 4 , 0 );
571- // Writes 0 to bit 5 of the register
572- bitWrite (mode, 5 , 0 );
573- // Writes 0 to bit 6 of the register
574- bitWrite (mode, 6 , 0 );
575- // Writes 0 to bit 7 of the register
576- bitWrite (mode, 7 , 0 );
577- }
578- else if (channelMode == 0X1 ) // 0x0001
579- {
580- bitWrite (mode, 4 , 1 );
581- bitWrite (mode, 5 , 0 );
582- bitWrite (mode, 6 , 0 );
583- bitWrite (mode, 7 , 0 );
584- }
585- else if (channelMode == 0X2 ) // 0x0010
586- {
587- bitWrite (mode, 4 , 0 );
588- bitWrite (mode, 5 , 1 );
589- bitWrite (mode, 6 , 0 );
590- bitWrite (mode, 7 , 0 );
591- }
592- else if (channelMode == 0X3 ) // 0x0011
593- {
594- bitWrite (mode, 4 , 1 );
595- bitWrite (mode, 5 , 1 );
596- bitWrite (mode, 6 , 0 );
597- bitWrite (mode, 7 , 0 );
598- }
599- else if (channelMode == 0X4 ) // 0x0100
600- {
601- bitWrite (mode, 4 , 0 );
602- bitWrite (mode, 5 , 0 );
603- bitWrite (mode, 6 , 1 );
604- bitWrite (mode, 7 , 0 );
605- }
606- else if (channelMode == 0X5 ) // 0x0101
607- {
608- bitWrite (mode, 4 , 1 );
609- bitWrite (mode, 5 , 0 );
610- bitWrite (mode, 6 , 1 );
611- bitWrite (mode, 7 , 0 );
612- }
613- else if (channelMode == 0X6 ) // 0x0110
614- {
615- bitWrite (mode, 4 , 0 );
616- bitWrite (mode, 5 , 1 );
617- bitWrite (mode, 6 , 1 );
618- bitWrite (mode, 7 , 0 );
619- }
620- else if (channelMode == 0X7 ) // 0x0111
621- {
622- bitWrite (mode, 4 , 1 );
623- bitWrite (mode, 5 , 1 );
624- bitWrite (mode, 6 , 1 );
625- bitWrite (mode, 7 , 0 );
626- }
627- else if (channelMode == 0X8 ) // 0x1000
628- {
629- bitWrite (mode, 4 , 0 );
630- bitWrite (mode, 5 , 0 );
631- bitWrite (mode, 6 , 0 );
632- bitWrite (mode, 7 , 1 );
633- }
634- else if (channelMode == 0X9 ) // 0x1001
635- {
636- bitWrite (mode, 4 , 1 );
637- bitWrite (mode, 5 , 0 );
638- bitWrite (mode, 6 , 0 );
639- bitWrite (mode, 7 , 1 );
640- }
641- else if (channelMode == 0XA ) // 0x1010
642- {
643- bitWrite (mode, 4 , 0 );
644- bitWrite (mode, 5 , 1 );
645- bitWrite (mode, 6 , 0 );
646- bitWrite (mode, 7 , 1 );
647- }
648- else if (channelMode == 0XB ) // 0x1011
649- {
650- bitWrite (mode, 4 , 1 );
651- bitWrite (mode, 5 , 1 );
652- bitWrite (mode, 6 , 0 );
653- bitWrite (mode, 7 , 1 );
654- }
655- else
656- return -1 ; // invalid channelMode
570+ mode &= ~TMAG5273_CHANNEL_MODE_BITS; // clear our bits
571+
572+ // Since channelMode passed in is the same as the bit pattern we want, just use that to set the bit
573+ mode |= (channelMode << TMAG5273_CHANNEL_MODE_LSB);
657574
658575 rc = _theI2CBus.writeRegister (TMAG5273_REG_SENSOR_CONFIG_1, mode);
659576 if (rc != ksfTkErrOk)
0 commit comments