/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/propeller-clock.cc

  • Committer: Tim Marston
  • Date: 2012-03-21 21:24:17 UTC
  • Revision ID: tim@ed.am-20120321212417-dnba5l1oheddeyxw
fixed time centring and display in settings mode

Show diffs side-by-side

added added

removed removed

79
79
#include "button.h"
80
80
#include "time.h"
81
81
#include "Arduino.h"
82
 
#include "modes/analogue_clock.h"
83
 
#include "modes/digital_clock.h"
84
 
#include "modes/test_pattern.h"
85
 
#include "modes/settings_mode.h"
86
 
#include "modes/info_mode.h"
 
82
#include "analogue_clock.h"
 
83
#include "digital_clock.h"
 
84
#include "test_pattern.h"
 
85
#include "settings_mode.h"
87
86
#include "text.h"
88
87
#include "text_renderer.h"
89
88
#include "common.h"
119
118
#define ANALOGUE_CLOCK_IDX 0
120
119
#define DIGITAL_CLOCK_IDX 1
121
120
#define TEST_PATTERN_IDX 2
122
 
#define INFO_MODE_IDX 3
123
121
 
124
122
//_____________________________________________________________________________
125
123
//                                                                         code
136
134
        switch( _minor_mode ) {
137
135
        case ANALOGUE_CLOCK_IDX: analogue_clock_activate(); break;
138
136
        case DIGITAL_CLOCK_IDX: digital_clock_activate(); break;
139
 
        case INFO_MODE_IDX: info_mode_activate(); break;
140
137
        }
141
138
}
142
139
 
148
145
        Text::reset();
149
146
        leds_off();
150
147
 
151
 
        // reset buttons
152
 
        _button.set_press_mode( _major_mode != SETTINGS_MODE_IDX );
153
 
 
154
148
        // give the mode a chance to init
155
149
        switch( _major_mode ) {
156
150
        case MAIN_MODE_IDX: activate_minor_mode(); break;
174
168
                                switch( _minor_mode ) {
175
169
                                case ANALOGUE_CLOCK_IDX: analogue_clock_press(); break;
176
170
                                case DIGITAL_CLOCK_IDX: digital_clock_press(); break;
177
 
                                case INFO_MODE_IDX: info_mode_press(); break;
178
171
                                }
179
172
                                break;
180
173
                        case SETTINGS_MODE_IDX: settings_mode_press(); break;
226
219
                        switch( _minor_mode ) {
227
220
                        case ANALOGUE_CLOCK_IDX: analogue_clock_draw_reset(); break;
228
221
                        case DIGITAL_CLOCK_IDX: digital_clock_draw_reset(); break;
229
 
                        case INFO_MODE_IDX: info_mode_draw_reset(); break;
230
222
                        }
231
223
                        break;
232
224
                case SETTINGS_MODE_IDX: settings_mode_draw_reset(); break;
243
235
                case ANALOGUE_CLOCK_IDX: analogue_clock_draw( segment ); break;
244
236
                case DIGITAL_CLOCK_IDX: digital_clock_draw( segment ); break;
245
237
                case TEST_PATTERN_IDX: test_pattern_draw( segment ); break;
246
 
                case INFO_MODE_IDX: info_mode_draw( segment ); break;
247
238
                }
248
239
                break;
249
240
        case SETTINGS_MODE_IDX: settings_mode_draw( segment ); break;
304
295
}
305
296
 
306
297
 
307
 
// ISR to handle the pulses from the fan's tachometer
 
298
// ISR to handle the pulses from the fan's tachiometer
308
299
void fan_pulse_handler()
309
300
{
310
301
        // the fan actually sends two pulses per revolution. These pulses
324
315
// main setup
325
316
void setup()
326
317
{
327
 
        // set up an interrupt handler on pin 2 to notice fan pulses
 
318
        // set up an interrupt handler on pin 2 to nitice fan pulses
328
319
        attachInterrupt( 0, fan_pulse_handler, RISING );
329
320
        digitalWrite( 2, HIGH );
330
321
  
341
332
        // initialise RTC
342
333
        Time::init();
343
334
 
344
 
        // init text renderer
345
 
        TextRenderer::init();
346
 
 
347
335
        // activate the minor mode
348
336
        activate_major_mode();
349
337
}