ngscopeclient 0.1-dev+51fbda87c
JtagDecoder.h
Go to the documentation of this file.
1/***********************************************************************************************************************
2* *
3* libscopeprotocols *
4* *
5* Copyright (c) 2012-2021 Andrew D. Zonenberg and contributors *
6* All rights reserved. *
7* *
8* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the *
9* following conditions are met: *
10* *
11* * Redistributions of source code must retain the above copyright notice, this list of conditions, and the *
12* following disclaimer. *
13* *
14* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the *
15* following disclaimer in the documentation and/or other materials provided with the distribution. *
16* *
17* * Neither the name of the author nor the names of any contributors may be used to endorse or promote products *
18* derived from this software without specific prior written permission. *
19* *
20* THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
21* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
22* THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES *
23* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR *
24* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
25* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
26* POSSIBILITY OF SUCH DAMAGE. *
27* *
28***********************************************************************************************************************/
29
36#ifndef JtagDecoder_h
37#define JtagDecoder_h
38
39#include "../scopehal/PacketDecoder.h"
40
42{
43public:
44 enum JtagState
45 {
46 TEST_LOGIC_RESET,
47 RUN_TEST_IDLE,
48 SELECT_DR_SCAN,
49 SELECT_IR_SCAN,
50 CAPTURE_DR,
51 CAPTURE_IR,
52 SHIFT_DR,
53 SHIFT_IR,
54 EXIT1_DR,
55 EXIT1_IR,
56 PAUSE_DR,
57 PAUSE_IR,
58 EXIT2_DR,
59 EXIT2_IR,
60 UPDATE_DR,
61 UPDATE_IR,
62
63 UNKNOWN_0,
64 UNKNOWN_1,
65 UNKNOWN_2,
66 UNKNOWN_3,
67 UNKNOWN_4,
68 };
69
71 {}
72
73 JtagSymbol(JtagSymbol::JtagState state, uint8_t idata, uint8_t odata, uint8_t len)
74 : m_state(state)
75 , m_idata(idata)
76 , m_odata(odata)
77 , m_len(len)
78 {}
79
80 static const char* GetName(JtagSymbol::JtagState state);
81
82 bool operator== (const JtagSymbol& s) const
83 {
84 return
85 (m_state == s.m_state) &&
86 (m_idata == s.m_idata) &&
87 (m_odata == s.m_odata) &&
88 (m_len == s.m_len);
89 }
90
91 JtagState m_state;
92 uint8_t m_idata;
93 uint8_t m_odata;
94 uint8_t m_len;
95};
96
97class JtagWaveform : public SparseWaveform<JtagSymbol>
98{
99public:
101 virtual std::string GetText(size_t) override;
102 virtual std::string GetColor(size_t) override;
103};
104
106{
107public:
108 JtagDecoder(const std::string& color);
109
110 virtual void Refresh() override;
111
112 static std::string GetProtocolName();
113
114 virtual std::vector<std::string> GetHeaders() override;
115
116 virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override;
117
118 PROTOCOL_DECODER_INITPROC(JtagDecoder)
119
120protected:
121};
122
123#endif
Definition: JtagDecoder.h:106
virtual void Refresh() override
Evaluates a filter graph node.
Definition: JtagDecoder.cpp:120
Definition: JtagDecoder.h:42
Definition: JtagDecoder.h:98
virtual std::string GetText(size_t) override
Returns the text representation of a given protocol sample.
Definition: JtagDecoder.cpp:361
virtual std::string GetColor(size_t) override
Returns the displayed color (in HTML #rrggbb or #rrggbbaa notation) of a given protocol sample.
Definition: JtagDecoder.cpp:336
Definition: PacketDecoder.h:85
A waveform sampled at irregular intervals.
Definition: Waveform.h:460
Descriptor for a single stream coming off a channel.
Definition: StreamDescriptor.h:46