Dependencies:   MMA8452 N5110 PowerControl beep mbed

Files at this revision

API Documentation at this revision

Comitter:
stevenle93
Date:
Sun May 10 17:21:39 2015 +0000
Parent:
8:aebb468546c5
Commit message:
Changes: all header file are documented, changing in debounce function of all the buttons, little change with condition of putting mbed into sleep mode.;

Changed in this revision

Accel-cize.cpp Show annotated file Show diff for this revision Revisions of this file
Clock.h Show annotated file Show diff for this revision Revisions of this file
Game.h Show annotated file Show diff for this revision Revisions of this file
GameFSM.h Show annotated file Show diff for this revision Revisions of this file
Menu.h Show annotated file Show diff for this revision Revisions of this file
diff -r aebb468546c5 -r 522f9311ff4b Accel-cize.cpp
--- a/Accel-cize.cpp	Sat May 09 22:59:15 2015 +0000
+++ b/Accel-cize.cpp	Sun May 10 17:21:39 2015 +0000
@@ -1,44 +1,49 @@
+/**
+@file Accel-cize.cpp
+@brief This is a main file where the code runs.
+@brief Revision 1.0
+@author Huynh Minh Tuan Le
+@date April 2015
+*/
+
 #include "MMA8452Test.h"
 #include "GameFSM.h"
+#include "PowerControl/PowerControl.h"
 
