Import of pkgsrc-2015Q1

This commit is contained in:
2015-04-22 14:34:26 +02:00
committed by Lionel Sambuc
parent 9a8c06dafb
commit 4af1cdf7a9
25114 changed files with 870550 additions and 795435 deletions

View File

@@ -0,0 +1,11 @@
===========================================================================
$NetBSD: MESSAGE,v 1.1 2014/08/29 04:40:06 mef Exp $
Various README files are installed at following locations:
${PREFIX}/share/doc/simulvar/README
${PREFIX}/share/doc/simulvar/README.gdb
${PREFIX}/share/doc/simulvar/examples/{topics}/README
Also, please read the 'info' at the node of SimulAVR.
The introduction of simulAVR with avr-gdb, see following URL:
http://www.nongnu.org/simulavr/intro.html
===========================================================================

View File

@@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.22 2014/02/22 03:26:53 mef Exp $
# $NetBSD: Makefile,v 1.24 2014/08/29 04:40:06 mef Exp $
#
DISTNAME= simulavr-1.0.0
PKGREVISION= 1
PKGREVISION= 2
CATEGORIES= emulators
MASTER_SITES= http://download.savannah.gnu.org/releases/simulavr/
@@ -16,6 +16,9 @@ BUILD_DEPENDS+= avr-libc-[0-9]*:../../cross/avr-libc
CONFIGURE_ARGS+= --disable-tests
CONFIGURE_ARGS+= --enable-python=python${PYVERSSUFFIX}
CONFIGURE_ARGS+= --with-bfd=${PREFIX}/avr
CONFIGURE_ARGS+= --with-libiberty=${PREFIX}/lib/gcc/avr
CONFIGURE_ENV+= TEX=no
# Following line does not work yet (examples/python directory)
#CONFIGURE_ENV+= az_python_use=true
#MAKE_ENV+= az_python_use=true
@@ -84,11 +87,9 @@ BUILDLINK_TRANSFORM+= rm:-Werror
.include "../../cross/avr-binutils/buildlink3.mk"
.include "../../cross/avr-gcc/buildlink3.mk"
#.include "../../cross/avr-libc/buildlink3.mk"
.include "../../devel/swig/buildlink3.mk"
.include "../../mk/curses.buildlink3.mk"
.include "../../lang/python/pyversion.mk"
.include "../../lang/${PYPACKAGE}/buildlink3.mk"
#include "../../lang/tcl-itcl/buildlink3.mk"
.include "../../lang/tcl/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

View File

@@ -1,4 +1,4 @@
@comment $NetBSD: PLIST,v 1.4 2013/09/12 06:20:35 mef Exp $
@comment $NetBSD: PLIST,v 1.5 2014/08/29 04:40:06 mef Exp $
bin/simulavr
include/simulavr/adcpin.h
include/simulavr/application.h

View File

@@ -1,11 +1,15 @@
$NetBSD: distinfo,v 1.8 2013/09/20 23:05:21 joerg Exp $
$NetBSD: distinfo,v 1.10 2014/08/29 04:40:06 mef Exp $
SHA1 (simulavr-1.0.0.tar.gz) = e7cacc74be974793bd9c18330ec8d128fbd17d42
RMD160 (simulavr-1.0.0.tar.gz) = 0e9eb32f398943449b564e919765348c32f4c600
Size (simulavr-1.0.0.tar.gz) = 1013014 bytes
SHA1 (patch-configure) = 8fe7c24d17ded8a5b53688f5d35b4aaf55e6c830
SHA1 (patch-doc_simulavr_texinfo) = ce5615f6e64d4be535b056bd8d3377b1f7a4a5d6
SHA1 (patch-examples_atmel_key_StdDefs_c) = 73a89da0144d1d0cc2c678476270ea1f79300089
SHA1 (patch-examples_atmel_key_scancodes.h) = f7f6d3f2da8eec4cf9b52800a499bd8300545bc0
SHA1 (patch-regress_timertest_timer_16bit.c) = 81ee86847fd4d40817b2f4bf01e03aca86856f3c
SHA1 (patch-src_Makefile.in) = 28354fe97e521b528b6f6d804b7b750d7c63062f
SHA1 (patch-src_systemclock.cpp) = 2e259583d2bdf5003b80b3ebebe81154c68d82bd
SHA1 (patch-src_systemclock_cpp) = 91535a11446dade72752dd0d549d4a605c5e90bc
SHA1 (patch-src_systemclock_h) = fce9df95336b02b3152ec9b162a085c8c4b20283
SHA1 (patch-src_traceval_cpp) = a92597bd935916fa0ec366b9187df33f075a7c83
SHA1 (patch-src_traceval_h) = 140fc29e4879d1a4d9ad650ce8eb0be6939e1aae

