/src/openthread/src/cli/cli_history.hpp
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2021, The OpenThread Authors. |
3 | | * All rights reserved. |
4 | | * |
5 | | * Redistribution and use in source and binary forms, with or without |
6 | | * modification, are permitted provided that the following conditions are met: |
7 | | * 1. Redistributions of source code must retain the above copyright |
8 | | * notice, this list of conditions and the following disclaimer. |
9 | | * 2. Redistributions in binary form must reproduce the above copyright |
10 | | * notice, this list of conditions and the following disclaimer in the |
11 | | * documentation and/or other materials provided with the distribution. |
12 | | * 3. Neither the name of the copyright holder nor the |
13 | | * names of its contributors may be used to endorse or promote products |
14 | | * derived from this software without specific prior written permission. |
15 | | * |
16 | | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
17 | | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
18 | | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
19 | | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
20 | | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
21 | | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
22 | | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
23 | | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
24 | | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
25 | | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
26 | | * POSSIBILITY OF SUCH DAMAGE. |
27 | | */ |
28 | | |
29 | | /** |
30 | | * @file |
31 | | * This file contains definitions for CLI to control History Tracker |
32 | | */ |
33 | | |
34 | | #ifndef CLI_HISTORY_HPP_ |
35 | | #define CLI_HISTORY_HPP_ |
36 | | |
37 | | #include "openthread-core-config.h" |
38 | | |
39 | | #include <openthread/history_tracker.h> |
40 | | |
41 | | #include "cli/cli_config.h" |
42 | | #include "cli/cli_output.hpp" |
43 | | |
44 | | #if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE |
45 | | |
46 | | namespace ot { |
47 | | namespace Cli { |
48 | | |
49 | | /** |
50 | | * This class implements the History Tracker CLI interpreter. |
51 | | * |
52 | | */ |
53 | | class History : private Output |
54 | | { |
55 | | public: |
56 | | typedef Utils::CmdLineParser::Arg Arg; |
57 | | |
58 | | /** |
59 | | * Constructor |
60 | | * |
61 | | * @param[in] aInstance The OpenThread Instance. |
62 | | * @param[in] aOutputImplementer An `OutputImplementer`. |
63 | | * |
64 | | */ |
65 | | History(otInstance *aInstance, OutputImplementer &aOutputImplementer) |
66 | | : Output(aInstance, aOutputImplementer) |
67 | 7.92k | { |
68 | 7.92k | } |
69 | | |
70 | | /** |
71 | | * This method interprets a list of CLI arguments. |
72 | | * |
73 | | * @param[in] aArgs A pointer an array of command line arguments. |
74 | | * |
75 | | */ |
76 | | otError Process(Arg aArgs[]); |
77 | | |
78 | | private: |
79 | | static constexpr uint16_t kShortAddrInvalid = 0xfffe; |
80 | | static constexpr uint16_t kShortAddrBroadcast = 0xffff; |
81 | | static constexpr int8_t kInvalidRss = OT_RADIO_RSSI_INVALID; |
82 | | |
83 | | using Command = CommandEntry<History>; |
84 | | |
85 | | enum RxTx : uint8_t |
86 | | { |
87 | | kRx, |
88 | | kTx, |
89 | | kRxTx, |
90 | | }; |
91 | | |
92 | | template <CommandId kCommandId> otError Process(Arg aArgs[]); |
93 | | |
94 | | otError ParseArgs(Arg aArgs[], bool &aIsList, uint16_t &aNumEntries) const; |
95 | | otError ProcessRxTxHistory(RxTx aRxTx, Arg aArgs[]); |
96 | | void OutputRxTxEntryListFormat(const otHistoryTrackerMessageInfo &aInfo, uint32_t aEntryAge, bool aIsRx); |
97 | | void OutputRxTxEntryTableFormat(const otHistoryTrackerMessageInfo &aInfo, uint32_t aEntryAge, bool aIsRx); |
98 | | |
99 | | static const char *MessagePriorityToString(uint8_t aPriority); |
100 | | static const char *RadioTypeToString(const otHistoryTrackerMessageInfo &aInfo); |
101 | | static const char *MessageTypeToString(const otHistoryTrackerMessageInfo &aInfo); |
102 | | }; |
103 | | |
104 | | } // namespace Cli |
105 | | } // namespace ot |
106 | | |
107 | | #endif // OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE |
108 | | |
109 | | #endif // CLI_HISTORY_HPP_ |