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

Dependencies:   C12832_lcd USBDevice mbed

Committer:
jakowisp
Date:
Mon Aug 05 02:02:58 2013 +0000
Revision:
3:6da430f4818a
Parent:
1:948ffad3284f
Fixed several known issues to complete the assignment

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jakowisp 0:69eb9d19fb91 1 #include "bargraph.h"
jakowisp 3:6da430f4818a 2 /*
jakowisp 3:6da430f4818a 3 * Constructor
jakowisp 3:6da430f4818a 4 */
jakowisp 0:69eb9d19fb91 5 bargraph::bargraph(C12832_LCD *inlcd,int maxlevelsIn,int Xin,int Yin,int widthIn,int heightIn){
jakowisp 1:948ffad3284f 6 this->lcd=inlcd;
jakowisp 1:948ffad3284f 7 this->level=0;
jakowisp 1:948ffad3284f 8 this->lastLevel=0;
jakowisp 3:6da430f4818a 9 //Make sure maxlevel is a valid level
jakowisp 0:69eb9d19fb91 10 if(maxlevelsIn<=32 && maxlevelsIn >=4)
jakowisp 1:948ffad3284f 11 this->maxlevels=maxlevelsIn;
jakowisp 0:69eb9d19fb91 12 else
jakowisp 1:948ffad3284f 13 this->maxlevels=32;
jakowisp 3:6da430f4818a 14 //make sure all initial values for size and location are valid
jakowisp 1:948ffad3284f 15 if(Xin>=0 && Xin<=127-this->maxlevels)
jakowisp 1:948ffad3284f 16 this->x=Xin;
jakowisp 0:69eb9d19fb91 17 else
jakowisp 1:948ffad3284f 18 this->x=0;
jakowisp 1:948ffad3284f 19 if(Yin>=0 && Yin<=31-this->maxlevels)
jakowisp 1:948ffad3284f 20 this->y=Yin;
jakowisp 0:69eb9d19fb91 21 else
jakowisp 1:948ffad3284f 22 this->y=0;
jakowisp 0:69eb9d19fb91 23 if(widthIn>maxlevels && widthIn<128)
jakowisp 1:948ffad3284f 24 this->width=widthIn-1;
jakowisp 0:69eb9d19fb91 25 else
jakowisp 1:948ffad3284f 26 this->width=127;
jakowisp 0:69eb9d19fb91 27 if(heightIn>=(maxlevels-1) && heightIn<31)
jakowisp 1:948ffad3284f 28 this->height=heightIn;
jakowisp 0:69eb9d19fb91 29 else
jakowisp 1:948ffad3284f 30 this->height=31;
jakowisp 3:6da430f4818a 31 //calculate how wide and tall each bar shall be.
jakowisp 1:948ffad3284f 32 this->leveladjust=(this->height+1)/this->maxlevels;
jakowisp 1:948ffad3284f 33 this->levelwidth=(this->width+1)/this->maxlevels;
jakowisp 0:69eb9d19fb91 34 }
jakowisp 0:69eb9d19fb91 35
jakowisp 3:6da430f4818a 36 void bargraph::setMaxLevel(unsigned int maxlevelsIn) {
jakowisp 3:6da430f4818a 37 //Defensively set maxlevels to a new format level and clear the level/lastlevel values.
jakowisp 3:6da430f4818a 38 if(maxlevelsIn<=32 && maxlevelsIn >=4)
jakowisp 3:6da430f4818a 39 this->maxlevels=maxlevels;
jakowisp 3:6da430f4818a 40 else
jakowisp 3:6da430f4818a 41 this->maxlevels=32;
jakowisp 1:948ffad3284f 42 this->lcd->fillrect(this->x, this->y, this->x+this->width,this->y+this->height, 0);
jakowisp 3:6da430f4818a 43 this->lastLevel=0;
jakowisp 3:6da430f4818a 44 this->level=0;
jakowisp 1:948ffad3284f 45 this->leveladjust=(this->height+1)/maxlevels;
jakowisp 1:948ffad3284f 46 this->levelwidth=(this->width+1)/maxlevels;
jakowisp 0:69eb9d19fb91 47 }
jakowisp 0:69eb9d19fb91 48
jakowisp 3:6da430f4818a 49 void bargraph::setLevel(unsigned int level){
jakowisp 3:6da430f4818a 50 //Set level to a normalized value relative to maxlevels
jakowisp 3:6da430f4818a 51 this->level=(this->maxlevels * level)/0xff;
jakowisp 0:69eb9d19fb91 52 }
jakowisp 0:69eb9d19fb91 53
jakowisp 0:69eb9d19fb91 54 void bargraph::updateBargraph(){
jakowisp 3:6da430f4818a 55 //Erase than draw the bars for the graph.
jakowisp 1:948ffad3284f 56 if(this->lcd!=NULL) {
jakowisp 1:948ffad3284f 57 if(this->level!=this->lastLevel) {
jakowisp 1:948ffad3284f 58 for(int i = 0 ; i<this->lastLevel;i++) {
jakowisp 1:948ffad3284f 59 this->lcd->fillrect(this->x+this->levelwidth*(i),
jakowisp 1:948ffad3284f 60 this->y,
jakowisp 1:948ffad3284f 61 this->x+this->levelwidth*(i+1)-1,
jakowisp 1:948ffad3284f 62 this->y+i*this->leveladjust,
jakowisp 1:948ffad3284f 63 0);
jakowisp 0:69eb9d19fb91 64 }
jakowisp 3:6da430f4818a 65 if (this->level > this->maxlevels)
jakowisp 3:6da430f4818a 66 this->level=this->maxlevels;
jakowisp 0:69eb9d19fb91 67 for(int i = 0 ; i<level;i++) {
jakowisp 1:948ffad3284f 68 this->lcd->fillrect(this->x+this->levelwidth*(i),
jakowisp 1:948ffad3284f 69 this->y,
jakowisp 1:948ffad3284f 70 this->x+this->levelwidth*(i+1)-1,
jakowisp 1:948ffad3284f 71 this->y+i*this->leveladjust,
jakowisp 1:948ffad3284f 72 1);
jakowisp 0:69eb9d19fb91 73 }
jakowisp 1:948ffad3284f 74 this->lastLevel = this->level;
jakowisp 0:69eb9d19fb91 75 }
jakowisp 0:69eb9d19fb91 76 }
jakowisp 0:69eb9d19fb91 77 };
jakowisp 0:69eb9d19fb91 78
jakowisp 0:69eb9d19fb91 79
jakowisp 0:69eb9d19fb91 80