/elec/propeller-clock

To get this branch, use:
bzr branch http://bzr.ed.am/elec/propeller-clock

« back to all changes in this revision

Viewing changes to src/modes/digital_clock_mode.cc

  • Committer: Tim Marston
  • Date: 2012-05-18 14:40:04 UTC
  • Revision ID: tim@ed.am-20120518144004-uuz2zrjmyr78wqd5
updated emacs compile command and readjusted clock shift

Show diffs side-by-side

added added

removed removed

28
28
#include "Arduino.h"
29
29
 
30
30
 
 
31
void DigitalClockMode::draw( int segment )
 
32
{
 
33
        Text::draw( 0, segment );
 
34
        Text::draw( 1, segment );
 
35
}
 
36
 
 
37
 
31
38
void DigitalClockMode::draw_reset()
32
39
{
 
40
        PString str0( Text::_messages[ 0 ], MESSAGE_LEN * 4 );
 
41
        str0.begin();
 
42
 
33
43
        switch( _flavour )
34
44
        {
35
 
        case 0: {
36
 
                        PString str0( Text::_messages[ 0 ], MESSAGE_LEN * 2 );
37
 
                        str0.format( "%d%c%02d %s", Time::get_hours() % 12,
38
 
                                        ::millis() % 1000 < 500? ':' : ' ',
39
 
                                        Time::get_minutes(),
40
 
                                        Time::get_hours() >= 12? "pm" : "am" );
41
 
                        Text::set_message_text( 0, str0 );
42
 
                }
43
 
                break;
44
 
        case 1: {
45
 
                        PString str0( Text::_messages[ 0 ], MESSAGE_LEN * 2 );
46
 
                        str0.format( "%d%s %s, %d", Time::get_day(),
47
 
                                        Time::get_day_suffix(),
48
 
                                        Time::get_month_name(), Time::get_year() );
49
 
                        Text::set_message_text( 0, str0 );
50
 
                }
51
 
                break;
52
 
        case 2: {
53
 
                        PString str0( Text::_messages[ 0 ], MESSAGE_LEN * 2 );
54
 
                        PString str1( Text::_messages[ 2 ], MESSAGE_LEN * 2 );
55
 
                        str0.format( "%d%c%02d %s", Time::get_hours() % 12,
56
 
                                        ::millis() % 1000 < 500? ':' : ' ',
57
 
                                        Time::get_minutes(),
58
 
                                        Time::get_hours() >= 12? "pm" : "am" );
59
 
                        str1.format( "%d.%02d.%d", Time::get_day(),
60
 
                                        Time::get_month(), Time::get_year() );
61
 
                        Text::set_message_text( 0, str0 );
62
 
                        Text::set_message_text( 2, str1 );
63
 
                }
 
45
        case 0:
 
46
                str0.format( "%d%c%02d %s", Time::get_hours() % 12,
 
47
                        ::millis() % 1000 < 500? ':' : '.',
 
48
                        Time::get_minutes(),
 
49
                        Time::get_hours() >= 12? "pm" : "am" );
 
50
                break;
 
51
        case 1:
 
52
                str0.format( "%d%s %s, %d", Time::get_day(),
 
53
                                Time::get_day_suffix(),
 
54
                                Time::get_month_name(), Time::get_year() );
64
55
                break;
65
56
        }
 
57
 
 
58
        Text::set_message( 0, str0 );
66
59
}
67
60
 
68
61
 
76
69
 
77
70
void DigitalClockMode::press()
78
71
{
79
 
        if( ++_flavour >= 3 )
 
72
        if( ++_flavour >= 2 )
80
73
                _flavour = 0;
81
74
 
82
75
        reset_messages();
85
78
 
86
79
void DigitalClockMode::reset_messages()
87
80
{
88
 
        Text::reset();
89
 
 
90
81
        switch( _flavour )
91
82
        {
92
83
        case 0:
93
 
                Text::set_up_message( 0, Text::MODE_TOP | Text::MODE_ALL );
 
84
                Text::reset_message( 0, Text::MODE_TOP | Text::MODE_ALL,
 
85
                                Text::SCALE_FAT);
94
86
                break;
95
87
        case 1:
96
 
                Text::set_up_message( 0, Text::MODE_HSCROLL | Text::MODE_TOP |
 
88
                Text::reset_message( 0, Text::MODE_HSCROLL | Text::MODE_TOP |
97
89
                                Text::MODE_THREEQUARTERS );
98
90
                break;
99
 
        case 2:
100
 
                Text::set_up_message( 0, Text::MODE_TOP | Text::MODE_HALF,
101
 
                                Text::SCALE_SMALL );
102
 
                Text::set_up_message( 2, Text::MODE_BOTTOM | Text::MODE_HALF,
103
 
                                Text::SCALE_SMALL );
104
 
                break;
105
91
        }
106
92
}