From d79b241a58ae43e6b9d679b0f0041fab7550a58d Mon Sep 17 00:00:00 2001 From: lbessard Date: Wed, 3 Jan 2007 09:33:55 +0000 Subject: [PATCH] Bug on map variable type changing and on comments with special characters corrected --- objdictgen/gen_cfile.py | 4 ++++ objdictgen/node.py | 12 ++++++++++++ objdictgen/nodemanager.py | 4 +++- objdictgen/objdictedit.py | 9 ++++++--- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/objdictgen/gen_cfile.py b/objdictgen/gen_cfile.py index 0060dc4..5f83442 100644 --- a/objdictgen/gen_cfile.py +++ b/objdictgen/gen_cfile.py @@ -466,6 +466,10 @@ CO_Data %(NodeName)s_Data = CANOPEN_NODE_DATA_INITIALIZER(%(NodeName)s); HeaderFileContent = copyright_notice + generated_tag + """ #include "data.h" +// prototypes of function provided by object dictionnary +UNS32 %(NodeName)s_valueRangeTest (UNS8 typeValue, void * value); +const indextable * %(NodeName)s_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks); + // prototypes of function to be filled by app void %(NodeName)s_SDOtimeoutError(UNS8 line); void %(NodeName)s_heartbeatError(UNS8); diff --git a/objdictgen/node.py b/objdictgen/node.py index ddbe768..b74578d 100755 --- a/objdictgen/node.py +++ b/objdictgen/node.py @@ -582,6 +582,18 @@ class Node: if (value & mask) == model: self.Dictionary[i][j] = 0 + def UpdateMapVariable(self, index, subIndex, size): + model = index << 16 + mask = 0xFFFF << 16 + if subIndex: + model += subIndex << 8 + mask = 0xFF << 8 + for i in self.Dictionary.iterkeys(): + if 0x1600 <= i <= 0x17FF or 0x1A00 <= i <= 0x1BFF: + for j,value in enumerate(self.Dictionary[i]): + if (value & mask) == model: + self.Dictionary[i][j] = model + size + def RemoveLine(self, index, max, incr = 1): i = index while i < max and self.IsEntry(i + incr): diff --git a/objdictgen/nodemanager.py b/objdictgen/nodemanager.py index e2d94a6..b1eef50 100755 --- a/objdictgen/nodemanager.py +++ b/objdictgen/nodemanager.py @@ -804,13 +804,15 @@ class NodeManager: else: if editor == "type": value = self.TypeTranslation[value] + size = self.GetEntryInfos(value)["size"] + self.CurrentNode.UpdateMapVariable(index, subIndex, size) elif editor == "access": dic = {} for abbrev,access in AccessType.iteritems(): dic[access] = abbrev value = dic[value] self.CurrentNode.SetMappingEntry(index, subIndex, values = {name : value}) - if name == "name": + if name == "name" or editor == "type": self.GenerateMapList() self.BufferCurrentNode() diff --git a/objdictgen/objdictedit.py b/objdictgen/objdictedit.py index 0c62e73..3336e1f 100755 --- a/objdictgen/objdictedit.py +++ b/objdictgen/objdictedit.py @@ -32,7 +32,7 @@ import wx.grid from types import * import os, re, platform, sys, time, traceback, getopt -__version__ = "$Revision: 1.7 $" +__version__ = "$Revision: 1.8 $" from nodemanager import * from node import OD_Subindex,OD_MultipleSubindexes,OD_IdenticalSubindexes,OD_IdenticalIndexes @@ -131,8 +131,11 @@ class SubindexTable(wxPyGridTableBase): def GetValue(self, row, col): if row < self.GetNumberRows(): - name = str(self.data[row].get(self.GetColLabelValue(col), "")) - return name + value = self.data[row].get(self.GetColLabelValue(col), "") + if (type(value) == UnicodeType): + return value + else: + return str(value) def GetEditor(self, row, col): if row < self.GetNumberRows(): -- 2.39.2