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? */
334 eqlazer 66
                snprintf(buffer, MAX_DATA_LENGTH, "-%u.%u   ", -(int8_t)data[m*2], (int8_t)(data[m*2+1]>>4)/10 );
256 eqlazer 67
            }else{
68
                snprintf(buffer, MAX_DATA_LENGTH, "%u.%u    ", data[m*2], (int8_t)(data[m*2+1]>>4)/10 );
69
            }
70
            lcd_gotoxy(dataPos[m][0],dataPos[m][1]);
71
            lcd_puts(buffer);
72
        }
196 eqlazer 73
    }else if( view==RELAYS_VIEW ){
332 eqlazer 74
        for(m=0;m<size;m++){
75
            /* Relay status, on or off */
76
            snprintf(buffer, MAX_DATA_LENGTH, (data[m]==0x01)?"ON   ":"OFF   ");
77
            lcd_gotoxy(dataPos[m][0],dataPos[m][1]);
78
            lcd_puts(buffer);
79
        }
196 eqlazer 80
    }else if( view==DIMMERS_VIEW ){
256 eqlazer 81
        // FIXME
82
    }else if( view==SERVO_VIEW ){
83
        for(m=0;m<size;m++){
84
            if((int8_t)data[m]<0){
85
                snprintf(buffer, MAX_DATA_LENGTH, "-%u  ", -(int8_t)data[m]);
86
            }else{
87
                snprintf(buffer, MAX_DATA_LENGTH, "%u   ", data[m]);
88
            }
89
            lcd_gotoxy(dataPos[m][0], dataPos[m][1]);
90
            lcd_puts(buffer);
91
        }
196 eqlazer 92
    }else{
93
        /* Do nothing */
94
        return;
95
    }
332 eqlazer 96
}
196 eqlazer 97
 
332 eqlazer 98
void printLCDedit(uint8_t view){
196 eqlazer 99
 
193 eqlazer 100
}