From f508189682b6fba62e08feeb1596f682bad5fff9 Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 24 Feb 2010 18:42:24 +0000 Subject: Added KDE3 version of PikLab git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/piklab@1095639 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- src/devices/pic/prog/pic_prog_specific.cpp | 121 +++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 src/devices/pic/prog/pic_prog_specific.cpp (limited to 'src/devices/pic/prog/pic_prog_specific.cpp') diff --git a/src/devices/pic/prog/pic_prog_specific.cpp b/src/devices/pic/prog/pic_prog_specific.cpp new file mode 100644 index 0000000..bfcd2fa --- /dev/null +++ b/src/devices/pic/prog/pic_prog_specific.cpp @@ -0,0 +1,121 @@ +/*************************************************************************** + * Copyright (C) 2005-2006 Nicolas Hadacek * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#include "pic_prog_specific.h" + +#include "common/global/global.h" + +//----------------------------------------------------------------------------- +const char * const Pic::VOLTAGE_TYPE_LABELS[Nb_VoltageTypes] = { + I18N_NOOP("Programmer Vpp"), I18N_NOOP("Target Vdd"), I18N_NOOP("Target Vpp") +}; + +const char * const Pic::TARGET_MODE_LABELS[Nb_TargetModes] = { + I18N_NOOP("Stopped"), I18N_NOOP("Running"), I18N_NOOP("In Programming") +}; + +const char * const Pic::RESET_MODE_LABELS[Nb_ResetModes] = { + I18N_NOOP("Reset Held"), I18N_NOOP("Reset Released") +}; + +//----------------------------------------------------------------------------- +uint Programmer::PicDeviceSpecific::findNonMaskStart(Pic::MemoryRangeType type, const Device::Array &data) const +{ + uint start = 0; + for (; start(this)->log(Log::DebugLevel::Normal, QString("start before align: %1").arg(start)); + uint align = device().nbWordsWriteAlignment(type); + start -= start % align; + const_cast(this)->log(Log::DebugLevel::Normal, QString("start after align: %1 (align=%2)").arg(start).arg(align)); + return start; +} + +uint Programmer::PicDeviceSpecific::findNonMaskEnd(Pic::MemoryRangeType type, const Device::Array &data) const +{ + uint end = data.count()-1; + for (; end>0; end--) + if ( data[end]!=device().mask(type) ) break; + const_cast(this)->log(Log::DebugLevel::Normal, QString("end before align: %1").arg(end)); + uint align = device().nbWordsWriteAlignment(type); + if ( (end+1) % align ) end += align - (end+1) % align; + const_cast(this)->log(Log::DebugLevel::Normal, QString("end after align: %1 (align=%2)").arg(end).arg(align)); + Q_ASSERT(end(vdata.memory).normalizedWord(type, i); + BitValue d = static_cast(vdata.memory).normalizeWord(type, i, word); + if ( type==Pic::MemoryRangeType::Config ) { + BitValue pmask = device().config()._words[i].pmask; + v = v.clearMaskBits(pmask); + d = d.clearMaskBits(pmask); + } + return compareWords(type, i, v, d, vdata.actions); +} -- cgit v1.2.1