~toykeeper/flashlight-firmware/fsm

« back to all changes in this revision

Viewing changes to ToyKeeper/spaghetti-monster/anduril/cfg-emisar-2ch.h

  • Committer: Selene ToyKeeper
  • Date: 2023-11-04 15:09:10 UTC
  • mfrom: (483.1.175 anduril2)
  • Revision ID: bzr@toykeeper.net-20231104150910-ddd3afw4nhfvof2l
merged anduril2 branch -> fsm, with *years* of changes
(this also means this code is now Anduril 2 instead of Anduril 1)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Emisar 2-channel generic config options for Anduril
 
2
// Copyright (C) 2021-2023 Selene ToyKeeper
 
3
// SPDX-License-Identifier: GPL-3.0-or-later
 
4
#pragma once
 
5
 
 
6
#define MODEL_NUMBER "0135"
 
7
#include "hwdef-emisar-2ch.h"
 
8
#include "hank-cfg.h"
 
9
// ATTINY: 1634
 
10
 
 
11
// this light has three aux LED channels: R, G, B
 
12
#define USE_AUX_RGB_LEDS
 
13
// the aux LEDs are front-facing, so turn them off while main LEDs are on
 
14
// it also has an independent LED in the button
 
15
#define USE_BUTTON_LED
 
16
// TODO: the whole "indicator LED" thing needs to be refactored into
 
17
//       "aux LED(s)" and "button LED(s)" since they work a bit differently
 
18
// enabling this option breaks the button LED on D4v2.5
 
19
#ifdef USE_INDICATOR_LED_WHILE_RAMPING
 
20
#undef USE_INDICATOR_LED_WHILE_RAMPING
 
21
#endif
 
22
 
 
23
// channel modes...
 
24
// CM_CH1, CM_CH2, CM_BOTH, CM_BLEND, CM_AUTO
 
25
// enable max brightness out of the box
 
26
#define DEFAULT_CHANNEL_MODE           CM_BLEND
 
27
 
 
28
#define USE_CONFIG_COLORS
 
29
 
 
30
// blink numbers on the main LEDs by default (but allow user to change it)
 
31
#define DEFAULT_BLINK_CHANNEL  CM_BLEND
 
32
 
 
33
#define POLICE_COLOR_STROBE_CH1        CM_CH1
 
34
#define POLICE_COLOR_STROBE_CH2        CM_CH2
 
35
 
 
36
// how much to increase total brightness at middle tint
 
37
// (0 = 100% brightness, 64 = 200% brightness)
 
38
#define TINT_RAMPING_CORRECTION 0  // none, linear regulator doesn't need it
 
39
 
 
40
 
 
41
// channel 1
 
42
//   output: unknown, 2000 lm?
 
43
//   FET: absent / unused
 
44
// channel 2
 
45
//   output: unknown, 2000 lm?
 
46
#define RAMP_SIZE 150
 
47
 
 
48
// abstract ramp (power is split between both sets of LEDs)
 
49
// 1-130: 0 to 100% power
 
50
// level_calc.py 5.01 1 130 7135 2 0.2 2000 --pwm dyn:64:16383:511
 
51
// 131 to 150: 101% to 200% power
 
52
// level_calc.py 6.44 1 150 7135 1 0.2 2000 --pwm dyn:74:16383:1022
 
53
#define PWM1_LEVELS 1,1,1,2,2,2,3,3,4,5,5,6,7,8,9,10,11,12,13,15,16,18,19,21,22,24,26,28,29,31,33,35,37,40,42,44,46,48,50,52,54,56,58,59,61,62,63,64,65,66,66,66,66,65,64,62,60,58,54,50,46,41,35,28,20,21,22,24,25,26,27,29,30,32,33,35,37,38,40,42,44,46,48,50,53,55,57,60,63,65,68,71,74,77,80,83,87,90,94,98,102,106,110,114,118,123,128,132,137,142,148,153,159,164,170,176,183,189,196,202,209,216,224,231,239,247,255,263,272,281,290,299,309,318,328,339,349,360,371,382,394,406,418,430,443,456,469,483,497,511
 