-AnalogIn adjust(p20);
-Timer t;
-FSM program;
-Menu wel;
+AnalogIn adjust(p20); ///<A analogue-in variable for potentiometer.
+Timer t; ///<A timer object t for timing the moment to put mbed into sleep mode.
+FSM program; ///<A "program" variable declared with FSM class.
+Menu wel; ///<A "wel" variable declared with Menu class.
+Test init; ///<A "init" variable declared with Test class from MMA8452Test.h header file.
+
 int main()
 {
-    Test init;
-    init.initial();
-
-    ButtonU.rise(&BuUPress);
+    init.initial(); //A Function to initialise the Nokia 5110 screen and reading data from MMA8452.
+    
+    ButtonU.rise(&BuUPress); 
     ButtonD.rise(&BuDPress);
     ButtonA.rise(&BuAPress);
     ButtonB.rise(&BuBPress);
 
-    wel.welcome();
-    debounce.start();
+    wel.welcome(); //Run the welcome function from Menu class.
 
     while(1) {
-        lcd.setBrightness(adjust);
+        lcd.setBrightness(adjust); //Attach the screen LED brightness value to potentiometer. 
 
-        program.proact();
+        program.proact(); //Running proact function from FSM class.
 
         //////// Timer for the mbed go to sleep mode when waiting for 2 mins ////////
 
-        if ((BuAFlag==0) && (BuBFlag==0) && (BuDFlag==0) && (BuUFlag==0)) {
+        if ((BuAFlag==0) && (BuBFlag==0) && (BuDFlag==0) && (BuUFlag==0)) { //If all buttons are not pressed, start the timer t.
             t.start();
-            float time = t.read();
-            char buffer[14];
-            sprintf(buffer,"Time: %0.1f",time);
-            lcd.printString(buffer,0,5);
         }
-        if ((BuAFlag)||(BuBFlag)||(BuUFlag)||(BuDFlag)) {
+        if ((BuAFlag)||(BuBFlag)||(BuUFlag)||(BuDFlag)) { //If one of the buttons is pressed, reset timer t.
             t.reset();
         }
-        if (t.read()>10) {
-            lcd.setBrightness(0);
-            t.reset();
-            Sleep();
+        if (t.read()>10) { //If timer t greater than 10s,
+            lcd.setBrightness(0); //Set LCD brightness to zero.
+            t.stop(); //Stop timer t.
+            Sleep(); //Put mbed into sleep mode.
         }
     }
 }
diff -r aebb468546c5 -r 522f9311ff4b Clock.h
--- a/Clock.h	Sat May 09 22:59:15 2015 +0000
+++ b/Clock.h	Sun May 10 17:21:39 2015 +0000
@@ -1,7 +1,9 @@
 /**
-@ file Clock.h
-
-@ brief Header file of a count down clock containing Ticker on RTC and display time on N5110 Nokia Screen
+@file Clock.h
+@brief Header file of a count down clock containing Ticker on RTC and display time on N5110 Nokia Screen
+@brief Revision 1.0
+@author Huynh Minh Tuan Le
+@date April 2015
 */
 
 #ifndef CLOCK_H
@@ -12,25 +14,51 @@
 #include "MMA8452.h"
 #include "beep.h"
 
-Ticker timer;
-int CClock;
-DigitalOut led(p22);
-BusOut leds(LED1, LED2, LED3, LED4);
-Beep beep(p26);
+Ticker timer; ///<Ticker object for the count down clock. Called as a timer
+int CClock; ///<A variable for storing clock value in seconds.
+/**
+@namespace Flashing led.
+@brief A led to give a notification when the game is in last 10s.
+*/
+DigitalOut led(p22); ///<A variable of the flashing led. 
+/**
+@namespace Knightrunner leds. 
+*/
+BusOut leds(LED1, LED2, LED3, LED4); ///<A variable for outputing a set of four on-board leds. 
+/**
+@namespace Beep sound.
+*/
+Beep beep(p26); ///<An output analgoue signal of a piezzo buzzer.
 
-int timerFlag = 0;
+int timerFlag = 0; ///<A flag for timer ticker object.
 
-void timerExpired()
+void timerExpired() ///Function of setting flag for timer.
 {
     timerFlag = 1; //Set flag for timer of the countdown
 }
 
+///Clock Class
 class Clock
 {
 public:
+    /**
+    * The function that makes a LED flash.
+    */
     void flashLed();
+    /**
+    * The function that display LEDs on the embed.
+    */
     void knightrunner();
+    /**
+    * The count down function occur during the game.
+    * The clock start from 60s to 0s.
+    * In the last 10s of the clock, the function will flash an LED and generate alerting sound.
+    */
     void countDown();
+    /**
+    * The function that display "Time Out" message on the Nokia screen
+    * and run funtion knightrunner.
+    */
     void timeout();
 };
 
diff -r aebb468546c5 -r 522f9311ff4b Game.h
--- a/Game.h	Sat May 09 22:59:15 2015 +0000
+++ b/Game.h	Sun May 10 17:21:39 2015 +0000
@@ -1,8 +1,9 @@
 /**
 @file Game.h
-
 @brief Header file of the game rule which contain member functions, variables and functions definition
-
+@brief Revision 1.0
+@author Huynh Minh Tuan Le
+@date April 2015
 */
 
 #ifndef GAME_H
@@ -13,55 +14,57 @@
 #include "N5110.h"
 #include "Clock.h"
 
-Ticker gatimer;
-int gatimerFlag = 0;
+
+Ticker gatimer; ///< Set a ticker for the game timing
+int gatimerFlag = 0; ///< Declare game ISR flag as a integer type variable
 
 void gatimerExpired()
 {
-    gatimerFlag = 1; //Set flag for timer of the game
+    gatimerFlag = 1; ///Set flag for timer of the game
 }
 
+///Game Class
 class Game
 {
 private:
     /**
-    * @param The acceleration variable recalled from MMA8452.h
+    * The acceleration variable recalled from MMA8452.h
     */
-    Acceleration accel; // Acceleration variable declared in MMA8452 class
+    Acceleration accel; ///Acceleration variable declared in MMA8452 class
 
 public:
     /**
-    * A function that contains condition of easy mode
-    * The conditions: Threshold value of 2g - Time interval for reading data of 0.1s
+    * A function that contains condition of easy mode.
+    * The conditions: Threshold value of 2g - Time interval for reading data of 0.1s.
     */
     void easyMode();
     /**
-    * A function that contains condition of normal mode
-    * The conditions: Threshold value of 3g - Time interval for reading data of 0.2s
+    * A function that contains condition of normal mode.
+    * The conditions: Threshold value of 3g - Time interval for reading data of 0.2s.
     */
     void norMode();
     /**
-    * A functionthat contains condition of hard mode
-    * The conditions: Threshold value of 3g - Time interval for reading data of 0.4s
+    * A functionthat contains condition of hard mode.
+    * The conditions: Threshold value of 3g - Time interval for reading data of 0.4s.
     */
     void hardMode();
     /**
-    * @param A global variable to store play score.
-    * @param This score will later transfer into an array
+    * A global variable to store play score.
+    * This score will later transfer into an array.
     */
     int score;
     /**
-    * @param An array to store set of scores
-    * @param The array structure is as follow:
-    * @param Easy high score, Easy current score, Normal high score, Normal current score, Hard high score, Hard current score.
+    * An array to store set of scores.
+    * The array structure is as follow:
+    * Easy high score, Easy current score, Normal high score, Normal current score, Hard high score, Hard current score.
     */
     int scoArr[6];
     /**
-    * A function used to reset the game condition
+    * A function used to reset the game condition.
     */
     void reset();
     /**
-    * A funtion to draw a battery image when playing game
+    * A funtion to draw a battery image when playing game.
     */
     void battImag();
 };
@@ -83,11 +86,11 @@
             battImag();
         }
     }
-
-    scoArr[1] = score;
-    if(scoArr[0] > scoArr[1]) {
+    //Condition for storing "score" and transferring "score" between scoArr elements. 
+    scoArr[1] = score; //Store "score" variable into 2nd element of scoArr array
+    if(scoArr[0] > scoArr[1]) { //If 1st element is greater than 2nd element, store in 2nd element
         scoArr[1] = score;
-    } else if(scoArr[0] < scoArr[1]) {
+    } else if(scoArr[0] < scoArr[1]) { //Vice versa, store in 1st element
         scoArr[0] = score;
     }
 }
@@ -109,10 +112,11 @@
             battImag();
         }
     }
