Rev 74 | Rev 76 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 74 | Rev 75 | ||
---|---|---|---|
Line 23... | Line 23... | ||
23 | { |
23 | { |
24 | int const WIDTH = 128; |
24 | int const WIDTH = 128; |
25 | int const HEIGHT = 64; |
25 | int const HEIGHT = 64; |
26 | int const DISPLAY_RAMWIDTH = 132; |
26 | int const DISPLAY_RAMWIDTH = 132; |
27 | 27 | ||
28 | uniqueObs_t const nullObs = {PLX_MAX_OBS, PLX_MAX_INST}; |
- | |
29 | } |
28 | } |
30 | 29 | ||
31 | uint8_t displayBuffer[2][dataSize(WIDTH, HEIGHT)]; |
30 | uint8_t displayBuffer[2][dataSize(WIDTH, HEIGHT)]; |
32 | 31 | ||
33 | stm32_halDisplay_t displays[MAX_DISPLAYS] = |
32 | stm32_halDisplay_t displays[MAX_DISPLAYS] = |
Line 126... | Line 125... | ||
126 | // check for timer timeout on consistent timer |
125 | // check for timer timeout on consistent timer |
127 | 126 | ||
128 | if (context.dial_timer) |
127 | if (context.dial_timer) |
129 | { |
128 | { |
130 | context.dial_timer--; |
129 | context.dial_timer--; |
- | 130 | } |
|
131 | if (context.dial_timer == 0) |
131 | if (context.dial_timer == 0) |
- | 132 | { |
|
- | 133 | context.dial_timer = DialTimeout; |
|
- | 134 | int i; |
|
- | 135 | // use dialIndex+1 as tag for data : always non-zero. |
|
- | 136 | nvram_info_t *dial_nvram = find_nvram_data(dialIndex + 1); |
|
- | 137 | ||
- | 138 | if (dial_nvram && context.knobPos < 0) |
|
- | 139 | { |
|
- | 140 | for (i = 0; i < MAXRDG; i++) |
|
- | 141 | if (isValid(i) && (Info[i].observation.Obs == dial_nvram->data.observation) && (Info[i].observation.Instance == dial_nvram->data.instance)) |
|
- | 142 | { |
|
- | 143 | context.knobPos = i; |
|
- | 144 | return; |
|
- | 145 | } |
|
- | 146 | } |
|
- | 147 | if (context.knobPos == -1) |
|
- | 148 | context.knobPos = dialIndex; // timed out , not in NVRAM, use a default |
|
- | 149 | ||
- | 150 | // dont save dial info for invalid data |
|
- | 151 | if (!isValid(context.knobPos)) |
|
- | 152 | return; |
|
- | 153 | // is this a change since the last timeout ? |
|
- | 154 | ||
- | 155 | if (!dial_nvram || (Info[context.knobPos].observation.Obs != dial_nvram->data.observation) || (Info[context.knobPos].observation.Instance != dial_nvram->data.instance)) |
|
132 | { |
156 | { |
133 | context.dial_timer = DialTimeout; |
- | |
134 | int i; |
- | |
135 | // use dialIndex+1 as tag for data : always non-zero. |
- | |
136 | nvram_info_t *dial_nvram = find_nvram_data(dialIndex + 1); |
- | |
137 | - | ||
138 | if (dial_nvram && context.knobPos < 0) |
- | |
139 | { |
- | |
140 | for (i = 0; i < MAXRDG; i++) |
- | |
141 | if (isValid(i) && (Info[i].observation.Obs == dial_nvram->data.observation) && (Info[i].observation.Instance == dial_nvram->data.instance)) |
- | |
142 | { |
- | |
143 | context.knobPos = i; |
- | |
144 | return; |
- | |
145 | } |
- | |
146 | } |
- | |
147 | if (context.knobPos == -1) |
- | |
148 | context.knobPos = dialIndex; // timed out , not in NVRAM, use a default |
- | |
149 | - | ||
150 | // dont save dial info for invalid data |
- | |
151 | if (!isValid(context.knobPos)) |
- | |
152 | return; |
- | |
153 | // is this a change since the last timeout ? |
- | |
154 | - | ||
155 | if (!dial_nvram || (Info[context.knobPos].observation.Obs != dial_nvram->data.observation) || (Info[context.knobPos].observation.Instance != dial_nvram->data.instance)) |
- | |
156 | { |
- | |
157 | - | ||
158 | // store the observation and instance in the NVRAM, not dial position. |
- | |
159 | nvram_info_t curr_val; |
- | |
160 | curr_val.data.observation = Info[context.knobPos].observation.Obs; |
- | |
161 | curr_val.data.instance = Info[context.knobPos].observation.Instance; |
- | |
162 | curr_val.data.tag = dialIndex + 1; |
- | |
163 | 157 | ||
- | 158 | // store the observation and instance in the NVRAM, not dial position. |
|
164 | write_nvram_data(curr_val); |
159 | nvram_info_t curr_val; |
- | 160 | curr_val.data.observation = Info[context.knobPos].observation.Obs; |
|
- | 161 | curr_val.data.instance = Info[context.knobPos].observation.Instance; |
|
- | 162 | curr_val.data.tag = dialIndex + 1; |
|
165 | } |
163 | |
- | 164 | write_nvram_data(curr_val); |
|
166 | } |
165 | } |
167 | } |
166 | } |
168 | } |
167 | } |
169 | 168 | ||
170 | int |
169 | int |
Line 178... | Line 177... | ||
178 | displayDial_t &dial = dials[dialIndex]; |
177 | displayDial_t &dial = dials[dialIndex]; |
179 | stm32_halDisplay_t &display = displays[dialIndex]; |
178 | stm32_halDisplay_t &display = displays[dialIndex]; |
180 | int itemIndex = context.knobPos; |
179 | int itemIndex = context.knobPos; |
181 | char buff[10]; |
180 | char buff[10]; |
182 | int i; |
181 | int i; |
183 | char *msg; |
182 | const char *msg; |
184 | int len; |
183 | int len; |
185 | // check for startup phase |
184 | // check for startup phase |
186 | if (itemIndex < 0) |
185 | if (itemIndex < 0) |
187 | { |
186 | { |
188 | display.clearDisplay(BLACK); |
187 | display.clearDisplay(BLACK); |