Dependents:   IF-SmartClock

DigitakClock.cpp

Committer:
takashikojo
Date:
2015-06-25
Revision:
0:ae969dd370ab
Child:
1:3c9a2c4733fa

File content as of revision 0:ae969dd370ab:

#include "mbed.h"
#include "DigitalClock.h"
#if 0
FourDigitLED led(                          
    /* Segment 0 - 6, Dot */ D11,D6, D3, D1, D0, D10,D4, D2 , 
    /* Digit 1 - 4        */ D5, D7, D9, D12 
) ;
#endif
DigitalClock::DigitalClock (PinName seg0, PinName seg1, PinName seg2, PinName seg3, 
    PinName seg4, PinName seg5, PinName seg6, PinName dot, 
    PinName digit0, PinName digit1, PinName digit2, PinName digit3
) : 
    FourDigitLED(seg0, seg1, seg2, seg3, seg4, seg5, seg6, dot, digit0, digit1, digit2, digit3)
{
    maxHour = 24 ;
} ;

DigitalClock::~DigitalClock(void){ } ;

void DigitalClock::start(void) {
    Second.attach(this, &DigitalClock::flashLED, 1.0) ;
}

void DigitalClock::stop(void) {
    Second.detach() ;
}

bool DigitalClock::setLED(int h, int m) {
    if(((h >= 0)&&(h<maxHour)) && ((m >= 0)&&(m<60))){
        setNum(3, h/10) ;   
        setNum(2, h%10) ;
        setNum(1, m/10) ;
        setNum(0, m%10) ;
        return true ;
    }
    return false ;
}

void DigitalClock::flashLED(void) {
        #define JST (9*60*60)
        struct tm local;
        time_t ctTime;
        ctTime = time(NULL) + JST ;
        local  = *localtime(&ctTime);
        setLED(local.tm_hour, local.tm_min) ;   
}

int DigitalClock::setNum(int d, int n){
    return FourDigitLED::setNum(d, n) ;
}

int DigitalClock::setDot(int d, bool n){
    return FourDigitLED::setDot(d, n) ;
}