X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=tv_i2c_hack;a=blobdiff_plain;f=src%2Fmain.c;h=49ffacc272108a28f74bc1363fadb6e01d3f3a1c;hp=a3f30c8992d06cae3f32393c40cb9e01eeabf38a;hb=HEAD;hpb=4fca6c11e173901b79a38c431db6717857231b22 diff --git a/src/main.c b/src/main.c index a3f30c8..49ffacc 100644 --- a/src/main.c +++ b/src/main.c @@ -6,6 +6,7 @@ #include #include "serial.h" #include "i2c.h" +#include "tda93xx.h" enum { IR_CMD_ONOFF = 0x0c, @@ -42,11 +43,6 @@ enum { PEND_VOL = 4 }; -/* TODO - * IR decoding, connected to PD2 - * enable/disable with switch on PCINT1 - * some of the buttons multiplexed on ADC0 - */ #define PD_IR 2 #define PD_ENSW 3 @@ -130,7 +126,9 @@ int main(void) pending = 0; sei(); if((pend & PEND_IR) && !(ir_input & 0x8000)) { - printf("IR addr: %02x cmd: %02x (%04x)\n", (ir_input >> 6) & 0x1f, ir_input & 0x3f, ir_input); + if(dbgmode) { + printf("IR addr: %02x cmd: %02x (%04x)\n", (ir_input >> 6) & 0x1f, ir_input & 0x3f, ir_input); + } if(((ir_input >> 6) & 0x1f) == 0) { /* TV remote sends IR address 0 */ switch(ir_input & 0x3f) { @@ -266,9 +264,11 @@ static void updhold(void) { data[0] = mute ? 0 : volume; data[1] = 0x1f; - i2c_write(0x8a, 0x1f, data, 1); + /* + i2c_write(JADDR, JSUB_VOLUME, data, 1); i2c_wait(); - i2c_write(0x8a, 0x1c, data + 1, 1); + */ + i2c_write(JADDR, JSUB_SATURATION, data + 1, 1); i2c_wait(); i2c_hold(); } @@ -280,7 +280,7 @@ static unsigned char read_status(void) s = i2c_isheld() ? STAT_BUSHOLD : 0; if(enable) s |= STAT_EN; - i2c_read(0x8a, 0, data, 3); + i2c_read(JADDR, JSUB_STAT0, data, 3); if(s & STAT_BUSHOLD) { i2c_wait(); i2c_hold(); @@ -323,7 +323,7 @@ static void proc_cmd(char *input) /* AV switch (22): 0 0 SVO CMB1 CMB0 INA INB 0 */ data[0] = 0x22; - i2c_write(0x8a, 0x22, data, 1); + i2c_write(JADDR, JSUB_AVSWITCH, data, 1); i2c_async(i2c_hold); } else if(strcmp(input, "rgb") == 0) { @@ -334,9 +334,9 @@ static void proc_cmd(char *input) */ data[0] = 0x70; data[1] = 0; - i2c_write(0x8a, 0x2a, data, 1); + i2c_write(JADDR, JSUB_CTRL0, data, 1); i2c_wait(); - i2c_write(0x8a, 0x2b, data + 1, 1); + i2c_write(JADDR, JSUB_CTRL1, data + 1, 1); } else if(memcmp(input, "vol ", 4) == 0) { int vol = atoi(input + 4); @@ -344,7 +344,7 @@ static void proc_cmd(char *input) printf("ERR vol (%s)\n", input + 4); } else { data[0] = vol; - i2c_write(0x8a, 0x1f, data, 1); + i2c_write(JADDR, JSUB_VOLUME, data, 1); printf("OK volume: %d\n", vol); } @@ -354,7 +354,7 @@ static void proc_cmd(char *input) if(data[0] <= 0 || data[0] > 0x3f) { data[0] = 0x1f; } - i2c_write(0x8a, 0x1c, data, 1); + i2c_write(JADDR, JSUB_SATURATION, data, 1); i2c_async(i2c_hold); /* hold I2C when done */ } else if(strcmp(input, "rel") == 0) { @@ -362,7 +362,7 @@ static void proc_cmd(char *input) i2c_release(); } else if(strcmp(input, "status") == 0) { - i2c_read(0x8a, 0, data, 3); + i2c_read(JADDR, JSUB_STAT0, data, 3); i2c_async(printstat); } else if(memcmp(input, "rd ", 3) == 0) {