Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ResourceManager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
curl --header "Content-Type: application/json" --request POST --data '{"jsonrpc":"2.0","id":"3","method": "org.rdk.ResourceManager.setAVBlocked", "params": {"appid":"Netflix-0", "blocked":true}}' http://127.0.0.1:9998/jsonrpc
curl --header "Content-Type: application/json" --request POST --data '{"jsonrpc":"2.0","id":"3","method": "org.rdk.ResourceManager.getBlockedAVApplications"}' http://127.0.0.1:9998/jsonrpc
curl --header "Content-Type: application/json" --request POST --data '{"jsonrpc":"2.0","id":"3","method": "org.rdk.ResourceManager.reserveTTSResource", "params": {"appid":"Netflix-0"}}' http://127.0.0.1:9998/jsonrpc
curl --header "Content-Type: application/json" --request POST --data '{"jsonrpc":"2.0","id":"3","method": "org.rdk.ResourceManager.reserveTTSResourceForApps", "params": {"appids":["Netflix-0","com.bskyb.epgui"]}}' http://127.0.0.1:9998/jsonrpc
```

## Responses
Expand All @@ -19,6 +20,8 @@ getBlockedAVApplications:
{"jsonrpc":"2.0","id":3,"result":{"clients":["Netflix-0],"success":true}}
reserveTTSResource:
{"jsonrpc":"2.0","id":3,"result":{"success":true}}
reserveTTSResourceForApps:
{"jsonrpc":"2.0","id":3,"result":{"success":true}}
```

## Events
Expand Down
72 changes: 72 additions & 0 deletions ResourceManager/ResourceManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ static std::string sThunderSecurityToken;
const string WPEFramework::Plugin::ResourceManager::RESOURCE_MANAGER_METHOD_SET_AV_BLOCKED = "setAVBlocked";
const string WPEFramework::Plugin::ResourceManager::RESOURCE_MANAGER_METHOD_GET_BLOCKED_AV_APPLICATIONS = "getBlockedAVApplications";
const string WPEFramework::Plugin::ResourceManager::RESOURCE_MANAGER_METHOD_RESERVE_TTS_RESOURCE = "reserveTTSResource";
const string WPEFramework::Plugin::ResourceManager::RESOURCE_MANAGER_METHOD_RESERVE_TTS_RESOURCE_FOR_APPS = "reserveTTSResourceForApps";


