Subversion Repositories HomeAutomation

Rev

Rev 332 | Blame | Last modification | View Log | SVN | RSS feed

  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.  * --------------------------------------------------*/
  12. #include <stdio.h>
  13. #include <clcd20x4.h>
  14. #include <lcd_HD44780.h>
  15. #include <avr/interrupt.h>
  16.  
  17. /*-----------------------------------------------------
  18.  * Functions
  19.  * --------------------------------------------------*/
  20.  
  21. /*
  22.  * Prints "view" to LCD
  23.  */
  24. void printLCDview(uint8_t view){
  25.     uint8_t line;
  26.     uint8_t buffer[ MAX_LENGTH ];
  27.     lcd_clrscr();
  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.  
  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 ];
  59.  
  60.     if( view==MAIN_VIEW ){
  61.         /* No data */
  62.     }else if( view==TEMPSENS_VIEW ){
  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.             }
  70.             lcd_gotoxy(dataPos[m][0],dataPos[m][1]);
  71.             lcd_puts(buffer);
  72.         }
  73.     }else if( view==RELAYS_VIEW ){
  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.         }
  80.     }else if( view==DIMMERS_VIEW ){
  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.         }
  92.     }else{
  93.         /* Do nothing */
  94.         return;
  95.     }
  96. }
  97.  
  98. void printLCDedit(uint8_t view){
  99.  
  100. }
  101.