summaryrefslogtreecommitdiff
path: root/riff/DutManager.cpp
blob: 86a96c48d4a5af9b4f280bab2c2b303a9df932d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
 * DUTManager.cpp
 *
 * Copyright (C) ST-Ericsson SA 2011
 * Authors: Srimanta Panda <srimanta.panda@stericsson.com>,
 *          Ola Borgelin <ola.borgelin@stericsson.com>,
 *          Karin Hedlund <karin.hedlund@stericsson.com>,
 *          Markus Andersson <markus.m.andersson@stericsson.com> for ST-Ericsson.
 * License terms: 3-clause BSD license
 *
 */

/*
 * @addtogroup DUT Manager
 * @{
 */

#include "DutManager.h"
#include "Utilities.h"
#include <vector>
using namespace std;

vector<DUT*> DutManager::devices_;

DUT* DutManager::createDut(Device_t device)
{
    string dutId = getDutId(device);

    DUT* dut = new DUT(device, dutId, SequenceFactory::getProfileSequence());
    devices_.push_back(dut);

    dut->startExecution();

    return dut;
}

const DUT* DutManager::getDut(Device_t device)
{
    for (vector<DUT*>::iterator i = devices_.begin(); i != devices_.end(); ++i) {
        if ((*i)->getCommDevice() == device) {
            return *i;
        }
    }

    return 0;
}

void DutManager::destroyDut(Device_t device)
{
    for (vector<DUT*>::iterator i = devices_.begin(); i != devices_.end(); ++i) {
        if ((*i)->getCommDevice() == device) {
            delete *i;
            devices_.erase(i);
            break;
        }
    }
}

string DutManager::getDutId(Device_t device)
{
    string physicalId = "Device@" + Utilities::convert<string>(comm_get_physical_address(device));
    return physicalId;
}

/* @} */