Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
196 eqlazer 1
/*
2
 * Library for printing views on a 20x4 characters LCD
3
 *
4
 * Author: Erik Larsson
5
 * Date: 2006-12-30
6
 *
7
 */
8
 
9
/*-----------------------------------------------------
10
 * Includes
11
 * --------------------------------------------------*/
193 eqlazer 12
#include <stdio.h>
13
#include <clcd20x4.h>
196 eqlazer 14
#include <lcd_HD44780.h>
332 eqlazer 15
#include <avr/interrupt.h>
193 eqlazer 16
 
196 eqlazer 17
/*-----------------------------------------------------
18
 * Functions
19
 * --------------------------------------------------*/
20
 
193 eqlazer 21
/*
22
 * Prints "view" to LCD
23
 */
24
void printLCDview(uint8_t view){
25
    uint8_t line;
26
    uint8_t buffer[ MAX_LENGTH ];
196 eqlazer 27
    lcd_clrscr();
193 eqlazer 28
 
29
    view = view*5;
30
 
31
    /* Print first 3 lines */
32
    for(line = 0; line < LINES-1; line++ ){
33
        lcd_gotoxy(0,line);
34
        lcd_puts( viewStrings[ view+line ] );
35
    }
36
 
37
    /* Print bottom line */
38
    lcd_gotoxy(0,3);
39
    snprintf( buffer, MAX_LENGTH, "<<%s", viewStrings[ view+3 ] );
40
    lcd_puts( buffer );
41
 
42
    lcd_gotoxy(9,3);
43
    lcd_puts( EDIT_MODE_SYMBOL );
44
 
45
    lcd_gotoxy(18,3);
46
    lcd_puts( ">>" );
47
 
48
    lcd_gotoxy(12,3);
49
    lcd_puts( viewStrings[ view+4 ] );
50
 
51
}
52
 
196 eqlazer 53
/*
54
 * Prints data to "view"
55
 */
56
void printLCDviewData(uint8_t view, uint8_t *data, uint8_t size){
57
    int m;
58
    char buffer[ MAX_LENGTH ];
193 eqlazer 59
 
196 eqlazer 60
    if( view==MAIN_VIEW ){
256 eqlazer 61
        /* No data */
196 eqlazer 62
    }else if( view==TEMPSENS_VIEW ){
256 eqlazer 63
        for(m=0;m<size/2;m++){
64
            if((int8_t)data[m*2]<0){
65
                /* Subsero? */
66
                snprintf(buffer, MAX_DATA_LENGTH, "-%u.%u   ", -(int8_t)data[m*2], (int8_t)(data[m*2+1]>>4)/10 );
67
            }else{
68
                snprintf(buffer, MAX_DATA_LENGTH, "%u.%u    ", data[m*2], (int8_t)(data[m*2+1]>>4)/10 );
69
            }
332 eqlazer 70
            cli();
256 eqlazer 71
            lcd_gotoxy(dataPos[m][0],dataPos[m][1]);
72
            lcd_puts(buffer);
332 eqlazer 73
            sei();
256 eqlazer 74
        }
196 eqlazer 75
    }else if( view==RELAYS_VIEW ){
332 eqlazer 76
        for(m=0;m<size;m++){
77
            /* Relay status, on or off */
78
            snprintf(buffer, MAX_DATA_LENGTH, (data[m]==0x01)?"ON   ":"OFF   ");
79
            lcd_gotoxy(dataPos[m][0],dataPos[m][1]);
80
            lcd_puts(buffer);
81
        }
196 eqlazer 82
    }else if( view==DIMMERS_VIEW ){
256 eqlazer 83
        // FIXME
84
    }else if( view==SERVO_VIEW ){
85
        for(m=0;m<size;m++){
86
            if((int8_t)data[m]<0){
87
                snprintf(buffer, MAX_DATA_LENGTH, "-%u  ", -(int8_t)data[m]);
88
            }else{
89
                snprintf(buffer, MAX_DATA_LENGTH, "%u   ", data[m]);
90
            }
91
            lcd_gotoxy(dataPos[m][0], dataPos[m][1]);
92
            lcd_puts(buffer);
93
        }
196 eqlazer 94
    }else{
95
        /* Do nothing */
96
        return;
97
    }
332 eqlazer 98
}
196 eqlazer 99
 
332 eqlazer 100
void printLCDedit(uint8_t view){
196 eqlazer 101
 
193 eqlazer 102
}