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

Dependencies:   C12832_lcd USBDevice mbed

Revision:
0:69eb9d19fb91
Child:
1:948ffad3284f
diff -r 000000000000 -r 69eb9d19fb91 MyDisplayClass.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MyDisplayClass.cpp	Tue Jul 30 22:35:10 2013 +0000
@@ -0,0 +1,74 @@
+#include "MyDisplayClass.h"
+
+MyDisplayClass::MyDisplayClass(){
+   lcd=new C12832_LCD();
+   volume=new bargraph(lcd,32);
+}
+
+void MyDisplayClass::drawNoConnection(C12832_LCD *lcd) {
+     lcd->fillrect(0, 31, 15,16, 0);
+     lcd->rect(0, 31, 15,16, 1);
+     lcd->line(2,29,13,18,1);
+     lcd->circle(7,24,4,1);
+}
+
+void MyDisplayClass::drawConnection(C12832_LCD *lcd) {
+     lcd->fillrect(0, 31, 15,16, 0);
+     lcd->rect(0, 31, 15,16, 1);
+     lcd->rect(5,26,10,21,1);
+     lcd->line(6,23,7,25,1);
+     lcd->line(7,25,14,17,1);
+}
+
+void MyDisplayClass::drawSuspend(C12832_LCD *lcd) {
+     lcd->fillrect(0, 31, 15,16, 0);
+     lcd->rect(0, 31, 15,16, 1);
+     lcd->line(4,20,11,20,1);
+     lcd->line(4,27,11,20,1);
+     lcd->line(4,27,11,27,1);
+}
+
+void MyDisplayClass::setLevel(int level){
+      volume->setLevel(level);
+   }
+   
+void MyDisplayClass::setMaxLevel(int level){
+      volume->setMaxLevel(level);
+   }
+
+void MyDisplayClass::UpdateStatus(int state){
+    switch(state) {
+       case 2:  drawSuspend(lcd); break;
+       case 3:  drawConnection(lcd); break;
+      default:  drawNoConnection(lcd); break;
+      }
+}
+
+void MyDisplayClass::UpdateTextStatus(int state){
+   
+       lcd->locate(3,12);
+       lcd->printf("         ");
+       lcd->locate(3,12);
+        switch(state) {
+           case 2:  lcd->printf("Suspended"); break;
+           case 3:  lcd->printf("Normal"); break;
+          default:  lcd->printf("Offline"); break;
+          }
+
+}
+
+void MyDisplayClass::update(int state,int features){
+      if((features&0x1) == 0x1)
+         if((features&0x2) == 0x2) {
+           volume->updateBargraph();
+         } else {
+           lcd->locate(3,3);
+           lcd->printf("Volume: %2d",volume->level); 
+         } 
+  
+        if((features&0x2) == 0x2)  
+           UpdateStatus(state);
+        else
+           UpdateTextStatus(state);
+}
+