Rev 70 | Rev 72 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 70 | Rev 71 | ||
---|---|---|---|
Line 290... | Line 290... | ||
290 | cc_init(); |
290 | cc_init(); |
291 | 291 | ||
292 | int i; |
292 | int i; |
293 | for (i = 0; i < 2; i++) |
293 | for (i = 0; i < 2; i++) |
294 | { |
294 | { |
295 | dial_pos[i] = 0; // default to items 0 and 1 |
- | |
296 | contexts[i].knobPos = -1; // set the knob position |
295 | contexts[i].knobPos = -1; // set the knob position |
297 | contexts[i].dial_timer = 1; // timeout immediately when decremented |
- | |
298 | - | ||
299 | cc_check_nvram(i); |
- | |
300 | } |
296 | } |
301 | 297 | ||
302 | /* reset the display timeout, latch on power from accessories */ |
298 | /* reset the display timeout, latch on power from accessories */ |
303 | Latch_Timer = IGNITION_OFF_TIMEOUT; |
299 | Latch_Timer = IGNITION_OFF_TIMEOUT; |
304 | HAL_GPIO_WritePin(POWER_LATCH_GPIO_Port, POWER_LATCH_Pin, GPIO_PIN_RESET); |
300 | HAL_GPIO_WritePin(POWER_LATCH_GPIO_Port, POWER_LATCH_Pin, GPIO_PIN_RESET); |
Line 311... | Line 307... | ||
311 | uint32_t nextTick = 0; |
307 | uint32_t nextTick = 0; |
312 | uint8_t log = 0; |
308 | uint8_t log = 0; |
313 | // PLX decoder protocols |
309 | // PLX decoder protocols |
314 | char PLXPacket = 0; |
310 | char PLXPacket = 0; |
315 | 311 | ||
316 | - | ||
317 | for (i = 0; i < MAXRDG; i++) |
312 | for (i = 0; i < MAXRDG; i++) |
318 | { |
313 | { |
319 | Info[i] = nullInfo; |
314 | Info[i] = nullInfo; |
320 | } |
315 | } |
321 | 316 | ||
322 | int PLXPtr = 0; |
317 | int PLXPtr = 0; |
323 | int logCount = 0; |
318 | int logCount = 0; |
324 | 319 | ||
325 | uint32_t resetCounter; // record time at which both reset buttons were first pressed. |
320 | uint32_t resetCounter = 0 ; // record time at which both reset buttons were first pressed. |
326 | 321 | ||
327 | /* USER CODE END 2 */ |
322 | /* USER CODE END 2 */ |
328 | 323 | ||
329 | /* Infinite loop */ |
324 | /* Infinite loop */ |
330 | /* USER CODE BEGIN WHILE */ |
325 | /* USER CODE BEGIN WHILE */ |
Line 364... | Line 359... | ||
364 | // Held down reset button for 10 seconds, clear NVRAM. |
359 | // Held down reset button for 10 seconds, clear NVRAM. |
365 | if ((HAL_GetTick() - resetCounter) > 10000) |
360 | if ((HAL_GetTick() - resetCounter) > 10000) |
366 | { |
361 | { |
367 | for (i = 0; i < 2; i++) |
362 | for (i = 0; i < 2; i++) |
368 | { |
363 | { |
369 | dial_pos[i] = 0; // default to items 0 and 1 |
- | |
370 | contexts[i].knobPos = -1; // set the knob position |
364 | contexts[i].knobPos = -1; // set the knob position |
371 | contexts[i].dial_timer = 1; // timeout immediately when decremented |
365 | contexts[i].dial_timer = 1; // timeout immediately when decremented |
372 | } |
366 | } |
373 | erase_nvram(); |
367 | erase_nvram(); |
374 | } |
368 | } |
Line 406... | Line 400... | ||
406 | 400 | ||
407 | if (log) |
401 | if (log) |
408 | { |
402 | { |
409 | log = 0; |
403 | log = 0; |
410 | // Send items to BT if it is in connected state |
404 | // Send items to BT if it is in connected state |
411 | for (int i = 0; i < MAXRDG; ++i) |
405 | for (int i = 0; i < MAXRDG; ++i) |
412 | { |
406 | { |
413 | if(!isValid(i)) |
407 | if (!isValid(i)) |
414 | continue; |
408 | continue; |
415 | char outbuff[100]; |
409 | char outbuff[100]; |
416 | 410 | ||
417 | int cnt = small_sprintf(outbuff, |
411 | int cnt = small_sprintf(outbuff, |
418 | "$PLLOG,%d,%d,%d,%ld", |
412 | "$PLLOG,%d,%d,%d,%ld", |
419 | logCount, |
413 | logCount, |
Line 560... | Line 554... | ||
560 | if (PLXPacket && PLXPtr < sizeof(Data.Bytes)) |
554 | if (PLXPacket && PLXPtr < sizeof(Data.Bytes)) |
561 | { |
555 | { |
562 | Data.Bytes[PLXPtr++] = c; |
556 | Data.Bytes[PLXPtr++] = c; |
563 | } |
557 | } |
564 | } |
558 | } |
- | 559 | ||
- | 560 | // handle switch rotation |
|
- | 561 | for (i = 0; i < MAX_DIALS; ++i) |
|
- | 562 | { |
|
- | 563 | int delta = get_dial_diff(i); |
|
- | 564 | int pos = contexts[i].knobPos; |
|
- | 565 | if(pos < 0) |
|
- | 566 | break; // dont process until we have read NVRAM for the first time . |
|
- | 567 | int start = pos; |
|
- | 568 | // move in positive direction |
|
- | 569 | while (delta > 0) |
|
- | 570 | { |
|
- | 571 | // skip invalid items, dont count |
|
- | 572 | if(pos<MAXRDG-1) |
|
- | 573 | pos++; |
|
- | 574 | else |
|
- | 575 | pos=0; |
|
- | 576 | ||
- | 577 | if (isValid(pos)) |
|
- | 578 | delta--; // count a valid item |
|
- | 579 | ||
- | 580 | // wrap |
|
- | 581 | if (pos == start) |
|
- | 582 | break; |
|
- | 583 | } |
|
- | 584 | ||
- | 585 | // move in negative direction |
|
- | 586 | while (delta < 0) |
|
- | 587 | ||
- | 588 | { |
|
- | 589 | // skip invalid items, dont count |
|
- | 590 | if(pos>0) |
|
- | 591 | pos--; |
|
- | 592 | else |
|
- | 593 | pos=MAXRDG-1; |
|
- | 594 | ||
- | 595 | if (isValid(pos)) |
|
- | 596 | delta++; // count a valid item |
|
- | 597 | ||
- | 598 | // wrap |
|
- | 599 | if (pos == start) |
|
- | 600 | break; |
|
- | 601 | } |
|
- | 602 | ||
- | 603 | contexts[i].knobPos = pos; |
|
- | 604 | if (pos != start) |
|
- | 605 | contexts[i].dial_timer = DialTimeout; |
|
- | 606 | } |
|
- | 607 | ||
565 | int suppress = -1; |
608 | int suppress = -1; |
566 | for (i = 0; i < MAX_DISPLAYS; i++) |
609 | for (i = 0; i < MAX_DISPLAYS; i++) |
567 | { // now to display the information |
610 | { // now to display the information |
568 | suppress = DisplayCurrent(i, suppress); |
611 | suppress = DisplayCurrent(i, suppress); |
569 | 612 | ||
570 | if (dial_pos[i] < 0) |
- | |
571 | dial_pos[i] = MAXRDG - 1; |
- | |
572 | if (dial_pos[i] >= MAXRDG) |
- | |
573 | dial_pos[i] = 0; |
- | |
574 | - | ||
575 | int prevPos = contexts[i].knobPos; |
- | |
576 | if (contexts[i].knobPos >= 0) |
- | |
577 | contexts[i].knobPos = dial_pos[i]; |
- | |
578 | // if the dial position was changed then reset timer |
- | |
579 | if (prevPos != contexts[i].knobPos) |
- | |
580 | contexts[i].dial_timer = DialTimeout; |
- | |
581 | - | ||
582 | cc_check_nvram(i); |
613 | cc_check_nvram(i); |
583 | if (contexts[i].knobPos >= 0) |
- | |
584 | dial_pos[i] = contexts[i].knobPos; |
- | |
585 | } |
614 | } |
586 | } |
615 | } |
- | 616 | } |
|
587 | /* USER CODE END WHILE */ |
617 | /* USER CODE END WHILE */ |
588 | 618 | ||
589 | /* USER CODE BEGIN 3 */ |
619 | /* USER CODE BEGIN 3 */ |
590 | 620 | ||
591 | /* USER CODE END 3 */ |
621 | /* USER CODE END 3 */ |
592 | } |
- | |
593 | 622 | ||
594 | /** |
623 | /** |
595 | * @brief System Clock Configuration |
624 | * @brief System Clock Configuration |
596 | * @retval None |
625 | * @retval None |
597 | */ |
626 | */ |