Files
TEF6686_ESP32/src/Tuner_Interface.cpp
2026-02-17 23:16:46 +01:00

90 lines
2.2 KiB
C++

#include "globals.h"
#include "Tuner_Patch_Lithio_V102_p224.h"
#include "Tuner_Patch_Lithio_V205_p512.h"
#include <Wire.h>
bool Tuner_WriteBuffer(unsigned char *buf, uint16_t len) {
Wire.beginTransmission(TEF668X_ADDRESS);
Wire.write(buf, len);
uint8_t r = Wire.endTransmission();
if (!Data_Accelerator) delay(1);
return (r == 0) ? true : false;
}
bool Tuner_ReadBuffer(unsigned char *buf, uint16_t len) {
Wire.requestFrom(TEF668X_ADDRESS, len);
if (Wire.available() >= len) {
for (uint16_t i = 0; i < len; i++) buf[i] = Wire.read();
return true;
} return false;
}
static void Tuner_Patch_Load(const unsigned char *pLutBytes, uint16_t size) {
unsigned char buf[24 + 1];
uint16_t i, len;
buf[0] = 0x1b;
while (size) {
len = (size > 24) ? 24 : size;
size -= len;
for (i = 0; i < len; i++) buf[1 + i] = pgm_read_byte(&pLutBytes[i]);
pLutBytes += len;
if(!Tuner_WriteBuffer(buf, len + 1)) break;
}
}
void Tuner_Reset() {
Wire.beginTransmission(TEF668X_ADDRESS);
Wire.write(0x1e);
Wire.write(0x5a);
Wire.write(0x01);
Wire.write(0x5a);
Wire.write(0x5a);
Wire.endTransmission();
}
void Tuner_Patch(byte TEF) {
Wire.beginTransmission(TEF668X_ADDRESS);
Wire.write(0x1c);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
Wire.beginTransmission(TEF668X_ADDRESS);
Wire.write(0x1c);
Wire.write(0x00);
Wire.write(0x74);
Wire.endTransmission();
switch (TEF) {
case 102:
Tuner_Patch_Load(pPatchBytes102, PatchSize102);
break;
case 205:
Tuner_Patch_Load(pPatchBytes205, PatchSize205);
break;
}
Wire.beginTransmission(TEF668X_ADDRESS);
Wire.write(0x1c);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
Wire.beginTransmission(TEF668X_ADDRESS);
Wire.write(0x1c);
Wire.write(0x00);
Wire.write(0x75);
Wire.endTransmission();
switch (TEF) {
case 102:
Tuner_Patch_Load(pLutBytes102, LutSize102);
break;
case 205:
Tuner_Patch_Load(pLutBytes205, LutSize205);
break;
}
Wire.beginTransmission(TEF668X_ADDRESS);
Wire.write(0x1c);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
}