1d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin/*
2d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* Copyright (c) 2014, The Linux Foundation. All rights reserved.
3d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*
4d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* Redistribution and use in source and binary forms, with or without modification, are permitted
5d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* provided that the following conditions are met:
6d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*    * Redistributions of source code must retain the above copyright notice, this list of
7d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      conditions and the following disclaimer.
8d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*    * Redistributions in binary form must reproduce the above copyright notice, this list of
9d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      conditions and the following disclaimer in the documentation and/or other materials provided
10d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      with the distribution.
11d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*    * Neither the name of The Linux Foundation nor the names of its contributors may be used to
12d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      endorse or promote products derived from this software without specific prior written
13d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      permission.
14d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*
15d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
18d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
21d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*/
24d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
25d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin/*! @file dump_interface.h
26d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  @brief Interface file for dump options provided by display manager.
27d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
28d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*/
29d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#ifndef __DUMP_INTERFACE_H__
30d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define __DUMP_INTERFACE_H__
31d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
32d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#include <stdint.h>
33d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
34d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#include "sdm_types.h"
35d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
36d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinnamespace sdm {
37d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
38d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin/*! @brief Display dump interface.
39d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
40d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  @details This class defines dump methods provided by display manager.
41d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
42d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*/
43d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinclass DumpInterface {
44d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin public:
45d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  /*! @brief Method to get dump information in form of a string.
46d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
47d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    @details Client shall use this method to get current snapshot of display manager context as a
48d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    formatted string for logging or dumping purposes.
49d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
50d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    @param[inout] buffer String buffer allocated by the client. Filled with null terminated dump
51d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    information upon return.
52d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    @param[in] length Length of the string buffer. Length shall be offset adjusted if any.
53d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
54d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    @return \link DisplayError \endlink
55d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
56d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    @warning Client shall ensure that this interface is not used while a display is being either
57d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin    created or destroyed through display core.
58d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  */
59d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  static DisplayError GetDump(char *buffer, uint32_t length);
60d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
61d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin protected:
62d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual ~DumpInterface() { }
63d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin};
64d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
65d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}  // namespace sdm
66d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
67d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#endif  // __DUMP_INTERFACE_H__
68d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
69