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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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*)(&macro->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*)(&macro->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