Libargus API Libargus Camera API

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
SensorTimestampTsc.h
Go to the documentation of this file.
1 /*
2 * Copyright (c) 2020-2023, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * 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 * * Neither the name of NVIDIA CORPORATION nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 /**
30 * @file
31 * <b>Libargus Extension: TSC HW SensorTimestamp API</b>
32 *
33 * @b Description: This file defines the SensorTimestampTsc extension.
34 */
35
36 #ifndef _ARGUS_SENSOR_TIMESTAMP_TSC_H
37 #define _ARGUS_SENSOR_TIMESTAMP_TSC_H
38
39 namespace Argus
40 {
41
42 /**
43 * Adds a timestamp interface to get TSC HW timestamp.
44 * It introduces one new interface:
45 * - Ext::ISensorTimestampTsc: gets TSC HW timestamp.
46 * @defgroup ArgusExtSensorTimestampTsc Ext::SensorTimestampTsc
47 * @ingroup ArgusExtensions
48 */
49 DEFINE_UUID(ExtensionName, EXT_SENSOR_TIMESTAMP_TSC, e6cc1360,06ea,11eb,8b6e,08,00,20,0c,9a,66);
50
51
52 namespace Ext
53 {
54
55 /**
56 * @class ISensorTimestampTsc
57 *
58 * Interface used to get TSC HW timestamp
59 *
60 * @ingroup ArgusCaptureMetadata ArgusExtSensorTimestampTsc
61 */
62 DEFINE_UUID(InterfaceID, IID_SENSOR_TIMESTAMP_TSC, 35581ba0,06eb,11eb,8b6e,08,00,20,0c,9a,66);
63 class ISensorTimestampTsc : public Interface
64 {
65 public:
66 static const InterfaceID& id() { return IID_SENSOR_TIMESTAMP_TSC; }
67
68 /**
69 * Returns the VI HW (SOF) timestamp based on tegra wide timestamp system counter (TSC)
70 * This is the start timestamp for the sensor (in nanoseconds).
71 */
72 virtual uint64_t getSensorSofTimestampTsc() const = 0;
73
74 /**
75 * Returns the VI HW (EOF) timestamp based on tegra wide timestamp system counter (TSC)
76 * This is the end timestamp for the sensor (in nanoseconds).
77 */
78 virtual uint64_t getSensorEofTimestampTsc() const = 0;
79
80 /**
81 * Returns the VI HW (SOF) timestamp for second sensor based on tegra wide
82 * timestamp system counter (TSC)
83 * This is the start timestamp for the sensor (in nanoseconds).
84 */
85 virtual uint64_t getSensorSofTimestampTsc2() const = 0;
86
87 protected:
88 ~ISensorTimestampTsc() {}
89 };
90
91 } // namespace Ext
92
93 } // namespace Argus
94
95 #endif
96