annotate backends/kiibohd.py @ 30:2aa96be4e395

Adding inheritance to Backend class - Preparing for JSON->kll and kll->JSON compilation modes
author Jacob Alexander <haata@kiibohd.com>
date Sat, 21 Feb 2015 21:45:20 -0800
parents 53e68fe4b8fb
children 8b82e0ceac05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
1 #!/usr/bin/env python3
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
2 # KLL Compiler - Kiibohd Backend
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
3 #
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
4 # Backend code generator for the Kiibohd Controller firmware.
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
5 #
24
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
6 # Copyright (C) 2014-2015 by Jacob Alexander
2
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
7 #
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
8 # This file is free software: you can redistribute it and/or modify
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
9 # it under the terms of the GNU General Public License as published by
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
10 # the Free Software Foundation, either version 3 of the License, or
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
11 # (at your option) any later version.
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
12 #
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
13 # This file is distributed in the hope that it will be useful,
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
16 # GNU General Public License for more details.
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
17 #
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
18 # You should have received a copy of the GNU General Public License
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
19 # along with this file. If not, see <http://www.gnu.org/licenses/>.
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
20
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
21 ### Imports ###
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
22
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
23 import os
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
24 import sys
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
25 import re
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
26
24
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
27 from datetime import date
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
28
2
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
29 # Modifying Python Path, which is dumb, but the only way to import up one directory...
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
30 sys.path.append( os.path.expanduser('..') )
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
31
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
32 from kll_lib.containers import *
30
2aa96be4e395 Adding inheritance to Backend class
Jacob Alexander <haata@kiibohd.com>
parents: 29
diff changeset
33 from kll_lib.backends import *
2
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
34
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
35
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
36 ### Classes ###
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
37
30
2aa96be4e395 Adding inheritance to Backend class
Jacob Alexander <haata@kiibohd.com>
parents: 29
diff changeset
38 class Backend( BackendBase ):
4
9fe08ddb4fdd Adding list to tuple conversion and USBCode to Capabiltiy conversion.
Jacob Alexander <haata@kiibohd.com>
parents: 2
diff changeset
39 # USB Code Capability Name
9fe08ddb4fdd Adding list to tuple conversion and USBCode to Capabiltiy conversion.
Jacob Alexander <haata@kiibohd.com>
parents: 2
diff changeset
40 def usbCodeCapability( self ):
9fe08ddb4fdd Adding list to tuple conversion and USBCode to Capabiltiy conversion.
Jacob Alexander <haata@kiibohd.com>
parents: 2
diff changeset
41 return "usbKeyOut";
9fe08ddb4fdd Adding list to tuple conversion and USBCode to Capabiltiy conversion.
Jacob Alexander <haata@kiibohd.com>
parents: 2
diff changeset
42
9fe08ddb4fdd Adding list to tuple conversion and USBCode to Capabiltiy conversion.
Jacob Alexander <haata@kiibohd.com>
parents: 2
diff changeset
43
24
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
44 # TODO
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
45 def layerInformation( self, name, date, author ):
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
46 self.fill_dict['Information'] += "// Name: {0}\n".format( "TODO" )
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
47 self.fill_dict['Information'] += "// Version: {0}\n".format( "TODO" )
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
48 self.fill_dict['Information'] += "// Date: {0}\n".format( "TODO" )
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
49 self.fill_dict['Information'] += "// Author: {0}\n".format( "TODO" )
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
50
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
51
2
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
52 # Processes content for fill tags and does any needed dataset calculations
24
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
53 def process( self, capabilities, macros, variables, gitRev, gitChanges ):
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
54 # Build string list of compiler arguments
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
55 compilerArgs = ""
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
56 for arg in sys.argv:
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
57 if "--" in arg or ".py" in arg:
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
58 compilerArgs += "// {0}\n".format( arg )
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
59 else:
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
60 compilerArgs += "// {0}\n".format( arg )
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
61
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
62 # Build a string of modified files, if any
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
63 gitChangesStr = "\n"
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
64 if len( gitChanges ) > 0:
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
65 for gitFile in gitChanges:
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
66 gitChangesStr += "// {0}\n".format( gitFile )
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
67 else:
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
68 gitChangesStr = " None\n"
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
69
25
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
70 # Prepare BaseLayout and Layer Info
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
71 baseLayoutInfo = ""
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
72 defaultLayerInfo = ""
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
73 partialLayersInfo = ""
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
74 for file, name in zip( variables.baseLayout['*LayerFiles'], variables.baseLayout['*NameStack'] ):
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
75 baseLayoutInfo += "// {0}\n// {1}\n".format( name, file )
29
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
76 if '*LayerFiles' in variables.layerVariables[0].keys():
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
77 for file, name in zip( variables.layerVariables[0]['*LayerFiles'], variables.layerVariables[0]['*NameStack'] ):
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
78 defaultLayerInfo += "// {0}\n// {1}\n".format( name, file )
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
79 if '*LayerFiles' in variables.layerVariables[1].keys():
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
80 for layer in range( 1, len( variables.layerVariables ) ):
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
81 partialLayersInfo += "// Layer {0}\n".format( layer )
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
82 if len( variables.layerVariables[ layer ]['*LayerFiles'] ) > 0:
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
83 for file, name in zip( variables.layerVariables[ layer ]['*LayerFiles'], variables.layerVariables[ layer ]['*NameStack'] ):
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
84 partialLayersInfo += "// {0}\n// {1}\n".format( name, file )
25
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
85
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
86
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
87 ## Information ##
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
88 self.fill_dict['Information'] = "// This file was generated by the kll compiler, DO NOT EDIT.\n"
24
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
89 self.fill_dict['Information'] += "// Generation Date: {0}\n".format( date.today() )
20
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
90 self.fill_dict['Information'] += "// KLL Backend: {0}\n".format( "kiibohd" )
24
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
91 self.fill_dict['Information'] += "// KLL Git Rev: {0}\n".format( gitRev )
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
92 self.fill_dict['Information'] += "// KLL Git Changes:{0}".format( gitChangesStr )
092deb852ad9 Adding more generation debug output
Jacob Alexander <haata@kiibohd.com>
parents: 20
diff changeset
93 self.fill_dict['Information'] += "// Compiler arguments:\n{0}".format( compilerArgs )
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
94 self.fill_dict['Information'] += "//\n"
25
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
95 self.fill_dict['Information'] += "// - Base Layer -\n{0}".format( baseLayoutInfo )
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
96 self.fill_dict['Information'] += "// - Default Layer -\n{0}".format( defaultLayerInfo )
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
97 self.fill_dict['Information'] += "// - Partial Layers -\n{0}".format( partialLayersInfo )
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
98
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
99
20
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
100 ## Variable Information ##
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
101 self.fill_dict['VariableInformation'] = ""
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
102
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
103 # Iterate through the variables, output, and indicate the last file that modified it's value
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
104 # Output separate tables per file, per table and overall
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
105 # TODO
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
106
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
107
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
108 ## Defines ##
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
109 self.fill_dict['Defines'] = ""
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
110
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
111 # Iterate through defines and lookup the variables
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
112 for define in variables.defines.keys():
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
113 if define in variables.overallVariables.keys():
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
114 self.fill_dict['Defines'] += "\n#define {0} {1}".format( variables.defines[ define ], variables.overallVariables[ define ] )
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
115 else:
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
116 print( "{0} '{1}' not defined...".format( WARNING, define ) )
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
117
2a8ddfb85ba4 Adding define support to KLL compiler.
Jacob Alexander <haata@kiibohd.com>
parents: 18
diff changeset
118
2
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
119 ## Capabilities ##
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
120 self.fill_dict['CapabilitiesList'] = "const Capability CapabilitiesList[] = {\n"
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
121
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
122 # Keys are pre-sorted
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
123 for key in capabilities.keys():
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
124 funcName = capabilities.funcName( key )
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
125 argByteWidth = capabilities.totalArgBytes( key )
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
126 self.fill_dict['CapabilitiesList'] += "\t{{ {0}, {1} }},\n".format( funcName, argByteWidth )
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
127
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
128 self.fill_dict['CapabilitiesList'] += "};"
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
129
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
130
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
131 ## Results Macros ##
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
132 self.fill_dict['ResultMacros'] = ""
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
133
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
134 # Iterate through each of the result macros
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
135 for result in range( 0, len( macros.resultsIndexSorted ) ):
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
136 self.fill_dict['ResultMacros'] += "Guide_RM( {0} ) = {{ ".format( result )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
137
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
138 # Add the result macro capability index guide (including capability arguments)
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
139 # See kiibohd controller Macros/PartialMap/kll.h for exact formatting details
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
140 for sequence in range( 0, len( macros.resultsIndexSorted[ result ] ) ):
18
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
141 # If the sequence is longer than 1, prepend a sequence spacer
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
142 # Needed for USB behaviour, otherwise, repeated keys will not work
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
143 if sequence > 0:
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
144 # <single element>, <usbCodeSend capability>, <USB Code 0x00>
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
145 self.fill_dict['ResultMacros'] += "1, {0}, 0x00, ".format( capabilities.getIndex( self.usbCodeCapability() ) )
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
146
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
147 # For each combo in the sequence, add the length of the combo
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
148 self.fill_dict['ResultMacros'] += "{0}, ".format( len( macros.resultsIndexSorted[ result ][ sequence ] ) )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
149
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
150 # For each combo, add each of the capabilities used and their arguments
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
151 for combo in range( 0, len( macros.resultsIndexSorted[ result ][ sequence ] ) ):
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
152 resultItem = macros.resultsIndexSorted[ result ][ sequence ][ combo ]
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
153
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
154 # Add the capability index
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
155 self.fill_dict['ResultMacros'] += "{0}, ".format( capabilities.getIndex( resultItem[0] ) )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
156
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
157 # Add each of the arguments of the capability
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
158 for arg in range( 0, len( resultItem[1] ) ):
28
bdcd737cddcb Adding KEYPAD_ASTERISK (also internally renaming ASTERIX to ASTERISK)
Jacob Alexander <haata@kiibohd.com>
parents: 25
diff changeset
159 self.fill_dict['ResultMacros'] += "{0}, ".format( resultItem[1][ arg ] )
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
160
18
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
161 # If sequence is longer than 1, append a sequence spacer at the end of the sequence
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
162 # Required by USB to end at sequence without holding the key down
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
163 if len( macros.resultsIndexSorted[ result ] ) > 1:
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
164 # <single element>, <usbCodeSend capability>, <USB Code 0x00>
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
165 self.fill_dict['ResultMacros'] += "1, {0}, 0x00, ".format( capabilities.getIndex( self.usbCodeCapability() ) )
09f74a43eba2 Adding extra code generation required for Macro output sequences.
Jacob Alexander <haata@kiibohd.com>
parents: 17
diff changeset
166
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
167 # Add list ending 0 and end of list
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
168 self.fill_dict['ResultMacros'] += "0 };\n"
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
169 self.fill_dict['ResultMacros'] = self.fill_dict['ResultMacros'][:-1] # Remove last newline
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
170
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
171
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
172 ## Result Macro List ##
17
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
173 self.fill_dict['ResultMacroList'] = "const ResultMacro ResultMacroList[] = {\n"
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
174
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
175 # Iterate through each of the result macros
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
176 for result in range( 0, len( macros.resultsIndexSorted ) ):
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
177 self.fill_dict['ResultMacroList'] += "\tDefine_RM( {0} ),\n".format( result )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
178 self.fill_dict['ResultMacroList'] += "};"
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
179
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
180
17
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
181 ## Result Macro Record ##
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
182 self.fill_dict['ResultMacroRecord'] = "ResultMacroRecord ResultMacroRecordList[ ResultMacroNum ];"
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
183
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
184
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
185 ## Trigger Macros ##
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
186 self.fill_dict['TriggerMacros'] = ""
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
187
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
188 # Iterate through each of the trigger macros
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
189 for trigger in range( 0, len( macros.triggersIndexSorted ) ):
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
190 self.fill_dict['TriggerMacros'] += "Guide_TM( {0} ) = {{ ".format( trigger )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
191
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
192 # Add the trigger macro scan code guide
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
193 # See kiibohd controller Macros/PartialMap/kll.h for exact formatting details
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
194 for sequence in range( 0, len( macros.triggersIndexSorted[ trigger ][ 0 ] ) ):
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
195 # For each combo in the sequence, add the length of the combo
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
196 self.fill_dict['TriggerMacros'] += "{0}, ".format( len( macros.triggersIndexSorted[ trigger ][0][ sequence ] ) )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
197
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
198 # For each combo, add the key type, key state and scan code
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
199 for combo in range( 0, len( macros.triggersIndexSorted[ trigger ][ 0 ][ sequence ] ) ):
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
200 triggerItem = macros.triggersIndexSorted[ trigger ][ 0 ][ sequence ][ combo ]
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
201
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
202 # TODO Add support for Analog keys
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
203 # TODO Add support for LED states
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
204 self.fill_dict['TriggerMacros'] += "0x00, 0x01, 0x{0:02X}, ".format( triggerItem )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
205
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
206 # Add list ending 0 and end of list
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
207 self.fill_dict['TriggerMacros'] += "0 };\n"
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
208 self.fill_dict['TriggerMacros'] = self.fill_dict['TriggerMacros'][ :-1 ] # Remove last newline
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
209
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
210
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
211 ## Trigger Macro List ##
17
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
212 self.fill_dict['TriggerMacroList'] = "const TriggerMacro TriggerMacroList[] = {\n"
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
213
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
214 # Iterate through each of the trigger macros
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
215 for trigger in range( 0, len( macros.triggersIndexSorted ) ):
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
216 # Use TriggerMacro Index, and the corresponding ResultMacro Index
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
217 self.fill_dict['TriggerMacroList'] += "\tDefine_TM( {0}, {1} ),\n".format( trigger, macros.triggersIndexSorted[ trigger ][1] )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
218 self.fill_dict['TriggerMacroList'] += "};"
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
219
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
220
17
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
221 ## Trigger Macro Record ##
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
222 self.fill_dict['TriggerMacroRecord'] = "TriggerMacroRecord TriggerMacroRecordList[ TriggerMacroNum ];"
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
223
6cde2b556707 Adding backend support for more RAM optimizations.
Jacob Alexander <haata@kiibohd.com>
parents: 15
diff changeset
224
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
225 ## Max Scan Code ##
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
226 self.fill_dict['MaxScanCode'] = "#define MaxScanCode 0x{0:X}".format( macros.overallMaxScanCode )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
227
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
228
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
229 ## Default Layer and Default Layer Scan Map ##
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
230 self.fill_dict['DefaultLayerTriggerList'] = ""
11
a4e5137b1a29 Changing array type to support different uC architectures.
Jacob Alexander <haata@kiibohd.com>
parents: 9
diff changeset
231 self.fill_dict['DefaultLayerScanMap'] = "const nat_ptr_t *default_scanMap[] = {\n"
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
232
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
233 # Iterate over triggerList and generate a C trigger array for the default map and default map array
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
234 for triggerList in range( macros.firstScanCode[ 0 ], len( macros.triggerList[ 0 ] ) ):
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
235 # Generate ScanCode index and triggerList length
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
236 self.fill_dict['DefaultLayerTriggerList'] += "Define_TL( default, 0x{0:02X} ) = {{ {1}".format( triggerList, len( macros.triggerList[ 0 ][ triggerList ] ) )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
237
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
238 # Add scanCode trigger list to Default Layer Scan Map
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
239 self.fill_dict['DefaultLayerScanMap'] += "default_tl_0x{0:02X}, ".format( triggerList )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
240
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
241 # Add each item of the trigger list
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
242 for trigger in macros.triggerList[ 0 ][ triggerList ]:
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
243 self.fill_dict['DefaultLayerTriggerList'] += ", {0}".format( trigger )
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
244
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
245 self.fill_dict['DefaultLayerTriggerList'] += " };\n"
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
246 self.fill_dict['DefaultLayerTriggerList'] = self.fill_dict['DefaultLayerTriggerList'][:-1] # Remove last newline
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
247 self.fill_dict['DefaultLayerScanMap'] = self.fill_dict['DefaultLayerScanMap'][:-2] # Remove last comma and space
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
248 self.fill_dict['DefaultLayerScanMap'] += "\n};"
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
249
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
250
7
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
251 ## Partial Layers and Partial Layer Scan Maps ##
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
252 self.fill_dict['PartialLayerTriggerLists'] = ""
7
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
253 self.fill_dict['PartialLayerScanMaps'] = ""
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
254
7
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
255 # Iterate over each of the layers, excluding the default layer
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
256 for layer in range( 1, len( macros.triggerList ) ):
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
257 # Prepare each layer
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
258 self.fill_dict['PartialLayerScanMaps'] += "// Partial Layer {0}\n".format( layer )
11
a4e5137b1a29 Changing array type to support different uC architectures.
Jacob Alexander <haata@kiibohd.com>
parents: 9
diff changeset
259 self.fill_dict['PartialLayerScanMaps'] += "const nat_ptr_t *layer{0}_scanMap[] = {{\n".format( layer )
7
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
260 self.fill_dict['PartialLayerTriggerLists'] += "// Partial Layer {0}\n".format( layer )
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
261
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
262 # Iterate over triggerList and generate a C trigger array for the layer
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
263 for triggerList in range( macros.firstScanCode[ layer ], len( macros.triggerList[ layer ] ) ):
7
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
264 # Generate ScanCode index and triggerList length
9
53940964a8e7 Adding full partial layer support.
Jacob Alexander <haata@kiibohd.com>
parents: 7
diff changeset
265 self.fill_dict['PartialLayerTriggerLists'] += "Define_TL( layer{0}, 0x{1:02X} ) = {{ {2}".format( layer, triggerList, len( macros.triggerList[ layer ][ triggerList ] ) )
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
266
7
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
267 # Add scanCode trigger list to Default Layer Scan Map
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
268 self.fill_dict['PartialLayerScanMaps'] += "layer{0}_tl_0x{1:02X}, ".format( layer, triggerList )
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
269
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
270 # Add each item of the trigger list
9
53940964a8e7 Adding full partial layer support.
Jacob Alexander <haata@kiibohd.com>
parents: 7
diff changeset
271 for trigger in macros.triggerList[ layer ][ triggerList ]:
7
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
272 self.fill_dict['PartialLayerTriggerLists'] += ", {0}".format( trigger )
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
273
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
274 self.fill_dict['PartialLayerTriggerLists'] += " };\n"
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
275 self.fill_dict['PartialLayerTriggerLists'] += "\n"
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
276 self.fill_dict['PartialLayerScanMaps'] = self.fill_dict['PartialLayerScanMaps'][:-2] # Remove last comma and space
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
277 self.fill_dict['PartialLayerScanMaps'] += "\n};\n\n"
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
278 self.fill_dict['PartialLayerTriggerLists'] = self.fill_dict['PartialLayerTriggerLists'][:-2] # Remove last 2 newlines
8104b5dd54c4 Adding basic layer support
Jacob Alexander <haata@kiibohd.com>
parents: 5
diff changeset
279 self.fill_dict['PartialLayerScanMaps'] = self.fill_dict['PartialLayerScanMaps'][:-2] # Remove last 2 newlines
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
280
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
281
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
282 ## Layer Index List ##
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
283 self.fill_dict['LayerIndexList'] = "const Layer LayerIndex[] = {\n"
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
284
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
285 # Iterate over each layer, adding it to the list
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
286 for layer in range( 0, len( macros.triggerList ) ):
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
287 # Lookup first scancode in map
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
288 firstScanCode = macros.firstScanCode[ layer ]
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
289
25
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
290 # Generate stacked name
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
291 stackName = ""
29
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
292 if '*NameStack' in variables.layerVariables[ layer ].keys():
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
293 for name in range( 0, len( variables.layerVariables[ layer ]['*NameStack'] ) ):
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
294 stackName += "{0} + ".format( variables.layerVariables[ layer ]['*NameStack'][ name ] )
53e68fe4b8fb Issue #13: Fixing bug in kll compiler when not setting any DefaultMap or PartialMap
Jacob Alexander <haata@kiibohd.com>
parents: 28
diff changeset
295 stackName = stackName[:-3]
25
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
296
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
297 # Default map is a special case, always the first index
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
298 if layer == 0:
25
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
299 self.fill_dict['LayerIndexList'] += '\tLayer_IN( default_scanMap, "D: {1}", 0x{0:02X} ),\n'.format( firstScanCode, stackName )
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
300 else:
25
b3f267e61a0f Adding name and file stacks and layer naming
Jacob Alexander <haata@kiibohd.com>
parents: 24
diff changeset
301 self.fill_dict['LayerIndexList'] += '\tLayer_IN( layer{0}_scanMap, "{0}: {2}", 0x{1:02X} ),\n'.format( layer, firstScanCode, stackName )
5
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
302 self.fill_dict['LayerIndexList'] += "};"
4bea03bae7eb kll compiler now working!
Jacob Alexander <haata@kiibohd.com>
parents: 4
diff changeset
303
2
ce7428de7787 Initial source dump.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
304
15
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
305 ## Layer State ##
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
306 self.fill_dict['LayerState'] = "uint8_t LayerState[ LayerNum ];"
02cbd90e8919 Adding support for firstScanCode calculation and initial Variable container implementation
Jacob Alexander <haata@kiibohd.com>
parents: 11
diff changeset
307