bachelorproef

Dependencies:   mbed C12832

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers menu.cpp Source File

menu.cpp

00001 #include "menu.h"
00002 #include "tcp.h"
00003 #include "lcd.h"
00004 #include "platform/mbed_thread.h"
00005 
00006 Interrupt newinterrupt(A2,A3,A4,A5,D4);
00007 LCD newlcd;  
00008 TCP tcp;
00009 Menu::Menu (){
00010     lastnumberIP = 101;
00011     frequency = 98;
00012     length = 120;
00013     i = 1;
00014     count = 0;
00015 }
00016 
00017 void Menu::beginmenu () {
00018     if ( newinterrupt.flagRight ==  true && i < 4) {
00019     i++;
00020     newinterrupt.flagRight = false;
00021     }
00022     if ( newinterrupt.flagLeft == true && i > 1) {
00023     i--;
00024     newinterrupt.flagLeft = false;
00025     }
00026     newlcd.printstart();
00027     
00028     switch (i) {
00029         case 1:
00030         newlcd.printrectsend();
00031         if (newinterrupt.flagEnter == true) {
00032            newinterrupt.nextScreen++;
00033            newinterrupt.flagEnter = false;
00034         }
00035         break;
00036         
00037         case 2:
00038         newlcd.printrectreceive();
00039         if (newinterrupt.flagEnter == true) {
00040            newinterrupt.flagEnter = false;
00041            receivepacket();
00042         }
00043         break;
00044         
00045         case 3:
00046         newlcd.printrectstatus();
00047         break;         
00048     }
00049 }
00050 
00051 void Menu::receivepacket() {
00052     newlcd.receivepacket();
00053     tcp.receive();
00054     newlcd.receivepacketconfirmed(tcp.buffer);
00055 }
00056 void Menu::sendpacket() {
00057         newlcd.sendpacket();
00058         tcp.send(lastnumberIP);
00059         newlcd.sendpacketconfirmed();
00060         thread_sleep_for(3.0);
00061         newinterrupt.nextScreen = 0;
00062 }
00063 
00064 void Menu::enter() {
00065     if (newinterrupt.flagEnter == true) {
00066         newinterrupt.flagEnter = false;
00067         newinterrupt.nextScreen++;
00068         }
00069 }
00070 
00071 void Menu::back() {
00072     if (newinterrupt.flagEnter == true) {
00073         newinterrupt.flagEnter = false;
00074         newinterrupt.nextScreen--;
00075         }    
00076 }
00077 
00078 void Menu::selectIP() {
00079     if ( newinterrupt.flagLeft == true && lastnumberIP < 121) {
00080         lastnumberIP++;
00081         newinterrupt.flagLeft = false;
00082         }
00083     if ( newinterrupt.flagRight == true&& lastnumberIP > 101) {
00084         lastnumberIP--;
00085         newinterrupt.flagRight = false;
00086         }
00087     newlcd.printIP(lastnumberIP);
00088     
00089     if (newinterrupt.flagEnter == true) {
00090         newinterrupt.flagEnter = false;
00091         newinterrupt.nextScreen++;
00092     }
00093 }
00094 
00095 void Menu::selectfrequency () {
00096     if (newinterrupt.flagLeft == true && frequency < 130) {
00097         frequency++;
00098         newinterrupt.flagLeft = false;
00099         }
00100     if (newinterrupt.flagRight == true && frequency > 98) {
00101         frequency--;
00102         newinterrupt.flagRight = false;
00103         }
00104 
00105     newlcd.printfreq(frequency);
00106     
00107     if (newinterrupt.flagEnter == true) {
00108     newinterrupt.flagEnter = false;
00109     newinterrupt.nextScreen++;
00110     }
00111 }
00112 void Menu::selectlength() {
00113     if (newinterrupt.flagLeft == true && length < 480) {
00114         length = length + 20;
00115         newinterrupt.flagLeft = false;
00116         }
00117     if (newinterrupt.flagRight == true && length > 120) {
00118         length = length - 20;
00119         newinterrupt.flagRight = false;
00120         }
00121     newlcd.printlength(length);
00122     
00123     if (newinterrupt.flagEnter == true) {
00124     newinterrupt.flagEnter = false;
00125     newinterrupt.nextScreen++;
00126     }
00127 }
00128 void Menu::updateLCD () {
00129 
00130     switch (newinterrupt.currentScreen){
00131         case 0:
00132         beginmenu();
00133         break;
00134         case 1:
00135         selectIP();
00136         break;
00137         case 2:
00138         selectfrequency();
00139         break;
00140         case 3:
00141         selectlength();
00142         break;
00143         case 4:
00144         sendpacket();
00145         break;
00146     }
00147 }
00148 
00149 void Menu::screen () {
00150     if (newinterrupt.currentScreen != newinterrupt.nextScreen) {
00151         newinterrupt.currentScreen = newinterrupt.nextScreen;
00152         updateLCD();
00153     }
00154     if (newinterrupt.flagLeft || newinterrupt.flagRight || newinterrupt.flagEnter) {
00155         newinterrupt.currentScreen = newinterrupt.nextScreen;
00156         updateLCD();
00157     }
00158 }
00159