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>
193 eqlazer 15
 
196 eqlazer 16
/*-----------------------------------------------------
17
 * Functions
18
 * --------------------------------------------------*/
19
 
193 eqlazer 20
/*
21
 * Prints "view" to LCD
22
 */
23
void printLCDview(uint8_t view){
24
    uint8_t line;
25
    uint8_t buffer[ MAX_LENGTH ];
196 eqlazer 26
    lcd_clrscr();
193 eqlazer 27
 
28
    view = view*5;
29
 
30
    /* Print first 3 lines */
31
    for(line = 0; line < LINES-1; line++ ){
32
        lcd_gotoxy(0,line);
33
        lcd_puts( viewStrings[ view+line ] );
34
    }
35
 
36
    /* Print bottom line */
37
    lcd_gotoxy(0,3);
38
    snprintf( buffer, MAX_LENGTH, "<<%s", viewStrings[ view+3 ] );
39
    lcd_puts( buffer );
40
 
41
    lcd_gotoxy(9,3);
42
    lcd_puts( EDIT_MODE_SYMBOL );
43
 
44
    lcd_gotoxy(18,3);
45
    lcd_puts( ">>" );
46
 
47
    lcd_gotoxy(12,3);
48
    lcd_puts( viewStrings[ view+4 ] );
49
 
50
}
51
 
196 eqlazer 52
/*
53
 * Prints data to "view"
54
 */
55
void printLCDviewData(uint8_t view, uint8_t *data, uint8_t size){
56
    int m;
57
    char buffer[ MAX_LENGTH ];
193 eqlazer 58
 
196 eqlazer 59
    if( view==MAIN_VIEW ){
256 eqlazer 60
        /* No data */
196 eqlazer 61
    }else if( view==TEMPSENS_VIEW ){
256 eqlazer 62
        for(m=0;m<size/2;m++){
63
            if((int8_t)data[m*2]<0){
64
                /* Subsero? */
65
                snprintf(buffer, MAX_DATA_LENGTH, "-%u.%u   ", -(int8_t)data[m*2], (int8_t)(data[m*2+1]>>4)/10 );
66
            }else{
67
                snprintf(buffer, MAX_DATA_LENGTH, "%u.%u    ", data[m*2], (int8_t)(data[m*2+1]>>4)/10 );
68
            }
69
            lcd_gotoxy(dataPos[m][0],dataPos[m][1]);
70
            lcd_puts(buffer);
71
        }
196 eqlazer 72
    }else if( view==RELAYS_VIEW ){
256 eqlazer 73
        // FIXME
196 eqlazer 74
    }else if( view==DIMMERS_VIEW ){
256 eqlazer 75
        // FIXME
76
    }else if( view==SERVO_VIEW ){
77
        for(m=0;m<size;m++){
78
            if((int8_t)data[m]<0){
79
                snprintf(buffer, MAX_DATA_LENGTH, "-%u  ", -(int8_t)data[m]);
80
            }else{
81
                snprintf(buffer, MAX_DATA_LENGTH, "%u   ", data[m]);
82
            }
83
            lcd_gotoxy(dataPos[m][0], dataPos[m][1]);
84
            lcd_puts(buffer);
85
        }
196 eqlazer 86
    }else{
87
        /* Do nothing */
88
        return;
89
    }
90
 
91
 
92
 
93
 
193 eqlazer 94
}