v2.0.0
cyw43_stats.h
Go to the documentation of this file.
1/*
2 * This file is part of the cyw43-driver
3 *
4 * Copyright (C) 2019-2022 George Robotics Pty Ltd
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 * 3. Any redistribution, use, or modification in source or binary form is done
15 * solely for personal benefit and not for any commercial purpose or for
16 * monetary gain.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE LICENSOR AND COPYRIGHT OWNER "AS IS" AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL THE LICENSOR OR COPYRIGHT OWNER BE LIABLE FOR
22 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
29 * This software is also available for use with certain devices under different
30 * terms, as set out in the top level LICENSE file. For commercial licensing
31 * options please email contact@georgerobotics.com.au.
32 */
33
39#ifndef CYW43_STATS_H
40#define CYW43_STATS_H
41
42#include <stdint.h>
43
44#if CYW43_USE_STATS
45
46typedef enum cyw43_stat_t_ {
47 CYW43_STAT_F1_RESYNC,
48 CYW43_STAT_BUS_ERROR,
49 CYW43_STAT_SDIO_INT_CLEAR,
50 CYW43_STAT_SPI_INT_CLEAR,
51 CYW43_STAT_SPI_PACKET_AVAILABLE,
52 CYW43_STAT_SLEEP_COUNT,
53 CYW43_STAT_WAKE_COUNT,
54 CYW43_STAT_LWIP_RUN_COUNT,
55 CYW43_STAT_CYW43_RUN_COUNT,
56 CYW43_STAT_PENDSV_RUN_COUNT,
57 CYW43_STAT_PENDSV_DISABLED_COUNT,
58 CYW43_STAT_IRQ_COUNT,
59 CYW43_STAT_PACKET_IN_COUNT,
60 CYW43_STAT_PACKET_OUT_COUNT,
61 CYW43_STAT_LONGEST_IOCTL_TIME,
62 CYW43_STAT_LAST // Add new ones before this
63} cyw43_stat_t;
64
65extern uint32_t cyw43_stats[CYW43_STAT_LAST];
66#define CYW43_STAT_INC(A) cyw43_stats[CYW43_STAT_##A]++
67#define CYW43_STAT_GET(A) cyw43_stats[CYW43_STAT_##A]
68#define CYW43_STAT_SET(A, B) cyw43_stats[CYW43_STAT_##A] = B
69#define CYW43_STAT_CLR(A) cyw43_stats[CYW43_STAT_##A] = 0
70
71#else
72
73#define CYW43_STAT_INC(A)
74#define CYW43_STAT_GET(A)
75#define CYW43_STAT_SET(A, B)
76#define CYW43_STAT_CLR(A)
77
78#endif
79
80void cyw43_dump_stats(void);
81
82#endif // CYW43_STATS_H