Subversion Repositories DashDisplay

Rev

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

Rev 53 Rev 56
Line 65... Line 65...
65
 
65
 
66
#define LOGGER_INTERVAL 500UL
66
#define LOGGER_INTERVAL 500UL
67
 
67
 
68
const int DialTimeout = 50; // about 20 seconds after twiddle, save the dial position.
68
const int DialTimeout = 50; // about 20 seconds after twiddle, save the dial position.
69
 
69
 
70
uint16_t dial_nvram[MAX_DISPLAYS] __attribute__((section(".NVRAM_Data")));
70
nvram_info_t dial_nvram[MAX_DISPLAYS] __attribute__((section(".NVRAM_Data")));
71
 
71
 
-
 
72
info_t Info[MAXRDG];
-
 
73
 
-
 
74
/// \brief storage for incoming data
72
data_t Data;
75
data_t Data;
73
int Max[MAXRDG];
-
 
74
int Min[MAXRDG];
-
 
-
 
76
 
75
int PLXItems;
77
int PLXItems;
76
 
78
 
77
uint32_t Latch_Timer = IGNITION_OFF_TIMEOUT;
79
uint32_t Latch_Timer = IGNITION_OFF_TIMEOUT;
78
 
80
 
79
/* USER CODE END PV */
81
/* USER CODE END PV */
Line 102... Line 104...
102
// the dial is the switch number we are using.
104
// the dial is the switch number we are using.
103
// suppress is the ItemIndex we wish to suppress on this display
105
// suppress is the ItemIndex we wish to suppress on this display
104
int
106
int
105
DisplayCurrent (int dial, int suppress)
107
DisplayCurrent (int dial, int suppress)
106
{
108
{
107
  if (PLXItems == 0)
-
 
108
    return -1;
-
 
109
 
-
 
110
  int itemIndex = dial_pos[dial] % PLXItems;
109
  int itemIndex = dial_pos[dial] % PLXItems;
-
 
110
  if (itemIndex < 0)
111
 
111
    return -1;
112
  return cc_display (dial, itemIndex, suppress);
112
  return cc_display (dial, itemIndex, suppress);
113
}
113
}
114
 
114
 
115
void
115
void
116
setBaud (usart_ctl *ctl, uint32_t baud)
116
setBaud (usart_ctl *ctl, uint32_t baud)
Line 128... Line 128...
128
  for (i = 0; i < length; i++)
128
  for (i = 0; i < length; i++)
129
    PutCharSerial (ctl, string[i]);
129
    PutCharSerial (ctl, string[i]);
130
 
130
 
131
}
131
}
132
 
132
 
133
 
-
 
134
// this code doesnt work so it leaves speed as 9600.
133
/// \note this code doesnt work so it leaves speed as 9600.
-
 
