Subversion Repositories HomeAutomation

Rev

Rev 1356 | Rev 1721 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1356 Rev 1427
Line 4... Line 4...
4
uint8_t Command = 0;
4
uint8_t Command = 0;
-
 
5
#if act_hd44780_USE_AUTO_BL == 1
-
 
6
uint8_t autoMode = CAN_MODULE_ENUM_HD44789_LCD_BACKLIGHT_AUTOLIGHT_ON;
5
 
7
#endif
6
void act_hd44780_Init(void)
8
void act_hd44780_Init(void)
7
{
9
{
8
    ///FIXME: What is this, this needs to be more clear by far....
10
    ///FIXME: What is this, this needs to be more clear by far....
9
 
11
 
10
    // Contrast (brightness on an oled display)
12
    // Contrast (brightness on an oled display)
Line 26... Line 28...
26
    lcd_puts("HomeAutomation\n");
28
    lcd_puts("HomeAutomation\n");
27
    lcd_puts("HD44780-module\n");
29
    lcd_puts("HD44780-module\n");
28
}
30
}
29
 
31
 
30
void act_hd44780_Process(void)
32
void act_hd44780_Process(void)
31
{
33
{
-
 
34
  #if act_hd44780_USE_AUTO_BL == 1
-
 
35
    if (autoMode == CAN_MODULE_ENUM_HD44789_LCD_BACKLIGHT_AUTOLIGHT_ON) {
-
 
36
#if (act_hd44780_TYPE==0)
-
 
37
        if ( OCR0A == 0) {
-
 
38
#else
-
 
39
        if ( OCR0B == 0) {
-
 
40
#endif
-
 
41
 
-
 
42
        } else {
-
 
43
            uint16_t Voltage = (0x3ff & ADC_Get(act_hd44780_LIGHTSENSOR_AD));
-
 
44
#if (act_hd44780_TYPE==0)
-
 
45
            OCR0A = Voltage/4;
-
 
46
            if (OCR0A == 0) {
-
 
47
                OCR0A = 1;
-
 
48
            }
-
 
49
#else
-
 
50
            OCR0B = Voltage/4;
-
 
51
            if (OCR0B == 0) {
-
 
52
                OCR0B = 1;
-
 
53
            }
-
 
54
#endif
-
 
55
        }
-
 
56
    }
-
 
57
    #endif
32
}
58
}
33
 
59
 
34
void act_hd44780_HandleMessage(StdCan_Msg_t *rxMsg)
60
void act_hd44780_HandleMessage(StdCan_Msg_t *rxMsg)
35
{
61
{
36
    StdCan_Msg_t txMsg;
62
    StdCan_Msg_t txMsg;
37
    uint8_t n = 0;
63
    uint8_t n = 0;
Line 52... Line 78...
52
        break;
78
        break;
53
 
79
 
54
        case CAN_MODULE_CMD_HD44789_LCD_TEXTAT:
80
        case CAN_MODULE_CMD_HD44789_LCD_TEXTAT:
55
        lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]);
81
        lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]);
56
        for (n = 2; n < rxMsg->Length; n++)
82
        for (n = 2; n < rxMsg->Length; n++)
57
        {
83
        {
58
            lcd_putc((char)rxMsg->Data[n]);
84
            lcd_putc((char)rxMsg->Data[n]);
59
        }
85
        }
60
        break;
86
        break;
61
/*
87
/*
62
        case CAN_MODULE_CMD_HD44789_LCD_CLEARROW:
88
        case CAN_MODULE_CMD_HD44789_LCD_CLEARROW:
63
        lcd_gotoxy(0, rxMsg->Data[0]);
89
        lcd_gotoxy(0, rxMsg->Data[0]);
64
        for (n = 0; n < act_hd44780_WIDTH; n++)
90
        for (n = 0; n < act_hd44780_WIDTH; n++)
Line 81... Line 107...
81
        txMsg.Header.ModuleId = act_hd44780_ID;
107
        txMsg.Header.ModuleId = act_hd44780_ID;
82
        txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_SIZE;
108
        txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_SIZE;
83
        txMsg.Length = 2;
109
        txMsg.Length = 2;
84
 
110
 
85
        txMsg.Data[0] = act_hd44780_WIDTH;
111
        txMsg.Data[0] = act_hd44780_WIDTH;
86
        txMsg.Data[1] = act_hd44780_HEIGHT;
112
        txMsg.Data[1] = act_hd44780_HEIGHT;
87
 
113
 
88
        while (StdCan_Put(&txMsg) != StdCan_Ret_OK);
114
        while (StdCan_Put(&txMsg) != StdCan_Ret_OK);
89
        break;
115
        break;
90
 
116
 
91
        case CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT:
117
        case CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT:
92
        if (rxMsg->Length > 0) {
118
        if (rxMsg->Length > 0) {
93
#if (act_hd44780_TYPE==0)
119
#if (act_hd44780_TYPE==0)
94
            OCR0A = rxMsg->Data[0];
120
            OCR0A = rxMsg->Data[0];
95
#else
121
#else
96
            OCR0B = rxMsg->Data[0];
122
            OCR0B = rxMsg->Data[0];
-
 
123
#endif
-
 
124
#if act_hd44780_USE_AUTO_BL == 1
-
 
125
            if (rxMsg->Length == 2) {
-
 
126
                autoMode = rxMsg->Data[0];
-
 
127
            }
97
#endif
128
#endif
98
        }
129
        }
99
 
130
 
100
        StdCan_Msg_t txMsg;
131
        StdCan_Msg_t txMsg;
101
 
132
 
102
        StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT);
133
        StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT);
103
        StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER);
134
        StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER);
104
        txMsg.Header.ModuleType = CAN_MODULE_TYPE_ACT_HD44789;
135
        txMsg.Header.ModuleType = CAN_MODULE_TYPE_ACT_HD44789;
105
        txMsg.Header.ModuleId = act_hd44780_ID;
136
        txMsg.Header.ModuleId = act_hd44780_ID;
106
        txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT;
137
        txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT;
Line 109... Line 140...
109
#if (act_hd44780_TYPE==0)
140
#if (act_hd44780_TYPE==0)
110
            txMsg.Data[0] = OCR0A;
141
            txMsg.Data[0] = OCR0A;
111
#else
142
#else
112
            txMsg.Data[0] = OCR0B;
143
            txMsg.Data[0] = OCR0B;
113
#endif
144
#endif
-
 
145
#if act_hd44780_USE_AUTO_BL == 1
-
 
146
        txMsg.Data[1] = autoMode;
-
 
147
        txMsg.Length = 2;
114
 
148
#endif
115
        while (StdCan_Put(&txMsg) != StdCan_Ret_OK);
149
        while (StdCan_Put(&txMsg) != StdCan_Ret_OK);
116
        break;
150
        break;
117
        }
151
        }
118
    }
152
    }
119
}
153
}