You've already forked TEF6686_ESP32
optimize one i2c write
This commit is contained in:
@@ -923,6 +923,7 @@ void tryWiFi() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void total_pc_control() {
|
void total_pc_control() {
|
||||||
|
static uint8_t data[255];
|
||||||
if(i2c_pc_control_init) {
|
if(i2c_pc_control_init) {
|
||||||
Serial.write(1);
|
Serial.write(1);
|
||||||
Serial.write(0xff);
|
Serial.write(0xff);
|
||||||
@@ -938,13 +939,9 @@ void total_pc_control() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *data = (uint8_t*)malloc(userlen);
|
|
||||||
if(data == NULL) return;
|
|
||||||
auto len = Serial.read(data, userlen);
|
auto len = Serial.read(data, userlen);
|
||||||
if(len != userlen) {
|
if(len != userlen) return;
|
||||||
free(data);
|
|
||||||
return; // Incomplete data
|
|
||||||
}
|
|
||||||
switch (data[0]) {
|
switch (data[0]) {
|
||||||
case 0: { // Set clock
|
case 0: { // Set clock
|
||||||
if(len < 5) break;
|
if(len < 5) break;
|
||||||
@@ -973,7 +970,7 @@ void total_pc_control() {
|
|||||||
if(len < 3 + datalen + 1) break; // Validate buffer size
|
if(len < 3 + datalen + 1) break; // Validate buffer size
|
||||||
|
|
||||||
Wire.beginTransmission(addr);
|
Wire.beginTransmission(addr);
|
||||||
for(int i = 0; i < datalen; i++) Wire.write(data[3+i]);
|
Wire.write(data + 3, len - 3);
|
||||||
auto out = Wire.endTransmission(false);
|
auto out = Wire.endTransmission(false);
|
||||||
|
|
||||||
uint8_t recvlen_requested = data[3+datalen];
|
uint8_t recvlen_requested = data[3+datalen];
|
||||||
@@ -1018,7 +1015,6 @@ void total_pc_control() {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
free(data);
|
|
||||||
Serial.flush(true);
|
Serial.flush(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user