-    scoArr[3] = score;
-    if(scoArr[2] > scoArr[3]) {
+    //Condition for storing "score" and transferring "score" between scoArr elements.
+    scoArr[3] = score; //Store "score" variable into 4th element of scoArr array
+    if(scoArr[2] > scoArr[3]) { //If 3rd element is greater than 4th element, store in 4th element
         scoArr[3] = score;
-    } else if(scoArr[2] < scoArr[3]) {
+    } else if(scoArr[2] < scoArr[3]) { //Vice versa, store in 3rd element
         scoArr[2] = score;
     }
 }
@@ -134,10 +138,11 @@
             battImag();
         }
     }
-    scoArr[5] = score;
-    if(scoArr[4] > scoArr[5]) {
+    //Condition for storing "score" and transferring "score" between scoArr elements.
+    scoArr[5] = score; //Store "score" variable into 6th element of scoArr array
+    if(scoArr[4] > scoArr[5]) { //If 5th element is greater than 6th element, store in 6th element
         scoArr[5] = score;
-    } else if(scoArr[4] < scoArr[5]) {
+    } else if(scoArr[4] < scoArr[5]) { //Vice versa, store in 5th element
         scoArr[4] = score;
     }
 }
diff -r aebb468546c5 -r 522f9311ff4b GameFSM.h
--- a/GameFSM.h	Sat May 09 22:59:15 2015 +0000
+++ b/GameFSM.h	Sun May 10 17:21:39 2015 +0000
@@ -1,7 +1,13 @@
 /**
 @file GameFSM.h
-
-@brief Header file of Game's Finite stage Machine
+@brief Header file of Game's Finite Stage Machine.
+@brief This header file contains header file from Game.h, Clock.h, Menu.h, N5110.h and mbed.h.
+@brief It also has functions of setting flag for four buttons.
+@brief It shows stages of the whole programme and devided into 4 sectors and an initial stage with 
+@brief regarding Game Mode sector, High Score sector, Game Screen sector, Your Score sector and Main Menu stage.
+@brief Revision 1.0
+@author Huynh Minh Tuan Le
+@date April 2015
 */
 #ifndef GAMEFSM_H
 #define GAMEFSM_H
