@@ -50,71 +50,21 @@ int PF1550_IO::begin()
5050
5151void PF1550_IO::readRegister (Register const reg_addr, uint8_t * data)
5252{
53- uint8_t i2c_data[2 ];
53+ _wire->beginTransmission (_i2c_addr);
54+ _wire->write (static_cast <uint8_t >(reg_addr));
55+ _wire->endTransmission (false ); /* No Stop. */
5456
55- i2c_data[0 ] = (uint8_t )reg_addr;
56-
57- writeRegister (_i2c_addr, i2c_data, 1 , 1 );
58-
59- uint8_t retVal = _wire->requestFrom (_i2c_addr, 1 , true );
60-
61- if (_debug) {
62- _debug->print (" requestFrom: " );
63- _debug->println (retVal);
64- }
65-
66- int i = 0 ;
67- while (_wire->available () && i < 1 ) {
68- data[0 ] = _wire->read ();
69- i++;
70- }
71-
72- if (_debug) {
73- _debug->println (" Read:" );
74- for (i = 0 ; i < 1 ; i++) {
75- _debug->println (data[i], HEX);
76- }
77- }
57+ _wire->requestFrom (_i2c_addr, 1 , true );
58+ while (_wire->available () < 1 ) { }
59+ *data = _wire->read ();
7860}
7961
80- void PF1550_IO::writeRegister (uint8_t slave_addr, uint8_t *data , uint8_t data_len, uint8_t restart )
62+ void PF1550_IO::writeRegister (Register const reg_addr , uint8_t const data )
8163{
82- if (_debug)
83- {
84- _debug->print (" Restart: " );
85- _debug->println (restart);
86- if (!restart)
87- {
88- _debug->print (" PF1550_IO_C33::writeRegister at address=" );
89- _debug->print (data[0 ], HEX);
90- _debug->print (" data=" );
91- _debug->println (data[1 ], HEX);
92- _debug->print (" i2c slave address: " );
93- _debug->println (slave_addr);
94- }
95- else
96- {
97- _debug->print (" PF1550_IO_C33::Read from register at address=" );
98- _debug->println (data[0 ], HEX);
99- }
100- }
101-
102- _wire->beginTransmission (slave_addr);
103- _wire->write (data, data_len);
104- uint8_t retVal = _wire->endTransmission (restart == 0 ? true : false );
105-
106- if (_debug) {
107- _debug->print (" End transmission: " );
108- _debug->println (retVal);
109- }
110- /*
111- if (_debug) {
112- _debug->println("Write:");
113- for (int i = 0; i < data_len; i++) {
114- _debug->println(data[i], HEX);
115- }
116- }
117- */
64+ _wire->beginTransmission (_i2c_addr);
65+ _wire->write (static_cast <uint8_t >(reg_addr));
66+ _wire->write (data);
67+ _wire->endTransmission (true );
11868}
11969
12070void PF1550_IO::setBit (Register const reg, uint8_t const bit_pos)
@@ -124,10 +74,7 @@ void PF1550_IO::setBit(Register const reg, uint8_t const bit_pos)
12474 readRegister (reg, ®_val);
12575 reg_val |= (1 <<bit_pos);
12676
127- uint8_t i2c_data[2 ];
128- i2c_data[0 ] = (uint8_t )reg;
129- i2c_data[1 ] = reg_val;
130- writeRegister (_i2c_addr, i2c_data, 2 , 0 );
77+ writeRegister (reg, reg_val);
13178}
13279
13380void PF1550_IO::clrBit (Register const reg, uint8_t const bit_pos)
@@ -137,8 +84,5 @@ void PF1550_IO::clrBit(Register const reg, uint8_t const bit_pos)
13784 readRegister (reg, ®_val);
13885 reg_val &= ~(1 <<bit_pos);
13986
140- uint8_t i2c_data[2 ];
141- i2c_data[0 ] = (uint8_t )reg;
142- i2c_data[1 ] = reg_val;
143- writeRegister (_i2c_addr, i2c_data, 2 , 0 );
87+ writeRegister (reg, reg_val);
14488}
0 commit comments