NodeBuilder, 3120, 3150, and the Echelon logo are trademarks of Echelon
Corporation registered in the United States and other countries. L
LonSupport, the L
ONMARK logo, and ShortStack are trademarks of Echelon
ONMARK,
Corporation.
Other brand and product names are trademarks or registered trademarks of
their respective holders.
Neuron
Chips, Serial LonTalk Adapters, and other OEM Products were not
designed for use in equipment or systems which involve danger to human
health or safety or a risk of property damage and Echelon assumes no
responsibility or liability for use of these products in such applications.
Parts manufactured by vendors other than Echelon and referenced in this
document have been described for illustrative purposes only, and may not
have been tested by Echelon. It is the responsibility of the customer to
determine the suitability of these parts for each application.
ECHELON MAKES NO REPRESENTATION, WARRANTY, OR
CONDITION OF ANY KIND, EXPRESS, IMPLIED, STATUTORY, OR
OTHERWISE OR IN ANY COMMUNICATION WITH YOU, INCLUDING,
BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR ANY
PARTICULAR PURPOSE, NONINFRINGEMENT, AND THEIR
EQUIVALENTS.
No part of this publication may be reproduced, stored in a retrieval system, or
transmitted, in any form or by any means, electronic, mechanical,
photocopying, recording, or otherwise, without the prior written permission of
Echelon Corporation.
Echelon Corporation
550 Meridian Avenue
San Jose, CA. USA
95126
www.echelon.com
Preface
This manual documents and explains the various warning and error messages
that can occur in the various components of the NodeBuilder software.
Audience
The NodeBuilder® Errors Guide is intended for users of the NodeBuilder Development Tool.
Content
The NodeBuilder Errors Guide documents and explains the various warning and error messages that
you may encounter while using the NodeBuilder software. This guide organizes the errors into
separate chapters with each chapter containing errors applicable to a single software component.
For example, compiler errors are in one chapter and NodeBuilder interface errors are in another
chapter.
Each chapter lists the errors in numerical order by message code. This permits minor wording
changes in the future without interfering with the ability to locate the documentation for a
particular message code.
Each error message has a category acronym and a message code. This is a typical message:
The directive '#pragma num_alias_table_entries' is required [NCC#456]
NCC is the category acronym, 456 is the error code. The table below shows the various acronyms
and what they stand for, and the chapter of this document that discusses error and warning
messages with that category.
Acronym
DBG NodeBuilder Debugger
DEP
LCL
LWX L
NCC Neuron
NEX Neuron Exporter
PMK NodeBuilder Project Make
UCL Common command line
The NodeBuilder User’s Guide lists and describes all tasks related to LONWORKS application
development using the NodeBuilder Development Tool. Refer to that guide for detailed information
on the user interface and features of the NodeBuilder tool.
The Neuron C Reference Guide (Revision 3) provides the reference information for writing programs
using the Neuron C language.
The Neuron C Programmer’s Guide (Revision 5) outlines a recommended general approach to
developing a L
through the use of code fragments and examples.
ONWORKS application and explains the key concepts of programming in Neuron C
Typographic Conventions for Syntax
Type Used For Example
boldface type keywords network
literal characters {
Italic typeabstract elements identifier
square brackets optional fields [bind-info]
vertical bar a choice between input | output
two elements
For example, the syntax for declaring a network variable is
network input | output [netvar modifier][class] type [bind-info] identifier
Punctuation other than square brackets and vertical bars must be used where shown (quotes,
parentheses, semicolons, etc.).
Code examples appear in the Courier font:
#include <mem.h>
unsigned array1[40], array2[40];
// See if array1 matches array2
if (memcmp(array1, array2, 40) != 0) {
// The contents of the two areas do not match
}
NodeBuilder Errors Guide v
Contents
Preface iii
Audience iv
Content iv
Related Manuals v
Typographic Conventions for Syntax v
Contents vi
Chapter 1 NodeBuilder Debugger Errors (DBG) 1-1
Chapter 2 Dependency Utility Errors (DEP) 2-1
Chapter 3 Comm Parameter Calculator Errors (LCL) 3-1
Chapter 4 LONWORKS XML Errors (LWX) 4-1
Chapter 5 Neuron C Compiler Errors (NCC) 5-1
Chapter 6 Neuron Exporter Errors (NEX) 6-1
Chapter 7 Project Make Errors (PMK) 7-1
Chapter 8 Common Command Line Errors (UCL) 8-1
Chapter 9 Neuron Firmware Error Codes 9-1
vi Preface
NodeBuilder Debugger
Errors (DBG)
This chapter describes errors that may be produced by
the NodeBuilder Debugger.
1
DBG# Description
1 No error [DBG#1]
2 Memory allocation failed [DBG#2]
Save your work and restart the system
3 Cannot open a needed file [DBG#3]
Clean, rebuild, load and restart the debugger.
4 Invalid DBT file format or DBT file is corrupt [DBG#4]
Clean, rebuild, load and restart the debugger. If this persists
you may need to re-install NodeBuilder.
5 Communication to network interface failed [DBG#5]
This may happen when starting the debugger. Use the control
panel or LonMaker to test the Network Interface.
6
Cannot communicate with the device over the network
[DBG#6]
Make sure it is connected and any intervening routers are
configured and online.
7 Cannot find the requested symbol [DBG#7]
Re-enter the symbol name. The DBT file might be out-of-date.
8
Source line translates to less than 2 bytes of object code,
so a breakpoint cannot be placed here [DBG#8]
In the NodeBuilder’s Device Template Editor, check the
“Expand statements” item and re-build if you really need to
set a breakpoint at this location.
9
Object code at breakpoint is not in writable memory, so
a breakpoint cannot be set [DBG#9]
NodeBuilder debugger modifies program memory when it sets
breakpoints.
10 No instruction for BP at this location [DBG#10]
Make sure the build status is up-to-date. Try closing and reopening the source file.
11
Command only legal when debugger is not suspended,
not currently used [DBG#11]
No longer used.
12
Command is only legal when debugger is suspended,
e.g., Neuron remote procedure calls [DBG#12]
Remote procedure calls are not supported.
13 Failed in file read/write [DBG#13]
The target hardware did not complete the operation.
14
Out case reached -- should be development only
[DBG#14]
Not used in release builds.
1-2 NodeBuilder Debugger Errors (DBG)
DBG# Description
16
Debug kernel version not supported by debugger
[DBG#16]
The debug kernel was updated and this debugger will no
longer work with the target device. You need to update the
debugger.
17
Feature is not included in the version of the debug
kernel included in the target device [DBG#17]
Some feature are excluded at compile time with various debug
kernel options or #pragma debug <option> statements. The
operation the debugger attempted will not work with the
target’s application.
18
Cannot allocate a reference ID to send a message
through the network interface. [DBG#18]
No longer used.
19 Bad parameter passed to method [DBG#19]
Program error. Please contact LonSupport.
21
Command is invalid in the current dbgDebugStatus
[DBG#21]
The device could be taking longer than expected to complete
its reset processing.
22
Command invalid until pending command completes
[DBG#22]
The device could be taking longer than expected to complete
its reset processing.
23
The target has been built since it was last loaded.
Reload it and try again [DBG#23]
The dependency checker keeps track of all source files,
resources, hardware templates, etc. The debug file (.DBT)
must be kept in sync with the loaded application to allow the
debugger to function.
25
The source file specified is not in the debugger's
application image [DBG#25]
The debugger tells the editor to load the top-level .nc file when
it starts. In this case the debug file (.DBT) does not agree
with the built image.
26
The source file specified has been modified from the
version in the debug application image. [DBG#26]
A dependency check. You need to re-build, load and start the
debugger again.
27 Maximum number of breakpoints already set [DBG#27]
NodeBuilder Errors Guide 1-3
DBG# Description
28
Communication with device timed out before a response
was received
This will intermittent if it occurs. Usually no harm would be
done. Breakpoints might not work as expected. Might need to
re-start the debugger.
29 Bad format found when reading [debug] NXE [DBG#29]
This would normally never happen. The file might be corrupt;
possibly it was hand-edited.
30
Operation on a dbgSymbol requires a dbgValue type
[DBG#30]
Used during development.
31
dbgValue operation requested on symbol that is out of
context, e.g. a local variable in a routine that is not in
the current calling sequence [DBG#31]
Should restart the debugger. Did the stacks crash?
32 Cannot read/write timers while running [DBG#32]
The application and the debugger do not agree on what state
the debugger is in. Should restart the debugger.
33 Cannot write this dbgValue [DBG#33]
Possibly the value is in read-only memory.
34 No remote procedure calls while running [DBG#34]
35
Not enough memory in debug kernel to pass RPC
parameters [DBG#35]
Remote procedure call is not supported.
36 Not enough Neuron stack space left for RPC [DBG#36]
Remote procedure call is not supported.
37 Cannot add to list, limit reached [DBG#37]
Resource allocation problem. Probably a program error.
38
Can only watch network variables and variable symbol
types [DBG#38]
39 Cannot debug a read/write protected device [DBG#39]
NodeBuilder debugger modifies program memory when it sets
breakpoints.
40
dbgSymUser and dbgRawMemory cannot refer to a
memory area that is not in the Neuron memory map
[DBG#40]
41
dbgSymUser and dbgRawMemory define read/write
blocks within memory. These blocks must completely
reside within one memory area. Areas include: ROM,
onchip EEPROM, offchip EEPROM, onchip RAM, offchip
RAM and memory mapped I/O. Different memory areas
have different read/write capabilities, etc. [DBG#41]
1-4 NodeBuilder Debugger Errors (DBG)
DBG# Description
42
dbgSymUser or dbgRawMemory tried to define a memory
view into code area while specifying that code area
should be inaccessible [DBG#42]
43
There is no debug kernel on the device The debug kernel
must be present in order to perform network debugging.
Make sure that the Use debug kernel option is set for the
build target [DBG#43]
44
Cannot activate a breakpoint or a steppoint at the
current location because it would overlap with a
currently-active breakpoint [DBG#44]
45
dbgSymUser or dbgRawMemory tried to define a memory
view into the system image area while specifying that
the system image area should be inaccessible [DBG#45]
46
Message monitor point gave invalid data point reference
[DBG#46]
Possible problem in LNS.
47 Variant data too large for provided buffer [DBG#47]
Not expected.
49 Failed to get IDispatch pointer [DBG#49]
This is internal error in the COM subsystem.
50 Device did not send a response message [DBG#50]
The debugger sent a request that was not honored. Did the
network buffers overflow? Was the device detached from the
network?
51 Device sent an unexpected response message [DBG#51]
Are there two devices with the same subnet/node addresses?
52 Response datapoint not returned [DBG#52]
Possible problem with LNS.
53 Request datapoint not returned [DBG#53]
Possible problem with LNS.
55 Output datapoint not returned [DBG#55]
Possible problem with LNS.
56 Debugger feature not yet implemented [DBG#56]
57 Debugger feature not implemented [DBG#57]
58
Failed to remove breakpoints while stopping the
debugger [DBG#58]
Clean, re-build, load and restart the debugger.
59 Debug file is not available [DBG#59]
Clean, re-build, load and restart the debugger.
NodeBuilder Errors Guide 1-5
DBG# Description
60
Cannot debug this device because it is not responding.
Please make sure that it is attached to the network and
powered on [DBG#60]
61
Cannot debug this device because it has not been
commissioned. Use LonMaker to commission it and try
again [DBG#61]
62
Network interface must be configured to run VNI
[DBG#62]
Use the control panel to select a VNI network image. The
name depends on which network interface you use. For the
PCLTA-20 use: PCL10VNI. Do not use NSIPCLTA or
PCC10L7.
63 Device not found in network database [DBG#63]
Remove the device from the NodeBuilder project treeview and
use the Device | Insert shortcut menu to select the device you
want to debug. You may have to re-drop the target device
shape with LonMaker.
64
Cannot debug this device because it is unconfigured.
Use the LonMaker Commission command to commission
it and try again [DBG#64]
65
Cannot debug this device because it is applicationless.
Use the LonMaker Load command to load the
application image and try again [DBG#65]
66
Cannot debug this device because it is hard-offline. Use
the LonMaker Device Manage command to put it online
and try again [DBG#66]
67
Cannot debug this device because it is soft-offline Either
reset it or use the LonMaker Device Manage command to
put it online [DBG#67]
68
Failed to write device memory. Please try again
[DBG#68]
69
Failed to read device memory. Please try again
[DBG#69]
70
A device being debugged either stopped communicating
or was deleted. The debug session will stop [DBG#70]
71
Device did not respond to Query Status command
[DBG#71]
Probably not a serious problem. Could be just a lost packet.
1-6 NodeBuilder Debugger Errors (DBG)
Dependency Utility
Errors (DEP)
This chapter lists and describes the errors that may be
produced by the Dependency Checker component. The
dependency checker is used by several build tools,
including the compiler, assembler, linker, exporter, and
project make; therefore these errors could appear when
using any of the tools listed above.
2
DEP# Description
1 An error occurred accessing file <file>: <reason> [DEP#1]
System error when accessing dependency file, see error
message for details provided as <reason>.
2
An error occurred when processing dependency
information: <reason> [DEP#2]
System error not related to file I/O, see error message for
details provided in <reason>.
3 An error occurred, but no details are available
Unknown error. Attempt correction by performing an
unconditional build; contact LonSupport if the problem
persists.
4
malformed record '<tag>' in dependency file <file>
[DEP#4]
Malformed dependency file. Has it been edited? Attempt
correction by performing an unconditional build.
5
file <file> can't be referenced in dependency file (might
cause build status calculation to become incorrect).
(<reason>) [DEP#5]
A file cannot be referenced when being added to a dependency
file, or a non-recoverable problem occurs when investigating
the file described by an existing dependency file record. This
might be caused by the file being present but corrupt, or being
locked by some other process. See <reason> provided in the
message for failure details.
6 missing separator in clause '<tag>' [DEP#6]
The dependency file is missing a separator in a key/value pair.
Has the dependency file been edited? Attempt correction by
performing an unconditional build.
7 index <idx> is unsuitable for section <section> [DEP#7]
Bad index in the dependency file (see error message for details).
Has the dependency file been edited? Attempt correction by
performing an unconditional build.
2-2 Dependency Utility Errors (DEP)
Comm Parameter Calculator
Errors (LCL)
This chapter lists and describes errors that may be
produced by the communication parameter calculator.
3
LCL# Description
1
Can not compute communication port control byte.
[LCL#1]
Failure to compute the CP (Communication Property) port
configuration. Make sure your standard transceiver database
(stdxcvr.xml) has not been corrupted. An update might be
available at the www.lonmark.org website. Contact LonSupport
if problem persists.
2 Unrecognized encoded clock rate value <id> [LCL#2]
Bad encoded value for clock speed (5 for 10MHz, 6 for 20MHz,
etc).
3
The transceiver's general purpose data record seems
malformed: <gp data> [LCL#3]
The xcvr_gp_data in STDXCVR.XML seems malformed. Make
sure your standard transceiver database (stdxcvr.xml) has not
been corrupted. An update might be available at the
www.lonmark.org website. Contact LonSupport if the problem
persists.
4
The device's clock rate (encoded value <id>) and the
transceiver's communication rate (encoded value <id>)
result in an invalid communication clock divider value.
One of the two input rates must be invalid. [LCL#4]
The comm_rate from STDXCVR.XML and effective hardware
clock rate combination results in an invalid comm clock divider
value. One of the two must be wrong. Verify the hardware
preferences. Make sure your standard transceiver database
(stdxcvr.xml) has not been corrupted. An update might be
available at the www.lonmark.org website. Contact LonSupport
if problem persists.
5
Unable to determine <attribute> using transceiver <xcvr
name> [LCL#5]
The aspect described as <attribute> cannot be computed as
part of the communication parameter calculations. Make sure
your standard transceiver database (stdxcvr.xml) has not been
corrupted. An update might be available at the
www.lonmark.org website. Contact LonSupport if problem
persists.
6
The transceiver requires a minimum clockrate which is
higher than the device's configured input clock speed.
[LCL#6]
The hardware clock speed is lower than the required minimum
for this transceiver. Choose a higher clock rate, or choose a
different transceiver type.
3-2 Comm Parameter Calculator Errors (LCL)
LCL# Description
7
8
9
The encoded value for the device's clock input of <id> is
not within the supported range of <min> to <max>
[LCL#7]
An invalid encoded clock value has been used to describe the
hardware clock speed. See LCL#2.
The encoded value for the channel's minimum clock rate
of <id> is not within the supported range of <min> to
<max> [LCL#8]
An invalid encoded clock value has been specified for the
channel's minimum clock speed. This value originates from the
standard transceiver database, and the presence of this
problem indicates a corrupted or incorrect database record.
Make sure your standard transceiver database (stdxcvr.xml)
has not been corrupted. An update might be available at the
www.lonmark.org website. Contact LonSupport if problem
persists.
Unable to compute media access control values (raw
transceiver data): the specified Neuron clock frequency is
too high for the transceiver [LCL#9]
This error condition is unavoidable for some combinations of
(typically) high Neuron clock rates and (typically) slow
channels. A different operating mode of the same transceiver or
a lower Neuron clock rate might solve the problem.
NodeBuilder Errors Guide 3-3
LONWORKS XML
Errors (LWX)
This chapter lists and describes the errors that may be
produced by the LONWORKS XML software component.
This software component is used by multiple other
components, including the Neuron Linker, the Project
Make utility, the NodeBuilder software, and others.
Therefore, these errors may be produced when using any
of the tools listed.
4
LWX# Description
101
Unexpected non-numeric value found in XML data <string>
[LWX#101]
This might happen if an XML file was edited outside of
NodeBuilder. If the file is saved, it will be fixed up but data may be
lost.
Open the file with an editor, find the noted string and see if there is
anything obviously wrong with the text and try to fix it.
120 Unexpected code path [LWX#120]
Only a program error can cause this. Please contact LonSupport.
121 Failed to create COM object [LWX#121]
Make sure the MSXML3.DLL file is in the system folder. Attempt
to fix the problem by manually re-registering the MSXML3.DLL
with the Windows REGSVR32.EXE utility. In the windows system
folder, get a command prompt and enter the following command:
Regsvr32 msxml3.dll
Contact LonSupport if the problem persists.
122 Overwrite tried on a write-protected file [LWX#122]
Perhaps a file was not checked out of source code control. Clear the
read-only attribute, and try again if you need to update the file.
123 Uninitialized pointer [LWX#123]
Only a program error can cause this. Please contact LonSupport.
124 File not found [LWX#124]
Check your settings to make sure the file path is correct and verify
that the file exists.
125 Unexpected data [LWX#125]
This could be due to a renamed file, a hand edited file or a program
error.
128 Non-unique XML key found [LWX#128]
Collections need unique key values. The file was probably edited by
hand. Edit the file to remove the duplicate so it may be loaded.
131 Expected format attribute not found [LWX#131]
Either the file was added by hand or there is a program error.
4-2 LONWORKS XML Errors (LWX)
5
Neuron C Compiler
Errors (NCC)
This chapter lists Neuron C compiler warning and error
messages and offers suggestions on how to correct the
indicated problems.
The errors produced by Neuron C are of four severity levels:
• FYI(For Your Information) errors are intended simply to provide
information.
• Warningerrors are not severe enough to prevent successful compilation, but
they should each be examined, and corrected if appropriate. Any code that is
flagged by the compiler with a warning message should be viewed as a
potential programming error, or at least as a poor programming practice.
• Error messages result from code constructs that cannot be interpreted by the
compiler in any way that would produce compilable code, or indicate
situations that are expressly prohibited by either the ANSI C language
standard, or by Neuron C. A compilation with one or more error messages
does not produce a device file set.
• FATAL errors prevent the compiler from performing any further translation.
These messages result from resource problems (out of memory, disk full, and
so on) or from internal checking on the compiler itself. Any message of the
form ***TRAP n***, where n is a decimal number, should be reported to
LonSupport.
The following discussions interpret each FYI, Warning, or Error message
produced by the Neuron C Compiler, and briefly explain how to correct the
problem. Error messages appear in bold italic type. The explanation of
how to correct the problem appears beneath the message in normal type.
NCC# Description
1 Maximum token length exceeded [NCC#1]
No Neuron C token can exceed 256 characters. This applies to
identifiers, numbers, string constants, and so on. This does not apply
to comments.
2 Character in input is not acceptable for C source [NCC#2]
The Neuron C compiler uses only the minimum ANSI C standard
character set. Additionally, the characters $, @, and `(accent-grave)
can be used in string and character constants. All other nonstandard characters are treated as white space, except for ^D and
^Z. Appearance of either of these two characters in the input file is
taken to be an end-of-file marker.
3 Float constants are not supported [NCC#3]
4 Float exponent too big [NCC#4]
5
The 'expand_array_info' option does not apply to a msg_tag
[NCC#5]
6 Comment not properly terminated [NCC#6]
An end-of-file condition was discovered in the middle of a comment.
This is an unterminated comment condition and is an error. The
error message contains the beginning of the comment.
5-2 Neuron C Compiler Errors (NCC)
NCC# Description
7 Comment may not be properly terminated [NCC#7]
This warning may be useful in discovering unintentional comments
in your Neuron C program. The definition of C does not permit
nesting of comments. Any text of the form shown below is treated as
a single comment.
/* <text> /* <text> */
Note, however, that this particular pattern may indicate a condition
where there are actually two comments intended, but the first is
unterminated. Thus, the compiler detects this condition and prints a
warning message. The comment text is printed also, for up to 256
characters.
8 Character constant is too long [NCC#8]
Neuron C only supports single-character constants (this does not
apply to use of the \ escape character sequence).
9 String constant is not terminated [NCC#9]
ANSI C does not permit a string constant to span lines; nor can a
string constant be terminated by end-of-file. To create a very long
string constant, use the ANSI C string constant concatenation
feature, demonstrated below. Note that the parts of the string are
concatenated without insertion of any white space, newline, or other
separator character.
"This is a long string constant "
"split across two source lines."
Note that this error message may also indicate mismatched quotes in
strings.
Use \" to include a quote character in a string constant.
10 Preprocessor directives cannot be nested in macros [NCC#10]
A macro cannot contain the character # outside of the text of a string
or a character constant.
11
Directive #else/#endif without corresponding #if/#ifdef/#ifndef
[NCC#11]
The preprocessor directives controlling conditional compilation must
always exist in matching pairs, similar to the open brace { and close
brace } in a C program. The pair #ifdef and #endif must match, for
example. An optional #else may contained in between.
12 Unrecognized or ill-formed pragma was ignored [NCC#12]
The pragma referenced by the error message is not one which is
recognized or supported by the Neuron C compiler.
13
Cannot enable micro_interface with Net Vars or msg_tags
declared [NCC#13]
The #pragma micro_interface can only appear in a program if
there have not been any prior declarations of network variables or
message tags. This pragma can only be used with the LonBuilder
Microprocessor Interface Program (MIP).
NodeBuilder Errors Guide 5-3
NCC# Description
14 Invalid value for this pragma [NCC#14]
The numeric value following the pragma that the message refers to is
not of appropriate value. Consult the documentation for the specific
pragma to ascertain the applicable valid values. Pragmas are
documented in the Compiler Directives chapter of the Neuron C Reference Guide.
15 Cannot repeat this pragma [NCC#15]
Some pragmas can only be used once. These are:
app_buf_out_size
Macro name, macro parameter name, or macro argument is
too long [NCC#16]
No identifier in Neuron C can exceed 256 characters
17 Line too long in macro definition [NCC#17]
No input line in Neuron C can exceed 256 characters. You can use
the line continuation feature of ANSI C to extend the line. This
feature is activated by using a \ character at the end of the line
(make sure there are no space characters following the backslash
character).
18 Invalid preprocessor directive syntax [NCC#18]
This error indicates one of any number of syntax problems in the #
directive of the line indicated. The proper syntax is:
#directive [value]
where the optional value is dependent on the particular directive.
5-4 Neuron C Compiler Errors (NCC)
NCC# Description
19 Extra entries in preprocessor directive [NCC#19]
This error indicates that, although the preprocessor directive was of
the correct syntax, there are additional entries on the line that were
not part of the directive.
20 Empty input source file
Check for the existence of the file that is being compiled. Is the file
name and path name correct?
21 Unexpected END-OF-FILE in source file [NCC#21]
An incomplete source construct unexpectedly ended in an end-of-file
condition. This may indicate mismatched brace characters { and } or
may indicate the use of a function macro with an insufficient number
of right (ending) parentheses.
22 Repeated keyword was ignored [NCC#22]
The keyword const or volatile is used more than once in
modification of a pointer type.
23
24
Not enough address table entries [NCC#23] (See NCC#24)
Not enough address table entries for optimum efficiency
[NCC#24]
A Neuron Chip has up to 15 outgoing message ports. (Ports are also
known as “address table entries.”) Each bindable message tag
consumes one port, whether bound or not. Network variables can
share ports, but there must be at least one port available.
If there aren’t enough address table entries for all the message tags
plus at least one for network variables, you get the error [NCC#23].
However, if there aren’t enough entries available for each output
network variable to have its own port, you get the warning [NCC#24]
(unless you already have the maximum number of address table
entries in your program). This is because the binder would then
have to share the remaining address table entries among the
network variables.
EXAMPLE: If there are three network variables (each going to a
different destination) and there are only two address table entries,
then at least two of the network variables would have to use the
same address table entry (if they are all connected). Now let’s
assume that all the variables are connected, each point-to-point to a
different node. If each variable had its own address table entry, the
LonTalk messages would all use subnet/node (i.e. point-to-point)
addressing.
However, for the two variables sharing the same entry, a group will
be constructed. This means that, when either variable is updated,
the updates will go to all members in the group. This does not
necessarily cause a problem, as the nodes that don’t have the
variable will discard the update. The major inefficiency the compiler
is warning about, though, is that each destination in the group,
regardless of whether it uses the message, will respond with an
acknowledgment message. This situation thus leads to increased
unnecessary acknowledgements, or other extra network traffic.
NodeBuilder Errors Guide 5-5
NCC# Description
25 Cannot open assembly output file [NCC#25]
The compiler cannot open the output file for code generation. This
could be caused by an existing file being marked as read-only, or a
missing folder, or a problem with the operating system.
26 Cannot open bplate.ns [NCC#26]
During compiler initialization, the compiler attempts to open several
support files. One of these files is named bplate.ns. This file should
reside in the LonBuilder system include directory (default location is
\lb\include) or the NodeBuilder system include directory (default
location is \Lonworks\NeuronC\Include. This message could
indicate a disk error.
27
Special event & init code block exceeds size limitation
[NCC#27]
The tasks corresponding to the reset, online, offline, and wink
events, as well as any when clause arbitrary expressions all
generate code in a special area known as the APINIT block. If
#pragma disable_mult_module_init (see the Compiler Directives
chapter of the Neuron C Reference Guide) is used, any non-zero
initialization of global RAM variables and I/O objects place code here
as well. This block is limited in size to 255 bytes.
If you exceed the size of this block, try moving the bulk of code in any
tasks that correspond to reset, online, offline, and wink events to
functions that are called from these tasks. If you are using the
#pragma disable_mult_module_init directive, remove the
pragma.
28 Incorrect I/O object type for io_changes event [NCC#28]
See the description of the event in the Predefined Events chapter of
the Neuron C Reference Guide. Make sure that your I/O object type
supports this event.
29 Use only 15000, 10000, or 1000 for I/O object's baud [NCC#29]
The bitshift I/O object types can have their bit rates specified with
either the baud or kbaud I/O declaration modifier. If kbaud is
used, the only legal values are 15, 10, and 1. If baud is used, the
only legal values are 15000, 10000, and 1000. The default bit rate for
these I/O object types is 15kbps, and need not be specified.
30 Use only 15, 10, or 1 for kbaud rate value [NCC#30]
The bitshift I/O object types can have their bit rates specified with
either the baud or kbaud I/O declaration modifier. If kbaud is
used, the only legal values are 15, 10, and 1. If baud is used, the
only legal values are 15000, 10000, and 1000. The default bit rate for
these I/O object types is 15kbps, and need not be specified.
5-6 Neuron C Compiler Errors (NCC)
NCC# Description
31 Too many ‘when’ clauses [NCC#31]
Neuron C places entries representing the when clauses in a table
that is interpreted by the Neuron Chip firmware scheduler. The
table's entries are variable sized, as some event expressions are more
complex than others. The table size is limited to 256 bytes. When
the table is full, no more when clauses can be accepted. Note that
the limit is on the number of when clauses and not on the number of
when tasks.
32 Cannot open binder interface file(s) [NCC#32]
This problem could occur when the compiler attempts to open files
with .BIF or .BF2 extension, but the file cannot be opened properly
with write access. It is possible that the file is marked read-only, or
that the output folder does not exist, or there is a disk or operating
system problem.
33
Cannot open assembly include file named in pragma directive
[NCC#33]
There is a #pragma include_assembly_file that can be used to
include an assembly source file in the compiler code generator’s
assembly code output file. The named file cannot be found or opened.
34 Attempt to divide by the constant zero [NCC#34]
The compiler detected that a constant expression contains a division
by zero. Constant expressions are evaluated at compile time by the
Neuron C compiler. Correct the expression.
35 SD string supplied exceeds 1023 character limit [NCC#35]
The sd_string option for a network variable declaration is limited to
a string of no more than 1023 characters (plus NUL terminator). It
is possible, using the bind_info(expand_array_info) declaration
option for a network variable array, that the string would be limited
to less than 1023 characters in some situations.
36 Message object reference has no value [NCC#36]
The message objects, msg_out, msg_in, resp_out, and resp_in,
have no value in themselves. They only have meaning when they are
accessed using the dot operator (.) and a field name. Only certain
predefined field names apply.
37 This field must be indexed [NCC#37]
The message objects, msg_out, msg_in, resp_out, and resp_in,
have no value in themselves. They only have meaning when they are
accessed using the dot operator (.) and a field name. Only certain
predefined field names apply. The particular data field referred to by
this message is an array, and access to it must be via index, except
when used with memcpy( ).
NodeBuilder Errors Guide 5-7
NCC# Description
38 Possible data truncation [NCC#38]
This message results from an automatic conversion of a long
variable to a short. To make this warning go away, modify the
variable declarations or use an explicit cast operator, which disables
the compiler warning.
39 Cannot open debug output info file [NCC#39]
This problem could occur when the compiler attempts to open the
output file with .DBG extension, but the file cannot be opened
properly with write access. It is possible that the file is marked readonly, or that the output folder does not exist, or there is a disk or
operating system problem.
40
Enum list has more values than the debug info supports
[NCC#40]
The range of enum values in Neuron C is from -128 to 127.
According to the definition of ANSI C, multiple enumerated constant
names may appear in an enum type for the same constant value;
thus there is really no limit to the number of names in an enum
value list.
However, the Neuron C Debugger only supports a maximum of 255
enumerated constant names in a given enum type. An enum that
contains more names than this is still perfectly acceptable to the
compiler; however, the debugger is only capable of using the first 255
names in the enum type.
41 Too many function parameters for debug info [NCC#41]
The Neuron C Debugger can only support functions with 14 or fewer
parameters. Use of functions with more than 14 parameters may
result in strange or incorrect results when using the debugger to
display stack contents, and so on. Note that this is a limitation on
number of parameters, and not on the number of bytes used to store
those parameters.
42 Too many include search directories specified [NCC#42]
A maximum of 20 directories may be specified in the includedirectory search list.
43 Cannot open output dependency-file [NCC#43]
The compiler opens several output files as part of its initialization.
All the files are placed in the intermediate folder. In the LonBuilder
development tool, the intermediate folder is the IM folder within the
project folder. In the NodeBuilder development tool, the
intermediate folder is the IM subfolder in each target folder
("Release", "Development", etc). This error may indicate that the
disk is full, or may indicate a disk error, or may indicate a read-only
disk condition (if for example, the project directory and its
subdirectories are on a floppy disk and the disk is write-protected).
Also, confirm that the project folder contains a subfolder named IM.
5-8 Neuron C Compiler Errors (NCC)
NCC# Description
44 Too many include files [NCC#44]
A maximum of 254 files may be opened in a single compilation. The
source file and the three compiler helper files count as four files
altogether, thus there may be no more than 250 application include
files. (An include file included from another include file counts as a
separate file.)
45 System open file limit exceeded [NCC#45]
This problem should not be seen under modern Windows operating
systems, since there is no hard limit on open files.
DOS limits the number of files that may be open simultaneously, and
this is reflected in DOS versions of the compiler. The number of files
is limited by the FILES= setting in CONFIG.SYS (see your DOS
manual). It is recommended that a setting of at least 20 is used.
However, some configurations (use of TSRs with files, deeply nested
include file structures, and so on) may require a larger FILES=
setting. Try increasing this value (you must reboot to have any
change to CONFIG.SYS take effect). However, under no
circumstances is any one process allowed to have more than 20 files
open simultaneously. Thus, the practical limit to nesting of include
files is 12 deep (as the compiler may have as many as eight noninclude files open at once).
46 Class ‘register’ was ignored [NCC#46]
This keyword has no effect in Neuron C.
47 Type qualifier ‘volatile’ was ignored [NCC#47]
This keyword has no effect in Neuron C.
48 Floating point is not supported [NCC#48]
Neuron C does not support floating point built-in data types and
operators. Use the floating point library functions instead. See the
Functions chapter in the Neuron C Reference Guide for more
information on using the floating point library, and the standard
include file <float.h>.
49 Invalid array bounds [NCC#49]
In Neuron C, an array bound constant-expression must resolve to a
positive integer no larger than 32767.
50 Bitfield size must be from 0 to 8 bits [NCC#50]
A bitfield must fit inside an int type. Since in Neuron C an int is 8
bits, the bitfield is also limited to 8 bits. Note that in ANSI C a
bitfield size of 0 bits is legal for an unnamed bitfield. Such a bitfield
forces alignment to the next storage unit boundary (which is a byte
in Neuron C, since the Neuron Chip architecture does not force any
multi-byte data alignment.).
51 Bitfield type is incorrect [NCC#51]
A bitfield may only be declared using only a combination of the type
keywords int, signed, unsigned, long, short, and char. Bitfields
may not be arrays, pointers, structures, unions, or any other Neuron
C type.
NodeBuilder Errors Guide 5-9
NCC# Description
52 Bitfield size cannot be 0 unless unnamed [NCC#52]
In ANSI C a bitfield size of 0 bits is legal for an unnamed
bitfield.
Such a bitfield forces alignment to the next storage unit boundary
(which is a byte in Neuron C, since the Neuron Chip architecture
does not force any multi-byte data alignment.).
53
Keyword ‘polled’ is ignored for input network variable
[NCC#53]
The polled keyword only applies to output network variables. This
restriction does not apply to the case of compilation within a
ShortStack development environment.
54 Repeated bind_info option [NCC#54]
The bind_info keyword is followed by a parenthesized list of one or
more options, some with associated values. Each keyword may
appear at most once.
55 Storage class on struct/union field not permitted [NCC#55]
A field in a struct or union may not have a storage class, and may
not contain the word typedef. Nor can it be a message tag, a timer
object, nor a network variable, nor can it have bind_info. Note also
that a union may not contain bitfields.
56 Enum constant out of range [NCC#56]
In Neuron C as in ANSI C, an enumerated type, declared using the
enum keyword, is equivalent to an int type. The int type is signed.
In Neuron C, an int is implemented using 8-bit signed two’s
complement representation. Thus, the valid range of enumerated
type values is –128 to +127.
57 Enum value wrapped around to negative [NCC#57]
The enumerated type automatically assigns consecutive integers as
the values of the named constants unless specifically given a value
for a constant. When literal-constant-n has the value 127, and
literal-constant-n+1 appears, the compiler automatically assigns it
the “next” value. In Neuron C, this value is -128 (since the enum
type is signed in ANSI C). The compiler issues a warning diagnostic
for this condition, and proceeds.
58 Nothing was declared [NCC#58]
Similar to Declaration defaults to ‘int’, No declaration for formal
parameter - int assumed, in a situation like the following:
long; int j;
This is legal C, but may not be what the programmer intended.
Thus, for the “first” declaration (the statement long;) this diagnostic
is produced. Many C compilers do not issue a warning in these
circumstances. Note that Neuron C will not issue a warning in the
following cases, since something is being declared (namely the
enum's or the struct field names, respectively):
enum { FALSE, TRUE } ;
struct { int a; int b; };
5-10 Neuron C Compiler Errors (NCC)
NCC# Description
59 Expression type mismatch [NCC#59]
These error diagnostics result from combining expressions of
conflicting types, such as assigning an int to a pointer, or a pointer of
one type to a pointer to another type, or in using objects that have no
value (such as message tags or I/O object names) in expressions.
In many cases in ANSI C, you must use an explicit type cast.
However, note that casting should be avoided if possible, as it is often
masking poor programming practice.
60 Invalid subscript operation [NCC#60]
The compiler outputs this diagnostic when an array-index operator
[expr] is applied to a variable that is not a pointer or an array.
61 Object is not a struct/union pointer [NCC#61]
The compiler outputs this message when the left-hand side of the ->
operator is not a pointer to a struct or union type.
62 Object is not a structure or union [NCC#62]
The compiler outputs this message when the left-hand side of the dot
(.) operator is not a struct or union type.
63 Invalid cast operation [NCC#63]
Some conversions between data types are not permitted, even via an
explicit cast. For example, an object cannot be cast if its base type is
not known. Nor can an object be cast to void and then used in an
expression.
64 Cannot remove ‘const’ attribute via cast operation [NCC#64]
To prevent data that is declared constant from being modified,
Neuron C will not permit pointers including the const attribute from
being cast such that the const attribute is removed. Neither does
the compiler permit an implicit conversion of pointer (via function
call, etc.) such that the const attribute would be removed. However,
use of the #pragma relaxed_casting_on changes this error into a
warning. See the Compiler Directives chapter in the Neuron C Reference Guide for more information on this pragma.
65 Cannot compute ‘sizeof’ for object [NCC#65]
The compiler attempted to calculate the size of a type, but did not
have enough information. This could result from a sizeof expression
for an object like a timer object, or a message tag, or a typedef name
which is a bind_info, or some similar circumstance.
66 Message object reference cannot be assigned to [NCC#66]
The message objects msg_in and resp_in are read-only. Attempts
to use these objects on the left side of an assignment statement result
in the diagnostic message above.
67 Pulsecount I/O object cannot use clock 0 [NCC#67]
The pulsecount I/O object does not support use of clock 0. Its use
will produce an indeterminate number of output pulses.
NodeBuilder Errors Guide 5-11
NCC# Description
68 Message event code must be in range 0..127 [NCC#68]
The event msg_arrives accepts one optional parameter, which is a
message event code. This code must be a compile-time constant
integer expression with a value from 0 to 127, inclusive.
69 Parameter must be a msg_tag [NCC#69]
The events msg_completes, msg_succeeds, and msg_fails all
accept one optional parameter, which must have previously been
declared as a message tag.
70
71
72
73
74
75
Parameter must be an I/O object name [NCC#70]
I/O events only apply to input objects [NCC#71]
Incorrect I/O object type for changes-by event [NCC#72]
Incorrect I/O object type for changes-to event [NCC#73]
Incorrect I/O object type for I/O update-occurs event [NCC#74]
Too many I/O object change events used [NCC#75]
The Neuron C event expressions for io_update_occurs and
io_changes (with its various options) only apply to I/O objects that
are inputs. Furthermore, some events are not applicable to some
input object types. Only one form of event expression can be used
per I/O object. A maximum of 15 I/O objects can have
io_update_occurs and io_changes events. The syntax of the event
expressions requires the event type to be followed by the object
name, in parentheses. For more information, see the I/O Objects
chapter of the Neuron C Reference Guide.
76
Event ‘nv_update_occurs’ only applies to input variables
[NCC#76]
The nv_update_occurs event accepts one optional parameter,
which must be the name of a previously declared input network
variable.
77 Parameter must be a network variable [NCC#77]
The nv_update_completes, nv_update_fails, and
nv_update_succeeds events all accept one optional parameter,
which must be the name of a previously declared network variable.
78 Parameter must be a timer name [NCC#78]
The event timer_expires accepts one optional parameter, which, if
supplied, must be the name of a previously declared timer object.
79 Invalid use of VOID type [NCC#79]
The void type has no size. It cannot be used as an argument of the
sizeof operator, nor can it be used to declare a variable. Its only
legal uses are in declaring function return types, declaring that a
function has no parameters, and in combination with * to define a
type void * (a wildcard pointer type).
80 Use only 4800, 2400, 1200, or 600 for I/O object’s baud [NCC#80]
The serial I/O object type can only have a bit rate value of 600, 1200,
2400, or 4800. The bit rate value defaults to 2400 if not specified.
5-12 Neuron C Compiler Errors (NCC)
NCC# Description
81 Use only 20000, 10000, or 1000 for I/O object's baud [NCC#81]
The neurowire I/O object types can have their bit rates specified
with either the baud or kbaud I/O declaration modifier. If kbaud is
used, the only legal values are 20, 10 and 1. If baud is used, the only
legal values are 20000, 10000, and 1000. The default bit rate for
these I/O object types is 20 kbps, and need not be specified.
82 Use only 20, 10, or 1 for kbaud rate value [NCC#82]
The neurowire I/O object types can have their bit rates specified
with either the baud or kbaud I/O declaration modifier. If kbaud is
used, the only legal values are 20, 10 and 1. If baud is used, the only
legal values are 20000, 10000, and 1000. The default bit rate for
these I/O object types is 20 kbps, and need not be specified.
83 Invalid use of type [NCC#83]
The compiler attempted to calculate the size of a type, but did not
have enough information. This could result from a sizeof expression
for an object like a timer object, or a message tag, or a typedef name
which is a bind_info, or some similar circumstance.
84 Offline does not apply to a msg_tag [NCC#84]
Some of the options in the bind_info declaration modifier only apply
to network variables, some only apply to output network variables,
and some only apply to message tags. The offline keyword only
applies to a network input config variable.
85 Service types may not be specified for a msg_tag [NCC#85]
Some of the options in the bind_info declaration modifier only apply
to any network variable, some only apply to an output network
variable, and some only apply to a message tag. Service types only
apply to output network variables.
86 Network variable array bound is incorrect [NCC#86]
This error message can arise from a few different situations. First,
the declaration of a network variable array may be a singledimensioned array only (no larger-dimensioned arrays are
supported). The other sources of this message are from attempting
to use an index expression with a network variable that is not an
array. This message can also indicate that the array bound portion
of a network variable declaration, or a network variable event
expression, is not in the valid range, or not of the proper format (for
example, zero or a negative number is used).
87 Too many msg-tags declared [NCC#87]
A maximum of 15 message tags can be declared per node. These can
be any combination of bindable and nonbindable message tags.
88
Network variables cannot be declared as non-bindable
[NCC#88]
Some of the options in the bind_info declaration modifier only apply
to any network variable, some only apply to an output network
variable, and some only apply to a message tag. The nonbind
modifier can only be used with a message tag declaration.
NodeBuilder Errors Guide 5-13
NCC# Description
89 Input network variables cannot have service-type [NCC#89]
Some of the options in the bind_info declaration modifier only apply
to any network variable, some only apply to an output network
variable, and some only apply to a message tag. Service types only
apply to output network variables.
90 Base type of network variable is too large [NCC#90]
A network variable array element, structure, or union is limited to 31
bytes.
91 Too many initializers [NCC#91]
A set of initializers (in braces { and } ) has too many members for the
aggregate (array, structure, or union) being initialized.
92 Too many network variables declared [NCC#92]
A maximum of 62 network variables can be declared per device.
These can be any combination of input and output variables. Each
element of an array network variable counts separately.
93
Network variable declaration not permitted if micro_interface
[NCC#93]
Once the #pragma micro_interface directive appears, the program
cannot declare any network variables or message tags. See the
Compiler Directives chapter in the Neuron C Reference Guide.
94
Network variable base type cannot contain unbounded array
[NCC#94]
Network variable arrays must be declared with a fixed bound that is
a compile-time constant.
95
96
Network variable base type cannot contain function [NCC#95]
Network variable base type cannot contain pointer [NCC#96]
A network variable type cannot contain pointer types, addresses or
function address types.
97 Too many timers declared [NCC#97]
Neuron C supports a maximum of 15 application timer objects of all
types together.
98 I/O objects can only be declared at file scope [NCC#98]
Some Neuron C objects may only be declared at file scope. Thus,
they are restricted to being globals, not automatics. These objects
are timer objects, message tags, I/O objects, and network variables.
99
100
101
This I/O object type can only be ‘output’ [NCC#99]
This I/O object type can only be ‘input’ [NCC#100]
Must specify ‘input’ or ‘output’ for this I/O object type
[NCC#101]
Some Neuron C I/O object types can only be input, some can only be
output, and some can be either. For the case where the direction is
known from the I/O object type, the programmer need not specify the
direction, but if specified, it must be the correct direction. For the
case where the direction is not known from the I/O object type, the
programmer must specify it.
5-14 Neuron C Compiler Errors (NCC)
NCC# Description
102
103
104
105
106
107
108
109
110
111
I/O object type restricted to pins IO_0 through IO_4 [NCC#102]
I/O object type restricted to pin IO_0 [NCC#103]
I/O object type restricted to pins IO_0 through IO_7 [NCC#104]
I/O object type restricted to pins IO_0 or IO_1 [NCC#105]
I/O object type restricted to pins IO_4 through IO_7 [NCC#106]
I/O object type restricted to pins IO_4 or IO_6 [NCC#107]
I/O object type restricted to pin IO_10 [NCC#108]
I/O object type not allowed on pin IO_7 or IO_10 [NCC#109]
I/O object type restricted to pin IO_8 [NCC#110]
I/O object type restricted to pin IO_4 [NCC#111]
Different I/O object types are permitted on different subsets of the
Neuron Chip’s
I/O pins. For more information, see the I/O Objects
chapter of the Neuron C Reference Guide.
112
All names beginning with the characters 'SNVT_' are reserved
[NCC#112]
The program should not declare any identifiers, types, etc. beginning
with the characters SNVT_, to avoid any future compatibility
problems with Standard Network Variable Types.
113
Two-way I/O device should not be declared 'input' or 'output'
[NCC#113]
The declaration syntax of I/O objects permits the specification of
input or output. However, some devices are actually bi-directional,
for example the parallel I/O object. Neither the input nor the output
keyword should be specified in the declaration of a bi-directional I/O
object.
114 Pin IO_4 needs ‘mux’ or ‘ded’ specification [NCC#114]
For I/O object types that use a timer/counter, the timer/counter used
is dependent on the pin assigned to the I/O object. There are two
timer/counters, the dedicated (abbreviated ded) and the multiplexed
(abbreviated mux). The dedicated circuit uses pin IO_1 for output
and pin IO_4 for input. The multiplexed circuit uses pin IO_0 for
output and multiplexes among pins IO_4, IO_5, IO_6, and IO_7 for
input.
For input objects using a timer/counter, the programmer need not
specify which timer/counter circuit is being used except when the
input I/O object is assigned to pin IO_4. Then, either the mux or
ded keyword must be included in the declaration of the I/O object.
NodeBuilder Errors Guide 5-15
NCC# Description
115 Pins IO_5...IO_7 must use ‘mux’ timer [NCC#115]
For I/O object types that use a timer/counter, the timer/counter used
is dependent on the pin assigned to the I/O object. There are two
timer/counters, the dedicated (abbreviated ded) and the multiplexed
(abbreviated mux). The dedicated circuit uses pin IO_1 for output
and pin IO_4 for input. The multiplexed circuit uses pin IO_0 for
output and multiplexes among pins IO_4, IO_5, IO_6, and IO_7 for
input.
For input objects using a timer/counter, the programmer need not
specify which timer/counter circuit is being used except when the
input I/O object is assigned to pin IO_4. Then, either the mux or
ded keyword must be included in the declaration of the I/O object.
The triac I/O object type declaration must include an assignment for
a sync pin. Since the triac type uses a timer/counter output, the
sync pin must use a corresponding input on the same timer/counter.
If the dedicated timer/counter is used, only IO_4 can be used for the
sync pin. If the multiplexed timer/counter is used, any of IO_4,
IO_5, IO_6, or IO_7 can be used.
117 I/O object requires ‘sync’ pin on one of IO_4...IO_7 [NCC#117]
The neurowire I/O object type declaration must also include
specification of a pin to be used for an I/O object select. Only a pin
from IO_0 through IO_7 may be used for a select pin.
118 I/O object requires ‘sync’ pin on IO_4 [NCC#118]
The neurowire I/O object type declaration must also include
specification of a pin to be used for an I/O object select. Only a pin
from IO_0 through IO_7 may be used for a select pin.
The neurowire I/O object type declaration must also include
specification of a pin to be used for an I/O object select. Only a pin
from IO_0 through IO_7 may be used for a select pin.
120 The ‘select’ pin must be one of IO_0...IO_7 [NCC#120]
The neurowire I/O object type declaration must also include
specification of a pin to be used for an I/O object select. Only a pin
from IO_0 through IO_7 may be used for a select pin.
121 I/O object requires ‘master’, ‘slave’, or ‘slave_b’ [NCC#121]
The parallel I/O object type declaration must be qualified with one
of the keywords master, slave, or slave_b to specify which parallel
I/O protocol is to be used.
122
123
I/O object type not available on requested pin [NCC#122]
Pin/resource conflict with a previous I/O object [NCC#123]
In several cases, more than one Neuron Chip I/O object type can be
assigned to a single pin within a single application. The rules for
overlaying I/O object declarations are discussed in Chapter 2 of the
Neuron C Programmer's Guide.
5-16 Neuron C Compiler Errors (NCC)
NCC# Description
124 Incorrect ‘clock’ select value [NCC#124]
For I/O objects that accept a clock modifier in their declaration, the
legal values are from 0 to 7, inclusive, except for the pulsecount
output object, which uses only 1 to 7. The clock value must be a
constant expression.
125 Incorrect ‘numbits’ value or type [NCC#125]
The bitshift I/O object type declaration can optionally specify the
number of bits to be specified. This numbits modifier has as an
argument that must be a compile-time integer constant expression
with a value from 1 to 128.
126
Bad I/O modifier for this I/O object type [NCC#126]
Several of the I/O object declarations permit or require modifiers,
like mux, ded, sync, and so on. These are permitted or required on
a per I/O object-type basis. At most one of each type of modifier is
permitted in a single declaration.
127 Duplicate I/O object modifier not allowed [NCC#127]
Several of the I/O object declarations permit or require modifiers,
like mux, ded, sync, and so on. These are permitted or required on
a per I/O object-type basis. At most one of each type of modifier is
permitted in a single declaration.
128 I/O object type cannot have an initial-pin-level [NCC#128]
Most output object types permit specification of an initial pin-level
value to be assumed by the pin on power up or chip reset, until the
application program takes over. However, the I/O object for which
this message is being output does not permit an initial pin level.
129
130
131
Initial-pin level must be in range 0...255 [NCC#129]
Initial-pin level must be in range 0...15 [NCC#130]
Initial-pin level must be 0 or 1 [NCC#131]
Most output object types permit specification of an initial pin-level
value to be assumed by the pin on power up or chip reset, until the
application program takes over. All single-pin initial levels must be
either 0 or 1. The nibble I/O object type, which uses four
consecutive pins, can have initial values from 0 to 15, with the values
being mapped as a binary number onto the four pins. Likewise, the
byte I/O object type can have initial values from 0 to 255.
132 Unacceptable function return type [NCC#132]
A function in Neuron C cannot return an object that is a struct or
union type, nor can it return an array type. However, a function can
return pointers to such objects.
NodeBuilder Errors Guide 5-17
NCC# Description
133
Explicit addressing requires inclusion of <msg_addr.h>
[NCC#133]
An attempt to use the msg_out.dest_addr field or the msg_in.addr
field has been detected, but cannot be compiled because the include
file <msg_addr.h> was not included by the programmer. Note that
the include directive must appear prior to the first such field
reference. The include file is not needed for references to other fields
of the msg_out or msg_in objects.
134 Call only applies to bindable msg_tag [NCC#134]
The is_bound( ) built-in function returns TRUE (nonzero) if the
requested object has been bound. Otherwise, it returns FALSE. The
function applies only to network variables and to bindable message
tags. A bindable message tag is a message tag declared without the
bind_info (nonbind) option.
135
Parameter must be either a msg_tag name or an NV name
[NCC#135]
The is_bound( ), addr_table_index( ), and nv_table_index( )
built-in functions return TRUE (nonzero) if the requested object is
bound (connected). Otherwise, they return FALSE. The functions
apply only to network variables and to bindable message tags. A
bindable message tag is a message tag declared without the
bind_info (nonbind) option.
136 Incorrect number of parameters [NCC#136]
The compiler outputs these diagnostics when the number of actual
parameters, or the actual parameter types, do not match those in the
function prototype and they cannot be automatically converted.
137 Parameter to ‘poll’ must be input network variable [NCC#137]
The built-in function poll( ) takes as its only argument the name of
an input network variable. See the Functions chapter of the Neuron C Reference Guide for a definition of this function.
138 Invalid 2nd argument to ‘sleep’ [NCC#138]
The built-in function sleep( ) has an optional second parameter
which may be a previously declared Neuron C I/O object name or an
I/O pin name. If an I/O object name is specified, the object's primary
pin will be monitored for a wakeup condition. Alternately, a pin
name may be explicitly specified. In both cases, this pin must be one
of IO_4, IO_5, IO_6, or IO_7.
139
Sleep wakeup I/O object must be an input pin on one of
IO_4..IO_7 [NCC#139]
The built-in function sleep( ) has an optional second parameter
which may be a previously declared Neuron C I/O object name or an
I/O pin name. If an object name is specified, the object’s primary pin
will be monitored for a wakeup condition. The primary pin must be
one of IO_4, IO_5, IO_6, or IO_7.
5-18 Neuron C Compiler Errors (NCC)
NCC# Description
140 Incorrect message object field reference [NCC#140]
The message objects, msg_out, msg_in, resp_out, and resp_in
have no value in themselves. They only have meaning when they are
accessed using the dot operator (.) and a field name. Only certain
predefined field names apply. The data field is an array, and access
to it must be via index, except when used with the memcpy( )
function.
141 Not a field in specified struct/union [NCC#141]
The compiler outputs this message when the right-hand side of the
-> or . operator is not a field in the struct or union type that
corresponds to the left-hand-side expression.
142 Invalid storage class combination [NCC#142]
This diagnostic results from incorrect or conflicting combinations of
storage class keywords, such as eeprom and ram. The error is used
for more than just conflicting memory types. For example, an
attempt to use the cp or cp_family keyword with a timer or a
msg_tag, or any invalid combination of declaration class keywords
could cause this error message.
143 Repeated storage class keyword was ignored [NCC#143]
Repeated keywords are ignored (for example, const const is the
same as const), but a diagnostic message is printed.
144 The 'quad' type is not supported. [NCC#144]
Neuron C does not support the quad type, but quad is a reserved
word for future support of a 32-bit signed int type. The keyword quad refers to the four bytes of data for the 32-bit signed integer.
This type could also be called a double long int.
145 Invalid data type combination [NCC#145]
This diagnostic message results from incorrect or conflicting type
combinations. For example, short and long is a conflicting type
combination. Combining timer object declarations with the keyword
msg_tag, for example, is an incorrect result type.
146 Repeated data type keyword was ignored [NCC#146]
Repeated keywords are ignored (for example, int int is the same as
int), but a diagnostic message is printed.
NodeBuilder Errors Guide 5-19
NCC# Description
147 Type defaults to ‘int’ [NCC#147]
The definition of ANSI C permits a declaration at file scope without a
type. Likewise, functions may be declared without a return type.
Such declarations must default to int, by the ANSI definition.
However, such declarations are poor programming practice, and may
even indicate an error, thus the compiler issues a warning
diagnostic.
Consider the following example:
unsigned long x1, x2; x3;
Note the semicolon following x2. This is most likely a typographical
error, however, ANSI C permits this and results in x3 being declared
by default as an int. Due to white space rules, this appears the same
to the compiler as the following declaration:
unsigned long x1, x2;
x3;
This is almost certainly not what the programmer intended, yet most
C compilers do not issue a warning in these circumstances.
148
149
Class ‘config’ can only be used with network variables
[NCC#148]
Class ‘config’ applies only to ‘input’ variables [NCC#149]
The config keyword only applies to input network variables.
However, in Neuron C Version 2, use of the config_prop (or cp)
keyword declares a fully managed configuration property, whereas
the config keyword declares a legacy configuration network
variable. The legacy variable requires that the programmer must
manually code the SD information necessary to make the config
network variable known to a network management tool. More
information on configuration properties can be found in the Neuron C Programmer’s Guide and the Neuron C Reference Guide.
150 Cannot re-declare ‘bind_info’ [NCC#150]
The bind_info modifier can appear at most once in the declaration of
a network variable or a message tag. The bind_info cannot be
combined with other bind_info by concatenation.
151 I/O function call requires arguments [NCC#151]
Insufficient arguments (or no arguments) were passed to the I/O
built-in call flagged by the compiler diagnostic. All I/O functions
require at least one argument, namely the I/O object name.
152 Name is not an I/O object name [NCC#152]
The first argument passed to the flagged I/O built-in call is not a
properly declared I/O object name. Note that in ANSI C, a general
rule is that an object must be declared before its first use.
153 I/O function not valid for this I/O object [NCC#153]
Some built-in functions, such as io_set_clock( ) and io_select( ),
cannot be used on all I/O object types.
5-20 Neuron C Compiler Errors (NCC)
NCC# Description
154 This event cannot be duplicated [NCC#154]
There are three special events in Neuron C which can only appear in
at most one when clause. These events are reset, offline, and online.
155 The ‘priority’ is ignored for this ‘when’ clause [NCC#155]
There are three special events in Neuron C, namely reset, offline,
and online, for which the declaration of priority has no effect. This
is because, due to the special times at which these clauses are
executed, they always have priority.
156 Function must return a value [NCC#156]
The function, whose declared return data type is not void, does not
have a return statement (in every possible path to the end of the
function) that returns a value of the appropriate type.
157 Expression for switch must be a ‘short’ [NCC#157]
The switch statement can handle values only in the range of the int
data type, which is from -128 to 127 inclusive in Neuron C.
158 Improper context for ‘break’ statement [NCC#158]
A break statement can only occur inside a do, for, or while loop, or
inside a switch statement.
159 Object being declared cannot be initialized [NCC#159]
Declaration-time initialization cannot be used for typedefs, timer
objects, message tags, function parameters, structure tags, union
tags, and enum tags.
160 This declaration may only be at file scope [NCC#160]
Some Neuron C objects may only be declared at file scope. Thus,
they are restricted to being globals, not automatics. These objects
are timer objects, message tags, I/O objects, and network variables.
161 Type mismatch in function redeclaration [NCC#161]
This diagnostic indicates that a function prototype does not match a
subsequent prototype, or the definition of the function. The
prototypes and definition must match in terms of their storage class
(for example, static, eeprom, ram) as well as their return types and
their number and types of parameters.
162
Array must have bound [NCC#162]
Use of the array type in a declaration must include a constant
expression which is the array bound. The only time this bound may
be omitted is in the declaration of a function parameter. In this case,
use of the bound is ignored, and the parameter is actually treated as
a pointer.
163
164
Invalid struct/union field declaration [NCC#163]
Invalid struct/union field type [NCC#164]
A field in a struct or union may not have a storage class, and may
not contain the word typedef. Nor can it be a message tag, a timer
object, nor a network variable, nor can it have bind_info. Note also
that a union may not contain bitfields.
NodeBuilder Errors Guide 5-21
NCC# Description
165 Invalid type for bitfield [NCC#165]
A bitfield may only be declared using only a combination of the type
keywords int, signed, unsigned, long, short, and char. Bitfields
may not be arrays, pointers, structures, or any other Neuron C type.
166 Field name in struct/union cannot be repeated [NCC#166]
Each field name at a given level of a struct or union declaration
must be unique. Names are case sensitive.
167 Extern declarations cannot have initializers [NCC#167]
The semantics of an extern declaration and an initialized
declaration are incompatible. An extern declaration is intended to
reference an object defined elsewhere (usually in another module,
although it may be a forward reference). An initialized declaration is
intended to be the defining declaration of the object. Only one such
initialized declaration should appear for each object.
A variable declared with the const attribute must have an
initializer. Note that this does not apply to a typedef that includes
the const attribute.
169 Call to ‘io_out’ requires output value parameter [NCC#169]
The built-in function call io_out( ), which is used to initiate an
output to a Neuron I/O object, must be given at least two parameters,
the first being the I/O object name, and the second being the value to
be output.
170
Cannot have ‘io_changes’ & ‘io_update_occurs’ on same I/O
object [NCC#170]
The Neuron C event expressions for io_update_occurs and
io_changes (with its various options) only apply to I/O objects that
are inputs. Furthermore, some events are not applicable to some
input object types. Only one form of event expression can be used
per I/O object. A maximum of 15 I/O objects can have
io_update_occurs and io_changes events. The syntax of all the
event expressions requires the event type to be followed by the object
name, in parentheses.
171 Improper context for ‘continue’ statement [NCC#171]
A continue statement can only occur inside a do, for, or while
statement. It causes execution to immediately branch back to the
first statement of the loop statement that contains the continue
statement.
172 Function definition does not allow return value [NCC#172]
The function, whose declared return data type is void, has a
statement of the form return expression.
5-22 Neuron C Compiler Errors (NCC)
NCC# Description
173 Expression has no effect - discarded [NCC#173]
The compiler outputs this warning diagnostic when the optimizer
discards an expression. Examples of such expressions are:
x = y-1, z; /* y-1 is discarded */
a+3; /* a+3 is discarded */
x == 1? y: z; /* z is discarded */
174 Return value of function was ignored [NCC#174]
A function that has a return type (other than void) is used in an
expression, but the caller discards the return value without it being
used or stored. The warning can be removed by casting the return of
the function to void.
XAMPLE:
E
int f(void) {return 0;}
when (reset) {
(void)f();
}
175 This event will never be reached [NCC#175]
This message warns of the use of a specific, qualified event following
a generic, unqualified event in the same class. As the generic one
will catch the event first, the specific one will never evaluate to
TRUE. This condition can only occur when using the
scheduler_reset feature. (Failure to use the scheduler_reset
feature with multiple event expressions that are not exclusive can
result in unstable behavior.)
176 This event duplicates or overlaps a previous one [NCC#176]
In many cases, use of a when clause containing an event that is a
duplicate or an overlap of a previous event expression would prevent
the associated task from being executed, or may cause anomalous
behavior, with one task being executed sometimes, and the other
being executed the rest of the time.
(This latter behavior would occur as the result of round-robin
execution by the Neuron Chip firmware scheduler, if the
scheduler_reset feature were not used.)
177 Recommend use of ‘scheduler_reset’ feature [NCC#177]
The compiler makes this recommendation when there is a possibility
of anomalous execution of different tasks because the tasks'
respective when clauses are not mutually exclusive.
178
Cannot have any non-polled output network variables when
more than 14 bindable message tags are defined [NCC#178]
A Neuron Chip has up to 15 outgoing message ports. (Ports are also
known as “address table entries.”) Each bindable message tag
consumes one port, whether bound or not. Network variables can
share ports, but there must be at least one port available. This
message indicates that message tags are consuming all of the
address table entries, so no entries remain for network variables.
NodeBuilder Errors Guide 5-23
NCC# Description
179 Incorrect use of ‘void’ in function prototype [NCC#179]
The void type has no size. It cannot be used as an argument of the
sizeof operator, nor can it be used to declare a variable. Its only
legal uses are in declaring function return types, declaring that a
function has no parameters, and in combination with * to define a
type void * (a wildcard pointer type).
180
Function parameter may not be ‘struct’ or ‘union’ type
[NCC#180]
Neuron C does not support passing struct or union types by value
as function parameters. You may use a pointer to the structure or
union as a function parameter.
181 Function declarations must use prototypes [NCC#181]
Neuron C is more restrictive than ANSI C in this area. The Neuron
stack machine architecture does not permit calling undeclared
Chip's
functions with unknown numbers of parameters.
182 No declaration for formal parameter - int assumed [NCC#182]
The definition of ANSI C permits a declaration at file scope without a
type. Likewise, functions may be declared without a return type.
Also, it is possible to construct a typecast that does not actually
contain a type. Such declarations must default to int, by the ANSI C
definition. However, such declarations are poor programming
practice, and may even indicate an error, thus the compiler issues a
warning diagnostic.
Consider the following example:
unsigned long x1, x2; x3;
183
Note the semicolon following x2. This is most likely a typo, however,
ANSI C permits this and results in x3 being declared by default as
an int. Due to white space rules, this appears the same to the
compiler as the following declaration:
unsigned long x1, x2;
x3;
This is almost certainly not what the programmer intended, yet most
C compilers do not issue a warning in these circumstances.
Mixing function prototypes and old-style parameter list not
allowed [NCC#183]
This diagnostic results from a declaration of the form:
void f(int a, b) int b; { <fn body> }
Use only new-style ANSI C function declaration syntax:
void f(int a, int b) { <fn body> }
or old-style (traditional) C function declaration syntax:
void f(a,b) int a; int b; { <fn body> }
Do not intermix these two styles within a single function definition.
5-24 Neuron C Compiler Errors (NCC)
NCC# Description
184
No formal parameter matches the parameter declaration
[NCC#184]
This diagnostic results from an error of the form shown below, where
there is no declaration for the parameter named b.
void f(a,b) int a; { <fn body> }
185 Invalid parameter declaration in function [NCC#185]
This diagnostic results from certain errors in function definition
syntax such as in the example below:
void f(int, long) { <fn body> }
186
Cannot have a 'timeout' pin on 'neurowire master' object
[NCC#186]
The neurowire slave I/O object declaration permits a timeout
value. The neurowire master I/O object declaration does not.
187 Expression must evaluate to a constant [NCC#187]
Expressions in certain Neuron C declarations and initialization
statements must evaluate to compile-time integer constants.
188 Cannot modify a constant object [NCC#188]
The Neuron C compiler enforces the const keyword strictly. In
addition, data or objects declared using const might be placed in
read-only memory areas by the compiler. However, const network input variables are not placed in read-only memory, because their
values are updated by network variable messages from other devices.
Furthermore, note that constant configuration parameters are placed
in read-only memory unless the directive #pragma codegen put_read_only_cps_in_data_memory is used.
189 Cannot modify via pointer-to-constant-object [NCC#189]
To prevent data that is declared const from being modified, Neuron
C will not permit constant objects to appear on the left-hand side of
an assignment statement, nor will it permit modification of the
constant object via a pointer with the const attribute, or via the ++
or - - operators.
Note that, in the case of network variables, a network variable
declared as const (or config, which implies const) cannot be
modified in the node where it is so declared, but it can be modified by
other nodes in the network.
190 Object is not a suitable assignment target [NCC#190]
The left-hand side of assignment operators, and the target of
increment or decrement operators must be nonconstant variables, or
fields of nonconstant structures or unions, or elements of arrays.
NodeBuilder Errors Guide 5-25
NCC# Description
191 Object of call is not a function [NCC#191]
The syntax encountered is function call syntax, i.e.:
expression ( [ expression-list ] )
however, the expression being called is not a function (or a pointer to
a function). Note that this error could occur by omitting an operator.
If the following were intended:
int a, b, c, d;
a = b * (c + d);
but the following were actually written (omitting the multiplication
operator):
int a, b, c, d;
a = b (c + d);
This would appear to be a function call, but b is not a function.
192 Call to function without prototype [NCC#192]
Neuron C is more restrictive than ANSI C in this area. The Neuron
stack machine architecture does not permit calling undeclared
Chip's
functions with unknown numbers of parameters.
193 Function does not allow parameters [NCC#193]
The compiler outputs these diagnostics when the number of actual
parameters or the actual parameter types, do not match those in the
prototype, and they cannot be automatically converted.
194 Not enough parameters passed to function [NCC#194]
The compiler outputs these diagnostics when the number of actual
parameters or the actual parameter types, do not match those in the
prototype, and they cannot be automatically converted.
195 Object cannot be a function parameter [NCC#195]
Objects that have no type (such as message tags or I/O objects)
cannot be function parameters. Likewise, if p were declared void *,
*p would not be a valid function parameter (nor would it be any
other valid expression, for that matter).
196
Cannot convert address of const into non-const pointer
[NCC#196]
To prevent data that is declared const from being modified, Neuron
C will not permit pointers including the const attribute from being
cast such that the const attribute is removed. Neither does the
compiler permit an implicit conversion of pointer (via function call,
etc.) such that the const attribute would be removed. However, these
changes are permitted (and this message will appear as a warning
rather than an error) if the compiler directive #pragma
relaxed_casting_on is specified in the program. See the Compiler
Directives chapter of the Neuron C Reference Guide for more details.
197 Implicit pointer conversion is not permitted [NCC#197]
ANSI C does not permit a pointer of one type to be implicitly
converted to a pointer of another type by assignment or by passing as
a function parameter. Use explicit casting.
5-26 Neuron C Compiler Errors (NCC)
NCC# Description
198 Type mismatch in function parameter [NCC#198]
The compiler outputs these diagnostics when the number of actual
parameters or the actual parameter types, do not match those in the
prototype, and they cannot be automatically converted.
199 Too many parameters passed to function [NCC#199]
The compiler outputs these diagnostics when the number of actual
parameters or the actual parameter types, do not match those in the
prototype, and they cannot be automatically converted.
200 Type mismatch in assignment expression [NCC#200]
These error diagnostics result from combining expressions of
conflicting types, such as assigning an int to a pointer, or a pointer of
one type to a pointer to another type, or in using objects that have no
value (such as message tags or I/O object names) in expressions.
In many cases in ANSI C, you must use an explicit type cast.
However, note that casting should be avoided if possible, as it is often
poor programming practice.
201 Invalid use of pointer in binary operation [NCC#201]
The only binary operations permitted on pointers are +, -, and
comparisons. A pointer can be added to a constant (or vice versa),
and ANSI C scaling rules apply to the constant. Likewise, a constant
can be subtracted from a pointer (but not vice versa). Finally, two
pointers of the same type can be subtracted, one from the other. The
result is a difference scaled by the size of the object type pointed to.
Pointers cannot be used in unary expressions other than with
increment and decrement operators.
202 Type mismatch for binary operation [NCC#202]
This error can occur when the types of the operands being combined
in the binary operation are not compatible. For example, adding an
int to a structure, or comparing a pointer to a char, etc.
203 Invalid type for subscript operation [NCC#203]
The object being subscripted (the “array”) must be either an array or
a pointer. The type of the subscript must be an integer type.
204 Invalid type for array index [NCC#204]
The array index of the subscript operator must be an int or char
type. It may be short or long, signed or unsigned.
205 Invalid operation on pointer [NCC#205]
The only binary operations permitted on pointers are +, -, and
comparisons. A pointer can be added to a constant (or vice versa),
and ANSI C scaling rules apply to the constant. Likewise, a constant
can be subtracted from a pointer (but not vice versa). Finally, two
pointers of the same type can be subtracted, one from the other. The
result is a difference scaled by the size of the object type pointed to.
Pointers cannot be used in unary expressions other than with
increment and decrement operators.
NodeBuilder Errors Guide 5-27
NCC# Description
206 Invalid indirection expression - not a pointer [NCC#206]
This error occurs when the operand of the * indirection operator is
not a pointer. This operator can only be applied to a pointer variable
or a constant typed as a pointer.
207 Invalid operand for address operator [NCC#207]
The operand of the & address operator is not a variable, or is a
variable type for which addressing is not permitted. For example,
you cannot take the address of a numeric constant. In Neuron C, you
also cannot take the address of a timer object, a message tag, an I/O
object, or a functional block.
208
The 'io_select' call for this device cannot specify a clock value
[NCC#208]
The io_select( ) function permits an optional second parameter used
to change the timer/counter internal clock setting (in a range from 0-
7). However, this clock option can only be used when selecting an I/O
object that permits a clock setting in that object's declaration. See
the chapters describing I/O objects in the Neuron C Programmer's Guide and the Neuron C Reference Guide for more information.
209
210
Bad type for operator [NCC#209]
Bad type for conditional expression [NCC#210]
These error diagnostics result from combining expressions of
conflicting types, such as assigning an int to a pointer, or a pointer of
one type to a pointer of another type, or in using objects that have no
value (such as message tags or I/O object names) in expressions.
However, note that casting should be avoided if possible, as it is often
poor programming practice.
211
212
Long constant value being converted to short [NCC#211]
Possible data loss converting long to short [NCC#212
These diagnostics result from an automatic conversion of a long
variable to a short. To make these warnings go away, modify the
variable declarations or use an explicit cast operator.
213
Cannot use address or index operator with message object
[NCC#213]
The message objects, msg_out, msg_in, resp_out, and resp_in,
have no value in themselves. They only have meaning when they are
accessed using the dot operator (.) and a field name. Only certain
predefined field names apply. The data field is an array, and access
to it must be via index, except when used with memcpy( ).
214 If one priority count is zero, both must be zero [NCC#214]
The Neuron C application controls the counts and sizes of various
buffers used in sending and receiving messages and network variable
updates.
There are two priority buffer pools, one at the network level, and one
at the application level. Either or both pools must be empty, or both
pools must contain buffers. A zero count cannot be specified for one
priority pool and a nonzero count for the other.
5-28 Neuron C Compiler Errors (NCC)
NCC# Description
215 Array in struct or union must have bounds [NCC#215]
An array declared at file scope (outside any other declarations or
functions) may be declared without an explicit bound expression,
provided an initializer is present. In ANSI C and in Neuron C, the
compiler sets the array bounds implicitly by using the count of initial
value expressions in the initializer list. However, this feature cannot
be used with an array nested inside a structure or union declaration.
216
Authenticated network variables require ‘ackd’ service type
[NCC#216]
Some of the options in the bind_info declaration modifier only apply
to network variables, some only apply to output network variables,
and some only apply to message tags. The service type declaration is
required to be acknowledged when the authentication bind_info
feature is used in a network variable declaration.
217 Case value is out of range [NCC#217]
Valid range is -128 to +127. A switch statement expression and the
matching case label expressions are all of int type, which in
Neuron C has the range shown.
218 Use of Neuron C feature is not permitted [NCC#218]
This message occurs when compiling a file with a .C extension. The
Neuron C compiler will flag all uses of Neuron C features with this
error message. Normally, a Neuron C program has a .NC extension.
219
Pragmas ‘hidden’ and ‘no_hidden’ only allowed in ‘echelon.h’
[NCC#219]
The pragmas #pragma hidden and #pragma no_hidden are for
internal use from the standard include file <echelon.h> only. Do
not use them elsewhere.
220 Rate estimate value is out of valid range [NCC#220]
The bind_info permits specification of average and maximum
message rate estimates for each tag or network variable. The valid
range of rate estimate values is from 0 to 18780, in units of tenths of
a message per second. Thus, a specified value of 1043 indicates an
actual value of 104.3 messages per second.
221
222
Cannot have more than one default label per switch statement
[NCC#221]
Cannot have duplicate case labels with same value [NCC#222]
A switch statement cannot have ambiguous labels. It can have no
more than one default label, and no two case labels may have the
same value.
NodeBuilder Errors Guide 5-29
NCC# Description
223
Improper function definition - missing parameter list
[NCC#223]
This message generally results from a syntax error of a specific kind.
The compiler's syntax-directed parser is fooled by the error into
thinking there is a function definition in progress, but the expected
parameter list, in parentheses, which follows a function definition, is
not found. For example:
static stuff i; // 'stuff' not defined
When a situation such as this arises, the compiler assumes 'stuff' is a
function name, since it has not been previously defined. This results
in a syntax error when 'i' is then read, since a function definition is
supposed to be followed by a parameter list.
224 Improper initializer format [NCC#224]
A set of initializers in braces has too many levels of braces, or is
otherwise incorrectly formulated. Initializers of aggregates (arrays,
structures, or unions) should have a set of braces for each level of
aggregate, but individual values should not
have their own braces.
225 Cannot set array bound from initializers [NCC#225]
The C language provides two methods of specifying the bounds of an
array. The first method, explicit bounds, uses a constant expression
in brackets following the array name. The second method, implicit
bounds, uses the number of initializers in the initializer list to
automatically set the array bounds. This method indicates a
problem in the initializer list such that the array bound cannot be
automatically set.
226 I/O object requires 'master' or 'slave' [NCC#226]
The neurowire I/O object being declared must have either master
or slave keywords after the neurowire keyword.
227
Cannot have a 'select' pin on 'neurowire slave' object
[NCC#227]
The neurowire master I/O object declaration requires a select
value. The neurowire slave I/O object declaration does not.
228 The 'timeout' pin must be one of IO_0 ... IO_7 [NCC#228]
The neurowire slave's timeout pin option can only be one of the
pins IO_0 through IO_7.
229
Neurowire slave device cannot have a baud or kbaud specifier
[NCC#229]
The neurowire master device generates the clock used in the
transfer. Therefore, specification of a bit rate in the declaration of a
slave neurowire device is meaningless.
230
Must specify 'enable_multiple_baud' prior to any I/O function
[NCC#230]
The #pragma enable_multiple_baud directive must appear prior
to the use of any I/O function (e.g. io_in( ), io_out( )). If this error
message appears, move the #pragma enable_multiple_baud
directive to the beginning of your program.
5-30 Neuron C Compiler Errors (NCC)
NCC# Description
231
Specify '#pragma enable_multiple_baud' for correct I/O
operation [NCC#231]
Two or more I/O devices have been declared with conflicting bit rates.
In order for the compiler to generate correct code, it must know about
the conflicting devices in advance. Thus, the #pragma enable_multiple_baud directive must be specified in advance.
232 Hex escape char code constant is too large [NCC#232]
A hex escape character inside a character or string constant exceeds
the value 0xFF. The Neuron C behavior is correct for ANSI C, but
programmers usually find the ANSI C behavior in this respect
counter-intuitive.
233
Buffer size too small for network management messages
[NCC#233]
The compiler issues warnings when any of the buffer size pragmas
are used, and the resulting settings would be too small to
accommodate all possible network management messages from being
properly received or responded to.
234 Buffer size too small for interoperability [NCC#234]
The compiler issues warnings when any of the buffer size pragmas
are used, and the resulting settings would prohibit satisfying the
interoperability criteria.
235 Codegen buffer is full [NCC#235]
The compiler memory limitation has been exceeded and the
procedure must be split into two or more procedures.
236 Too many static declarations in this compilation [NCC#236]
A maximum of 32,767 static variables can be declared in a single
module. Each configuration parameter (member of a CP family) also
counts as a static variable.
237 Unusual use of function address as value [NCC#237]
This message would occur in a situation like the following:
int f(void) {return 0;}
...
int g(void) {
int x;
x = 1;
if (f) { // Unusual use of function address
x = 2;
}
return x;
}
Technically, C permits such a use as shown. Such an expression has
little use in Neuron C, however. The programmer most likely
wanted to specify "if (f( )) { ...". In other words, the syntax
of ANSI C permits a construct that is most likely a programming
error, and the Neuron C compiler flags it for you.
NodeBuilder Errors Guide 5-31
NCC# Description
238 File write error - is disk full? [NCC#238]
The compiler encountered an error writing to the output file(s).
Check that the output media is not write-protected, and that
sufficient disk space exists. It is possible, for extremely large
programs, that a megabyte or more of temporary disk space would be
needed during compilation.
239
A msg_tag declaration is not permitted if micro_interface
[NCC#239}
Once the #pragma micro_interface appears, the program cannot
declare any network variables or message tags.
240
This event expression is not permitted - firmware restriction
[NCC#240]
The special event keywords offline, online, and wink cannot be
combined into other expressions when used in the when clause. See
the Additional Predefined Events section in the Neuron C Programmer's Guide for more explanation.
243
Keyword 'sync' was ignored for polled output network variable
[NCC#243]
A sync output network variable is propagated each time its value is
updated. A polled output network variable is never sent unless a
reader node requests its value with a network variable poll. The two
options are not compatible.
244
Cannot disable netvar_processing with Net Vars declared
[NCC#244]
The directive #pragma netvar_processing_off is not permitted
once network variables have already been declared in a program.
Likewise, declarations of network variables are not permitted in a
program once this directive has been encountered. This pragma can
only be used with the LonBuilder Microprocessor Interface Program
(MIP).
245
Network variable declaration not permitted if
netvar_processing off [NCC#245]
Once the directive #pragma netvar_processing_off is encountered
in a program, network variable declarations are not permitted. This
pragma can only be used with the LonBuilder Microprocessor
Interface Program (MIP).
246
This I/O object type requires specification of a 'timeout' pin
[NCC#246]
The I/O object being declared requires specification of an additional
pin to use as an external timeout signal. See the description of the
I/O object being declared in the I/O Objects chapter of the Neuron C Reference Guide for more information.
5-32 Neuron C Compiler Errors (NCC)
NCC# Description
247 Statement deleted by optimizer [NCC#247]
The Neuron C compiler's optimizer deletes statements for a variety of
reasons. For example, the statement may represent unnecessary
work, the statement may represent dead (i.e. unreachable) code, or
the optimizer has combined the statement with another statement.
This informatory message is issued for two reasons. First, to let the
programmer know why a breakpoint cannot be set on what looks like
an acceptable statement. Second, to point out code that may never
be executed due to erroneous program logic. Consider the following
examples:
<statements>
goto LABEL;
<statements> //deleted by optimizer
LABEL:
<statements>
Since the goto statement causes a branch around code such that it
can never be executed, the compiler issues a "Statement deleted"
message for each statement. The last example demonstrates an
error in program logic discovered by the compiler. The next example
demonstrates unnecessary statements deleted by the optimizer:
int i;
switch (i) {
case 0:
<statements>
break;
case 1:
<statements>
break;
case 2:
<statements>
break; // deleted by optimizer
}
In the above example, the last break statement in the switch
statement is unnecessary, since execution flow is the same with or
without the break statement. (However, it is recommended that the
statement be coded as shown anyway, because doing so will make
future maintenance of the code easier and less error-prone. It is good
programming practice.)
The optimizer recognizes that any branch is unnecessary and
eliminates the unnecessary branch instruction. The informatory
message is produced to explain why a breakpoint cannot be set at
what appears to be a valid statement. No breakpoint can be set,
since no code actually exists for this statement. Note that
informatory messages are not produced by the compiler unless they
are enabled by the #pragma fyi_on directive.
NodeBuilder Errors Guide 5-33
NCC# Description
248
249
250
Comparison is ineffective - result of comparison is a constant
[NCC#248]
A conditional expression (comparison) which involves a constant
value that is out of the range of a variable value is an ineffective
comparison; one that always resolves to either the constant TRUE or
the constant FALSE. The Neuron C compiler detects such a
condition and issues a warning assuming that the comparison might
be erroneous. This situation most commonly occurs when an
unsigned short is compared with a negative number, or a short is
compared with a constant that is a long. Recall that Neuron C
defines short to be 8 bits and long to be 16 bits.
void f(void) {
int i;
if (i < 300) {
// The comparison shown above is an
// ineffective comparison, since 'i'
// can only be in the range -128..127.
// The constant 300 is a long. This
// is most likely a programming error.
}
}
Loop, branch, or ‘when’ condition is always TRUE [NCC#249]
Loop, branch, or ‘when’ condition is always FALSE [NCC#250
The Neuron C compiler detects when some conditions are always
FALSE or always TRUE. This warning is generated to help
programmers ensure that their program is correct. A condition that
is always FALSE, or TRUE, may result from an erroneous
conditional expression.
5-34 Neuron C Compiler Errors (NCC)
NCC# Description
251
252
253
254
255
Assignment operator at top level of conditional expression
[NCC#251]
This warning is issued by the Neuron C compiler when it detects a
use of the assignment operator = in the top level of a conditional
expression, for example, in an if statement.
int a, b;
.
.
.
if (a = b) // This is an assignment
Although such a code construct is legal and useful in C (it assigns the
value of 'b' to 'a' and tests that value for nonzero, simultaneously), it
is also one of the most common coding errors in C programs for
novice and experienced programmers alike. Almost all C
programmers find themselves occasionally making this error when
an equality operator == is actually intended.
The purpose of this warning is to assist programmers in finding
programming errors. The warning may be silenced by recoding the
conditional expression for an explicit test against zero. The Neuron
C compiler's optimizer will produce identical code with or without the
explicit test, due to special optimization logic for this case, thus the
explicit test will not decrease program efficiency.
if ((a = b)!= 0)
Use of 'snvt_si_eecode' and 'snvt_si_ramcode' are exclusive
[NCC#252]
The compiler directives #pragma snvt_si_eecode and #pragma
snvt_si_ramcode are mutually exclusive, since the two directives
cause the compiler to force the placement of the SNVT/SelfIdentification information in mutually exclusive areas of memory.
Triac level I/O object cannot use the 'clockedge(+-)' option
[NCC#253]
The triac I/O object in level mode can only use the clockedge(+) or
clockedge(-) option.
Triac I/O object declaration defaults to triac 'pulse' object
[NCC#254]
Either pulse or level mode can be selected explicitly using the
appropriate keyword in the I/O declaration for a triac object. A
declaration without an explicit keyword will default to using pulse
mode. To silence the warning, modify the declaration to explicitly
specify the triac object's mode of operation.
One or more unterminated #if/#ifdef/#ifndef directives
[NCC#255]
The preprocessor directives controlling conditional compilation must
always exist in matching pairs, similar to the open brace { and close
brace } in a C program. The pairs #ifdef and #endif must match, for
example, with an optional #else contained in between.
NodeBuilder Errors Guide 5-35
NCC# Description
256
Attempt to #undef a name which is not a macro [NCC#256]
The preprocessor #undef command can only be applied to an
identifier which has previously been defined as a macro using the
#define command.
257 Cannot redefine typedef name at file scope [NCC#257]
The rules of ANSI C permit redefinition of a typedef inside a nested
scope (e.g. in a function), but not at file scope. For example:
typedef unsigned int ui;
// The following redefinition is not permitted
unsigned short ui;
void f (void) {
// The following defines ui as a variable,
// which hides the typedef inside the function
unsigned short ui;
}
// The typedef ui is now no longer hidden
ui x;
258
Conditional compilation directives nested too deeply
[NCC#258]
The maximum nesting level of the #ifdef/#ifndef/#if directives is 16.
Change your conditional compilation strategy if you are attempting
to use more than 16 levels of nested directives.
259 Misplaced #elif/#else directive [NCC#259]
The directive in question does not follow the appropriate #ifdef, or
#ifndef directive.
260 Too many arguments in macro being defined [NCC#260]
The maximum number of macro arguments that Neuron C supports
is 16.
261 Macro argument name cannot be repeated [NCC#261]
Function-style macros (those which have a parameter list) must use
a unique name for each parameter.
262 Incorrect number of arguments for macro [NCC#262]
The invocation of the macro in question does not supply the correct
number of arguments. The number of arguments must be the same
as the number of formal parameters in the definition of the macro.
263
Array is too large for fastaccess feature [NCC#263]
An array declared with the optional fastaccess feature cannot
exceed a total size of 254 bytes.
264 The fastaccess feature only applies to arrays [NCC#264]
The optional fastaccess feature should only be used in declarations
of array variable types. The feature does not apply to the indexing
operator applied to pointers.
5-36 Neuron C Compiler Errors (NCC)
NCC# Description
265
266
267
The stack frame of this procedure is too large (>200 bytes)
[NCC#265]
The stack frame of this procedure exceeds 100 bytes [NCC#266]
The stack frame of this procedure exceeds 7 bytes [NCC#267]
On Neuron Chips, references to variables near the top of the stack
use the most efficient instructions. The further down in the stack
one goes, the less efficient the instructions become. This inefficiency
affects both the code size and the code performance. A stack frame
larger than seven bytes begins to incur this penalty. The stack frame
includes the parameters and the local variables.
Neuron Chips, especially the 3120 Chips, which are the most limited
in RAM, do not have very large memory areas set aside for stacks.
Procedures which exceed 200 bytes would not work on Neuron 3120
Chips, thus this is a compile-time error. Procedures that exceed 100
bytes are flagged with a special warning message since they use
more than half of the stack resources; and, nesting these functions
would cause a stack overflow. The compiler does not specifically
check for nesting, but attempts to use this warning to catch large
procedures.
268
Recommend use of an unqualified 'msg_arrives' event
[NCC#268]
A program which receives explicit messages through the
msg_arrives event will be given all such messages which come into
the node, whether their message codes are expected or not. Any
unexpected messages must be handled by the program through a
"catch-all" unqualified msg_arrives event, otherwise such messages
will get stuck at the head of the message queue. See the chapter on
messages in the Neuron C Programmer's Guide for more information
on processing incoming messages.
Code generation is performed on a procedure-by-procedure basis.
The compiler reuses certain internal resources during code
generation of each procedure. One of these resources is internal label
markers. There are only a limited number of labels that can be used
in a given procedure. These labels are used in each possible
branching scenario, in loops, if statements, ?: operators, and switch
statements. By far the most common cause of this message is a very
large procedure containing a switch statement with many cases.
The simplest recourse is to split the switch statement into two or
more switch statements, and move each to a separate subprocedure.
274 Use of possibly unitialized variable [NCC#274]
The Neuron C compiler tracks the use of automatic variables (those
which are local to a function or procedure, or a sub-scope of a
function or procedure). If such a variable is accessed (read) prior to
its having been stored (written), this warning is issued. Structure
fields and array elements are not individually tracked.
NodeBuilder Errors Guide 5-37
NCC# Description
275 Recommend use of 'fails' or 'succeeds' event instead [NCC#275]
This message indicates that the call to a completion event can be
changed to a fails or succeeds event as an efficiency consideration.
See the discussion on events in the Neuron C Programmer’s Guide or
the Neuron C Reference Guide.
276
The 'preempt_safe' keyword has no effect on this 'when' clause
[NCC#276]
Some when clauses and their associated tasks will be executed
regardless of preemption mode. Use of the preempt_safe keyword
for this type of when clause is unnecessary, and has no effect.
291 Improper binary constant ‘<value>’ [NCC#291]
A binary constant begins with 0b and is followed by one or more
binary digits, (i.e. the digits 0 or 1).
A hexadecimal constant begins with 0x and must be followed by one
or more hexadecimal digits, (i.e. the digits 0-9, and the letters a-f and
A-F).
293 Improper octal constant ‘<value>’ [NCC#293]
An octal constant begins with 0, and must be followed by one or more
octal digits, (i.e. the digits 0-7).
294 Unterminated character constant: ‘<value>’ [NCC#294]
The proper format of a character constant is ‘char’. The ‘char’ can
either be a single character (except another quote ), or any of a
number of ANSI C escape sequences. Consult a basic text on ANSI
C, such as one of those listed in the Preface of the Neuron C Reference Guide, for more information.
295 Integer constant ‘<string>’ is too large [NCC#295]
Integer constants are limited to 5 characters, with a value of 65535
or less, since the maximum size of an integer is 16 bits.
297 Cannot open <filetype> file: ‘<filename>’ [NCC#297]
The file that is named cannot be found. Check the spelling of the
filename and check the Application Directories’ and Include
Directories’ search paths in the development tool’s settings or the
command line being used to execute the compiler.
298
Recursive include file nesting (file ‘<filename>’) not allowed
[NCC#298]
An include file cannot include itself, nor can any file B included from
file A then re-include file A, etc.
The following ANSI C preprocessor directives are not supported in
Neuron C:
#elif
#file
#if
#line
5-38 Neuron C Compiler Errors (NCC)
NCC# Description
300
Access to stack variable is beyond end of stack [NCC#300]
The indicated fetch or store to a local variable or parameter on the
stack is beyond the possible end of the Neuron's stack. No
instruction can be generated for the indicated fetch or store. This
could occur with an array variable on the stack being indexed beyond
the array bounds. This could also occur as a result of incorrect direct
address calculations on a stack variable, such as a structure.
301 Invalid use of reserved word >> <token> << [NCC#301]
This error message occurs when the token causing the syntax error is
a reserved word (keyword) that is used out of context. Check the
syntax of not only the reported token, but also the syntax of a few of
the previous tokens. (A token is a grammatical unit, such as a
keyword, or a comma or semicolon.) Don’t forget that Neuron C has
some extra reserved words, in addition to those defined by ANSI C
(these are listed in the Reserved Words appendix in the Neuron C Reference Guide). Check that you haven’t accidentally used a
reserved word as a variable name or other identifier.
302 Syntax error when reading >> <token> << [NCC#302]
Any syntax error is reported in this manner. Check the syntax of not
only the reported token, but the last few previous tokens. The
Neuron C grammar is explained in the Syntax Summary appendix in
the Neuron C Reference Guide.
303 Macro text for ‘<name>’ is too long for debug info [NCC#303]
The Neuron C debugger can understand macro names, but can only
handle the first 16Kbytes of text used in the definition of a macro.
304 Invalid typedef id ‘<name>’ [NCC#304]
Reference to symbol <name> seemed to be a reference to a typedef
identifier, but no such typedef was declared.
305 Integer constant ‘<value>’ is too large [NCC#305]
Integer constants are limited to 65535, since the maximum size of an
integer is 16 bits.
306 Symbol ‘<name>’ is not defined [NCC#306]
An identifier was used in an expression that was not previously
declared or defined. ANSI C requires that all identifiers be declared
before their first use.
307 Symbol ‘<name>’ is a restricted symbol [NCC#307]
The <name> shown cannot be used for a user-declared identifier,
macro, etc. All such restricted names begin with ‘_’, although not all
names beginning with the ‘_’ character are reserved. To avoid this
problem, as well as to avoid future compatibility problems, don’t
declare any names beginning with the ‘_’ character.
308 Event conflict for I/O object ‘<name>’ [NCC#308]
A single I/O object cannot be used in both an io_update_occurs
event and an io_changes event.
A binary constant begins with 0b and must be followed by one or
more binary digits, (i.e. the digits 0 or 1).
310 The symbol ‘<name>’ was declared but never used [NCC#310]
The compiler issues this warning for any run-time object that is
declared, but never used in the executable code. Run-time objects
include anything that consumes Neuron memory or other run-time
resources, such as I/O objects, variables, functions, timers, etc. No
warning is issued for compile time objects, such as typedefs,
structure tags, etc., which are not used. Some objects may be
intentionally declared, but unused. If it is desired to suppress this
warning for a certain symbol, the following pragma may be inserted
following the declaration of the object in question:
#pragma ignore_notused symbol
This directive may be used multiple times, for each symbol for which
the warning should be suppressed.
311
312
313
Redefinition of ‘<macroname>’ hides function [NCC#311]
Redefinition of ‘<macroname>’ hides enum value [NCC#312]
Redefinition of ‘<macroname>’ hides label [NCC#313]
The macro being defined, by the rules of ANSI C, will supersede any
other declarations of the same name. This may not be what the
programmer intended, so if a conflict is detected, to help with
detection of inadvertent programming errors, the above warning(s)
will be printed.
314 Cannot redefine ‘<name>’ [NCC#314]
The name has been declared as a certain type of identifier more than
once in the scope. For example, it is illegal to define a variable twice
at file scope, or a function, or a macro, etc. (however, there may be
multiple extern declarations for the same variable). Note that a
macro definition is always considered to be at file scope, regardless of
its placement in a file.
315
316
Name of network variable, ‘<name>’, exceeds 16 chars
[NCC#315]
Name of msg_tag, ‘<name>’ exceeds 16 chars [NCC#316]
Any network variable or message tag name is limited to 16
characters. Likewise, if a typedef name is used in declaration of a
network variable, it too must be 16 characters or less in length.
317 Label ‘<name>’ is not defined [NCC#317]
The specified label used in a goto statement is not defined in the
current procedure or task.
5-40 Neuron C Compiler Errors (NCC)
NCC# Description
318 Improper context for ‘<keyword>’ label [NCC#318]
Certain statements in ANSI C do not have meaning except within
some defined construct. The continue statement can only be used
inside a loop statement, which is either a for, a while, or a do-while. The break statement can only be used inside a loop
statement or inside a switch statement.
The words case and default are reserved words in ANSI C, used as
labels inside of the scope of a switch statement. They cannot be used
outside of a switch statement.
This message indicates that the program being compiled has violated
one of these rules. Consult a basic text on ANSI C, such as one of
those listed in the Preface of the Neuron C Reference Guide, for more
information.
319
320
321
322
323
324
Need to check nv_update_succeeds for <nv-name> [NCC#319
Need to check nv_update_succeeds for <nv-name>[<index>]
[NCC#320]
Need to check nv_update_fails for <nv-name> [NCC#321]
Need to check nv_update_fails for <nv-name>[<index>]
[NCC#322]
Need to check msg_succeeds for tag <tag-name> [NCC#323]
Need to check msg_fails for tag <tag-name> [NCC#324]
Some events must occur in pairs. For a given network variable or
message tag, checking one event requires checking of a
corresponding event, to have a correct program.
325
The 'num_addr_table_entries' was adjusted upward to <value>
[NCC#325]
If there are one or more msg_tag declarations, or network variables
are declared, the compiler computes a minimum allowable number of
address table entries. There must be one entry per bindable msg_tag
declared, plus at least one entry if network variables are used. For
some possible connections, this may not be enough entries. However,
this value is an absolute minimum.
330 Symbol Table is full [NCC#330]
The compiler symbol table limit has been reached.
331 Optional parameters are not supported [NCC#331]
The Standard C feature of a variable argument list, also called
optional function parameters, is not supported in Neuron C.
NodeBuilder Errors Guide 5-41
NCC# Description
332 Problem reading 'snvt.typ' [NCC#332]
The snvt.typ file is read by the compiler to obtain definitions of the
current Standard Network Variable Types (whose names begin with
the characters SNVT_). This type file is located in the TYPES
subdirectory of the LonBuilder system directory. The LonBuilder
system directory is, by default, named \lb. This error message does
not indicate a missing file, rather, it indicates a read error on the file,
possibly due to a disk or hardware failure, or a corruption in the DOS
file system. The DOS command chkdsk can be used to diagnose file
system errors. This error is not applicable in version 4.00 or later
versions of the Neuron C Compiler.
334
Specify 'idempotent_duplicate_<off,on>' pragma with
'micro_interface' [NCC#334]
The Microprocessor Interface Program option for a Neuron C
compilation requires specification of one of the following two
pragmas:
For more information, see Chapter 1 of the Neuron C Programmer's
Guide.
335
Byte/Nibble output has no effect on timer/counter output pins
[NCC#335]
A timer/counter output device has precedence over a byte or nibble
output device. The pin used by the timer/counter device, either IO_0
or IO_1, will not be affected by any output operations on the byte or
nibble device. However, the remaining pins of the byte or nibble
device will still function. The declaration is permitted for situations
such as a timer/counter device on pin IO_0, and a 7-bit output device
on pins IO_1 through IO_8, which could use a byte device declared
on pin IO_0 to accomplish the function.
336 Struct assign for EEPROM dest limited to 255 bytes [NCC#336]
The Neuron Chip firmware functions that copy blocks of memory to
EEPROM destination addresses support a maximum length of 255
bytes per copy. Larger blocks can be copied by using multiple calls,
substructure assignments, etc.
337 Priority bind_info options ignored for NV ‘<name>’ [NCC#337]
Any explicit priority bind_info( ) options for network variables are
ignored when the number of priority buffers is zero. The number of
priority buffers is set to zero explicitly by the priority buffer count
pragmas (see the Compiler Directives chapter of the Neuron C
Reference Guide and the Memory Management chapter of the Neuron
C Programmer's Guide for more information).
5-42 Neuron C Compiler Errors (NCC)
NCC# Description
338
The '#pragma codegen' directive must precede affected code
[NCC#338]
The codegen pragma (see the Compiler Directives chapter of the
Neuron C Reference Guide) affects code generation for certain Neuron
C features. Selection of a codegen option must precede any
generated code that would be affected by the option. It is best to
place these pragmas at the beginning of a program.
339
This program requires aliases:
'#pragma num_alias_table_entries' [NCC#339]
The program has referenced a firmware or library function which
operates on or requires one or more alias table entries, but the
pragma which allocates these alias table entries was not supplied, or
the number of alias table entries was specified as 0 (zero). See the
Compiler Directives chapter of the Neuron C Reference Guide for
more information on the pragma.
340
Parameter to 'propagate' must be output network variable
[NCC#340]
The built-in function propagate( ) takes as its only argument the
name of an output network variable. See the Functions chapter of
the Neuron C Reference Guide for more information on this built-in
function.
342 I/O object type restricted to pins IO_0 through IO_6 [NCC#342]
Different I/O object types are permitted on different subsets of the
Neuron Chip’s
I/O pins. For more information, see the I/O Objects
chapter of the Neuron C Reference Guide.
343
The '#pragma set_std_prog_id' conflicts with ID set via
compile option [NCC#343]
The compiler permits the program ID to be set in various ways, by
compiler directive (pragma) as well as by command-line or
programmatic interface option. The compiler will tolerate multiple
attempts to set the program ID, provided there is no conflict.
345
Array index is out of range of bounds declaration [NCC#345]
This warning is generated whenever a constant index is applied to an
array such that the index is negative, or is beyond the declared
bounds of the array.
346 This combination of debug options is not available [NCC#346]
The #pragma debug directive can be specified a number of times in
a given program, with various options. Some of these options can be
combined, and others cannot. Consult the Compiler Directives
chapter of the Neuron C Reference Guide for a complete explanation
of the directive.
347
Need at least 3 application input buffers with debug kernel
[NCC#347]
In order for the network debug kernel to function properly, a node
must have at least 3 application input buffers. The program being
compiled with the network debug kernel option selected does not
have at least 3 application input buffers.
NodeBuilder Errors Guide 5-43
NCC# Description
349
350
Read error on cached file [NCC#349]
Write error on cached file [NCC#350]
A read error or a write error was reported while accessing a file.
Check for adequate disk space, or the possibility of loss of network
connection (if a networked file), or removal of removable media.
352 Array size exceeds 65535 [NCC#352]
The array variable being declared exceeds a total size of 65535 bytes.
No array, struct, or union variable in Neuron C can exceed 65535
bytes.
353
Variable being declared is too large for RAMNEAR. Use 'far'.
[NCC#353]
The variable being declared is larger than 256 bytes in size. The
total available size of the RAMNEAR area in the Neuron is 256
bytes, thus this variable declaration must be placed in RAMFAR.
Use the far keyword in the declaration ("near" is the default). See
the Memory Management chapter of the Neuron C Programmer's Guide for more information.
354 Variablebeingdeclared is too large for EENEAR. Use 'far'.
The variable being declared is larger than 255 bytes in size. The
total available size of the EENEAR area in the Neuron is 255 bytes,
thus this variable declaration must be placed in EEFAR. Use the far
keyword in the declaration ("near" is the default). See the Memory Management chapter of the Neuron C Programmer's Guide for more
information.
357
The 'uninit' storage class requires use of 'eeprom' or 'config' or
‘cp’ [NCC#357]
The uninit storage class is used to tell the compiler not to provide
any initial value for the data item being declared, thus the loader
will not overwrite that area of memory when reloading the program.
This feature is only available for data items using EEPROM or Flash
memory (the uninit storage class does not apply to RAM variables).
The uninit feature requires the declaration to use one of the storage
classes eeprom, config, or config_prop (abbreviated cp). See the
Neuron C Programmer’s Guide for more information.
358 The 'offchip' storage class requires use of 'far’ [NCC#358]
The Neuron Chip provides a “near” area of EEPROM memory and a
"near" area of RAM memory. Each of the “near” areas is located
onchip, and “near” is the default memory area used by a data
declaration. When writing a program for a Neuron 3150, which has
external (off-chip) memory, the offchip keyword can be used in the
data declaration to force the linker to place the data item in offchip
memory. Since the data declaration would default to the near area,
which is located on-chip, the far keyword must also be used in the
data declaration. Add the far keyword to the declaration.
5-44 Neuron C Compiler Errors (NCC)
NCC# Description
359
The keywords 'offchip' and 'onchip' are mutually exclusive
[NCC#359]
As the message states, at most one of these storage classes may be
used in a data declaration.
387
File’s basename exceeding 52 characters may cause linker
problems [NCC#387]
In certain situations, including the use of configuration parameters
and/or variables declared static, the compiler may construct a “madeup-name” for the variable that is, in part, based upon the basename
portion of the filename of the file that is being compiled. (The
basename is the part of the filename preceding a "." character.)
Because the maximum length of a symbol in the compiler, assembler,
and linker is 64 characters, and taking into account certain
additional characters added by the compiler in the process of creating
a "made-up-name", if the basename of the file exceeds a length of 52
characters, the symbols passed to the assembler and linker may be
too long, and link errors may result. To avoid this problem, limit the
basename of the file to 52 characters or less.
388 System error in Device Resource Files access [NCC#388]
The Neuron C compiler for the Neuron C Version 2 language uses the
ONMARK Device Resource Files, including the catalog, and files
L
such as *.FPT, *.TYP, etc. The Neuron C compiler uses the services
of the Device Resource Files API (DRF API) to provide access to the
Resource Files. If the DRF API reports an unexpected problem, the
compiler prints this message and stops the compilation.
Some possible causes of this problem are incorrect filenames or
directory paths in the catalog. Perform a catalog refresh to correct
this situation. (LonMaker will automatically refresh the catalog
when it starts up, as will the NodeBuilder Resource Editor).
389
Typename ‘<name>’ not found in Device Resource Files;
'SNVT*', 'SCPT*', "UNVT*', "UCPT*' are reserved [NCC#389]
The Neuron C Compiler for the Neuron C Version 2 language uses
ONMARK Device Resource Files to resolve all names beginning
the L
with the prefixes 'SNVT*', 'SCPT*', 'UNVT*', and 'UCPT*', found in a
Neuron C program. The program should avoid using any names
beginning with any of these prefixes, for compatibility with names in
the Resource Files.
Programs that were originally written in Neuron C Version 1 and use
typedef to define SCPT, UNVT, and UCPT types can still be
compiled by using the #pragma names_compatible compiler
directive. In this case, and matching type names in resource files
will be hidden. See the Compiler Directives chapter of the Neuron C Reference Guide for more information.
For more information about compiling legacy Neuron C applications
with the more recent version of the Neuron C Compiler (NCC version
4.0 or later), and more information about converting a legacy
application into one that uses the Neuron C Version 2 language
L
ONMARK features, please refer to the NodeBuilder User's Guide.
NodeBuilder Errors Guide 5-45
NCC# Description
390 Could not open the LmRF catalog [NCC#390]
LmRF catalog means L
ONMARK Resource File catalog. The Neuron
C compiler for the Neuron C Version 2 language uses the L
Device Resource Files, including the catalog, and files such as *.FPT,
*.TYP, etc. The Neuron C compiler uses the services of the Device
Resource Files API (DRF API) to provide access to the Resource
Files. If the DRF API cannot open the catalog, the compiler prints
this message and stops the compilation.
Possible causes of this problem are a missing \Lonworks\Types
folder, or a missing or corrupt catalog file (LDRF.CAT which is
stored in the Types folder). Perform a catalog refresh to correct this
situation. LonMaker will automatically refresh the catalog, or create
one if necessary, when it starts up; as will the NodeBuilder Resource
Editor.
391
Use of NVT or CPT 'float' type requires prior #include
<float.h> [NCC#391]
Whenever a Network Variable Type (NVT) or a Configuration
Property Type (CPT) is retrieved from a LONMARK Device Resource
File by the Neuron C Compiler, and the type contains one or more
references to the float_type definition, the compiler checks that the
floating point support include file has been included in the
compilation. Add #include <float.h> to the beginning of your
program.
392
Use of NVT or CPT 'quad' type requires prior #include <s32.h>
[NCC#392]
Whenever a Network Variable Type (NVT) or a Configuration
Property Type (CPT) is retrieved from a LONMARK Device Resource
File by the Neuron C Compiler, and the type contains one or more
references to the s32_type definition, the compiler checks that the
signed 32-bit support include file has been included in the
compilation.
This situation will occur when using any CPT of inherited type,
because prior to inheritance of type information, all inherited type
CPTs default to the 32-bit signed type s32_type. This is true even if
the program does not use any signed 32-bit data or arithmetic
support functions. Add #include <s32.h> to the beginning of your
program.
ONMARK
5-46 Neuron C Compiler Errors (NCC)
NCC# Description
393
394
395
396
Cannot add file record to dependency file (might cause build
status calculation to fail) [NCC#393]
Cannot add switch record to dependency file (might cause
build status calculation to fail) [NCC#394]
Cannot add parameter record to dependency file (might cause
build failure) [NCC#395]
Cannot write .ncdep dependency file (might cause build status
calculation to fail [NCC#396]
These problems are reported by the dependency utility. Although it
will not stop the compilation, the warning alerts the user to a
potential problem the next time a Project Make (or a build) is run,
because the Project Make utility may not be able to correctly
calculate whether the project will need to be rebuilt. To clear this
condition, try a "clean" followed by an "unconditional build". If this
problem persists, contact LonSupport.
397 Reference in NVT or CPT not found [NCC#397]
Some Network Variable Types (NVTs) or Configuration Property
Types (CPTs) can reference other NVTs. References can be nested.
This message indicates that the original type, or one of the types that
it references, references another type that does not exist in the
applicable and available resource files.
Use the NodeBuilder Resource Editor to examine the original type,
and then to observe whether all the types it references do, in fact,
exist. This problem may be caused by any of the following: one or
more resource files are missing, or the catalog does not list these
resource files, some resource files may be out of date, or possibly a
resource file has been mis-edited.
398
399
Unspecified error in option processing [NCC#398]
Unspecified error in execution of compiler [NCC#399]
These messages result from an unknown program failure or anomaly
that has been caught by self-checking code in the compiler.
Please contact LonSupport for analysis, correction and/or
workaround for this problem.
401
Repeated declaration of CP family does not match previous
declaration [NCC#401]
In support of code modularity, it is possible that more than one file in
a compilation may declare a CP family of the same name, and with
identical properties. Rather than force the reorganization of the code
or the creation of artificially cryptic names, the compiler supports
multiple identical declarations, and will merge these declarations
into a single declaration of the family. This feature requires the two
(or more) declarations being merged to be identical in every aspect.
NodeBuilder Errors Guide 5-47
NCC# Description
402
403
Invalid reference ‘<name>’ – must be an NV-CP or a CP family
name [NCC#402]
The property ‘<name>’ is not an NV-CP or a CP family name
[NCC#403]
The compiler has determined that the <name> shown must be a
reference to a configuration property. The configuration property
must have previously been declared as a network variable using the
config_prop or cp option keyword in the declaration, or as a
configuration parameter family using the cp_family keyword. For
more information on this topic, see the chapter on configuration
properties in the Neuron C Programmer's Guide.
404
405
A device property cannot be ‘static’ [NCC#404]
A device property cannot be ‘global’ [NCC#405]
The device_properties list cannot contain any properties using the
static or global keyword as a modifier. Device properties are
The L
that no more than one property of any particular SCPT or UCPT type
may be used as a device property. CPT names are the keys that LNS
uses to retrieve variable values. Consult that document for more
information.
407
A variable property list can only be used with a network
variable [NCC#407]
The Neuron C Version 2 syntax permits nonsense declarations like
the following examples, but the compiler later determines that the
nv_properties clause can only apply to a network variable
declaration.
Improper uses of the nv_properties clause:
static int abc nv_properties { heartbeatTime };
SNVT_temp_f temperature
nv_properties { heartbeatTime };
Proper use of the nv_properties clause:
network output SNVT_temp_f temperature
nv_properties { heartbeatTime };
In the second "improper use" example above, the declaration may be
confused with a network variable declaration, however, it is not. The
declaration actually is just a variable declaration using the type of
the SNVT (this is a legitimate declaration, but not a network
variable, so it cannot have a property list).
408
Array index for property or member cannot be used in this
context [NCC#408]
A reference to a property name in a property list contained an array
index expression, but the property is not an array.
5-48 Neuron C Compiler Errors (NCC)
NCC# Description
409
A ‘cp’ network variable cannot have a variable property list
[NCC#409]
The Neuron C Version 2 syntax permits nonsense declarations like
the following example, but the compiler later determines that the
nv_properties clause can only apply to a network variable
declaration that is not a configuration property. The LApplication Layer Interoperability Guidelines do not permit a
configuration property to have properties of its own.
Improper use of the nv_properties clause:
A ‘config’ network variable cannot have a variable property
list [NCC#410]
The Neuron C Version 2 syntax permits nonsense declarations like
the following examples, but the compiler later determines that the
nv_properties clause can only apply to a network variable
declaration that is not declared with the config keyword. The
L
ONMARK Application Layer Interoperability Guidelines do not
permit a configuration property to have properties of its own.
Improper use of the nv_properties clause:
Existing LonMark SD string info in NV will be overridden
[NCC#411]
When a Neuron C program uses any of the new Neuron C Version 2
features that support the construction of a LONMARK device, the
compiler will create the SD and SI information for the device. When
the compiler attempts to insert this information into the SI and SD
strings, if there is already text present from the user's program, the
compiler will insert the L
ONMARK information at the front of the
string, and will then use a semicolon character to separate the
automatically-generated string from the user-specified string.
If the compiler detects that the existing string information started
with the special characters that would identify that information as
L
ONMARK information, the compiler then issues this warning, to let
the programmer know that the existing L
ONMARK information in the
program was overridden.
412 Too many errors – compilation halted [NCC#412]
To prevent a serious error early in the compilation, such as a missing
include file, or a missing brace or parenthesis, from creating a flood
of useless error messages, the compiler limits the number of error
messages produced to a small number. The next error after this
limit is reached causes the compiler to issue this message and halt
the compilation.
ONMARK
NodeBuilder Errors Guide 5-49
NCC# Description
417 Invalid declaration type for ‘properties’ clause [NCC#417]
The Neuron C Version 2 syntax permits nonsense declarations like
the following examples, but the compiler later determines that the
nv_properties clause can only apply to a network variable
declaration.
Improper uses of the nv_properties clause:
static int abc nv_properties { heartbeatTime };
SNVT_temp_f temperature
nv_properties { heartbeatTime };
Proper use of the nv_properties clause:
network output SNVT_temp_f temperature
nv_properties { heartbeatTime };
In the second "improper use" example above, the declaration may be
confused with a network variable declaration, however, it is not. The
declaration actually is just a variable declaration using the type of
the SNVT (this is a legitimate declaration, but not a network
variable, so it cannot have a property list).
418
Cannot have multiple ‘properties’ clauses on a variable
[NCC#418]
The Neuron C Version 2 syntax permits nonsense declarations like
the following example, but the compiler later determines that there
are too many properties clauses in the declaration.
Improper use of the nv_properties clause:
The properties clause is a comma-separated list, and corrected use of
the declaration above is shown below:
network output SNVT_temp_f temperature
nv_properties { heartbeatTime,
defaultOutput };
419 A ‘cp’ network variable cannot be an ‘output’ NV [NCC#419]
Configuration property network variables can only be declared as
input network variables. See the chapter describing the use of
configuration properties in the Neuron C Programmer's Guide.
420 Network variable’s property is a duplicate [NCC#420]
The L
that no more than one property of any particular SCPT or UCPT type
may be used for a network variable. Consult that document for more
information.
421 Overuse of ‘cp’ network variable [NCC#421]
A configuration property implemented using a network variable may
not appear in more than one property list, unless the property list
also uses the static or global keyword. The same network variable
cannot be used as a property for the device, network variables, and
functional blocks simultaneously. See the chapter describing the use
of configuration properties in the Neuron C Programmer's Guide.
5-50 Neuron C Compiler Errors (NCC)
NCC# Description
422 Invalid property reference [NCC#422]
The item appearing in the property list is not a configuration
property.
423
The scope value of the LonMark Resource File reference is out
of range [NCC#423]
The valid range of the scope value is 0 .. 6. The compiler has
encountered a resource file containing a scope value that is out of
that range. Use the NodeBuilder Resource Editor to examine the
resource file and correct the scope value if possible, otherwise contact
LonSupport.
424
Function type not correct for a fblock director function
[NCC#424]
The director function for a functional block must be declared using
a specific function prototype. The function returns void, and it has
two parameters. The prototype must be in the form shown below:
void f (unsigned index, int cmd);
For more information, consult the Neuron C Programmer's Guide or
the Neuron C Reference Guide.
425 Director symbol is not defined or is not a function [NCC#425]
The initial declaration of the director function for a functional block
must appear prior to the declaration of the functional block. Since
the director function may very well make reference to the functional
block declaration, the initial declaration will probably need to be a
function prototype declaration, or a forward reference. For more
information, consult the Neuron C Programmer's Guide.
426 Too many fblocks declared [NCC#426]
The Neuron Chip can support a maximum of 62 functional blocks.
Note that each element of an array of fblocks counts as one
functional block.
427
The context for the ‘: :’ operator is not a valid context
[NCC#427]
The :: operator can be used to access the members and the properties
of a functional block, as well as the properties of a network variable,
or properties of the device. This message indicates that the context,
or the portion of the property expression that precedes the ::
operator, is neither a functional block nor a network variable. A
functional block array or a network variable array requires an index
expression in the context of the :: operator. To access device
properties, use the :: operator without a context preceding it. See the
examples and description of the :: operator in the Neuron C Programmer's Guide and the Neuron C Reference Guide for more
information.
428
The specified fblock does not have a director function
[NCC#428]
An attempt to access the director property of the functional block was
made, but no director function was declared for the functional block.
NodeBuilder Errors Guide 5-51
NCC# Description
429
Incorrect number of arguments for the director function
[NCC#429
The function returns void, and it has two parameters. The
prototype for a director function must be in the form shown below:
void f (unsigned index, int cmd);
For more information, consult the Neuron C Programmer's Guide or
the Neuron C Reference Guide.
430
Use of fblock_director function but no fblocks declared
[NCC#430]
The compiler has detected an attempt to use the fblock_director( )
but no functional blocks were declared in the program.
431
FPT name used to declare fblock is not in resource files
[NCC#431]
Part of the declaration of a functional block refers to an FPT record
in a LONMARK Resource File, however, the name used in the
program was not found in the resource file. Check the spelling of the
name (it is case-sensitive) and check that the resource file containing
the FPT is installed in the resource file catalog on the computer. The
catalog can be checked with the NodeBuilder Resource Editor.
Make sure the program ID chosen for the project allows for the FPT
resource files to be accessed by the compiler. For example, in case
the desired FPT is implemented in an FPT device resource file, scope
3 or higher, that applies to all code by manufacturer with ID
0x12345, this FPT cannot be referenced from a project that uses a
different manufacturer IF value in its program ID.
432 The FPT used in fblock declaration is obsolete [NCC#432]
The L
ONMARK Device Resource Files permit FPT, NVT, and CPT
definitions to be marked as obsolete. This means that a replacement
FPT, NVT, or CPT is available, and the use of the obsolete item is
discouraged (though it is permitted). Contact the L
ONMARK
Interoperability Association for more information on the obsolete
FPT, NVT, or CPT.
433 NV member of an fblock cannot also be a CP [NCC#433]
A network variable that uses the config_prop (abbreviated cp)
keyword in its declaration is a configuration property network
variable. Such a network variable cannot be used as a member of a
functional block, but can be used as a property of a functional block.
434 The specified member of the fblock is not an NV [NCC#434]
Members of a functional block can only be network variables.
435
NV member of an fblock cannot also be declared ‘config’
[NCC#435]
A network variable that uses the config keyword in its declaration is
a Neuron C Version 1 configuration property. Such a network
variable cannot be used as a member of a functional block, nor can it
be used as a property of a functional block.
5-52 Neuron C Compiler Errors (NCC)
NCC# Description
436
437
438
439
440
441
The specified NV has already been used as an fblock member
[NCC#436]
A network variable (or element of a network variable array) can be a
member of at most one functional block.
The member ‘<name>’ already has an NV implementation
[NCC#437]
Each member of a profile can be implemented by a network variable
in the device's functional block declaration, but the member can only
have one implementation. See the chapter discussing the use of
functional blocks in the Neuron C Programmer's Guide.
The name ‘<name>’ is not a member of the FPT ‘<FPT-name>’
[NCC#438]
An implements statement appears in the member list of an fblock
declaration, and the member name (which follows the keyword
implements) does not exist in the FPT record. The FPT record is
read from the FPT resource file. Use the NodeBuilder Resource
Editor to examine the list of members for the FPT, and check the
spelling of the member name.
If you are trying to implement a custom member that is not in the
FPT record, you may use the implementation_specific keyword to
accomplish that. See the Neuron C Reference Guide for more details.
The FPT ‘<FPT-name>’ specifies that NV member ‘<name>’
must be implemented [NCC#439]
Network variable members of the FPT are each marked as either
mandatory or optional. All mandatory members must have an
implementation, as declared using the implements statement in the
member list in the fblock declaration.
The FPT specifies that the NV member must be ‘input’
[NCC#440]
The FPT specifies that the NV member must be ‘output’
[NCC#441]
Network variable members of the FPT are each marked as either
input or output. The network variables that are used to implement
the FPT members must match the specification in the FPT record for
that member. Check the declared network variable direction.
NodeBuilder Errors Guide 5-53
NCC# Description
442
443
444
445
Existing LonMark SD string info for node will be overridden
[NCC#442]
When a Neuron C program uses any of the new Neuron C Version 2
features that support the construction of a L
ONMARK device, the
compiler will create the SD and SI information for the device. When
the compiler attempts to insert this information into the SI and SD
strings, if there is already text present from the user's program, the
compiler will insert the L
ONMARK information at the front of the
string, and will then use a semicolon character to separate the
automatically-generated string from the user-specified string.
If the compiler detects that the existing string information started
with the special characters that would identify that information as
LONMARK information, the compiler then issues this warning, to let
the programmer know that the existing L
ONMARK information in the
program was overridden.
Insertion of LonMark node SD info truncates existing string
[NCC#443]
When a Neuron C program uses any of the new Neuron C Version 2
features that support the construction of a LONMARK device, the
compiler will create the SD and SI information for the device. When
the compiler attempts to insert this information into the SI and SD
strings, if there is already text present from the user's program, the
compiler will insert the L
ONMARK information at the front of the
string, and will then use a semicolon character to separate the
automatically-generated string from the user-specified string.
If the compiler detects that the addition of this information will
cause the string to exceed the limit of 1023 characters, the compiler
will truncate the string and issue this message.
The fblock external name string is invalid or is too long
[NCC#444]
ONMARK Application Layer Interoperability Guidelines state
The L
that the external name of a functional block (the name which
appears in the L
ONMARK information in the node's SD string) shall
be 16 characters or less. There are certain restrictions to the set of
acceptable characters, too. See the guidelines document, referenced
above, for more information.
NV array element used as member of fblock requires an index
[NCC#445]
A simple (non-array) functional block declaration requires network
variable members that are not arrays. These members can either be
simple network variables, or elements of network variable arrays. In
the case of an element of a network variable array, an index
expression must be part of the declaration in the implements
statement, to identify the array element to be used.
5-54 Neuron C Compiler Errors (NCC)
NCC# Description
446
NV array elements used as members of fblock array require a
starting index [NCC#446]
A functional block array declaration must have its members
implemented using network variable arrays. The network variable
arrays may be larger than the functional block array, and the indices
need not be identical (between the functional block array and the
various network variable arrays). The reference to each array
network variable in the implements statements of the member list
requires a starting index as part of the declarations in the
implements statements, to identify which array element of the
th
network variable corresponds to the 0
array element of the
functional block. The compiler then automatically distributes the
following elements of the network variable arrays to the following
elements of the functional block array.
447 The fblock reference requires an index[NCC#447]
Each element of a functional block array must be treated separately.
An index is always required to select an element of a functional block
array.
448
The fblock’s NV member array is not big enough for the FB
array[NCC#448]
A functional block array declaration must have its members
implemented using network variable arrays. The network variable
arrays may be larger than the functional block array, but may not be
smaller. The network variable array elements' indices need not start
at 0 in correspondence with the functional block array, but they must
be consecutive. Thus, the network variable array must be large
enough to accommodate the functional block array. For example,
consider the following improper declaration:
The functional block array fb has three members, and the network
variable array v has four members. However, the declaration does
not use v[0] nor v[1], and it matches v[2] with fb[0], and v[3] with
fb[1]. There are not enough elements in the array v, because v[4]
would be needed for fb[2], but the array's last member is v[3].
449 The fblock or NV context requires an index[NCC#449]
A functional block array or a network variable array used as the
context (left-hand side) of the property operator :: must have an
index expression. An entire array cannot be used in this manner,
only an individual element.
NodeBuilder Errors Guide 5-55
NCC# Description
450 The fblock array requires NV array(s) as members [NCC#450]
A functional block array declaration must have its members
implemented using network variable arrays. The network variable
arrays may be larger than the functional block array, and the indices
need not be identical (between the functional block array and the
various network variable arrays). The reference to each array
network variable in the implements statements of the member list
requires a starting index as part of the declarations in the
implements statements, to identify which array element of the
th
network variable corresponds to the 0
array element of the
functional block. The compiler then automatically distributes the
following elements of the network variable arrays to the following
elements of the functional block array.
451
A ‘device_specific’ CP is required to be ‘const’ as well
[NCC#451]l
The L
document requires a configuration property that is declared with the
device_specific flag to also be declared const. CPs with these flags
on are always read from the device, they are considered read-only by
LNS; thus the required const.
453
One or more code constructs have no effect and were ignored
[NCC#453]
When the compiler is compiling a program that is used as a Neuron
C model file for ShortStack host development, the compiler may
encounter such things as executable code or other Neuron C
constructs that have no effect in a ShortStack compilation. The
construct is ignored by the compiler, except for this message being
displayed.
454 The construct is not acceptable in ShortStack code [NCC#454]
Certain Neuron C features are not permitted in a program that is
used as a Neuron C model file for ShortStack host development. For
example, the compiler directive #pragma num_alias_table_entries
is not permitted. Consult the ShortStack User's Guide for more
information.
455 Cannot open NCT file [NCC#455]
The output *.NCT file (used during the ShortStack host code
generation process) cannot be opened. Perhaps a file already exists
by that name, but it is open by another Windows program, or it is
marked read-only. Or, perhaps the output directory does not exist.
5-56 Neuron C Compiler Errors (NCC)
NCC# Description
456
The directive ‘#pragma num_alias_table_entries’ is required
[NCC#456]
A Neuron C program must specify to the Neuron C Version 2
compiler how much room is to be reserved for the alias table. The
compiler does not attempt to compute a default, so the programmer
specify a value for this pragma. Previous versions of the
must
Neuron C Compiler defaulted this value to zero, but that is really not
an appropriate default value.
The value 0 (zero), however, can still be used to effectively disable
the use of the alias feature; please see the Neuron C Reference Guide
for more about compiler directives.
457
The type used in the declaration is unnamed or unsupported
[NCC#457]
Some types are not supported when compiling a program that is used
as a Neuron C model file for ShortStack host development. Consult
the ShortStack User's Guide for more information.
458 The fblock’s property is a duplicate [NCC#458]
The L
that no more than one property of any particular SCPT or UCPT type
may be used for a functional block. Consult that document for more
information.
459
Node object must be first fblock for LNS versions before 3.2
[NCC#459]
For LNS versions prior to version 3.2, if the device has a node object,
that node object must be the first functional block declared in the
device (and therefore, the functional block with global index zero).
460 Cannot use an inheriting type to declare this object [NCC#460]
Some CPTs require inheritance of type information from a network
variable. Type inheritance is a feature that only applies to
configuration properties. Use of such a CPT for any other purpose
(for example, declaring a local or static variable in the program, or
declaring a function parameter or pointer) results in a declaration
with incomplete type information(since only a configuration property
can inherit a type from a network variable). A declaration with an
incomplete type is not valid.
The CPT used in the declaration can only be used as part of a
configuration property declaration.
461
Cannot use an inheriting type CP as a device property
[NCC#461]
A configuration property declared using a CPT type that inherits
from a network variable could not be a device property, because in
that situation there is no network variable from which to inherit.
NodeBuilder Errors Guide 5-57
NCC# Description
462 Global property cannot inherit conflicting types [NCC#462]
When a configuration property is declared using the global keyword,
it is shared among multiple network variables (or functional blocks).
Some CPTs are incomplete type definitions, and the configuration
properties that use these CPTs in their declarations inherit their
types from the network variables they apply to. If a global
configuration property is used as a property of two or more network
variables of different types, there is a resulting conflict in the type
inheritance. This situation is not permitted.
463
464
The ‘const’ attribute has been removed by cast operations
[NCC#463]
Pointer to constant data has been cast into pointer to nonconst data [NCC#464]
These warning messages inform the programmer of a potential
programming error, because an attempt to write to read-only
memory may occur. Writes to read-only memory do not cause
problems, other than that the expected write does not occur.
465
466
SD string not acceptable in ShortStack for LonMark
[NCC#465]
Node’s SD string not acceptable in ShortStack for LonMark
[NCC#466]
The SD string specified is not acceptable in a program that is used as
a Neuron C model file for ShortStack host development. Consult the
ShortStack User's Guide for more information.
467
468
Invalid fblock member number specification [NCC#467]
The implementation-specific member’s number conflicts with
another member [NCC#468]
A Neuron C program's implementation of an FPT (a profile) can add
one or more members not present in the FPT. These members are
called implementation-specific. Such members must specify a
member name and a member number since there is no FPT record to
provide this information for the compiler. The member name and
member number supplied in the implementation_specific
statement must be unique, and must not conflict with any FPT
members, nor any other implementation-specific members. Since a
user FPT can inherit from a standard FPT, the implementationspecific members must be unique within both the user FPT and the
standard FPT in this situation.
469
The number of FPT members exceeds the compiler’s capacity
[NCC#469]
The compiler accepts a maximum of 4096 members per FPT.
5-58 Neuron C Compiler Errors (NCC)
NCC# Description
470
471
472
473
474
475
The program ID for this program requires the changeable
interface bit [NCC#470]
A program that has one or more network variables declared as
changeable-type must also set the changeable interface bit in the
program ID, to tell a network management tool that the program
interface is changeable. Use the SPID Calculator in NodeBuilder to
set the changeable interface bit of the program ID. See the
ONMARK Application layer Interoperability Guidelines for more
L
information on this topic.
The reference '<name>' is not a member of the fblock's FPT
[NCC#471]
The context property expression uses a member name that does not
exist in the fblock declaration. A context property expression is of
the form shown below:
fblock-name-with-index :: member-name
Check the fblock declaration and use a valid member name from the
functional block's member list. You cannot use a member from the
FPT that is not implemented in the fblock.
An inheritable-type CP must be initialized in the properties
clause [NCC#472]
A configuration property declared with a SCPT that provides type
inheritance cannot be initialized in the CP family or network
variable declaration, because the type is not known and the
initializer cannot be processed. In fact, a CP family declared with a
CPT that provides type inheritance could have different family
members with different types. These types of properties must be
initialized in the properties clause. Properties declared with fixed,
i.e. non-inheriting types can be initialized in either or both places,
with the initializer in the properties clause superseding the one in
the declaration when both are present.
Global property cannot have conflicting initializers
[NCC#473]
When a configuration property is declared using the global keyword,
it is shared among multiple network variables or functional blocks.
A global property that appears in two or more property lists could be
initialized differently in those property lists. This situation is not
permitted.
The implementation-specific member’s name conflicts with
another member [NCC#474]
See the error description for [NCC#467], above.
Debug option set by pragma instead of by command option
[NCC#475]
This warning is provided because the NodeBuilder 3 has userinterface controls for the debug kernel options, but the program is
overriding them. Without this warning, a user of the NodeBuilder 3
might think they turned off use of the debug kernel when, in fact, the
program is still turning these options on.
NodeBuilder Errors Guide 5-59
NCC# Description
476
Codegen option set by pragma instead of by command option
[NCC#476]
This warning is provided because the NodeBuilder 3 has userinterface controls for certain code generation options, such as the
disabling of the compiler's optimizer, but the program is overriding
them. Without this warning, a user of the NodeBuilder 3 might
think they turned off certain compiler features when, in fact, the
program is still turning these options on.
477
Declaration of ‘cp’ or ‘cp_family’ requires use of a CPT
[NCC#477]
A declaration of a configuration parameter must
UCPT type in its declaration. This is required by the L
use a SCPT or
ONMARK
Application Layer Interoperability Guidelines.
478
Declaration of ‘cp’ network variable should use a CPT
referencing an NVT [NCC#478]
When a program is using a standard program ID, all configuration
property network variables should be declared with a SCPT or UCPT
type that is a reference of a network variable type (SNVT or UNVT).
Otherwise, the network variable will appear to a network
management tool to be of "unknown type" rather than "interoperable
type".
479 Network variable type is not a SNVT or UNVT [NCC#479]
When a program is using a standard program ID, all network
variables should be declared with a SNVT or UNVT type. Otherwise,
the network variable will appear to a network management tool to be
of "unknown type" rather than "interoperable type".
480
External resource string not found in any available string
resource file [NCC#480]
The external_resource_name feature in the declaration of a
functional block permits the lookup of a string (in US English) in a
ONMARK Device Resource File, and the compiler will automatically
L
convert this string into its <scope>:<index> reference. This message
indicates that no device resource file applying to this device
contained the string.
481 String constant is too long [NCC#481]
No Neuron C string constant may exceed 65,000 characters.
482
The external name of fblock ‘<fb-name-1>’ is a duplicate of
‘<fb-name-2>’ [NCC#482]
Functional blocks must have unique external names. (All elements
of a functional block array have the same name, but the network
management tool makes these names unique by using the array
index as part of the name.)
5-60 Neuron C Compiler Errors (NCC)
NCC# Description
483
484
485
486
488
The fblock’s FPT attempts to inherit from a standard FPT, but
no standard FPT was found with a matching key [NCC#483]
A user-level FPT may indicate (in the L
ONMARK Device Resource
File that contains it) that it inherits members and properties from a
standard FPT. The inheritance is by key, a 16-bit value associated
with each FPT. Standard FPTs have key values from 0-19999, and
user FPTs that inherit from standard FPTs must have matching
keys. User FPTs that do not inherit should have keys 20000 and
above. This message either indicates a problem with the key used for
FPT inheritance, or it indicates that the standard FPT is missing.
Perhaps the standard file is out of date. The latest standard
L
ONMARK Device Resource Files can be downloaded from the
www.lonmark.org
website.
The FPT used in the fblock inherits from an obsolete FPT
[NCC#484]
The L
ONMARK Device Resource Files permit FPT, NVT, and CPT
definitions to be marked as obsolete. This means that a replacement
FPT, NVT, or CPT is available, and the use of the obsolete item is
discouraged (though it is permitted). In this case, the user FPT is
inheriting from a standard FPT that has been marked as obsolete by
the LONMARK Association. Contact the LONMARK Interoperability
Association for more information on the obsolete FPT, NVT, or CPT.
Cannot inherit type for property from principal NV because
principal NV of FPT is unimplemented [NCC#485]
A configuration property that uses type inheritance from a network
variable can also inherit from a functional block. In this latter case,
the FPT must designate one of its network variables as the principal
network variable. The principal network variable designation is
solely for the purposes of type inheritance. In the case of FPT
inheritance, if the user FPT overrides the standard FPT's principal
network variable, but does not designate one of its own, this leaves
the principal NV as unimplemented. Then, a configuration property
for that functional block, using type inheritance, has nothing to
inherit from.
The fblock uses an FPT that has advanced features and
requires LNS versions 3.2 or later [NCC#486]
FPT inheritance, and FPT records whose members' numbers do not
match the member indices, are not fully supported in LNS prior to
LNS version 3.2.
NV ‘<nv-name>’ is not an fblock member, and is not a ‘cp’, so
the ‘changeable_type’ keyword is ignored [NCC#488]
The only support for changeable-type network variables is through
the LONMARK information for the variables. The only network
variables with L
ONMARK information are members of functional
blocks and configuration property network variables. Put the
network variable in a functional block's member list, or declare it as
a configuration property network variable of the device.
NodeBuilder Errors Guide 5-61
NCC# Description
489
490
491
492
493
494
495
496
497
498
NV ‘<nv-name>’ requires a SCPTnvType property, since it is
changeable-type [NCC#489]
The changeable-type network variable mechanism requires that such
network variables each have a SCPTnvType property. The
SCPTnvMaxLength property is only needed if the network variable
also supports changeable-types of various lengths.
NV ‘<nv_name>’ is an array of changeable-type NVs, so
‘expand_array_info’ is recommended [NCC#490]
A network variable array that is declared as changeable-type should
use the bind_info(expand_array_info) feature so each element of
the variable can have a different type. Otherwise, certain network
variable information is shared amongst the members of the array,
and in that case, all elements of the array must change type
together.
The ‘nv_len’ property must be used with a ‘changeable_type’
NV [NCC#491]
Only network variables that are declared as changeable-type my use
the nv_len property.
The ‘nv_len’ property requires a prior ‘#include <modnvlen.h>’
[NCC#492]
Use of the nv_len property requires the include file shown.
The FPT specifies that the NV member must be ‘polled’
[NCC#493]
The FPT specifies that the NV member use the ‘ackd’ service
type [NCC#494]
The FPT specifies that the NV member use the ‘unackd_rpt’
service type [NCC#495]
The FPT specifies that the NV member use the ‘unackd’ service
type [NCC#496]
The FPT specifies that the NV member use request/response
service type [NCC#497]
The FPT specification of the NV member’s type does not match
the NV [NCC#498]
The FPT record (used in the functional block declaration) may specify
several restrictions on the network variable that implements the
member. The messages above result from compiler validations that
test whether the network variable used in the fblock member list
implements the member as required by the FPT.
5-62 Neuron C Compiler Errors (NCC)
NCC# Description
499
500
501
NV array element used as a property requires an index
[NCC#499]
A functional block declaration may have its properties implemented
using configuration parameters or configuration network variables.
A simple (non-array) functional block requires any configuration
property network variables to be simple NVs, or NV array elements.
These properties can either be simple network variables, or elements
of network variable arrays. In the case of an element of a network
variable array, an index expression must be part of the declaration in
the fb_properties list, to identify the array element to be used.
NV array elements used as properties of an array require a
starting index [NCC#500]
A functional block array declaration may have its properties
implemented using configuration parameters or configuration
property network variable arrays. The network variable arrays may
be larger than the functional block array, and the indices need not be
identical (between the functional block array and the various
network variable arrays). The reference to each array network
variable in the fb_properties list requires a starting index as part
of the declarations in the implements statements, to identify which
th
array element of the network variable corresponds to the 0
array
element of the functional block. The compiler then automatically
distributes the following elements of the network variable arrays to
the following elements of the functional block array.
Non-shared NV used as property of array must itself be an
array [NCC#501]
A functional block array declaration may have its properties
implemented using configuration parameters or configuration
property network variable arrays. The non-shared properties using
network variables must be implemented using network variable
arrays. The network variable arrays may be larger than the
functional block array, and the indices need not be identical (between
the functional block array and the various network variable arrays).
The reference to each array network variable in the fb_properties list
requires a starting index as part of the declarations in the
implements statements, to identify which array element of the
th
network variable corresponds to the 0
array element of the
functional block. The compiler then automatically distributes the
following elements of the network variable arrays to the following
elements of the functional block array.
NodeBuilder Errors Guide 5-63
NCC# Description
502 NV array used as property is too small [NCC#502]
A functional block array declaration may have its properties
implemented using configuration parameters or configuration
property network variable arrays. The network variable arrays may
be larger than the functional block array, but may not be smaller.
The network variable array elements' indices need not start at 0 in
correspondence with the functional block array, but they must be
consecutive. Thus, the network variable array must be large enough
to accommodate the functional block array. For example, consider
the following erroneous declaration:
The functional block array fb has three members, and the network
variable array v has four members. The compiler matches v[1] with
fb[0], v[2] with fb[1], and v[3] with fb[2], and this is fine. However,
the property array starts with defOut[4] matched with fb[0], and
defOut[5] is therefore matched with fb[1] (The array elements
defOut[0], defOut[1], defOut[2], and defOut[3] are not used in this
declaration.) There are not enough elements in the array defOut,
because defOut[6] would be needed for fb[2], but the array's last
member is defOut[5].
503
Global property cannot have conflicting range modification
strings [NCC#503]
A global property may be shared between two or more network
variables, or between two or more functional blocks. The shared
property may have a range-modification specifier assigned in each
property list where it appears, but these range-modification
specifiers are not permitted to conflict.
504
The file for scope ‘<value>’ of the external name reference is
not available [NCC#504]
The external_resource_name feature of the fblock declaration
specifies a <scope>:<index> reference to a string, but when the
compiler attempted to check the validity of the reference by checking
the existence of the string, the applicable resource file for scope
<value> was not available.
505
The string at index ‘<value>’ is not present in the file for scope
‘<value>’ [NCC#505]
The external_resource_name feature of the fblock declaration
specifies a <scope>:<index> reference to a string, but when the
compiler attempted to check the validity of the reference by checking
the existence of the string, the string was not present in the specified
resource file.
5-64 Neuron C Compiler Errors (NCC)
NCC# Description
506
507
508
509
510
511
512
513
514
515
The ‘cp’ network variable is of inheriting type, but no type has
been inherited at this point [NCC#506]
A reference to a configuration property network variable has been
encountered but the configuration property has not yet inherited a
type. The reference in the executable code cannot be compiled,
because the variable does not yet have a type.
The FPT requires that this property be declared as ‘const’
[NCC#507]
The FPT requires that this property be declared as
‘device_specific’ [NCC#508]
The FPT requires that this property be declared as
‘manufacturing_only’ [NCC#509]
The FPT requires that this property be declared as
‘object_disabled’ [NCC#510]
The FPT requires that this property be declared as ‘offline’
[NCC#511]
The FPT requires that this property be declared as
‘reset_required’ [NCC#512]
The FPT record (used in the functional block declaration) may specify
several restrictions on the configuration properties that appear in its
property list. The messages above result from compiler validations
that test whether the configuration property used in the
fb_properties list of the fblock declaration properly implements the
FPT property.
The FPT ‘<FPT-name>’ specifies that the CP member ‘<name>’
is mandatory, but no corresponding property was found
[NCC#513]
Configuration properties of the FPT are each marked as either
mandatory or optional. All mandatory properties must have an
implementation, by appearing in the fb_properties list of the
functional block, or in the nv_properties list of the member NV to
which the property applies.
The FPT’s inherited mandatory CP member ‘<name>’ could
not be implemented because the inherited NV member
‘<name>’ was overridden [NCC#514]
A user FPT has inherited a standard FPT with a mandatory
configuration property applying to a network variable, but the
standard FPT's network variable member is overridden in the user
FPT. The user FPT needs to also override the problematic
configuration property, and either make it optional, or make it apply
to a mandatory member of the user FPT or to another NV member of
the standard FPT that is not overridden.
The FPT’s mandatory CP member ‘<name>’ applies to an
unimplemented NV member ‘<name>’ [NCC#515]
This situation is an error in the FPT record. An FPT should not have
a mandatory property (also known as a CP member), which applies
to a network variable member that is not also mandatory.
NodeBuilder Errors Guide 5-65
NCC# Description
516
517
518
519
520
521
522
The FPT specifies that mandatory CP member ‘<name>’
applies to NV member ‘<name>’, but no corresponding
property was found [NCC#516]
The compiler did not find the mandatory property appearing in the
nv_properties list of the member network variable.
Global property cannot have conflicting initializers from FPT
definitions [NCC#517]
The ‘cp’ network variable is of inheriting type, but no type was
inherited [NCC#518]
At the end of the program compilation, the compiler verifies that all
configuration property network variables have inherited a type (by
being used as the property of a network variable, or as the property
of a functional block with a principal NV). Any configuration
property network variables that have not inherited a type cannot be
allocated space, and the compilation cannot complete successfully.
The ‘changeable_type’ network variable array element
‘<nv-name>[<index>]’ was not used; therefore the type for that
element cannot be changed [NCC#519]
If an element of a network variable array declared as changeabletype is not used, it will have no L
ONMARK information, thus, a
network management tool cannot change its type.
Address constant initializer cannot be used in shortstack
mode, it was ignored [NCC#520]
A program that is used as a Neuron C model file for ShortStack host
development cannot use address constants as initializers.
A configuration property network variable may be shared among
multiple network variables (or among multiple functional blocks).
Some SCPT types are not actual type definitions, and the
configuration properties that use these SCPTs in their declarations
inherit their types from the network variables they apply to. If a
configuration property network variable were to be used as a
property of two or more network variables of different types, there
would be a conflict in the type inheritance. This situation is not
permitted.
SD string supplied exceeds the 1023 character limit after the
‘expand_array_info’ fixup. [NCC#522]
The bind_info(expand_array_info) causes certain fixups to be
applied to the SD strings of network variable array elements to make
each string unique. These alterations (fixups) could increase the
length of the string beyond the 1023 character limit for such strings.
5-66 Neuron C Compiler Errors (NCC)
NCC# Description
525
Cannot have the '#pragma
skip_ram_test_except_on_power_up' because it conflicts with
'#pragma ram_test_off'
You cannot choose both options, since they would be logically
contradictory with each other.
526
Cannot have the '#pragma ram_test_off' because it conflicts
with '#pragma skip_ram_test_except_on_power_up'
You cannot choose both options, since they would be logically
contradictory with each other.
528 The FPT does not permit this property to be an array
Neuron C Version 2.1 introduces configuration properties that are
arrays. In other words, the entire array is treated as a single
property. The FPT resources (SFPT*, UFPT*) designate, for each
property, whether that property may not, may, or must be an array.
This error message indicates that the program attempted to use an
array property for an FPT CP member, but the FPT does not permit
that particular CP member to be an array.
529
The FPT requires that this property be an array of
<count>elements
Neuron C Version 2.1 introduces configuration properties that are
arrays. In other words, the entire array is treated as a single
property. The FPT resources (SFPT*, UFPT*) designate, for each
property, whether that property may not, may, or must be an array.
In the case of properties that must be an array, the FPT can specify a
fixed array bound, or a variable array bound within a range. This
error message indicates that the program attempted to instantiate a
property for an FPT CP member, but the FPT requirement that the
array bound be of a certain fixed size was not met.
530
The FPT requires that this property array have at least
<minimum> elements
Neuron C Version 2.1 introduces configuration properties that are
arrays. In other words, the entire array is treated as a single
property. The FPT resources (SFPT*, UFPT*) designate, for each
property, whether that property may not, may, or must be an array.
In the case of properties that must be an array, the FPT can specify a
fixed array bound, or a variable array bound within a range. This
error message indicates that the program attempted to instantiate a
property for an FPT CP member, but the property does not meet the
minimum array bound requirement of the FPT (the property is too
small).
NodeBuilder Errors Guide 5-67
NCC# Description
531
The FPT requires that this property array have no more than
<maximum> elements
Neuron C Version 2.1 introduces configuration properties that are
arrays. In other words, the entire array is treated as a single
property. The FPT resources (SFPT*, UFPT*) designate, for each
property, whether that property may not, may, or must be an array.
In the case of properties that must be an array, the FPT can specify a
fixed array bound, or a variable array bound within a range. This
error message indicates that the program attempted to instantiate a
property for an FPT CP member, but the property does not meet the
maximum array bound requirement of the FPT (the property is too
large).
532
The expand_array_info option is not compatible with use of
the NV as CP array
Use of a network variable array as an array configuration property
(the entire array is a single property) cannot be used with a network
variable that is declared with the expand_array_info option.
533 The spi I/O object cannot use the 'clockedge(+-)' option
For a spi I/O object, you must use either clockedge(+) or
clockedge(-).
534 The select pin must be IO_7 for the 'spi' device type
If a spi I/O object declaration uses the optional select pin, it must
use IO_7.
535
536
The baud rate specified is not a supported rate for the 'sci'
device type
The sci I/O object supports only a certain predefined set of baud
rates. See the description of the sci I/O object in I/O Objects in the
Neuron C Reference Guide.
The FPT requires that this property be an array of
<minimum>..<maximum> elements
Neuron C Version 2.1 introduces configuration properties that are
arrays. In other words, the entire array is treated as a single
property. The FPT resources (SFPT*, UFPT*) designate, for each
property, whether that property may not, may, or must be an array.
In the case of properties that must be an array, the FPT can specify a
fixed array bound, or a variable array bound within a range. This
error message indicates that the program attempted to instantiate a
property for an FPT CP member, but the property's array bound does
not fall within the required range of the array bound as designated
by the FPT.
5-68 Neuron C Compiler Errors (NCC)
NCC# Description
537
If I/O clock is specified, the pragma must precede the SCI
device declaration
The sci I/O object declaration can (and in most cases does) specify an
initial baud rate. This baud rate is used to construct a register
setting that is dependent on the device's input clock. The #pragma specify_io_clock is used to communicate the input clock value to
the compiler, and it must appear in the program before the
declaration of the I/O object. See I/O Objects in the Neuron C
Reference Guide for more information.
538
The #pragma codegen no_cp_template_compression is
incompatible with #pragma codegen
cp_family_space_optimization selected earlier
You cannot choose both options, since they would be logically
contradictory with each other.
539
The #pragma codegen cp_family_space_optimization is
incompatible with #pragma codegen
no_cp_template_compression selected earlier
You cannot choose both options, since they would be logically
contradictory with each other.
540 I/O object type restricted to pins IO_0 or IO_8
The particular I/O object being declared must either be declared on
IO_0 or IO_8.
541 The output pin is restricted to pins IO_0 through IO_7
The particular I/O object being declared must be declared on one of
the pins IO_0 through IO_7.
542 Timing values for touch I/O object must be in range 1..256
As the message says, if you supply the optional timing values in the
declaration of the touch I/O object, these values must be in the range
of 1 to 256. However, note that a zero value is interpreted as 256, so
to use 256 as a timing value you must actually supply a zero.
543
The SCPTnvType and SCPTmaxNVLength can only apply to
changeable_type NVs
Properties of type SCPTnvType or SCPTmaxNVLength are only
permitted as a property of one or more network variables declared as
changeable_type. See How Devices Communicate Using Network
Variables in the Neuron C Programmers Guide for more information.
NodeBuilder Errors Guide 5-69
NCC# Description
544
545
546
The #pragma system_image_extensions nv_length_override
must precede all uses of the 'nv_len' property
Use of the directive #pragma system_image_extensions
nv_length_override selects use of the user-written extension
function get_nv_length_override() when determining the length of
a network variable. Therefore this pragma must be used to select
this method prior to any attempts to get the length of the network
variable. The pragma must appear in the program before any use of
the nv_len property. See How Devices Communicate Using Network
Variables in the Neuron C Programmers Guide for more information.
Reading the nv_len property within the
get_nv_length_override function is prohibited
The get_nv_length_override() function is provided by the
application programmer when using the system extension option
nv_length_override. This function is also called by the compiler to
evaluate the nv_len property for a network variable. Therefore, the
function may not contain any such references to the nv_len property,
else there would be an endless loop. See How Devices Communicate Using Network Variables in the Neuron C Programmers Guide for
more information.
The #pragma system_image_extensions nv_length_override
must precede the get_nv_length_override function's definition
Use of the directive #pragma system_image_extensions
nv_length_override selects use of the user-written function
get_nv_length_override() when determining the length of a
network variable. Therefore this pragma must be used to select this
method prior to the function definition, so the compiler can properly
recognize the special nature of this function definition. See How
Devices Communicate Using Network Variables in the Neuron C
Programmers Guide for more information.
547 AUTO initializers not implemented
The Neuron C Compiler syntax does not permit use of initializers for
automatic variables in their declaration. (Automatic variables are
variables declared within a function scope, or a nested scope, or
inside the task body associated with a when clause.) Initialize the
variables with separate statements following the declaration of all
automatic variables in a function.
548
The property '<property-name>' cannot be shared by
changeable_type NVs of differing initial types (<NV-name-1>
and <NV-name-2>)
A configuration property of SCPTnvType that is shared by more
than one changeable_type network variable must be shared only
by network variables with the same initial type. The message lists
two network variables that share the property, but have differing
initial types. See How Devices Communicate Using Network Variables in the Neuron C Programmers Guide for more information.
5-70 Neuron C Compiler Errors (NCC)
NCC# Description
549
550
551
The property '<property-name>' cannot be shared by NVs with
different SCPTmaxNVLength properties (<NV-name-1> and
<NV-name-2>)
A configuration property of SCPTnvType type that is shared by
more than one changeable_type network variable must be shared
only by network variables that all have the same property of
SCPTmaxNVLength type, if any of those network variables use a
property of SCPTmaxNVLength type. The message lists two
network variables that share the property, but have differing
SCPTmaxNVLength.
The property '<property-name>' cannot be shared by NVs of
differing types (<NV-name-1> and <NV-name-2>)
A configuration property that inherits its type from the network
variable that it applies to may not be shared by two or more network
variables of different type. The message lists two network variables
that share the property, but have differing types. See Using
Configuration Properties to Configure Device Behavior in the Neuron
C Programmer's Guide for more information.
The property '<property-name>' cannot be shared by NVs with
different SCPTnvType properties (<NV-name-1> and <NVname-2>)"
A configuration property that inherits its type from the network
variable that it applies to may not be shared by two or more network
variables of different type. The message lists two network variables
that share the property, but have differing SCPTnvType properties.
See How Devices Communicate Using Network Variables and Using
Configuration Properties to Configure Device Behavior in the Neuron
C Programmer's Guide for more information.
552 Symbol in preprocessor directive is not defined
The message indicates that the symbol specified as the parameter for
the compiler directive #pragma ignore_notused is not defined.
The directive is ignored after the warning message is displayed.
553
Symbol '<symbol>' in preprocessor directive is not permitted in
this directive
The message indicates that the symbol specified as the parameter for
the compiler directive #pragma ignore_notused cannot be used
with this feature. This restriction applies to symbols that are the
names of macros, typedef names, and names of types from resource
files (SNVT*, SCPT*, UNVT*, UCPT*, SFPT*, and UFPT*).
554 The NVT (Network variable Type) is obsolete
A resource file can optionally designate any of the network variable
types that it contains as being obsolete. This designation indicates
that the network variable type should no longer be used in new
development. This designation does not prevent its use, but it does
display this warning message.
NodeBuilder Errors Guide 5-71
NCC# Description
555 The CPT (Configuration Property Type) is obsolete
A resource file can optionally designate any of the configuration
property types that it contains as being obsolete. This designation
indicates that the configuration property type should no longer be
used in new development. This designation does not prevent its use,
but it does display this warning message.
556 Array size exceeds 65500
A configuration property array may not exceed 65500 bytes in total
size, determined as the product of the element size and the array
bound. This size is of no practical limit, since a Neuron does not
have this much contiguous memory space available for configuration
properties.
557 The CP array construct is not acceptable in ShortStack code
A program that is used as a Neuron C model file for ShortStack host
development cannot use configuration property arrays.
559 Duplicate/repeated cp_info keyword is ignored
A configuration property declaration may optionally contain a
parenthesized list of keywords representing option flags. If one or
more of these keywords is repeated or duplicated, this warning
message is displayed and the repetition or duplication has no other
effect.
5-72 Neuron C Compiler Errors (NCC)
Neuron Exporter
Errors (NEX)
This chapter lists and describes the errors that may be
produced by the Neuron Exporter.
6
NEX# Description
1
Numerical value out of range: <parameter>=<value>
(<min>..<max>) [NEX#1]
Numeric value out of range. See error message for details. A
command was specified correctly, but the parameter value given
was invalid. Make sure to correct your build scripts as appropriate.
2 Invalid record in <file>, line <lineno> [NEX#2]
Invalid record in input file, see error message for details. Contact
LonSupport if the problem persists.
3 Invalid record in <file>, line <line#>: too short [NEX#3]
Invalid record in input file (record too short), see error message for
details. Contact LonSupport if the problem persists.
4 Invalid record in <file>, line <line#>: bad checksum [NEX#4]
Invalid record in input file (bad checksum), see error message for
details. Contact LonSupport if the problem persists.
5 Unable to locate file '<file>' [NEX#5]
Unable to locate input file. See error message for details. You can
attempt to fix this problem by building the target unconditionally,
and by making sure the file does exist prior to invoking the tool.
Contact LonSupport if the problem persists.
6 Unable to allocate memory [NEX#6]
Out of memory. When running in a DOS virtual machine, make
sure to offer sufficient memory. When running in a Win32
environment, this should not occur. Contact LonSupport if the
problem persists.
7 No valid records found in '<file>' [NEX#7]
No valid records in input file, see error message for details. Contact
LonSupport if the problem persists.
8 Unable to access file '<file>' for writing [NEX#8]
Unable to access file for writing. The file could be write-protected,
or locked by another process.
9 Attempt to write to unopened file [NEX#9]
Attempt to write to an unopened file. This is an internal error
condition, please contact LonSupport.
10 Writing to file '<file>' failed [NEX#10]
Writing to file failed. The file could be locked by some other
process, and the file could be write-protected.
11 Attempt to read from an unopened file. [NEX#11]
This is an internal error condition, please contact LonSupport.
12 Reading from file '<file>' (read behind end of file) [NEX#12]
Reading from file failed (read behind end of file). This is an internal
error condition, please contact LonSupport.
6-2 Neuron Exporter Errors (NEX)
NEX# Description
13 Unexpected EOF in file '<file>' at line #<line> [NEX#13]
Unexpected end of file. See error message for details. Attempt fixup with rebuild and contact LonSupport if problem persists.
14 Line # <line> in input file '<file>' is too long [NEX#14]
A record in an input file was longer than expected. See error
message for details. Attempt fix-up with rebuild and contact
LonSupport if problem persists.
15 Line # <line> in input file '<file>' is invalid [NEX#15]
A record in an input file is invalid. See error message for details.
Attempt fix-up with rebuild and contact LonSupport if problem
persists.
16
Line # <line> in input file '<file>', byte count is invalid
[NEX#16]
A record in an input file is invalid due to an incorrect byte count.
See error message for details. Attempt fix-up with rebuild and
contact LonSupport if problem persists.
17
Line # <line> in input file '<file>', checksum is invalid
[NEX#17]
A record in an input file is invalid, bad checksum. See error
message for details. Attempt fix-up with rebuild and contact
LonSupport if problem persists.
18
System image symbol table '<file>' is invalid: symbol
'<symbol>' not defined [NEX#18]
Missing a required symbol from the system image's symbol table.
See error message for details. Does the chosen system image
support the desired memory configuration? Change the firmware
version and image file to the default and perform an unconditional
build. Contact LonSupport if problem persists.
19
Specified transceiver type has invalid clock/bit rate
combination [NEX#19]
Specified transceiver type has invalid clock/bit rate combination.
Make sure your hardware clock rate and transceiver preferences
are correct.
20
Device's input clock is below minimum allowed for channel
[NEX#20]
Device's input clock is below the minimum allowed for the desired
channel. Choose a different transceiver or a faster clock rate.
21 Unable to compute device's comm parameters [NEX#21]
Unable to compute device's communication parameters. Verify
device clock speed and transceiver preferences. Contact
LonSupport if problem persists.
22 Out of memory while creating file '<file>' [NEX#22]
Out of memory when creating an output file. See error message for
failure details.
NodeBuilder Errors Guide 6-3
NEX# Description
23 Cannot find file '<file>' [NEX#23]
Cannot find a required file. Attempt to fix with rebuild and contact
LonSupport if problem persists.
24 Cannot create file '<file>' [NEX#24]
Cannot create a file. Make sure the media is writable and the
destination folder has not been write-protected. Contact
LonSupport if problem persists.
25 Cannot read file '<file>' [NEX#25]
Cannot read from a file. Attempt to fix with rebuild and contact
LonSupport if problem persists.
26 Cannot write file '<file>' [NEX#26]
Cannot write to a file. Make sure the media is writable and the
destination folder has not been write-protected. Contact
LonSupport if problem persists.
27 Unable to copy file '<source>' to '<destination>' [NEX#27]
Unable to copy a file. Make sure the media is writable and the
destination folder has not been write-protected. Contact
LonSupport if problem persists.
28
XIF version is <version>. Can only convert XIF versions 3.0
or later to XFB [NEX#28]
Cannot process the external interface file due to outdated version.
See error message for failure details. Rebuilding unconditionally
should fix this by creating an up-to-date version 4 XIF file. Contact
LonSupport if problem persists.
29
Line <line#> (<line>): Should have <count> fields, but
actually has <count> [NEX#29]
Bad external interface file, field count mismatch. See error
message for failure details. Attempt to fix with rebuild and contact
LonSupport if problem persists.
30
NV '<nvname>', <count> fields expected, <count> found in
NV type info [NEX#30]
Bad external interface file, NV field count mismatch. See error
message for failure details. Attempt to fix with rebuild and contact
LonSupport if problem persists.
31 Transceiver type <id> is invalid [NEX#31]
Invalid transceiver type. Make sure to specify the correct
transceiver when launching the Exporter.
32 Unable to access Standard Xcvr Type file: '<file> [NEX#32]
Unable to access the standard transceiver database file. See error
message for failure details. An updated version of the standard
transceiver database file might be available on the
www.lonmark.org website.
6-4 Neuron Exporter Errors (NEX)
NEX# Description
33 Invalid xcvr type ID specified: '<id>' [NEX#33]
Invalid transceiver type. There is no such transceiver in the
standard transceiver database stdxcvr.xml. An updated version of
that file might be available at the www.lonmark.org
website for
download. Contact LonSupport if problem persists.
34 Unable to access Neuron Type file: '<file>' [NEX#34]
Unable to access the Neuron type database. See error message for
failure details. An updated version of that file might be available
at the www.lonmark.org
website for download. Contact
LonSupport if problem persists.
35 Invalid neuron model ID specified: '<id>' [NEX#35]
Invalid Neuron model specified, there is no such Neuron model
defined in the neuron.xml database. See error message for failure
details.
36 Malformed record '<tag>' in dependency file <file> [NEX#36]
Malformed record in dependency file <file>. See error message for
failure details. Attempt to fix with an unconditional rebuild and
contact LonSupport if problem persists.
37 Unexpected end of dependency file <file> [NEX#37]
Unexpected end of dependency file <file>. Attempt to fix with an
unconditional rebuild and contact LonSupport if problem persists.
38
Missing separator in clause '<tag>', dependency file <file>
[NEX#38]
Missing separator in dependency file <file>. See error message for
failure details. Attempt to fix with an unconditional rebuild and
contact LonSupport if problem persists.
39
Bad section name '<section>' in dependency file <file>
[NEX#39]
Bad section name in dependency file. See error message for failure
details. Attempt to fix with rebuild and contact LonSupport if
problem persists.
Error processing dependency file <file>. See error message for
failure details. Attempt to fix with rebuild and contact LonSupport
if problem persists.
41
Malformed or missing record '<tag>=' in dependency file
<file> [NEX#41]
Malformed or missing record in dependency file <file>. See error
message for failure details. Attempt to fix with rebuild and contact
LonSupport if problem persists.
42
Malformed or missing parameter record '<tag>' in
dependency file <file> [NEX#42]
Malformed or missing parameter record in dependency file <file>.
See error message for failure details. Attempt to fix with clean and
complete rebuild. Contact LonSupport if problem persists.
NodeBuilder Errors Guide 6-5
NEX# Description
43 Can not compute communication port control byte [NEX#43]
Cannot compute communication port control byte. Make sure your
standard transceiver parameter database (stdxcvr.xml) has not
been corrupted. An update might be available at the
www.lonmark.org
website.
44 Unknown reason [NEX#44]
Failure to compute communication parameters, no reason given.
Contact LonSupport if problem persists.
45 Internal error [NEX#45]
Internal error when calculating communication parameters.
Contact LonSupport if problem persists.
46 Invalid data [NEX#46]
Invalid data caused error when calculating communication
parameters. Make sure your standard transceiver database
(stdxcvr.xml) has not been corrupted. An update might be
available at the www.lonmark.orgwebsite. Contact LonSupport if
problem persists.
47
Unable to compute CP configuration for transceiver <xcvr>
[NEX#47]
Unable to compute the CP (Communications Parameters)
configuration. See error message for failure details. Make sure
your standard transceiver database (stdxcvr.xml) has not been
corrupted. An update might be available at the www.lonmark.org
website. Contact LonSupport if problem persists.
48 Unrecognized encoded clock rate value <value> [NEX#48]
Unrecognized clock ID. Currently supported encoded clock ID
values range from 0 (625kHz) to 7 (40MHz).
49
Unable to compute end-of packet wait time for single-ended
or differential mode transceiver <xcvr> with hardware clock
ID <id> [NEX#49]
Unable to compute the end-of packet wait time for a single-ended
or differential mode transceiver. This is most likely caused by a
very fast-running Neuron chip, combined with a slow channel type.
Reduce the clock speed and see if the problem persists.
50
The transceiver's general purpose data record seems
malformed: <gp data> [NEX#50]
The transceiver's general-purpose data record seems malformed.
Make sure your standard transceiver database (stdxcvr.xml) has
not been corrupted. An update might be available at the
www.lonmark.org website. Contact LonSupport if problem
persists.
6-6 Neuron Exporter Errors (NEX)
NEX# Description
51
52
53
54
55
56
The device's clock rate (encoded value <id>) and the
transceiver's communication rate (encoded value <id>)
result in an invalid communication clock divider value. One
of the two input rates must be invalid [NEX#51]
The device's clock rate and the transceiver's communication rate
result in an invalid communication clock divider value. One of the
two input rates must be invalid. See error message for failure
details. Try increasing or lowering the Neuron clock speed. Contact
LonSupport if problem persists.
The transceiver requires a minimum clockrate which is
higher than the device's configured input clock speed
[NEX#52]
The transceiver requires a minimum clock-rate that is higher than
the device's configured input clock speed. This combination cannot
be used, you must choose a higher clock rate or a different
transceiver.
The encoded value for the device's clock input of <id> is not
within the supported range of <min> to <max> [NEX#53]
The encoded value for the device's clock input is not within the
supported range. See error message for failure details.
The encoded value for the channel's minimum clock rate of
<id> is not within the supported range of <min> to <max>
[NEX#54]
The encoded value for the channel's minimum clock rate of <id> is
not within the supported range. See error message for failure
details. Make sure your standard transceiver database
(stdxcvr.xml) has not been corrupted. An update might be
available at the www.lonmark.org website. Contact LonSupport if
problem persists.
Unable to determine preamble length using transceiver
<xcvr> [NEX#55]
Unable to determine the preamble length. See error message for
failure details. Make sure your standard transceiver database
(stdxcvr.xml) has not been corrupted. An update might be
available at the www.lonmark.org website. Contact LonSupport if
problem persists.
Unable to determine packet cycle duration using transceiver
<xcvr> [NEX#56]
Unable to determine the packet cycle duration. See error message
for failure details. Make sure your standard transceiver database
(stdxcvr.xml) has not been corrupted. An update might be
available at the www.lonmark.org website. Contact LonSupport if
problem persists.
NodeBuilder Errors Guide 6-7
NEX# Description
57
Unable to determine beta-2 control value using transceiver
<xcvr> [NEX#57]
Unable to determine the beta-2 control value. See error message
for failure details. Make sure your standard transceiver database
(stdxcvr.xml) has not been corrupted. An update might be
available at the www.lonmark.org website. Contact LonSupport if
problem persists.
58
Unable to determine transmit interpacket padding using
transceiver <xcvr> [NEX#58]
Unable to determine the transmit interpacket padding. See error
message for failure details. Make sure your standard transceiver
database (stdxcvr.xml) has not been corrupted. An update might
be available at the www.lonmark.org website. Contact LonSupport
if problem persists.
59
Unable to determine receive interpacket padding using
transceiver <xcvr> [NEX#59]
Unable to determine the receive interpacket padding See error
message for failure details. Make sure your standard transceiver
database (stdxcvr.xml) has not been corrupted. An update might
be available at the www.lonmark.org website. Contact LonSupport
if problem persists.
60 Unknown command ID <id> [NEX#60]
This is an internal error condition, please contact LonSupport
A file <file> cannot be created because tool <utility> is missing, or
cannot be found on the system search path. Contact LonSupport if
problem persists.
62
Cannot export 'clone domain' and 'no domain' (the two features
are mutually exclusive) [NEX#62]
When exporting an image as configured, this image can be
exported with domain information, without domain information
('no domain'), or into the 'clone domain'. These three scenarios are
mutually exclusive. See the Neuron Chip data book and the
NodeBuilder User's Guide for details about exporting configured
images.
63
The configured image can not be exported authenticated in the
chosen domain configuration [NEX#63]
For an image to be exported authenticated, a domain ID (with a
length of 1, 3, or 6 bytes), and a subnet/node ID (different from 0/0)
must be used unless the firmware supports open media
authentication. See the Neuron Chip data book and the
NodeBuilder User's Guide for details about exporting configured
images.
6-8 Neuron Exporter Errors (NEX)
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.