@@ -10,80 +16,91 @@
 #include "Clock.h"
 #include "N5110.h"
 #include "Menu.h"
-#include "PowerControl/PowerControl.h"
 #include "mbed.h"
 
-Game game;
-Clock countdown;
-Menu menu;
+
+Game game; ///<A game object declared from the Game class.
+Clock countdown; ///<A countdown object declared from the Clock class. 
+Menu menu; ///<A menu object declared from the Menu class.
+
 /**
 @namespace ButtonA
-@brief Button A of interrupting service
+@brief Button A of interrupting service.
 */
 InterruptIn ButtonA(p16);
 /**
 @namespace ButtonB
-@brief Button B of interrupting service
+@brief Button B of interrupting service.
 */
 InterruptIn ButtonB(p15);
 /**
 @namespace ButtonD
-@brief Button Down of interrupting service
+@brief Down button of interrupting service.
 */
 InterruptIn ButtonD(p24);
 /**
 @namespace ButtonU
-@brief Button Up of interrupting service
+@brief Up button of interrupting service.
 */
 InterruptIn ButtonU(p23);
 
-int BuAFlag = 0;
-int BuBFlag = 0;
-int BuDFlag = 0;
-int BuUFlag = 0;
+int BuAFlag = 0; ///<A button A flag variable.
+int BuBFlag = 0; ///<A button B flag variable.
+int BuDFlag = 0; ///<A Down button flag variable.
+int BuUFlag = 0; ///<A up button flag variable.
 
-int stage = 0;
-int substage = 0;
+int stage = 0; ///<Stage variable for Finite Stage Machine.
 
