Improved the docs for the 3 main Tactility projects. I also fixed some inaccuracies and bugs in certain APIs as I went through the code.
95 lines
2.8 KiB
C++
95 lines
2.8 KiB
C++
#pragma once
|
|
|
|
#include "Mutex.h"
|
|
#include "ServiceManifest.h"
|
|
#include <memory>
|
|
|
|
namespace tt::service {
|
|
|
|
class Paths;
|
|
|
|
/**
|
|
* The public representation of a service instance.
|
|
* @warning Do not store references or pointers to these! You can retrieve them via the Loader service.
|
|
*/
|
|
class ServiceContext {
|
|
|
|
protected:
|
|
|
|
virtual ~ServiceContext() = default;
|
|
|
|
public:
|
|
|
|
/** @return a reference ot the service's manifest */
|
|
virtual const service::ServiceManifest& getManifest() const = 0;
|
|
/** @return a shared pointer to the data that is attached to the service */
|
|
virtual std::shared_ptr<void> _Nullable getData() const = 0;
|
|
/** Set the data for a service. */
|
|
virtual void setData(std::shared_ptr<void> newData) = 0;
|
|
/** Retrieve the paths that are relevant to this service */
|
|
virtual std::unique_ptr<Paths> getPaths() const = 0;
|
|
};
|
|
|
|
class Paths {
|
|
|
|
public:
|
|
|
|
Paths() = default;
|
|
virtual ~Paths() = default;
|
|
|
|
/**
|
|
* Returns the directory path for the data location for a service.
|
|
* The data directory is intended to survive OS upgrades.
|
|
* The path will not end with a "/".
|
|
*/
|
|
virtual std::string getDataDirectory() const = 0;
|
|
|
|
/**
|
|
* @see getDataDirectory(), but with LVGL prefix.
|
|
*/
|
|
virtual std::string getDataDirectoryLvgl() const = 0;
|
|
|
|
/**
|
|
* Returns the full path for an entry inside the data location for a service.
|
|
* The data directory is intended to survive OS upgrades.
|
|
* Configuration data should be stored here.
|
|
* @param[in] childPath the path without a "/" prefix
|
|
*/
|
|
virtual std::string getDataPath(const std::string& childPath) const = 0;
|
|
|
|
/**
|
|
* @see getDataPath(), but with LVGL prefix.
|
|
*/
|
|
virtual std::string getDataPathLvgl(const std::string& childPath) const = 0;
|
|
|
|
/**
|
|
* Returns the directory path for the system location for a service.
|
|
* The system directory is not intended to survive OS upgrades.
|
|
* You should not store configuration data here.
|
|
* The path will not end with a "/".
|
|
* This is mainly used for core services.
|
|
*/
|
|
virtual std::string getSystemDirectory() const = 0;
|
|
|
|
/**
|
|
* @see getSystemDirectory(), but with LVGL prefix.
|
|
*/
|
|
virtual std::string getSystemDirectoryLvgl() const = 0;
|
|
|
|
/**
|
|
* Returns the full path for an entry inside the system location for an app.
|
|
* The data directory is not intended to survive OS upgrades.
|
|
* You should not store configuration data here.
|
|
* This is mainly used for core apps (system/boot/settings type).
|
|
* @param[in] childPath the path without a "/" prefix
|
|
*/
|
|
virtual std::string getSystemPath(const std::string& childPath) const = 0;
|
|
|
|
/**
|
|
* @see getSystemPath(), but with LVGL prefix.
|
|
*/
|
|
virtual std::string getSystemPathLvgl(const std::string& childPath) const = 0;
|
|
};
|
|
|
|
} // namespace
|