OpenCores
URL https://opencores.org/ocsvn/riscv_vhdl/riscv_vhdl/trunk

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [socsim_plugin/] [hardreset.cpp] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 sergeykhbr
/**
2
 * @file
3
 * @copyright  Copyright 2017 GNSS Sensor Ltd. All right reserved.
4
 * @author     Sergey Khabarov - sergeykhbr@gmail.com
5
 * @brief      Hardreset module.
6
 */
7
 
8
#include <api_core.h>
9
#include "hardreset.h"
10
 
11
namespace debugger {
12
 
13
HardReset::HardReset(const char *name)  : IService(name) {
14
    registerInterface(static_cast<IReset *>(this));
15
    registerAttribute("ResetDevices",
16
                      static_cast<IAttribute *>(&resetDevices_));
17
}
18
 
19
void HardReset::postinitService() {
20
    const char *devname, *portname;
21
    IFace *irst;
22
    AttributeType item;
23
    for (unsigned i = 0; i < resetDevices_.size(); i++) {
24
        AttributeType &dev = resetDevices_[i];
25
        if (dev.is_string()) {
26
            devname = dev.to_string();
27
            irst = RISCV_get_service_iface(devname, IFACE_RESET_LISTENER);
28
        } else if (dev.is_list() && dev.size() >= 2) {
29
            devname = dev[0u].to_string();
30
            portname = dev[1].to_string();
31
            irst = RISCV_get_service_port_iface(devname, portname,
32
                                                IFACE_RESET_LISTENER);
33
        }
34
 
35
        if (irst) {
36
            item.make_iface(irst);
37
            resetListeners_.add_to_list(&item);
38
        } else {
39
            RISCV_error("%s hasn't IResetListener itnerface", devname);
40
        }
41
    }
42
}
43
 
44
void HardReset::powerOnPressed() {
45
    reset(true);
46
}
47
 
48
void HardReset::powerOnReleased() {
49
    reset(false);
50
}
51
 
52
}  // namespace debugger
53
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.