diff options
| author | Gabriel Hart | 2021-10-29 12:51:10 -0500 |
|---|---|---|
| committer | Gabriel Hart | 2021-10-29 12:51:10 -0500 |
| commit | 78417e78ef4dbeed7a9a3c0b2cad81341685dca0 (patch) | |
| tree | 39db7a2d52b8e7cd9bafa8e5557df24f46049507 | |
| parent | Add thefreeman's DAC linear driver (beta); also update Sofirn bilds to use th... (diff) | |
| parent | Clarified Ramp->2C behavior a bit more. (diff) | |
| download | anduril-78417e78ef4dbeed7a9a3c0b2cad81341685dca0.tar.gz anduril-78417e78ef4dbeed7a9a3c0b2cad81341685dca0.tar.bz2 anduril-78417e78ef4dbeed7a9a3c0b2cad81341685dca0.zip | |
Merge TKs changes through her commit 628
| -rw-r--r-- | spaghetti-monster/anduril/MODELS | 111 | ||||
| -rw-r--r-- | spaghetti-monster/anduril/Makefile | 8 | ||||
| -rw-r--r-- | spaghetti-monster/anduril/anduril-manual.txt | 8 | ||||
| -rw-r--r-- | spaghetti-monster/anduril/aux-leds.c | 2 | ||||
| -rwxr-xr-x | spaghetti-monster/anduril/models.py | 71 | ||||
| -rw-r--r-- | spaghetti-monster/anduril/tint-ramping.c | 2 | ||||
| -rw-r--r-- | spaghetti-monster/fsm-ramping.c | 2 |
7 files changed, 137 insertions, 67 deletions
diff --git a/spaghetti-monster/anduril/MODELS b/spaghetti-monster/anduril/MODELS index 7a2c438..317bb6a 100644 --- a/spaghetti-monster/anduril/MODELS +++ b/spaghetti-monster/anduril/MODELS @@ -1,55 +1,58 @@ -Model numbers: -0111 emisar-d4 -0112 emisar-d4-219c -0113 emisar-d4v2 -0114 emisar-d4v2-219 -0115 emisar-d4v2-nofet -0121 emisar-d1 -0122 emisar-d1s -0123 emisar-d1v2 -0131 emisar-d4s -0132 emisar-d4s-219c -0133 emisar-d4sv2 -0134 emisar-d4sv2-219 -0135 emisar-d4sv2-tintramp -0136 emisar-d4sv2-tintramp-fet -0141 emisar-d18 -0142 emisar-d18-219 -0211 noctigon-kr4 -0212 noctigon-kr4-nofet -0213 noctigon-kr4-219 -0214 noctigon-kr4-219b -0251 noctigon-k1 -0252 noctigon-k1-sbt90 -0253 noctigon-k1-12v -0261 noctigon-k9.3 -0262 noctigon-k9.3-nofet -0263 noctigon-k9.3-219 -0265 noctigon-k9.3-tintramp-nofet -0266 noctigon-k9.3-tintramp-fet -0267 noctigon-k9.3-tintramp-219 -0311 fw3a -0312 fw3a-219 -0313 fw3a-nofet -0314 fw3x-lume1 -0321 blf-gt -0322 blf-gt-mini -0411 ff-rot66 -0412 ff-rot66-219 -0413 ff-rot66g2 -0421 ff-pl47 -0422 ff-pl47-219 -0423 ff-pl47g2 -0441 ff-e01 -0511 mateminco-mf01s -0521 mateminco-mf01-mini -0611 blf-q8 -0612 sofirn-sp36 -0613 blf-q8-t1616 -0614 sofirn-sp36-t1616 -0621 blf-lantern -0622 blf-lantern-t1616 -0631 sofirn-sp10-pro -1618 gchart-fet1-t1616 +Model Name MCU +----- ---- --- +0111 emisar-d4 attiny85 +0112 emisar-d4-219c attiny85 +0113 emisar-d4v2 attiny1634 +0114 emisar-d4v2-219 attiny1634 +0115 emisar-d4v2-nofet attiny1634 +0121 emisar-d1 attiny85 +0122 emisar-d1s attiny85 +0123 emisar-d1v2 attiny1634 +0131 emisar-d4s attiny85 +0132 emisar-d4s-219c attiny85 +0133 emisar-d4sv2 attiny1634 +0134 emisar-d4sv2-219 attiny1634 +0135 emisar-d4sv2-tintramp attiny1634 +0136 emisar-d4sv2-tintramp-fet attiny1634 +0141 emisar-d18 attiny85 +0142 emisar-d18-219 attiny85 +0211 noctigon-kr4 attiny1634 +0212 noctigon-kr4-nofet attiny1634 +0213 noctigon-kr4-219 attiny1634 +0214 noctigon-kr4-219b attiny1634 +0251 noctigon-k1 attiny1634 +0252 noctigon-k1-sbt90 attiny1634 +0253 noctigon-k1-12v attiny1634 +0261 noctigon-k9.3 attiny1634 +0262 noctigon-k9.3-nofet attiny1634 +0263 noctigon-k9.3-219 attiny1634 +0265 noctigon-k9.3-tintramp-nofet attiny1634 +0266 noctigon-k9.3-tintramp-fet attiny1634 +0267 noctigon-k9.3-tintramp-219 attiny1634 +0311 fw3a attiny85 +0312 fw3a-219 attiny85 +0313 fw3a-nofet attiny85 +0314 fw3x-lume1 attiny1634 +0321 blf-gt attiny85 +0322 blf-gt-mini attiny85 +0411 ff-rot66 attiny85 +0412 ff-rot66-219 attiny85 +0413 ff-rot66g2 attiny85 +0421 ff-pl47 attiny85 +0422 ff-pl47-219 attiny85 +0423 ff-pl47g2 attiny85 +0441 ff-e01 attiny85 +0511 mateminco-mf01s attiny85 +0521 mateminco-mf01-mini attiny85 +0611 blf-q8 attiny85 +0612 sofirn-sp36 attiny85 +0613 blf-q8-t1616 attiny1616 +0614 sofirn-sp36-t1616 attiny1616 +0621 blf-lantern attiny85 +0622 blf-lantern-t1616 attiny1616 +0631 sofirn-sp10s attiny1616 +1618 gchart-fet1-t1616 attiny1616 + Duplicates: -Missing: + +Missing:
\ No newline at end of file diff --git a/spaghetti-monster/anduril/Makefile b/spaghetti-monster/anduril/Makefile index d1e6b46..332f0f3 100644 --- a/spaghetti-monster/anduril/Makefile +++ b/spaghetti-monster/anduril/Makefile @@ -8,13 +8,7 @@ todo: @egrep 'TODO:|FIXME:' *.[ch] models: - @echo -n > MODELS - @echo 'Model numbers:' >> MODELS - @grep '^#define MODEL_NUMBER' cfg-*.h | perl -ne '/cfg-(.*)\.h:#define MODEL_NUMBER "(.*)"/ && print "$$2\t$$1\n";' | sort -n >> MODELS - @echo 'Duplicates:' >> MODELS - @cat cfg-*.h | grep '^#define MODEL_NUMBER' | sort | uniq -c | grep -v ' 1 ' || true >> MODELS - @echo 'Missing:' >> MODELS - @for f in cfg-*.h ; do grep --silent '^#define MODEL_NUMBER' $$f ; if [ "$$?" = "1" ] ; then echo " $$f" ; fi ; done >> MODELS + @./models.py > MODELS @cat MODELS .phony: clean todo diff --git a/spaghetti-monster/anduril/anduril-manual.txt b/spaghetti-monster/anduril/anduril-manual.txt index a8f3730..009e95e 100644 --- a/spaghetti-monster/anduril/anduril-manual.txt +++ b/spaghetti-monster/anduril/anduril-manual.txt @@ -173,8 +173,9 @@ There are four ways to access ramping mode when the light is off: While the light is on, a few actions are available: - 1C: Turn off. - - 2C: Go to or from the ceiling level. - (or if already at ceiling, and not in Simple UI, go to/from turbo) + - 2C: Go to or from the turbo level. + (or if it has regulated down, "bump" back up to turbo) + (turbo level / behavior is configurable) - 1H: Change brightness (up). If the button was released less than a second ago, or if it's already at the ceiling, it goes down instead. - 2H: Change brightness (down). @@ -760,8 +761,7 @@ Off Any 15+C Version check Ramp Any 1C Off Ramp Any 1H Ramp (up, with reversing) Ramp Any 2H Ramp (down) -Ramp Simple 2C Go to/from ceiling -Ramp Full 2C Go to/from ceiling (or turbo if at ceil already) +Ramp Any 2C Go to/from ceiling or turbo (configurable) Ramp Full 3C Change ramp style (smooth / stepped) Ramp Any 3H Tint ramping (on some lights) Ramp Full 3H Momentary turbo (on lights without tint ramping) diff --git a/spaghetti-monster/anduril/aux-leds.c b/spaghetti-monster/anduril/aux-leds.c index 3195fdc..a0a6d7a 100644 --- a/spaghetti-monster/anduril/aux-leds.c +++ b/spaghetti-monster/anduril/aux-leds.c @@ -64,7 +64,7 @@ uint8_t voltage_to_rgb() { 255, 6, // 7, R+G+B }; uint8_t volts = voltage; - if (volts < 29) return 0; + if (volts < VOLTAGE_LOW) return 0; uint8_t i; for (i = 0; volts >= levels[i]; i += 2) {} diff --git a/spaghetti-monster/anduril/models.py b/spaghetti-monster/anduril/models.py new file mode 100755 index 0000000..1985352 --- /dev/null +++ b/spaghetti-monster/anduril/models.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python + +import os +import re + +def main(args): + """models.py: scan build targets to generate the MODELS file + """ + + models = [] + + # load all cfg-*.h files + paths = os.listdir('.') + for p in paths: + if p.startswith('cfg-') and p.endswith('.h'): + m = load_cfg(p) + models.append(m) + + # sort by model number + foo = [(m.num, m.name, m) for m in models] + foo.sort() + models = [x[-1] for x in foo] + + fmt = '%s\t%-30s\t%s' + print(fmt % ('Model', 'Name', 'MCU')) + print(fmt % ('-----', '----', '---')) + for m in models: + print(fmt % (m.num, m.name, m.attiny)) + + print('\nDuplicates:') + for i, m in enumerate(models): + for m2 in models[i+1:]: + #if (m.num == m2.num) and (m is not m2): + if m.num == m2.num: + print('%s\t%s, %s' % (m.num, m.name, m2.name)) + + print('\nMissing:') + for m in models: + if not m.num: + print(m.name) + + +class Empty: + pass + + +def load_cfg(path): + m = Empty() + m.name, m.num, m.attiny = '', '', 'attiny85' + + m.name = path.replace('cfg-', '').replace('.h', '') + + num_pat = re.compile(r'#define\s+MODEL_NUMBER\s+"(\d+)"') + mcu_pat = re.compile(r'ATTINY:\s+(\d+)') + # TODO? use C preprocessor to generate more complete file to scan + with open(path) as fp: + for line in fp: + found = num_pat.search(line) + if found: + m.num = found.group(1) + found = mcu_pat.search(line) + if found: + m.attiny = 'attiny' + found.group(1) + + return m + + +if __name__ == "__main__": + import sys + main(sys.argv[1:]) + diff --git a/spaghetti-monster/anduril/tint-ramping.c b/spaghetti-monster/anduril/tint-ramping.c index 0b077ef..aa9b1f6 100644 --- a/spaghetti-monster/anduril/tint-ramping.c +++ b/spaghetti-monster/anduril/tint-ramping.c @@ -31,7 +31,7 @@ uint8_t tint_ramping_state(Event event, uint16_t arg) { if (! arg) { tint = !tint; set_level(actual_level); - blink_once(); + //blink_once(); // unnecessary, and kind of annoying on moon } return EVENT_HANDLED; } diff --git a/spaghetti-monster/fsm-ramping.c b/spaghetti-monster/fsm-ramping.c index e8fcde7..05c2e0e 100644 --- a/spaghetti-monster/fsm-ramping.c +++ b/spaghetti-monster/fsm-ramping.c @@ -267,7 +267,9 @@ void gradual_tick() { ) { //actual_level = gt + 1; + uint8_t orig = gradual_target; set_level(gt + 1); + gradual_target = orig; } // is handled in set_level() //#ifdef USE_TINT_RAMPING |
