summaryrefslogtreecommitdiffstats
path: root/python/gui/templates/predistortion.html
blob: 62e85033a3a0df1072428854814bfcce6dfa6eb2 (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html>
<html lang="en">

{% include 'head.html' %}

<body>
  {% include 'body-nav.html' %}

  <div class="container-fluid">
    <div class="panel-group">
      <div class="panel panel-default">
        <div class="panel-heading">Status and calibration</div>
        <div class="panel-body">

          <div class="container-fluid">
            <div class="row">
              <div class="col-sm-4">
                <h2>Current DPDCE status</h2>
                <div>
                  <div id="dpdstatus" style="font-weight:bold;">N/A</div>
                  <div class="progress">
                    <div id="dpdprogress" class="progress-bar" role="progressbar" style="width:0%">
                      <span id="dpdprogresstext"></span>
                    </div>
                  </div>
                </div>
                <div class="well well-sm" id="dpdresults">N/A</div>
              </div>
              <div class="col-sm-4">
                <h2>List of saved DPD settings</h2>
                <!--TODO: 'erase' and 'clear' buttons. Show DPD settings in tooltip?-->
                <p>This list contains previously used predistortion settings that you
                can recall.</p>
                <p>
                <select id="dpdadaptdumps" size="8" style="width:70%" multiple></select>
                </p>
                <p>
                <button type="button" class="btn btn-sm btn-info" id="adaptdumpsrefreshbtn">Refresh
                </button>
                <button type="button" class="btn btn-sm btn-warning" id="adaptdumpsload">Load and Apply
                </button>
                </p>
              </div>
              <div class="col-sm-4">
                <h2>Summary</h2>
                <p>Calibration needs to be done once before the PA model
                can be trained. Every time calibration is changed, the predistortion
                parameters are invalidated!</p>
                <p>Once calibration succeeded and correct RX gain is set, you
                can trigger a capture and model the PA. Usually, several capture
                runs are needed before the model can be trained.</p>
                <p>The capture and model analysis will calculate a new set of
                DPD model data, that you can apply using the Update Predistorter button.</p>
                <p>The reset button allows you to reset the computation engine. It does not
                modify the currently active predistorter.</p>
              </div>
            </div>
          </div>

          <button type="button" class="btn btn-sm btn-warning" id="calibratebtn">
            Calibrate</button>
          <button type="button" class="btn btn-sm btn-warning" id="triggerbtn">
            Trigger Capture and PA Modeling</button>
          <button type="button" class="btn btn-sm btn-warning" id="adaptbtn">
            Update Predistorter</button>
          <button type="button" class="btn btn-sm btn-info" id="resetbtn">
            Reset Capture and Model</button>
        </div>
      </div>

      <div class="panel panel-default">
        <div class="panel-heading">Capture Statistics</div>
        <div class="panel-body">
          <img id="dpdcapturestats" />
        </div>
      </div>
      <div class="panel panel-default">
        <div class="panel-heading">AM/AM and AM/PM Model</div>
        <div class="panel-body">
          <div class="container-fluid">
            <div class="row">
              <div class="col-sm-2">
                <p>Model data:</p>
              </div>
              <div class="col-sm-10">
                <pre id="dpdmodeldata"></pre>
              </div>
            </div>
          </div>
          <img id="dpdmodelplot" />
        </div>
      </div>

      <!--
      <div class="panel panel-default">
        <div class="panel-heading">Status</div>
        <div class="panel-body">
          <button type="button" class="btn btn-sm btn-info" id="dpdstatusbutton">
            Update</button>
          <div>Histogram: <span id="histogram">N/A</span></div>
          <div>Capture status
            <span id="capturestatus">N/A</span></div>
          <div>Number of samples captured:
            <span id="capturelength">None</span></div>
          <div>TX median: <span id="tx_median">N/A</span></div>
          <div>RX median: <span id="rx_median">N/A</span></div>
          <div>Point cloud: <img id="dpd_pointcloud" /></div>
        </div>
      </div>
      -->
    </div>
  </div>
</body>
</html>

<!--
   Copyright (C) 2019
   Matthias P. Braendli, matthias.braendli@mpb.li

This file is part of ODR-DabMod.

ODR-DabMod is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

ODR-DabMod is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with ODR-DabMod.  If not, see <http://www.gnu.org/licenses/>.
-->