minor cleanup
[tv_i2c_hack] / src / main.c
index a3f30c8..49ffacc 100644 (file)
@@ -6,6 +6,7 @@
 #include <util/delay.h>
 #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) {