54
#define PWM_TOPS 16383,13650,10715,15388,11902,8195,12771,9834,12258,13423,11192,11947,12284,12363,12271,12064,11775,11428,11039,11469,10973,11132,10595,10601,10054,9971,9833,9655,9122,8923,8704,8473,8232,8196,7932,7668,7408,7152,6901,6656,6417,6186,5961,5647,5444,5163,4899,4653,4422,4206,3941,3697,3470,3210,2971,2707,2466,2245,1968,1717,1489,1251,1005,756,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511
 
55
// max "200% power" ramp and tops
 
56
//#define PWM2_LEVELS 2,2,2,3,3,4,4,5,6,7,8,9,10,11,13,14,16,17,19,21,23,25,28,30,33,35,38,41,44,47,50,54,57,60,64,67,71,74,78,81,84,88,91,94,97,99,101,103,105,106,107,107,107,106,105,102,99,95,90,84,77,68,58,47,34,36,38,40,42,44,47,49,52,54,57,60,63,66,69,73,76,80,83,87,91,96,100,104,109,114,119,124,130,135,141,147,153,160,166,173,180,187,195,203,211,219,228,236,245,255,264,274,285,295,306,317,329,340,353,365,378,391,405,419,433,448,463,479,495,511,530,550,570,591,612,634,657,680,705,730,755,782,809,837,865,895,925,957,989,1022
 
57
//#define PWM3_LEVELS 16383,13234,9781,13826,9593,13434,9973,12021,12900,13193,13150,12899,12508,12023,12666,11982,12181,11422,11393,11247,11018,10731,10826,10434,10365,9927,9767,9565,9332,9076,8806,8693,8395,8096,7928,7626,7439,7143,6948,6665,6393,6203,5946,5700,5465,5187,4926,4681,4451,4195,3957,3700,3463,3213,2983,2718,2476,2231,1986,1742,1501,1245,997,756,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511
 
58
#define DEFAULT_LEVEL      70
 
59
#define MAX_1x7135         150
 
60
#define HALFSPEED_LEVEL    10
 
61
#define QUARTERSPEED_LEVEL 2
 
62
 
 
63
#define RAMP_SMOOTH_FLOOR  10  // level 1 is unreliable (?)
 
64
#define RAMP_SMOOTH_CEIL   130
 
65
// 10, 30, 50, [70], 90, 110, [130]
 
66
#define RAMP_DISCRETE_FLOOR 10
 
67
#define RAMP_DISCRETE_CEIL  RAMP_SMOOTH_CEIL
 
68
#define RAMP_DISCRETE_STEPS 7
 
69
 
 
70
// safe limit highest regulated power (no FET or turbo)
 
71
// 10, 40, [70], 100, 130
 
72
#define SIMPLE_UI_FLOOR  RAMP_DISCRETE_FLOOR
 
73
#define SIMPLE_UI_CEIL   RAMP_DISCRETE_CEIL
 
74
#define SIMPLE_UI_STEPS  5
 
75
 
 
76
// stop panicking at ~1500 lm
 
77
#define THERM_FASTER_LEVEL 130
 
78
#define MIN_THERM_STEPDOWN 65  // should be above highest dyn_pwm level
 
79
 
 
80
#define USE_POLICE_COLOR_STROBE_MODE
 
81
#undef  TACTICAL_LEVELS
 
82
#define TACTICAL_LEVELS 130,30,(RAMP_SIZE+3)  // high, low, police strobe
 
83
 
 
84
// use the brightest setting for strobe
 
85
#define STROBE_BRIGHTNESS MAX_LEVEL
 
86
// slow down party strobe; this driver can't pulse for 1ms or less
 
87
#define PARTY_STROBE_ONTIME 2
 
88
 
 
89
// the default of 26 looks a bit flat, so increase it
 
90
#define CANDLE_AMPLITUDE 33
 
91
 
 
92
// the power regulator is a bit slow, so push it harder for a quick response from off
 
93
#define DEFAULT_JUMP_START_LEVEL 21
 
94
#define BLINK_BRIGHTNESS 40
 
95
#define BLINK_ONCE_TIME 12  // longer blink, since main LEDs are slow
 
96
 
 
97
#define THERM_CAL_OFFSET 5
 
98
 
 
99
// don't blink while ramping
 
100
#ifdef BLINK_AT_RAMP_MIDDLE
 
101
#undef BLINK_AT_RAMP_MIDDLE
 
102
#endif
 
103