~toykeeper/flashlight-firmware/trunk

« back to all changes in this revision

Viewing changes to ToyKeeper/s7/s7.c

  • Committer: Selene Scriven
  • Date: 2014-09-26 00:39:40 UTC
  • Revision ID: ubuntu@toykeeper.net-20140926003940-97qd3dnupjtkt3vu
Moved the heartbeat beacon to the end of the mode sequence.

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
// If you change these, you'll probably want to change the "modes" array below
79
79
#define SOLID_MODES         5       // How many non-blinky modes will we have?
80
80
#define DUAL_BEACON_MODES   5+3     // How many beacon modes will we have (with background light on)?
81
 
#define SINGLE_BEACON_MODES 5+3+1   // How many beacon modes will we have (without background light on)?
82
 
#define FIXED_STROBE_MODES  5+3+1+3 // How many constant-speed strobe modes?
83
 
#define VARIABLE_STROBE_MODES 5+3+1+3+2 // How many variable-speed strobe modes?
 
81
#define FIXED_STROBE_MODES  5+3+3 // How many constant-speed strobe modes?
 
82
#define VARIABLE_STROBE_MODES 5+3+3+2 // How many variable-speed strobe modes?
 
83
#define SINGLE_BEACON_MODES 5+3+3+2+1   // How many beacon modes will we have (without background light on)?
84
84
// Note: don't use more than 32 modes, or it will interfere with the mechanism used for mode memory
85
 
#define TOTAL_MODES         VARIABLE_STROBE_MODES
 
85
#define TOTAL_MODES         SINGLE_BEACON_MODES
86
86
 
87
87
#define WDT_TIMEOUT         2       // Number of WTD ticks before mode is saved (.5 sec each)
88
88
 
144
144
static uint8_t modes[TOTAL_MODES] = { // high enough to handle all
145
145
    MODE_MOON, MODE_LOW, MODE_MED, MODE_HIGH, MODE_HIGHER, // regular solid modes
146
146
    0, 1, 2, // dual beacon modes (grab brightness from modes[modes[mode_idx]]
147
 
    MODE_HIGHER, // single beacon modes
148
147
    99, 41, 15, // constant-speed strobe modes (10 Hz, 24 Hz, 60 Hz)
149
148
    MODE_HIGHER, MODE_HIGHER, // variable-speed strobe modes
 
149
    MODE_HIGHER, // single beacon modes
150
150
};
151
151
volatile uint8_t mode_idx = 0;
152
152
// 1 or -1. Do we increase or decrease the idx when moving up to a higher mode?
305
305
                _delay_ms(65);
306
306
            }
307
307
            _delay_ms(720);
308
 
        } else if (mode_idx < SINGLE_BEACON_MODES) { // heartbeat flasher
309
 
            PWM_LVL = modes[SINGLE_BEACON_MODES-1];
310
 
            _delay_ms(1);
311
 
            PWM_LVL = 0;
312
 
            _delay_ms(249);
313
 
            PWM_LVL = modes[SINGLE_BEACON_MODES-1];
314
 
            _delay_ms(1);
315
 
            PWM_LVL = 0;
316
 
            _delay_ms(749);
317
308
        } else if (mode_idx < FIXED_STROBE_MODES) { // strobe mode, fixed-speed
318
309
            strobe_len = 1;
319
310
            if (modes[mode_idx] < 50) { strobe_len = 0; }
321
312
            _delay_ms(strobe_len);
322
313
            PWM_LVL = 0;
323
314
            _delay_ms(modes[mode_idx]);
324
 
        } else if (mode_idx == FIXED_STROBE_MODES) {
 
315
        } else if (mode_idx == VARIABLE_STROBE_MODES-2) {
325
316
            // strobe mode, smoothly oscillating frequency ~7 Hz to ~18 Hz
326
317
            for(j=0; j<66; j++) {
327
318
                PWM_LVL = modes[SOLID_MODES-1];
331
322
                else { strobe_len = 66-j; }
332
323
                _delay_ms(2*(strobe_len+33-6));
333
324
            }
334
 
        } else if (mode_idx == FIXED_STROBE_MODES+1) {
 
325
        } else if (mode_idx == VARIABLE_STROBE_MODES-1) {
335
326
            // strobe mode, smoothly oscillating frequency ~16 Hz to ~100 Hz
336
327
            for(j=0; j<100; j++) {
337
328
                PWM_LVL = modes[SOLID_MODES-1];
341
332
                else { strobe_len = 100-j; }
342
333
                _delay_ms(strobe_len+9);
343
334
            }
 
335
        } else if (mode_idx < SINGLE_BEACON_MODES) { // heartbeat flasher
 
336
            PWM_LVL = modes[SOLID_MODES-1];
 
337
            _delay_ms(1);
 
338
            PWM_LVL = 0;
 
339
            _delay_ms(249);
 
340
            PWM_LVL = modes[SOLID_MODES-1];
 
341
            _delay_ms(1);
 
342
            PWM_LVL = 0;
 
343
            _delay_ms(749);
344
344
        }
345
345
    #ifdef VOLTAGE_MON
346
346
        if (low_voltage(ADC_LOW)) {