Usb Device Interface, protocol, and programming homework #4 Audio Control device

Dependencies:   C12832_lcd USBDevice mbed

Committer:
jakowisp
Date:
Wed Jul 31 22:20:00 2013 +0000
Revision:
1:948ffad3284f
Parent:
0:69eb9d19fb91
Child:
3:6da430f4818a
Instructor requested publish of  HW#4
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jakowisp 0:69eb9d19fb91 1 #include "bargraph.h"
jakowisp 0:69eb9d19fb91 2 bargraph::bargraph(C12832_LCD *inlcd,int maxlevelsIn,int Xin,int Yin,int widthIn,int heightIn){
jakowisp 1:948ffad3284f 3 this->lcd=inlcd;
jakowisp 1:948ffad3284f 4 this->level=0;
jakowisp 1:948ffad3284f 5 this->lastLevel=0;
jakowisp 0:69eb9d19fb91 6 if(maxlevelsIn<=32 && maxlevelsIn >=4)
jakowisp 1:948ffad3284f 7 this->maxlevels=maxlevelsIn;
jakowisp 0:69eb9d19fb91 8 else
jakowisp 1:948ffad3284f 9 this->maxlevels=32;
jakowisp 1:948ffad3284f 10 if(Xin>=0 && Xin<=127-this->maxlevels)
jakowisp 1:948ffad3284f 11 this->x=Xin;
jakowisp 0:69eb9d19fb91 12 else
jakowisp 1:948ffad3284f 13 this->x=0;
jakowisp 1:948ffad3284f 14 if(Yin>=0 && Yin<=31-this->maxlevels)
jakowisp 1:948ffad3284f 15 this->y=Yin;
jakowisp 0:69eb9d19fb91 16 else
jakowisp 1:948ffad3284f 17 this->y=0;
jakowisp 0:69eb9d19fb91 18 if(widthIn>maxlevels && widthIn<128)
jakowisp 1:948ffad3284f 19 this->width=widthIn-1;
jakowisp 0:69eb9d19fb91 20 else
jakowisp 1:948ffad3284f 21 this->width=127;
jakowisp 0:69eb9d19fb91 22 if(heightIn>=(maxlevels-1) && heightIn<31)
jakowisp 1:948ffad3284f 23 this->height=heightIn;
jakowisp 0:69eb9d19fb91 24 else
jakowisp 1:948ffad3284f 25 this->height=31;
jakowisp 1:948ffad3284f 26 this->leveladjust=(this->height+1)/this->maxlevels;
jakowisp 1:948ffad3284f 27 this->levelwidth=(this->width+1)/this->maxlevels;
jakowisp 0:69eb9d19fb91 28 }
jakowisp 0:69eb9d19fb91 29
jakowisp 0:69eb9d19fb91 30 void bargraph::setMaxLevel(int maxlevels){
jakowisp 1:948ffad3284f 31 //TODO: need to defensive check maxlevels
jakowisp 1:948ffad3284f 32 this->lcd->fillrect(this->x, this->y, this->x+this->width,this->y+this->height, 0);
jakowisp 1:948ffad3284f 33 this->lastLevel=0;
jakowisp 1:948ffad3284f 34 this->leveladjust=(this->height+1)/maxlevels;
jakowisp 1:948ffad3284f 35 this->levelwidth=(this->width+1)/maxlevels;
jakowisp 0:69eb9d19fb91 36 }
jakowisp 0:69eb9d19fb91 37
jakowisp 0:69eb9d19fb91 38 void bargraph::setLevel(int level){
jakowisp 0:69eb9d19fb91 39 this->level=level;
jakowisp 0:69eb9d19fb91 40 }
jakowisp 0:69eb9d19fb91 41
jakowisp 0:69eb9d19fb91 42 void bargraph::updateBargraph(){
jakowisp 1:948ffad3284f 43 if(this->lcd!=NULL) {
jakowisp 1:948ffad3284f 44 if(this->level!=this->lastLevel) {
jakowisp 1:948ffad3284f 45 for(int i = 0 ; i<this->lastLevel;i++) {
jakowisp 1:948ffad3284f 46 this->lcd->fillrect(this->x+this->levelwidth*(i),
jakowisp 1:948ffad3284f 47 this->y,
jakowisp 1:948ffad3284f 48 this->x+this->levelwidth*(i+1)-1,
jakowisp 1:948ffad3284f 49 this->y+i*this->leveladjust,
jakowisp 1:948ffad3284f 50 0);
jakowisp 0:69eb9d19fb91 51 }
jakowisp 0:69eb9d19fb91 52 for(int i = 0 ; i<level;i++) {
jakowisp 1:948ffad3284f 53 this->lcd->fillrect(this->x+this->levelwidth*(i),
jakowisp 1:948ffad3284f 54 this->y,
jakowisp 1:948ffad3284f 55 this->x+this->levelwidth*(i+1)-1,
jakowisp 1:948ffad3284f 56 this->y+i*this->leveladjust,
jakowisp 1:948ffad3284f 57 1);
jakowisp 0:69eb9d19fb91 58 }
jakowisp 1:948ffad3284f 59 this->lastLevel = this->level;
jakowisp 0:69eb9d19fb91 60 }
jakowisp 0:69eb9d19fb91 61 }
jakowisp 0:69eb9d19fb91 62 };
jakowisp 0:69eb9d19fb91 63
jakowisp 0:69eb9d19fb91 64
jakowisp 0:69eb9d19fb91 65