js["Error"] = "Bad request parameters";
return true;
}
-
+
int channelNumber = atoi(sChannelNumber);
int eventID = atoi(sEventID);
+ const cEvent* event = jsonserver_getEvent(js, channelNumber, eventID, 0);
+ if (!event)
+ {
+ js["Result"] = false;
+ return true;
+ }
+
+ Json::Value oneEvent;
+ oneEvent["ID"] = event->EventID();
+ oneEvent["Time"] = (Json::UInt)event->StartTime();
+ oneEvent["Duration"] = event->Duration();
+ oneEvent["Title"] = event->Title() ? event->Title() : "";
+ oneEvent["ShortText"] = event->ShortText() ? event->ShortText() : "";
+ oneEvent["Description"] = event->Description() ? event->Description() : "";
+ oneEvent["HasTimer"] = event->HasTimer();
+ oneEvent["RunningStatus"] = event->RunningStatus();
+
+ js["Result"] = true;
+ js["Event"] = oneEvent;
+ return true;
+}
+
+const cEvent* jsonserver_getEvent(Json::Value& js, int channelNumber, int eventID, int aroundTime)
+{
+ Log* log = Log::getInstance();
+
cChannel* channel = NULL;
for (channel = Channels.First(); channel; channel = Channels.Next(channel))
{
if (channel->GroupSep()) continue;
if (channel->Number() == channelNumber) break;
}
-
+
if (!channel)
{
log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
- js["Result"] = false;
js["Error"] = "Could not find channel";
- return true;
+ return NULL;
}
-
+
cSchedulesLock MutexLock;
const cSchedules *Schedules = cSchedules::Schedules(MutexLock);
if (!Schedules)
{
log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
- js["Result"] = false;
js["Error"] = "Internal schedules error (1)";
- return true;
+ return NULL;
}
+
const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
if (!Schedule)
{
log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
- js["Result"] = false;
js["Error"] = "Internal schedules error (2)";
- return true;
+ return NULL;
+ }
+
+ const cEvent* event = NULL;
+ if (eventID)
+ {
+ event = Schedule->GetEvent(eventID);
+ }
+ else
+ {
+ event = Schedule->GetEventAround(aroundTime);
}
- const cEvent* event = Schedule->GetEvent(eventID);
if (!event)
{
log->log("JSONServer", Log::ERR, "Could not find requested event: %i", eventID);
- js["Result"] = false;
js["Error"] = "Internal schedules error (3)";
- return true;
+ return NULL;
}
-
- Json::Value oneEvent;
- oneEvent["ID"] = event->EventID();
- oneEvent["Time"] = (Json::UInt)event->StartTime();
- oneEvent["Duration"] = event->Duration();
- oneEvent["Title"] = event->Title() ? event->Title() : "";
- oneEvent["ShortText"] = event->ShortText() ? event->ShortText() : "";
- oneEvent["Description"] = event->Description() ? event->Description() : "";
- oneEvent["HasTimer"] = event->HasTimer();
- oneEvent["RunningStatus"] = event->RunningStatus();
- js["Result"] = true;
- js["Event"] = oneEvent;
- return true;
+ return event;
}
bool jsonserver_timerlist(Json::Value& js)
const cEvent* event = timer->Event();
if (event)
+ {
oneTimer["EventID"] = event->EventID();
+ }
else
- oneTimer["EventID"] = 0;
+ {
+ int channelNumber = timer->Channel()->Number();
+ int aroundTime = timer->StartTime() + 1;
+ log->log("JSONServer", Log::DEBUG, "%i", aroundTime);
+ //((timer->StopTime() - timer->StartTime()) / 2);
+
+ const cEvent* eventAround = jsonserver_getEvent(js, channelNumber, 0, aroundTime);
+ if (eventAround)
+ {
+ oneTimer["EventID"] = eventAround->EventID();
+ }
+ else
+ {
+ oneTimer["EventID"] = 0;
+ }
+ }
jstimers.append(oneTimer);
}