VSCP Firmware release 1.6


A new VSCP firmware is released as version 1.6.0.

The main difference in this release is that the segment controller check has been removed.  This means that the node control that was present in register 131/0x83  is now replaced by the error counter.  Thus read the current error counter value from this register.  Reset the error counter by writing anything to the register.

With the same segment check removed a node that is moved from one segment to another now must be manually initialized after it has been started up.

Previously one control byte was used to check for initialized EEPROM.  Now this is two bytes. The callbacks for this purpose has therefore been changed.

// setVSCPControlByte

void vscp_setControlByte( uint8_t idx, uint8_t ctrl )
    if ( idx > 1 ) return;
    eeprom_write( VSCP_EEPROM_CONTROL1 + idx, ctrl );

// getVSCPControlByte

uint8_t vscp_getControlByte( uint8_t idx )
    if ( idx > 1 ) return 0;
    return eeprom_read( VSCP_EEPROM_CONTROL1 + idx );

Another callback has been added that do the actual initialization of the EEPROM

// vscp_init_pstorage
void vscp_init_pstorage( void )

An addition is added if you define


which will give access to a method for VSCP standard error reporting

    Send error event (CLASS=508).
    idx can be used to identify the internal part ("submodule") that was the
    origin of the error. Both zone and sub zone are always set to zero.
    @param type This is the VSCP type
    @param idx Index to identify possible sub module. Normally set to zero.
    @return True if event was sent.
uint8_t vscp_sendErrorEvent( uint8_t type, uint8_t idx );

Just remember that over CAN it is no use in reporting communication problems as doing so will most likely make them worse.

Another addition is added if you define


which gives access to a method for standard VSCP logging.

    Send log event (CLASS=509).
    For loging first send Type = 2(0x01) Log Start then logging events and when 
    log is closed send Type = 3 (0x03) Log Stop. To log several things use a 
    unique if for each and open/close each.  
    @param type VSCP logevent type.
    @param id Identifier for the logging channel.
    @param level Loglevel for this log event.
    @param idx index for multiframe log event starting at zero.
    @param pData Log data (Allways 5 bytes).
    @return TRUE if event was sent.
uint8_t vscp_sendLogEvent( uint8_t type, 
                            uint8_t id, 
                            uint8_t level, 
                            uint8_t idx, 
                            uint8_t data );

As always the Paris project and the Kelvin NTC10K project can be used as reference code.

The release is available here.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.