aboutsummaryrefslogtreecommitdiffstats
path: root/src/Xpl2JcStatus.cpp
blob: b800eb9af3515ee3222dabebc2f0fcf9fe6c846d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
 * @file   Xpl2JcStatus.cpp
 * @brief  Structured JC status message (EV_STATUS_MSG_JC, Appendix A).
 */
#include "Xpl2JcStatus.h"

#include <QVariant>

Xpl2JcStatus
Xpl2JcStatus::fromParams (const QVariantList &params)
{
  Xpl2JcStatus s;
  int n = params.size ();
  if (n < 2)
    return s;

  s.controllerId = params[0].toInt ();
  s.statusLevel = params[1].toInt ();

  /* Level 1: fields at indices 2-8 */
  if (n > 2)
    s.cpuPercentageBusy = params[2].toFloat ();
  if (n > 3)
    s.rail5V = params[3].toFloat ();
  if (n > 4)
    s.railCanBus8V = params[4].toFloat ();
  if (n > 5)
    s.temperature = params[5].toFloat ();
  if (n > 6)
    s.humidity = params[6].toFloat ();
  if (n > 7)
    s.busCurrent = params[7].toFloat ();
  if (n > 8)
    s.onTimeSeconds = params[8].toInt ();

  /* Level 2: fields at indices 9-22 */
  if (s.statusLevel < 2 || n <= 9)
    return s;

  if (n > 9)
    s.ipAddress = params[9].toString ();
  if (n > 10)
    s.eFuseVoltage = params[10].toFloat ();
  if (n > 11)
    s.eFuseBusEnabled = params[11].toInt () != 0;
  if (n > 12)
    s.busPowerEnabled = params[12].toInt () != 0;
  if (n > 13)
    s.busPowerOk = params[13].toInt () != 0;
  if (n > 14)
    s.switchValue = params[14].toInt ();
  if (n > 15)
    s.firmwareVersion = params[15].toString ();
  if (n > 16)
    s.hardwareVersion = params[16].toString ();
  if (n > 17)
    s.indicator0 = params[17].toInt () != 0;
  if (n > 18)
    s.indicator1 = params[18].toInt () != 0;
  if (n > 19)
    s.indicator2 = params[19].toInt () != 0;
  if (n > 20)
    s.indicator3 = params[20].toInt () != 0;
  if (n > 21)
    s.indicator4 = params[21].toInt () != 0;
  if (n > 22)
    s.indicator5 = params[22].toInt () != 0;

  return s;
}