Mercurial > louis > kiibohd-controller
annotate Macro/PartialMap/result.c @ 433:0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
- Requires a recent KLL
- Functionality wise, nothing has changed
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Sun, 08 May 2016 18:50:28 -0700 |
parents | |
children |
rev | line source |
---|---|
433
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1 /* Copyright (C) 2014-2016 by Jacob Alexander |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
2 * |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
3 * This file is free software: you can redistribute it and/or modify |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
4 * it under the terms of the GNU General Public License as published by |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
5 * the Free Software Foundation, either version 3 of the License, or |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
6 * (at your option) any later version. |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
7 * |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
8 * This file is distributed in the hope that it will be useful, |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
11 * GNU General Public License for more details. |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
12 * |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
13 * You should have received a copy of the GNU General Public License |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
14 * along with this file. If not, see <http://www.gnu.org/licenses/>. |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
15 */ |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
16 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
17 // ----- Includes ----- |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
18 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
19 // Compiler Includes |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
20 #include <Lib/MacroLib.h> |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
21 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
22 // Project Includes |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
23 #include <led.h> |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
24 #include <print.h> |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
25 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 // Local Includes |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
27 #include "result.h" |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
28 #include "kll.h" |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
29 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
30 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
31 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
32 // ----- Enums ----- |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
33 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
34 typedef enum ResultMacroEval { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
35 ResultMacroEval_DoNothing, |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
36 ResultMacroEval_Remove, |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
37 } ResultMacroEval; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
38 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
39 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
40 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
41 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
42 // ----- KLL Generated Variables ----- |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
43 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
44 extern const Capability CapabilitiesList[]; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
45 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
46 extern const ResultMacro ResultMacroList[]; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
47 extern ResultMacroRecord ResultMacroRecordList[]; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
48 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
49 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
50 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
51 // ----- Variables ----- |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
52 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
53 // Pending Result Macro Index List |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
54 // * Any result macro that needs processing from a previous macro processing loop |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
55 index_uint_t macroResultMacroPendingList[ ResultMacroNum ] = { 0 }; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
56 index_uint_t macroResultMacroPendingListSize = 0; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
57 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
58 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
59 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
60 // ----- Functions ----- |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
61 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
62 // Evaluate/Update ResultMacro |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
63 inline ResultMacroEval Macro_evalResultMacro( var_uint_t resultMacroIndex ) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
64 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
65 // Lookup ResultMacro |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
66 const ResultMacro *macro = &ResultMacroList[ resultMacroIndex ]; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
67 ResultMacroRecord *record = &ResultMacroRecordList[ resultMacroIndex ]; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
68 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
69 // Current Macro position |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
70 var_uint_t pos = record->pos; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
71 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
72 // Length of combo being processed |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
73 uint8_t comboLength = macro->guide[ pos ]; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
74 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
75 // Function Counter, used to keep track of the combo items processed |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
76 var_uint_t funcCount = 0; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
77 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
78 // Combo Item Position within the guide |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
79 var_uint_t comboItem = pos + 1; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
80 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
81 // Iterate through the Result Combo |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
82 while ( funcCount < comboLength ) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
83 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
84 // Assign TriggerGuide element (key type, state and scancode) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
85 ResultGuide *guide = (ResultGuide*)(¯o->guide[ comboItem ]); |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
86 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
87 // Do lookup on capability function |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
88 void (*capability)(uint8_t, uint8_t, uint8_t*) = (void(*)(uint8_t, uint8_t, uint8_t*))(CapabilitiesList[ guide->index ].func); |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
89 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
90 // Call capability |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
91 capability( record->state, record->stateType, &guide->args ); |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
92 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
93 // Increment counters |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
94 funcCount++; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
95 comboItem += ResultGuideSize( (ResultGuide*)(¯o->guide[ comboItem ]) ); |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
96 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
97 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
98 // Move to next item in the sequence |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
99 record->pos = comboItem; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
100 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
101 // If the ResultMacro is finished, remove |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
102 if ( macro->guide[ comboItem ] == 0 ) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
103 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
104 record->pos = 0; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
105 return ResultMacroEval_Remove; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
106 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
107 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
108 // Otherwise leave the macro in the list |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
109 return ResultMacroEval_DoNothing; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
110 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
111 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
112 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
113 void Result_add( uint32_t index ) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
114 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
115 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
116 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
117 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
118 void Result_setup() |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
119 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
120 // Initialize ResultMacro states |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
121 for ( var_uint_t macro = 0; macro < ResultMacroNum; macro++ ) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
122 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
123 ResultMacroRecordList[ macro ].pos = 0; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
124 ResultMacroRecordList[ macro ].state = 0; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
125 ResultMacroRecordList[ macro ].stateType = 0; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
126 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
127 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
128 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
129 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
130 void Result_process() |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
131 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
132 // Tail pointer for macroResultMacroPendingList |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
133 // Macros must be explicitly re-added |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
134 var_uint_t macroResultMacroPendingListTail = 0; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
135 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
136 // Iterate through the pending ResultMacros, processing each of them |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
137 for ( var_uint_t macro = 0; macro < macroResultMacroPendingListSize; macro++ ) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
138 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
139 switch ( Macro_evalResultMacro( macroResultMacroPendingList[ macro ] ) ) |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
140 { |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
141 // Re-add macros to pending list |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
142 case ResultMacroEval_DoNothing: |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
143 default: |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
144 macroResultMacroPendingList[ macroResultMacroPendingListTail++ ] = macroResultMacroPendingList[ macro ]; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
145 break; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
146 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
147 // Remove Macro from Pending List, nothing to do, removing by default |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
148 case ResultMacroEval_Remove: |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
149 break; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
150 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
151 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
152 |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
153 // Update the macroResultMacroPendingListSize with the tail pointer |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
154 macroResultMacroPendingListSize = macroResultMacroPendingListTail; |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
155 } |
0f7a6b593dc4
Initial refactoring of PartialMap for supporting custom Triggers
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
156 |