NodeBuilder Errors Guide - Echelon Corporation [PDF]

This permits minor wording changes in the ... Related Manuals. The NodeBuilder User's Guide lists and describes all task

10 downloads 7 Views 674KB Size

Recommend Stories


IzoT NodeBuilder User's Guide
I tried to make sense of the Four Books, until love arrived, and it all became a single syllable. Yunus

Echelon Dallas
Just as there is no loss of basic energy in the universe, so no thought or action is without its effects,

tempest and echelon
I want to sing like the birds sing, not worrying about who hears or what they think. Rumi

Echelon 4 Echelon 5 suite Echelon 6 suite ANGOT Maud LAVECHEF Pauline HENNE Elise
Just as there is no loss of basic energy in the universe, so no thought or action is without its effects,

ZEON CORPORATION [PDF]
Dec 14, 2006 - 10,837. 36. 63,273. 89. 52,115. 60. 11,790. 1. 28. 1,942. 49. 0.2. 49. 22,916. 106. 29,058. 39. 11,257. 38. 57,429. 84. 48,606. 50. 11,472. 2. 29. 1,942. 56. 0.4. 70. 22,415. 109. 27,335. 34. 10,937. 29. 55,629. 69. 70,261. 230. 11,112

Practical Guide to Errors and Error Propagation
I tried to make sense of the Four Books, until love arrived, and it all became a single syllable. Yunus

Echelon Lumewave EMB900 Series Datasheet
There are only two mistakes one can make along the road to truth; not going all the way, and not starting.

MODEL BENEFIT CORPORATION LEGISLATION [PDF]
Jan 13, 2016 - (2) the status of which as a benefit corporation has not been terminated. 84. 85. “Benefit director.” The director designated as the benefit director of a benefit. 86 corporation under section 302. .... prepare an annual benefit re

[PDF] Start Your Own Corporation
The greatest of richness is the richness of the soul. Prophet Muhammad (Peace be upon him)

PdF Download Common Errors in English Usage
Where there is ruin, there is hope for a treasure. Rumi

Idea Transcript


NodeBuilder Errors Guide

®

Revision 2

Corporation 078-0193-01B

Echelon, LNS, LON, LonBuilder, LonTalk, LONWORKS, Neuron, NodeBuilder, 3120, 3150, and the Echelon logo are trademarks of Echelon Corporation registered in the United States and other countries. LONMARK, LonSupport, the LONMARK logo, and ShortStack are trademarks of Echelon 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. Printed in the United States of America. Copyright ©1990-2003 by 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 DEP LCL LWX NCC NEX PMK UCL

iv

Category NodeBuilder Debugger Dependency Checker Comm Parameter Calculator LONWORKS® XML module Neuron® Compiler Neuron Exporter NodeBuilder Project Make Common command line

Chapter Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Chapter 6 Chapter 7 Chapter 8

Preface

Related Manuals 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 LONWORKS application and explains the key concepts of programming in Neuron C through the use of code fragments and examples.

Typographic Conventions for Syntax Type

Used For

Example

boldface type

keywords literal characters

network {

Italic type

abstract elements

identifier

square brackets

optional fields

[bind-info]

vertical bar

a choice between two elements

input | output

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 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 Audience Content Related Manuals Typographic Conventions for Syntax Contents

iii iv iv v v 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

1 NodeBuilder Debugger Errors (DBG) This chapter describes errors that may be produced by the NodeBuilder Debugger.

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 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

NodeBuilder Errors Guide

Maximum number of breakpoints already set [DBG#27]

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.

1-4

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]

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)

2 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.

DEP#

Description

1

An error occurred accessing file : [DEP#1] System error when accessing dependency file, see error message for details provided as .

2

An error occurred when processing dependency information: [DEP#2] System error not related to file I/O, see error message for details provided in .

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 '' in dependency file [DEP#4] Malformed dependency file. Has it been edited? Attempt correction by performing an unconditional build.

5

file can't be referenced in dependency file (might cause build status calculation to become incorrect). () [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 provided in the message for failure details.

6

missing separator in clause '' [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 is unsuitable for 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)

3 Comm Parameter Calculator Errors (LCL) This chapter lists and describes errors that may be produced by the communication parameter calculator.

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 [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: [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 ) and the transceiver's communication rate (encoded value ) 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 using transceiver [LCL#5] The aspect described as 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

The encoded value for the device's clock input of is not within the supported range of to [LCL#7] An invalid encoded clock value has been used to describe the hardware clock speed. See LCL#2.

8

The encoded value for the channel's minimum clock rate of is not within the supported range of to [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.

9

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

4 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.

LWX#

Description

101

Unexpected non-numeric value found in XML data [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.



Warning errors 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. /* /* */ 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 app_buf_in_size app_buf_out_priority_count app_buf_out_count app_buf_in_count disable_snvt_si enable_sd_nv_names net_buf_out_size net_buf_in_size net_buf_out_priority_count net_buf_out_count net_buf_in_count num_addr_table_entries num_alias_table_entries num_domain_entries one_domain receive_trans_count set_id_string set_netvar_count set_node_sd_string set_std_prog_id snvt_si_eecode snvt_si_ramcode

16

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

Not enough address table entries [NCC#23] (See NCC#24)

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 .

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.

116

I/O object requires ‘sync’ pin specification [NCC#116] 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.

119

I/O object requires ‘select’ pin specification [NCC#119] 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]

126

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. 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 [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 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]

162

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. 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.

168

Const variables require initialization [NCC#168] 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. EXAMPLE: 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 Chip's stack machine architecture does not permit calling undeclared 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; 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.

183

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; { } Use only new-style ANSI C function declaration syntax: void f(int a, int b) { } or old-style (traditional) C function declaration syntax: void f(a,b) int a; int b; { } 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; { }

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) { }

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 Chip's stack machine architecture does not permit calling undeclared 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 07). 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]

216

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. 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 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]

239

240

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. 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. 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: goto LABEL; //deleted by optimizer LABEL: 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: break; case 1: break; case 2: 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

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. } }

249 250

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

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)

252

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.

253

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.

254

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.

255

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

263

264

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. 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. 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.

273

Procedure code generation label resources exhausted [NCC#273] 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 ‘’ [NCC#291] A binary constant begins with 0b and is followed by one or more binary digits, (i.e. the digits 0 or 1).

292

Incomplete hexadecimal constant ‘’ [NCC#292] 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 ‘’ [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: ‘’ [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 ‘’ 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 file: ‘’ [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 ‘’) 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.

299

Unsupported preprocessor directive: ‘’ [NCC#299] 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 >> >

Smile Life

When life gives you a hundred reasons to cry, show life that you have a thousand reasons to smile

Get in touch

© Copyright 2015 - 2024 PDFFOX.COM - All rights reserved.