#include "timer_thread.h"
#include "epgsearchcfg.h"
#include "tools.h"
#include <vdr/tools.h>
#include <vdr/plugin.h>

cTimerThread *cTimerThread::m_Instance = NULL;

cTimerThread::cTimerThread()
: cThread("EPGSearch: timer")
{
    m_Active = false;
    m_cmd = NULL;
}

cTimerThread::~cTimerThread() {
    if (m_Active) 
	Stop();
    if (m_cmd)
	free(m_cmd);
    cTimerThread::m_Instance = NULL;
}

void cTimerThread::Init(char* cmd) {
     if (m_Instance == NULL) {
	m_Instance = new cTimerThread;
	m_Instance->m_cmd = strdup(cmd);
	m_Instance->Start();
    }
}

void cTimerThread::Exit(void) {
    if (m_Instance != NULL) {
	m_Instance->Stop();
	DELETENULL(m_Instance);
    }
}

void cTimerThread::Stop(void) {
    m_Active = false;
    Cancel(3);
}

void cTimerThread::Action(void) 
{
    if (EPGSearchConfig.useExternalSVDRP && !SVDRPSendCmd)
    {
	esyslog("EPGSearch: ERROR - SVDRPSend script not specified or does not exist (use -f option)");
	return;
    }
    m_Active = true;

    while (m_Active) 
    {
	if (Timers.BeingEdited()) 		
	{
	    sleepSec(1);
	    continue;
	}
	SendViaSVDRP(m_cmd);
	m_Active = false;
    };
}