134
/// \brief Setup Bluetooth module
135
void
135
void
136
initModule (usart_ctl *ctl, uint32_t baudRate)
136
initModule (usart_ctl *ctl, uint32_t baudRate)
137
{
137
{
138
  char initBuf[30];
138
  char initBuf[30];
139
  // switch to command mode
139
  // switch to command mode
Line 234... Line 234...
234
  HAL_TIM_Encoder_Start (&htim9, TIM_CHANNEL_ALL);
234
  HAL_TIM_Encoder_Start (&htim9, TIM_CHANNEL_ALL);
235
 
235
 
236
  // Switch handler called on sysTick interrupt.
236
  // Switch handler called on sysTick interrupt.
237
  InitSwitches ();
237
  InitSwitches ();
238
 
238
 
239
  initModule(&uc3,9600);
239
  initModule (&uc3, 9600);
240
 
-
 
241
 
240
 
242
  cc_init ();
241
  cc_init ();
243
 
242
 
244
  int i;
243
  int i;
245
  for (i = 0; i < 2; i++)
244
  for (i = 0; i < 2; i++)
246
    {
245
    {
247
      dial_pos[i] = dial_nvram[i];
246
      dial_pos[i] = -1; // default to items 0 and 1
248
    }
247
    }
249
 
248
 
250
  /* reset the display timeout, latch on power from accessories */
249
  /* reset the display timeout, latch on power from accessories */
251
  Latch_Timer = IGNITION_OFF_TIMEOUT;
250
  Latch_Timer = IGNITION_OFF_TIMEOUT;
252
  HAL_GPIO_WritePin (POWER_LATCH_GPIO_Port, POWER_LATCH_Pin, GPIO_PIN_RESET);
251
  HAL_GPIO_WritePin (POWER_LATCH_GPIO_Port, POWER_LATCH_Pin, GPIO_PIN_RESET);
Line 279... Line 278...
279
      uint8_t log = 0;
278
      uint8_t log = 0;
280
      // PLX decoder protocols
279
      // PLX decoder protocols
281
      char PLXPacket = 0;
280
      char PLXPacket = 0;
282
      for (i = 0; i < MAXRDG; i++)
281
      for (i = 0; i < MAXRDG; i++)
283
        {
282
        {
284
          Max[i] = 0;
283
          Info[i].Max = 0;
285
          Min[i] = 0xFFF; // 12 bit max value
284
          Info[i].Min = 0xFFF; // 12 bit max value
286
        }
285
        }
287
 
286
 
288
      int PLXPtr = 0;
287
      int PLXPtr = 0;
289
 
288
 
290
      while (1)
289
      while (1)
Line 347... Line 346...
347
 
346
 
348
                      int DataVal;
347
                      int DataVal;
349
                      // process min/max
348
                      // process min/max
350
                      for (i = 0; i < PLXItems; i++)
349
                      for (i = 0; i < PLXItems; i++)
351
                        {
350
                        {
-
 
351
                          Info[i].observation = ConvPLX (Data.Sensor[i].AddrH,
-
 
352
                                                         Data.Sensor[i].AddrL);
-
 
353
                          Info[i].instance = Data.Sensor[i].Instance;
-
 
354
                          Info[i].data = ConvPLX (Data.Sensor[i].ReadingH,
-
 
355
                                                  Data.Sensor[i].ReadingL);
-
 
356
                          if (Info[i].data > Info[i].Max)
-
 
357
                            {
-
 
358
                              Info[i].Max = Info[i].data;
-
 
359
                            }
-
 
360
                          if (Info[i].data < Info[i].Min)
-
 
361
                            {
-
 
362
                              Info[i].Min = Info[i].data;
-
 
363
                            }
-
 
364
 
-
 
365
                          // Send item to BT
352
 
366
 
353
                          if (log)
367
                          if (log)
354
                            {
368
                            {
355
                              // Send item to BT
-
 
356
                              uint16_t addr = ConvPLX (Data.Sensor[i].AddrH,
-
 
357
                                                       Data.Sensor[i].AddrL);
-
 
358
                              uint8_t inst = Data.Sensor[i].Instance;
-
 
359
                              uint16_t reading = ConvPLX (
-
 
360
                                  Data.Sensor[i].ReadingH,
-
 
361
                                  Data.Sensor[i].ReadingL);
-
 
-
 
369
 
362
                              char outbuff[100];
370
                              char outbuff[100];
363
 
371
 
364
                              int cnt = small_sprintf (outbuff, "$LOG,%d,%d,%d",
372
                              int cnt = small_sprintf (outbuff, "$LOG,%d,%d,%d",
-
 
373
                                                       Info[i].observation,
365
                                                       addr, inst, reading);
374
                                                       Info[i].instance,
-
 
375
                                                       Info[i].data);
366
 
376
 
367
                              //checksum
377
                              //checksum
368
                              int ck;
378
                              int ck;
369
                              int sum = 0;
379
                              int sum = 0;
370
                              for (ck = 1; ck < cnt; ck++)
380
                              for (ck = 1; ck < cnt; ck++)
Line 372... Line 382...
372
                              cnt += small_sprintf (outbuff + cnt, "*%02X\n",
382
                              cnt += small_sprintf (outbuff + cnt, "*%02X\n",
373
                                                    sum & 0xFF);
383
                                                    sum & 0xFF);
374
                              sendString (&uc3, outbuff, cnt);
384
                              sendString (&uc3, outbuff, cnt);
375
 
385
 
376
                            }
386
                            }
377
                          DataVal = ConvPLX (Data.Sensor[i].ReadingH,
-
 
378
                                             Data.Sensor[i].ReadingL);
-
 
379
                          if (DataVal > Max[i])
-
 
380
                            {
-
 
381
                              Max[i] = DataVal;
-
 
382
                            }
-
 
383
                          if (DataVal < Min[i])
-
 
384
                            {
-
 
385
                              Min[i] = DataVal;
-
 
386
                            }
-
 
387
                        }
387
                        }
388
 
388
 
389
                      // now to display the information
389
                      // now to display the information
390
                      int suppress = DisplayCurrent (0, -1);
390
                      int suppress = DisplayCurrent (0, -1);
391
                      DisplayCurrent (1, suppress);
391
                      DisplayCurrent (1, suppress);
Line 404... Line 404...
404
                }
404
                }
405
 
405
 
406
            }
406
            }
407
 
407
 
408
          HAL_Delay (1);
408
          HAL_Delay (1);
-
 
409
 
-
 
410
          dial_pos[0] = cc_check_nvram (0, dial_pos[0]);
-
 
411
          dial_pos[1] = cc_check_nvram (1, dial_pos[1]);
-
 
412
 
409
        }
413
        }
410
 
414
 
411
      /* USER CODE END WHILE */
415
      /* USER CODE END WHILE */
412
 
416
 
413
      /* USER CODE BEGIN 3 */
417
      /* USER CODE BEGIN 3 */