View File

@@ -1,4 +1,4 @@
$NetBSD: patch-configure,v 1.1 2013/09/12 06:20:35 mef Exp $
$NetBSD: patch-configure,v 1.2 2014/08/29 04:40:06 mef Exp $
=> Checking for portability problems in extracted files
ERROR: [check-portability.awk] => Found test ... == ...:

View File

@@ -1,4 +1,4 @@
$NetBSD: patch-doc_simulavr_texinfo,v 1.1 2013/09/12 06:20:35 mef Exp $
$NetBSD: patch-doc_simulavr_texinfo,v 1.3 2014/08/29 04:40:06 mef Exp $
Add directory entry information. Without this, ${PREFIX}/info/dir
won't be updated by install-info. Typical error message will be:

View File

@@ -0,0 +1,40 @@
$NetBSD: patch-examples_atmel_key_StdDefs_c,v 1.1 2014/08/29 04:40:06 mef Exp $
StdDefs.c: In function 'putstr':
StdDefs.c:120:4: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness [-Wpointer-sign]
for (j = 0; j <= strlen(s); j++)
^
In file included from StdDefs.c:10:0:
/usr/pkg/avr/include/string.h:133:15: note: expected 'const char *' but argument is of type 'CHARU *'
extern size_t strlen(const char *) __ATTR_PURE__;
--- /export/WRKOBJDIR/wip/simulavr/work/simulavr-1.0.0/examples/atmel_key/StdDefs.c 2014-06-20 23:24:10.000000000 +0900
+++ ./examples/atmel_key/StdDefs.c 2014-06-20 12:31:14.000000000 +0900
@@ -55,13 +55,11 @@
}
// Delay in 1/10's of a millisecond
-void msleep(INT16U ms)
- { /* This loop does not work with optimization != 0. Therefore we use
- avr-libc _delay routines K. Schwichtenberg
- INT16S i,j;
- for (i = 1; i < ms; i++)
- for (j = 1; j < ONETENTH_MS; j++); / * to give 1/10 ms*/
- _delay_ms(ms); // Changed K. Schwichtenberg
+// Does not work with -O0, use -O1, even for debugging.
+void msleep(INT16U ms10)
+ {
+ for( ; ms10; --ms10)
+ _delay_ms(0.1);
}
//------------------------------------------------------------
@@ -117,7 +115,7 @@
void putstr(CHARU *s)
{
int j;
- for (j = 0; j <= strlen(s); j++)
+ for (j = 0; j <= strlen((char*)s); j++)
putchar(*(s + j));
CRLF();
}

View File

@@ -1,4 +1,4 @@
$NetBSD: patch-examples_atmel_key_scancodes.h,v 1.1 2013/09/12 06:20:35 mef Exp $
$NetBSD: patch-examples_atmel_key_scancodes.h,v 1.2 2014/08/29 04:40:06 mef Exp $
In file included from kb.c:14:0:
scancodes.h:19:1: warning: missing braces around initializer

View File

@@ -1,4 +1,4 @@
$NetBSD: patch-regress_timertest_timer_16bit.c,v 1.1 2013/09/12 06:20:35 mef Exp $
$NetBSD: patch-regress_timertest_timer_16bit.c,v 1.2 2014/08/29 04:40:06 mef Exp $
error: attempt to use poisoned "VARNAME"

View File

@@ -1,4 +1,4 @@
$NetBSD: patch-src_Makefile.in,v 1.1 2013/09/12 06:20:35 mef Exp $
$NetBSD: patch-src_Makefile.in,v 1.2 2014/08/29 04:40:06 mef Exp $
/usr/pkg/bin/swig -c++ -python -Ipython -o pysim ...
...

View File

@@ -1,13 +0,0 @@
$NetBSD: patch-src_systemclock.cpp,v 1.1 2013/09/20 23:05:21 joerg Exp $
--- src/systemclock.cpp.orig 2013-09-20 22:35:37.000000000 +0000
+++ src/systemclock.cpp
@@ -67,7 +67,7 @@ bool MinHeap<Key, Value>::ContainsValue(
template<typename Key, typename Value>
void MinHeap<Key, Value>::Insert(Key k, Value v)
{
- resize(this->size()+1);
+ this->resize(this->size()+1);
for(unsigned i = this->size();;) {
unsigned parent = i/2;
if(parent == 0 || (*this)[parent-1].first < k) {

View File

@@ -0,0 +1,223 @@
$NetBSD: patch-src_systemclock_cpp,v 1.1 2014/08/29 04:40:06 mef Exp $
clang flags as resize unresolved reference,
backport from git repository (as of 2013-09-15).
--- simulavr-1.0.0/src/systemclock.cpp 2012-02-13 00:26:38.000000000 +0900
+++ src/systemclock.cpp 2013-09-13 09:41:15.000000000 +0900
@@ -2,7 +2,7 @@
****************************************************************************
*
* simulavr - A simulator for the Atmel AVR family of microcontrollers.
- * Copyright (C) 2001, 2002, 2003 Klaus Rudolph
+ * Copyright (C) 2001, 2002, 2003 Klaus Rudolph
*
* 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
@@ -28,6 +28,7 @@
#include "simulationmember.h"
#include "helper.h"
#include "application.h"
+#include "avrdevice.h"
#include "avrerror.h"
#include "signal.h"
@@ -35,83 +36,78 @@
using namespace std;
-
template<typename Key, typename Value>
MinHeap<Key, Value>::MinHeap()
{
- this->reserve(10); // vector would free&malloc when we keep inserting and removing only 1 element.
+ this->reserve(10); // vector would free&malloc when we keep inserting and removing only 1 element.
}
template<typename Key, typename Value>
void MinHeap<Key, Value>::RemoveMinimum()
{
- assert(!this->empty());
- Key k = this->back().first;
- Value v = this->back().second;
- RemoveMinimumAndInsert(k, v);
- this->pop_back();
+ assert(!this->empty());
+ Key k = this->back().first;
+ Value v = this->back().second;
+ RemoveMinimumAndInsert(k, v);
+ this->pop_back();
}
template<typename Key, typename Value>
bool MinHeap<Key, Value>::ContainsValue(Value v) const
{
- for(unsigned i = 0; i < this->size(); i++)
- {
- std::pair<Key,Value> item = (*this)[i];
- if(item.second == v)
- return true;
- }
- return false;
+ for(unsigned i = 0; i < this->size(); i++)
+ {
+ std::pair<Key,Value> item = (*this)[i];
+ if(item.second == v)
+ return true;
+ }
+ return false;
}
template<typename Key, typename Value>
-void MinHeap<Key, Value>::Insert(Key k, Value v)
+void MinHeap<Key, Value>::InsertInternal(Key k, Value v, unsigned pos)
{
- resize(this->size()+1);
- for(unsigned i = this->size();;) {
- unsigned parent = i/2;
- if(parent == 0 || (*this)[parent-1].first < k) {
- (*this)[i-1].first = k;
- (*this)[i-1].second = v;
- return;
- }
- Key k_temp = (*this)[parent-1].first;
- Value v_temp = (*this)[parent-1].second;
- (*this)[i-1].first = k_temp;
- (*this)[i-1].second = v_temp;
- i = parent;
- }
+ for(unsigned i = pos;;) {
+ unsigned parent = i/2;
+ if(parent == 0 || (*this)[parent-1].first <= k) {
+ (*this)[i-1].first = k;
+ (*this)[i-1].second = v;
+ return;
+ }
+ Key k_temp = (*this)[parent-1].first;
+ Value v_temp = (*this)[parent-1].second;
+ (*this)[i-1].first = k_temp;
+ (*this)[i-1].second = v_temp;
+ i = parent;
+ }
}
template<typename Key, typename Value>
-void MinHeap<Key, Value>::RemoveMinimumAndInsert(Key k, Value v)
+void MinHeap<Key, Value>::RemoveAtPositionAndInsertInternal(Key k, Value v, unsigned pos)
{
- assert(!this->empty());
- unsigned i = 1;
- for(;;) {
- unsigned left = 2*i;
- unsigned right = 2*i + 1;
- unsigned smallest = i;
- if(left-1 < this->size() && (*this)[left-1].first < k)
- smallest = left;
- if(right-1 < this->size() && (*this)[right-1].first < k)
- smallest = right;
- if(smallest == i) {
- (*this)[smallest-1].first = k;
- (*this)[smallest-1].second = v;
- return;
- }
- Key k_temp = (*this)[smallest-1].first;
- Value v_temp = (*this)[smallest-1].second;
- (*this)[smallest-1].first = k;
- (*this)[smallest-1].second = v;
- k = k_temp;
- v = v_temp;
- i = smallest;
- }
+ assert(pos < this->size());
+ unsigned i = pos + 1;
+ for(;;) {
+ unsigned left = 2*i;
+ unsigned right = 2*i + 1;
+ unsigned smallest = i;
+ if(left-1 < this->size() && (*this)[left-1].first < k)
+ smallest = left;
+ if(right-1 < this->size() && (*this)[right-1].first < k && (*this)[right-1].first < (*this)[left-1].first)
+ smallest = right;
+ if(smallest == i) {
+ (*this)[smallest-1].first = k;
+ (*this)[smallest-1].second = v;
+ return;
+ }
+ Key k_temp = (*this)[smallest-1].first;
+ Value v_temp = (*this)[smallest-1].second;
+ (*this)[i-1].first = k_temp;
+ (*this)[i-1].second = v_temp;
+ i = smallest;
+ }
}
-
SystemClock::SystemClock() {
static int no = 0;
currentTime = 0;
@@ -130,7 +126,6 @@
}
}
-
void SystemClock::Add(SimulationMember *dev) {
syncMembers.Insert(currentTime, dev);
}
@@ -153,6 +148,8 @@
currentTime = syncMembers.begin()->first;
SystemClockOffset nextStepIn_ns = -1;
+ syncMembers.RemoveMinimum();
+
// do a step on simulation member
res = core->Step(untilCoreStepFinished, &nextStepIn_ns);
@@ -164,9 +161,7 @@
// be called anymore!
if(nextStepIn_ns > 0)
- syncMembers.RemoveMinimumAndInsert(nextStepIn_ns, core);
- else
- syncMembers.RemoveMinimum();
+ syncMembers.Insert(nextStepIn_ns, core);
// handle async simulation members
amiEnd = asyncMembers.end();
@@ -180,12 +175,11 @@
}
void SystemClock::Rescedule(SimulationMember *sm, SystemClockOffset newTime) {
- MinHeap<SystemClockOffset, SimulationMember *>::iterator ii;
- for(ii=syncMembers.begin(); ii != syncMembers.end(); ii++) {
- if(ii->second == sm) {
- syncMembers.erase(ii);
- break;
+ for(unsigned i = 0; i < syncMembers.size(); i++) {
+ if(syncMembers[i].second == sm) {
+ syncMembers.RemoveAtPositionAndInsert(newTime+currentTime+1, sm, i);
+ return;
}
}
@@ -211,6 +205,7 @@
}
void SystemClock::Endless() {
+ breakMessage = false; // if we run a second loop, clear break before entering loop
int steps = 0;
signal(SIGINT, OnBreak);
@@ -227,7 +222,6 @@
Application::GetInstance()->PrintResults();
}
-
void SystemClock::Run(SystemClockOffset maxRunTime) {
int steps = 0;
@@ -269,4 +263,3 @@
static SystemClock obj;
return obj;
}
-

View File

@@ -0,0 +1,78 @@
$NetBSD: patch-src_systemclock_h,v 1.1 2014/08/29 04:40:06 mef Exp $
clang flags as resize unresolved reference,
backport from git repository (as of 2013-09-15).
--- simulavr-1.0.0/src/systemclock.h 2012-02-13 00:26:38.000000000 +0900
+++ src/systemclock.h 2013-09-13 09:41:15.000000000 +0900
@@ -2,7 +2,7 @@
****************************************************************************
*
* simulavr - A simulator for the Atmel AVR family of microcontrollers.
- * Copyright (C) 2001, 2002, 2003 Klaus Rudolph
+ * Copyright (C) 2001, 2002, 2003 Klaus Rudolph
*
* 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
@@ -29,26 +29,41 @@
#include <map>
#include <vector>
-#include "avrdevice.h"
#include "systemclocktypes.h"
+class SimulationMember;
+
/** A heap data structure optimized for obtaining Value of the smallest Key.
- Example MinHeap<SystemClockOffset, SimulationMember*>. */
+ Example MinHeap<SystemClockOffset, SimulationMember*>. */
template<typename Key, typename Value>
class MinHeap : public std::vector<std::pair<Key,Value> >
{
public:
- MinHeap();
- bool IsEmpty() const { return this->empty(); }
- Value GetMinimumKey() const { return this->front().first; }
- Value GetMinimumValue() const { return this->front().second; };
- void RemoveMinimum();
- bool ContainsValue(Value v) const;
- void Insert(Key k, Value v);
- void RemoveMinimumAndInsert(Key k, Value v);
+ MinHeap();
+ bool IsEmpty() const { return this->empty(); }
+ Key GetMinimumKey() const { return this->front().first; }
+ Value GetMinimumValue() const { return this->front().second; };
+ void RemoveMinimum();
+ bool ContainsValue(Value v) const;
+ void Insert(Key k, Value v) {
+ this->resize(this->size()+1);
+ InsertInternal(k, v, this->size());
+ }
+ void RemoveMinimumAndInsert(Key k, Value v) {
+ RemoveAtPositionAndInsertInternal(k, v, 0);
+ }
+ void RemoveAtPositionAndInsert(Key k, Value v, unsigned pos) {
+ if(k < (*this)[pos-1].first)
+ InsertInternal(k, v, pos);
+ else
+ RemoveAtPositionAndInsertInternal(k, v, pos);
+ }
+protected:
+ // These are internal because a bad value of `pos' could violate the binary heap invariant.
+ void InsertInternal(Key k, Value v, unsigned pos);
+ void RemoveAtPositionAndInsertInternal(Key k, Value v, unsigned pos);
};
-
//! Class to store and manage the central simulation time
/*! This acts as a time table, a simulation member gets a place on this ordered
table, where it should be called next time, the placement depends on the
@@ -72,7 +87,7 @@
protected:
SystemClockOffset currentTime; //!< time in [ns] since start of simulation
- MinHeap<SystemClockOffset, SimulationMember *> syncMembers; //!< earliest first
+ MinHeap<SystemClockOffset, SimulationMember *> syncMembers; //!< earliest first
std::vector<SimulationMember*> asyncMembers; //!< List of asynchron working simulation members, will be called every step!
public:

View File

@@ -0,0 +1,126 @@
$NetBSD: patch-src_traceval_cpp,v 1.1 2014/08/29 04:40:06 mef Exp $
clang flags as resize unresolved reference,
backport from git repository (as of 2013-09-15).
--- simulavr-1.0.0/src/traceval.cpp 2012-02-13 00:26:38.000000000 +0900
+++ src/traceval.cpp 2013-09-13 09:41:15.000000000 +0900
@@ -28,6 +28,7 @@
#include <stdlib.h>
#include "helper.h"
#include "traceval.h"
+#include "avrdevice.h"
#include "avrerror.h"
#include "systemclock.h"
@@ -36,7 +37,7 @@
TraceValue::TraceValue(size_t bits,
const std::string &__name,
const int __index,
- void *_shadow) :
+ const void *_shadow) :
b(bits),
_name(__name),
_index(__index),
@@ -111,15 +112,16 @@
unsigned nv;
switch (b) {
case 1:
- nv=*(bool*)shadow; break;
+ nv = *(const bool*) shadow; break;
case 8:
- nv=*(uint8_t*)shadow; break;
+ nv = *(const uint8_t*) shadow; break;
case 16:
- nv=*(uint16_t*)shadow; break;
+ nv = *(const uint16_t*) shadow; break;
case 32:
- nv=*(uint32_t*)shadow; break;
+ nv = *(const uint32_t*) shadow; break;
default:
avr_error("Internal error: Unsupported number of bits in TraceValue::cycle().");
+ break;
}
if (v!=nv) {
f|=CHANGE;
@@ -144,6 +146,26 @@
f=0;
}
+char TraceValue::VcdBit(int bitNo) const {
+ if (_written)
+ return (v & (1 << bitNo)) ? '1' : '0';
+ else
+ return 'x';
+}
+
+char TraceValueOutput::VcdBit(int bitNo) const {
+ unsigned val = value();
+ if(written()) {
+ if(val == Pin::TRISTATE)
+ return 'z';
+ if((val == Pin::HIGH) || (val == Pin::PULLUP))
+ return '1';
+ if(val == Pin::LOW)
+ return '0';
+ }
+ return 'x';
+}
+
TraceValueRegister::~TraceValueRegister() {
for (valmap_t::iterator i = _tvr_values.begin(); i != _tvr_values.end(); i++)
delete i->first;
@@ -360,14 +382,9 @@
void DumpVCD::valout(const TraceValue *v) {
osbuffer << 'b';
- if (v->written()) {
- unsigned val=v->value();
- for (int i=v->bits()-1; i>=0; i--)
- osbuffer << ((val&(1<<i)) ? '1' : '0');
- } else {
- for (int i=0; i < v->bits(); i++)
- osbuffer << 'x';
- }
+ for (int i = v->bits()-1; i >= 0; i--)
+ osbuffer << v->VcdBit(i);
+
}
void DumpVCD::flushbuffer(void) {
@@ -726,31 +743,28 @@
return load(is);
}
-TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, bool *val) {
+TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, const bool *val) {
TraceValue *tv=new TraceValue(1, t->GetTraceValuePrefix() + name,
-1, val);
t->RegisterTraceValue(tv);
return tv;
}
-TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, uint8_t
-*val) {
+TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, const uint8_t*val) {
TraceValue* tv=new TraceValue(8, t->GetTraceValuePrefix() + name,
-1, val);
t->RegisterTraceValue(tv);
return tv;
}
-TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, uint16_t
-*val) {
+TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, const uint16_t*val) {
TraceValue* tv=new TraceValue(16, t->GetTraceValuePrefix() + name,
-1, val);
t->RegisterTraceValue(tv);
return tv;
}
-TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, uint32_t
-*val) {
+TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, const uint32_t*val) {
TraceValue* tv=new TraceValue(32, t->GetTraceValuePrefix() + name,
-1, val);
t->RegisterTraceValue(tv);

View File

@@ -0,0 +1,88 @@
$NetBSD: patch-src_traceval_h,v 1.1 2014/08/29 04:40:06 mef Exp $
clang flags as resize unresolved reference,
backport from git repository (as of 2013-09-15).
--- simulavr-1.0.0/src/traceval.h 2012-02-13 00:26:38.000000000 +0900
+++ src/traceval.h 2013-09-13 09:41:15.000000000 +0900
@@ -106,8 +106,9 @@
TraceValue(size_t bits,
const std::string &_name,
const int __index=-1,
- void* shadow=0);
-
+ const void* shadow=0);
+ virtual ~TraceValue() {}
+
//! Give number of bits for this value. Max 32.
size_t bits() const;
@@ -177,6 +178,9 @@
flags. */
virtual void dump(Dumper &d);
+ /*! Give back VCD coding of a bit */
+ virtual char VcdBit(int bitNo) const;
+
protected:
//! Clear all access flags
void clear_flags();
@@ -191,7 +195,7 @@
const unsigned b;
//! shadow reg, if used
- void *shadow;
+ const void *shadow;
//! The value itself
unsigned v;
@@ -207,6 +211,17 @@
bool _enabled;
};
+class TraceValueOutput: public TraceValue {
+
+ public:
+ /*! Generate a new uninitialized trace value of pin output driver */
+ TraceValueOutput(const std::string &_name): TraceValue(1, _name) {}
+
+ /*! Give back VCD coding of pin output driver */
+ virtual char VcdBit(int bitNo) const;
+
+};
+
class AvrDevice;
class TraceValueRegister;
@@ -453,7 +468,7 @@
if(_tvr_scopename.length() > 0)
_tvr_scopeprefix += _tvr_scopename + ".";
}
- ~TraceValueRegister();
+ virtual ~TraceValueRegister();
//! Returns the scope prefix
const std::string GetTraceValuePrefix(void) { return _tvr_scopeprefix; }
@@ -511,18 +526,18 @@
//! Register a directly traced bool value
/*! \return pointer to the new registered TraceValue */
-TraceValue *trace_direct(TraceValueRegister *t, const std::string &name, bool *val);
+TraceValue *trace_direct(TraceValueRegister *t, const std::string &name, const bool *val);
//! Register a directly traced byte value
/*! \return pointer to the new registered TraceValue */
-TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, uint8_t *val);
+TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, const uint8_t *val);
//! Register a directly traced 16bit word value
/*! \return pointer to the new registered TraceValue */
-TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, uint16_t *val);
+TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, const uint16_t *val);
//! Register a directly traced 32bit word value
/*! \return pointer to the new registered TraceValue */
-TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, uint32_t *val);
+TraceValue* trace_direct(TraceValueRegister *t, const std::string &name, const uint32_t *val);
#endif