@@ -50,71 +50,21 @@ int PF1550_IO::begin()
50
50
51
51
void PF1550_IO::readRegister (Register const reg_addr, uint8_t * data)
52
52
{
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. */
54
56
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 ();
78
60
}
79
61
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 )
81
63
{
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 );
118
68
}
119
69
120
70
void 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)
124
74
readRegister (reg, ®_val);
125
75
reg_val |= (1 <<bit_pos);
126
76
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);
131
78
}
132
79
133
80
void 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)
137
84
readRegister (reg, ®_val);
138
85
reg_val &= ~(1 <<bit_pos);
139
86
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);
144
88
}
0 commit comments