#include "EngineCommon.h"
#include "IOpenCVEngine.h"

#include <sys/types.h>
#include <unistd.h>
#include <grp.h>

#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
#include <binder/IServiceManager.h>
#include <utils/Log.h>

#include <stdio.h>

using namespace android;

int main(int argc, char *argv[])
{
    LOGI("OpenCVEngine client is now starting");

    sp<IServiceManager> ServiceManager = defaultServiceManager();
    sp<IBinder> EngineService;
    sp<IOpenCVEngine> Engine;

    LOGI("Trying to contect to service");

    do {
        EngineService = ServiceManager->getService(IOpenCVEngine::descriptor);
        if (EngineService != 0) break;
        LOGW("OpenCVEngine not published, waiting...");
        usleep(500000); // 0.5 s
    } while(true);

    LOGI("Connection established");

    Engine = interface_cast<IOpenCVEngine>(EngineService);
    int32_t EngineVersion = Engine->GetVersion();

    printf("OpenCVEngine version %d started", EngineVersion);

    return 0;
}