Clock with Real-Time Clock (RTC-8564) and I2C LCD module(SB1062B).

Dependencies:   DebouncedEdgeIn I2cLCD_cursor Rtc8564 mbed beep

/media/uploads/togayan/imgp0004s.jpg /media/uploads/togayan/lcdclock_circuit_rev4.png

Revision:
5:e374481e7554
Parent:
2:6f0158399eff
--- a/ViewModel/ClockViewModel.cpp	Sun Feb 23 00:16:54 2014 +0000
+++ b/ViewModel/ClockViewModel.cpp	Fri Feb 28 14:04:16 2014 +0000
@@ -20,11 +20,13 @@
 
 const char* ClockViewModel::WEEKDAYS[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT", "ERR"};
 
-ClockViewModel::ClockViewModel(I2cLCD& i2clcd, PinName set, PinName increment, PinName decrement)
+ClockViewModel::ClockViewModel(I2cLCD& i2clcd, PinName set, PinName increment, PinName decrement, PinName beep1, PinName beep2)
     :m_i2clcd(i2clcd),
      m_set(set),
      m_increment(increment),
      m_decrement(decrement),
+     m_beep(beep1),
+     m_beepGnd(beep2),
      m_clock(0),
      m_dateTime(0),
      m_mode(Model::CLOCK)
@@ -32,7 +34,7 @@
     m_set.mode(PullUp);
     m_increment.mode(PullUp);
     m_decrement.mode(PullUp);
-    m_set.fall(this, &ClockViewModel::setButtonOn);
+    m_set.fall(this, &ClockViewModel::modeButtonOn);
     m_increment.fall(this, &ClockViewModel::incrementButtonOn);
     m_decrement.fall(this, &ClockViewModel::decrementButtonOn);
 }
@@ -100,47 +102,55 @@
     setCurSor();
 }
 
-void ClockViewModel::setButtonOn()
+void ClockViewModel::modeButtonOn()
 {
+    m_beep.beep(400, 0.05);
     m_clock->requestModeChange();
 }
 
 void ClockViewModel::incrementButtonOn()
 {
+    if(m_mode == Model::CLOCK) {
+        return;
+    }
+    m_beep.beep(400, 0.05);
     m_clock->requestIncrementValue();
 }
 
 void ClockViewModel::decrementButtonOn()
 {
+    if(m_mode == Model::CLOCK) {
+        return;
+    }
+    m_beep.beep(400, 0.05);
     m_clock->requestDecrementValue();
 }
 
 void ClockViewModel::setCurSor()
 {
-    switch(m_mode)
-    {
-    case Model::CLOCK:
-        m_i2clcd.cursor(false, 0, 0);
-        break;
-    case Model::SET_YEAR:
-        m_i2clcd.cursor(true, 4, 0);
-        break;
-    case Model::SET_MONTH:
-        m_i2clcd.cursor(true, 7, 0);
-        break;
-    case Model::SET_DAY:
-        m_i2clcd.cursor(true, 10, 0);
-        break;
-    case Model::SET_HOUR:
-        m_i2clcd.cursor(true, 3, 1);
-        break;
-    case Model::SET_MINUTE:
-        m_i2clcd.cursor(true, 8, 1);
-        break;
-    case Model::SET_SECOND:
-        m_i2clcd.cursor(true, 13, 1);
-        break;
-    default:
-        break;
+    switch(m_mode) {
+        case Model::CLOCK:
+            m_i2clcd.cursor(false, 0, 0);
+            break;
+        case Model::SET_YEAR:
+            m_i2clcd.cursor(true, 4, 0);
+            break;
+        case Model::SET_MONTH:
+            m_i2clcd.cursor(true, 7, 0);
+            break;
+        case Model::SET_DAY:
+            m_i2clcd.cursor(true, 10, 0);
+            break;
+        case Model::SET_HOUR:
+            m_i2clcd.cursor(true, 3, 1);
+            break;
+        case Model::SET_MINUTE:
+            m_i2clcd.cursor(true, 8, 1);
+            break;
+        case Model::SET_SECOND:
+            m_i2clcd.cursor(true, 13, 1);
+            break;
+        default:
+            break;
     }
 }