-Timer debounce;
+Timer debounce; ///<A timer object for debouncing the buttons.
 
 void BuAPress()
 {
-    if (debounce.read_ms()>300) {
-        BuAFlag = 1; //Set flag for button A
+    debounce.start(); //Start timer for debounce object.
+    if (debounce.read_ms()>200) {
+        BuAFlag = 1; ///Set flag for button A
+        debounce.stop(); //Stop timer
     }
 }
 
 void BuBPress()
 {
-    if (debounce.read_ms()>300) {
-        BuBFlag = 1; //Set flag for button B
+    debounce.start(); //Start timer for debounce object.
+    if (debounce.read_ms()>200) {
+        BuBFlag = 1; ///Set flag for button B
+        debounce.stop(); //Stop timer
     }
 }
 
 void BuDPress()
 {
-    if (debounce.read_ms()>300) {
-        BuDFlag = 1; //Set flag for button Down
+    debounce.start(); //Start timer for debounce object.
+    if (debounce.read_ms()>200) {
+        BuDFlag = 1; ///Set flag for button Down
+        debounce.stop(); //Stop timer
     }
 }
 
 void BuUPress()
 {
-    if (debounce.read_ms()>300) {
-        BuUFlag = 1; //Set flag for button Up
+    debounce.start(); //Start timer for debounce object.
+    if (debounce.read_ms()>200) {
+        BuUFlag = 1; ///Set flag for button Up
+        debounce.stop(); //Stop timer
     }
 }
 
+///Game FSM Class
 class FSM
 {
 public:
     /**
-    The function contains FSM of the whole programme
+    * The function contains FSM of the programme.
     */
     void proact();
+    /**
+    * The function that set all the buttons flag to 0. 
+    */
     void resetButton();
-    void sleepMode();
 };
 
 void FSM::resetButton()
@@ -127,7 +144,8 @@
             }
             
             break;
-
+            
+//////////HIGH SCORE SECTOR//////////
         case 2: //(Main stage 2)Sub stage 0: HIGH SCORE sector - Cursor is at Easy line
             
             menu.highscore();
@@ -248,7 +266,8 @@
             }
             
             break;
-
+            
+//////////RESET STAGE//////////
             //This case is a game condition setting case
             //Clock countdown was set to 60 seconds
             //Score was set to 0
@@ -257,7 +276,8 @@
             resetButton();
             stage = 4;
             break;
-//////////GAME MODE SECTOR/////////
+            
+//////////GAME MODE SECTOR//////////
         case 4: //(Main stage 4)Sub stage 0: GAME MODE sector - Cursor at Easy line
             
             menu.gameset();
@@ -318,10 +338,11 @@
             }
             
             break;
-
+            
+//////////GAME SCREEN SECTOR//////////
         case 7: //(Main stage 4)Sub stage 3: GAME SCREEN sector - Easy mode
             
-            timer.attach(&timerExpired,0.5);
+            timer.attach(&timerExpired,1.0);
             gatimer.attach(&gatimerExpired,0.1); //Update time for Easy mode is 0.1s
             while(CClock > 0) {
                 countdown.countDown();
@@ -339,7 +360,7 @@
 
         case 8: //(Main stage 4)Sub stage 4: GAME SCREEN sector - Normal mode
             
-            timer.attach(&timerExpired,0.5);
+            timer.attach(&timerExpired,1.0);
             gatimer.attach(&gatimerExpired,0.2); //Update time for Normal mode is 0.2s
             while(CClock > 0) {
                 countdown.countDown();
@@ -357,7 +378,7 @@
 
         case 9: //(Main stage 4)Sub stage 5: GAME SCREEN sector - Hard mode
             
-            timer.attach(&timerExpired,0.5);
+            timer.attach(&timerExpired,1.0);
             gatimer.attach(&gatimerExpired,0.4); //Update time for Hard mode is 0.4s
             while(CClock > 0) {
                 countdown.countDown();
@@ -372,7 +393,8 @@
             stage = 10; //Go to stage 10: Your score menu
 
             break;
-
+            
+//////////YOUR SCORE SECTOR//////////
         case 10: //Main stage 5: YOUR SCORE sector - Cursor at Main menu line
             
             menu.yourscore();
diff -r aebb468546c5 -r 522f9311ff4b Menu.h
--- a/Menu.h	Sat May 09 22:59:15 2015 +0000
+++ b/Menu.h	Sun May 10 17:21:39 2015 +0000
@@ -12,31 +12,32 @@
 #include "mbed.h"
 #include "N5110.h"
 
+///Menu class
 class Menu
 {
 public:
     /**
-    Welcome function
+    * Welcome function
     * @brief It shows a welcome message on screen.
     */
-    void welcome();
+    void welcome(); 
     /**
-    The first sub menu of Main menu.
-    @brief It has same factor of the Main menu which are Main menu title, Play and Score.
-    @brief It shows a cursor of circle pointing at "Play" factor.
+    * The first sub menu of Main menu.
+    * @brief It has same factor of the Main menu which are Main menu title, Play and Score.
+    * @brief It shows a cursor of circle pointing at "Play" factor.
     */
     void main();
     /**
-    The Highscore sector contains the highest score of player and the current score they have.
+    * The Highscore sector contains the highest score of player and the current score they have.
     */
     void highscore();
     /**
-    The Startgame sector contains options of game difficulty.
-    * @brief It allows player to choose which difficulty to play.
+    * The Startgame sector contains options of game difficulty.
+    * @brief It allows player to choose which difficulty level to play.
     */
     void gameset();
     /**
-    The Yourscore sector is a place showing your current score.
+    * The Yourscore sector is a place showing your current score.
     */
     void yourscore();
 };
@@ -65,9 +66,7 @@
     }
     lcd.clear();
 }
-/**
-The first sub menu of Main menu.
-*/
+
 void Menu::main()
 {
     lcd.printString("MAIN MENU",16,1);