namespace WPEFramework {
namespace {
Expand All @@ -55,6 +57,7 @@ namespace WPEFramework {
Register<JsonObject, JsonObject>(_T(RESOURCE_MANAGER_METHOD_SET_AV_BLOCKED), &ResourceManager::setAVBlockedWrapper, this);
Register<JsonObject, JsonObject>(_T(RESOURCE_MANAGER_METHOD_GET_BLOCKED_AV_APPLICATIONS), &ResourceManager::getBlockedAVApplicationsWrapper, this);
Register<JsonObject, JsonObject>(_T(RESOURCE_MANAGER_METHOD_RESERVE_TTS_RESOURCE), &ResourceManager::reserveTTSResourceWrapper, this);
Register<JsonObject, JsonObject>(_T(RESOURCE_MANAGER_METHOD_RESERVE_TTS_RESOURCE_FOR_APPS), &ResourceManager::reserveTTSResourceWrapperForApps, this);
mEssRMgr = nullptr;

#ifdef ENABLE_ERM
Expand Down Expand Up @@ -192,6 +195,39 @@ namespace WPEFramework {
response["clients"]=appsList;
returnResponse(status);
}

uint32_t ResourceManager::reserveTTSResourceWrapperForApps(const JsonObject &parameters, JsonObject &response)
{
LOGINFOMETHOD();
bool status = false;

if ((parameters.HasLabel("appids")) && (false == mDisableReserveTTS))
{
std::vector<std::string> apps;
for (const auto& item : parameters["appIds"].Array()) {
apps.push_back(item.String());
}
for (const auto& s : apps) std::cout << s << " "; std::cout << std::endl;

status = reserveTTSResourceForApps(apps);
}
else
{
if (mDisableReserveTTS)
{
status = true;
response["message"] = "ReserveTTS RFC is disabled";
}
else
{
std::string jsonstr;
parameters.ToString(jsonstr);
std::cout<<"ERROR: appids are required in "<< jsonstr << std::endl;
}
}

returnResponse(status);
}

uint32_t ResourceManager::reserveTTSResourceWrapper(const JsonObject &parameters, JsonObject &response)
{
Expand Down Expand Up @@ -453,6 +489,42 @@ namespace WPEFramework {

return (status);
}
bool ResourceManager::reserveTTSResourceForApps(const std::vector<std::string>& clients)
{
uint32_t ret = Core::ERROR_NONE;
bool status = false;

JsonObject params;
JsonObject result;
JsonArray accessList;

for (const auto& client : clients) {
JsonObject clientParam;
JsonArray clientList;

clientList.Add(client);
clientParam.Set("method", "speak");
clientParam["apps"] = clientList;

accessList.Add(clientParam);
}

params["accesslist"] = accessList;

std::string jsonstr;
params.ToString(jsonstr);
std::cout<<"Resourcemanager : about to call setACL : "<< jsonstr << std::endl;

ret = JSONRPCDirectLink(mCurrentService, "org.rdk.TextToSpeech").Invoke<JsonObject, JsonObject>(20000, "setACL", params, result);

status = ((Core::ERROR_NONE == ret) && (result.HasLabel("success")) && (result["success"].Boolean()));

result.ToString(jsonstr);
std::cout<<"setACL response : "<< jsonstr << std::endl;
std::cout<<"setACL status : "<<std::boolalpha << status << std::endl;

return (status);
}

} // namespace Plugin
} // namespace WPEFramework
3 changes: 3 additions & 0 deletions ResourceManager/ResourceManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,13 @@ namespace WPEFramework {
static const string RESOURCE_MANAGER_METHOD_SET_AV_BLOCKED;
static const string RESOURCE_MANAGER_METHOD_GET_BLOCKED_AV_APPLICATIONS;
static const string RESOURCE_MANAGER_METHOD_RESERVE_TTS_RESOURCE;
static const string RESOURCE_MANAGER_METHOD_RESERVE_TTS_RESOURCE_FOR_APPS;

private/*registered methods (wrappers)*/:
//methods ("parameters" here is "params" from the curl request)
uint32_t setAVBlockedWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t getBlockedAVApplicationsWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t reserveTTSResourceWrapperForApps(const JsonObject& parameters, JsonObject& response);
uint32_t reserveTTSResourceWrapper(const JsonObject& parameters, JsonObject& response);

private/*internal methods*/:
Expand All @@ -70,6 +72,7 @@ namespace WPEFramework {

bool setAVBlocked(const string& client, const bool blocked);
bool getBlockedAVApplications(std::vector<std::string> &appsList);
bool reserveTTSResourceForApps(const std::vector<std::string>& clients);
bool reserveTTSResource(const string& client);

EssRMgr* mEssRMgr;
Expand Down
23 changes: 23 additions & 0 deletions ResourceManager/ResourceManager.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,29 @@
]
}
},
"reserveTTSResourceForApps": {
"summary": "Reserves the Text To speech Resource for specified clients.",
"params": {
"type": "object",
"properties":{
"appIds": {
"summary": "A list of application callsigns",
"type": "array",
"items": {
"type": "string",
"example": "xumo"
},
"minItems": 1
}
},
"required": [
"appIds"
]
},
"result": {
"$ref": "#/common/result"
}
},
"reserveTTSResource": {
"summary": "Reserves the Text To speech Resource for specified client.",
"params": {
Expand Down
Loading