Subversion Repositories ScreenTimer

Rev

Rev 2 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 3
Line 46... Line 46...
46
  heaterControl control; ///< control state
46
  heaterControl control; ///< control state
47
  uint16_t LEDintensity; ///< current LED intensity
47
  uint16_t LEDintensity; ///< current LED intensity
48
  uint16_t LEDtarget;    ///< current LED target intensity
48
  uint16_t LEDtarget;    ///< current LED target intensity
49
  uint32_t heatTimer;    /// < tick time counter for heater channel
49
  uint32_t heatTimer;    /// < tick time counter for heater channel
50
  uint8_t buttonCount;   /// < debounce counter
50
  uint8_t buttonCount;   /// < debounce counter
-
 
51
  uint8_t tick;          /// < a value that increments 
51
  uint16_t checkSum;     /// < checksum used in post-reset validation
52
  uint16_t checkSum;     /// < checksum used in post-reset validation
52
} heaterStatus;
53
} heaterStatus;
53
#pragma pack(pop)
54
#pragma pack(pop)
54
 
55
 
55
/// \brief enumeration of LED intensities for each case
56
/// \brief enumeration of LED intensities for each case
Line 316... Line 317...
316
  };
317
  };
317
  // default return a reset state
318
  // default return a reset state
318
  return &ResetHeater;
319
  return &ResetHeater;
319
}
320
}
320
 
321
 
321
void process(heaterStatus *status, uint8_t button, uint16_t intensity, int8_t temperature, uint16_t battery, uint16_t dashboard)
322
void process(heaterStatus *status, uint8_t button,  int8_t temperature, uint16_t battery, uint16_t dashboard)
322
{
323
{
323
  // deal with button debounce
324
  // deal with button debounce
324
  uint8_t buttonPressed = 0;
325
    uint8_t buttonPressed = 0;
325
  uint8_t longButtonPressed = 0;
326
    uint8_t longButtonPressed = 0;
326
 
327
 
-
 
328
    // deal with intensity
-
 
329
    uint16_t intensity;
-
 
330
    status->tick++;
-
 
331
    if ((status->tick % 128) < 64)
-
 
332
    {
-
 
333
      intensity = INTENSITY_STBY_DIM;
-
 
334
    }
-
 
335
    else{
-
 
336
      intensity = INTENSITY_STBY_BRIGHT;
-
 
337
    }
-
 
338
   
-
 
339
  if (status->buttonCount >=100)
-
 
340
    status->buttonCount=100;
327
  if (button && status->buttonCount < 100)
341
  if (button && status->buttonCount < 100)
328
  {
342
  {
329
    status->buttonCount++;
343
    status->buttonCount++;
330
    if (status->buttonCount == 10)
344
    if (status->buttonCount == 10)
331
      buttonPressed = 1;
345
      buttonPressed = 1;
332
    if (status->buttonCount == 100)
346
    if (status->buttonCount == 100)
333
      longButtonPressed = 1;
347
      longButtonPressed = 1;
334
  }
348
  }
335
  if (!button)
349
  if (!button)
336
    status->buttonCount = 0;
350
    status->buttonCount = 0;
-
 
351
 
337
 
352
 
338
  // deal with LED brightness control
353
  // deal with LED brightness control
339
 
354
 
340
  if (status->LEDintensity < status->LEDtarget)
355
  if (status->LEDintensity < status->LEDtarget)
341
  {
356
  {
Line 496... Line 511...
496
  HAL_TIM_OC_Start(&htim3, TIM_CHANNEL_2);
511
  HAL_TIM_OC_Start(&htim3, TIM_CHANNEL_2);
497
  HAL_TIM_OC_Start(&htim3, TIM_CHANNEL_4);
512
  HAL_TIM_OC_Start(&htim3, TIM_CHANNEL_4);
498
 
513
 
499
  HAL_TIM_OC_Start(&htim14, TIM_CHANNEL_1);
514
  HAL_TIM_OC_Start(&htim14, TIM_CHANNEL_1);
500
 
515
 
501
  int cnt = 0;
-
 
502
 
-
 
503
  uint16_t intensity = 0;
-
 
504
  HeaterLeft.LEDtarget = INTENSITY_OFF;
516
  HeaterLeft.LEDtarget = INTENSITY_OFF;
505
  HeaterRight.LEDtarget = INTENSITY_OFF;
517
  HeaterRight.LEDtarget = INTENSITY_OFF;
506
 
518
 
507
  /* USER CODE END 2 */
519
  /* USER CODE END 2 */
508
 
520
 
Line 520... Line 532...
520
    setLEDRight(HeaterRight.LEDintensity);
532
    setLEDRight(HeaterRight.LEDintensity);
521
    setLEDEval(HeaterLeft.LEDintensity);
533
    setLEDEval(HeaterLeft.LEDintensity);
522
 
534
 
523
    setRelayLeft(HeaterLeft.control);
535
    setRelayLeft(HeaterLeft.control);
524
    setRelayRight(HeaterRight.control);
536
    setRelayRight(HeaterRight.control);
525
 
537
   
526
    cnt = cnt + 1;
-
 
527
    // generate different intensity targets for LED pulsation effect
538
    // generate different intensity targets for LED pulsation effect
528
    if ((cnt % 128) == 64)
-
 
529
    {
-
 
530
      intensity = INTENSITY_STBY_DIM;
-
 
531
    }
-
 
532
    if ((cnt % 128) == 0)
-
 
533
    {
-
 
534
      intensity = INTENSITY_STBY_BRIGHT;
-
 
535
    }
-
 
536
 
539
 
537
    process(&HeaterLeft, getButtonLeft(), intensity, temperature, batteryVoltage, dashVoltage);
540
    process(&HeaterLeft, getButtonLeft(),  temperature, batteryVoltage, dashVoltage);
538
    process(&HeaterRight, getButtonRight(), intensity, temperature, batteryVoltage, dashVoltage);
541
    process(&HeaterRight, getButtonRight(),  temperature, batteryVoltage, dashVoltage);
539
 
542
 
540
    /* note the WWDG configuration also needs to be updated if this delay is changed */
543
    /* note the WWDG configuration also needs to be updated if this delay is changed */
541
    HAL_Delay(10);
544
    HAL_Delay(10);
542
#if defined WATCHDOG
545
#if defined WATCHDOG
543
    HAL_WWDG_Refresh(&hwwdg);
546
    HAL_WWDG_Refresh(&hwwdg);