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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [socsim_plugin/] [hardreset.cpp] - Rev 5

Compare with Previous | Blame | View Log

/**
 * @file
 * @copyright  Copyright 2017 GNSS Sensor Ltd. All right reserved.
 * @author     Sergey Khabarov - sergeykhbr@gmail.com
 * @brief      Hardreset module.
 */
 
#include <api_core.h>
#include "hardreset.h"
 
namespace debugger {
 
HardReset::HardReset(const char *name)  : IService(name) {
    registerInterface(static_cast<IReset *>(this));
    registerAttribute("ResetDevices",
                      static_cast<IAttribute *>(&resetDevices_));
}
 
void HardReset::postinitService() {
    const char *devname, *portname;
    IFace *irst;
    AttributeType item;
    for (unsigned i = 0; i < resetDevices_.size(); i++) {
        AttributeType &dev = resetDevices_[i];
        if (dev.is_string()) {
            devname = dev.to_string();
            irst = RISCV_get_service_iface(devname, IFACE_RESET_LISTENER);
        } else if (dev.is_list() && dev.size() >= 2) {
            devname = dev[0u].to_string();
            portname = dev[1].to_string();
            irst = RISCV_get_service_port_iface(devname, portname,
                                                IFACE_RESET_LISTENER);
        }
 
        if (irst) {
            item.make_iface(irst);
            resetListeners_.add_to_list(&item);
        } else {
            RISCV_error("%s hasn't IResetListener itnerface", devname);
        }
    }
}
 
void HardReset::powerOnPressed() {
    reset(true);
}
 
void HardReset::powerOnReleased() {
    reset(false);
}
 
}  // namespace debugger
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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