C7042 RS485 Interface
In the spirit of openness, and to encourage 3rd party development of software that interacts with the C7042 powerbase, Hornby Hobbies Ltd have agreed to make the C7042 interface documentation generally available.
Please be aware that Hornby Hobbies will not support the use of this interface, nor will they endorse any of the subsequntly developed 3rd party products. So feel free to download and make use of the documentation, but also understand that you will be operating on your own. If you are not familiar with both software and hardware components of a RS485 interface, you are well advised to make use of existing products to achieve your objectives.
With all of that said, the documentation is available here.
Amendments to the C7042 SNC protocol
Firmware version 0.82 (and all subsequent versions) introduced an additional byte to the incoming packet identifying if a button had been pressed on the powerbase. This additional byte extends the incoming packet to 15 bytes, with the button status byte at byte 14 (after the timer and before the CRC check). The button status bits are set as follows:
- bit 7 = 1 => reserved for future uses; and b6 = 1 => reserved for future uses.
- bit 5 = 1 => DOWN button released; 0 = DOWN button pressed;
- bit 4 = 1 => LEFT button released; 0 = LEFT button pressed;
- bit 3 = 1 => ENTER button released; 0 = ENTER button pressed;
- bit 2 = 1 => UP button released; 0 = UP button pressed;
- bit 1 = 1 => RIGHT button released; 0 = RIGHT button pressed;
- bit 0 = 1 => START button released; 0 = START button pressed;
Firmware version 1.05 (and all subsequent versions) introduced the support the transmission of AUX data, which can be used by the InCar-Pro decoder. This AUX data takes the form of a single byte for each car, and so the overall packet length remains the same as normal.
In order for the powerbase to recognise that the incoming data is AUX data, the operation (first) byte is adjusted as follows:
- The most significant bit (bit 7) remains an indication of a read error: set (1) for no read error and unset (0) to request a resend.
- The next bit (bit 6) indicates the type of packet being sent: set (1) for a DRIVE packet and unset (0) for an AUX packet.
Each car byte in the AUX data takes the following format:
Size | Data | |
MS Bit | 1 bit | Lights on/off |
1 bit | SP on/off | |
1 bit | RC1 on/off | |
5 bits | reserved, must be $1F |
The C7042 powerbase will retain the last transmitted AUX data and send it out on the track every 30 packets. As a result, there is no need to transmit AUX data over SNC unless it requires changing. The C7042 powerbase will also respond to an AUX packet transmission in the same way as it would to a normal DRIVE packet.
Additional information regarding the InCar-Pro firmware is available at ElectricImages.
Firmware version 1.07 (and all subsequent versions) introduced the ability to ID cars and control powerbase settings. This is achieved in the following ways:
To ID a car you send a standard drive packet (operation byte, bit 6 set) and then make use of the LED status byte in the following way:
- Bit 7=0, Bit 6=0: Bits 5-0 indicate the status of the powerbase LEDs. No other effect. (unchanged)
- Bit 7=0, bit 6=1: Bits 5-0 indicate the car to ID (only one bit should be set). ID Car (changed)
- Bit 7=1, bit 6=0: Bits 5-0 indicate the status of the powerbase LEDs. Start Game timer. (unchanged)
- Bit 7=1, bit 6=1: Bits 5-0 indicate the status of the powerbase LEDs. Stop Game timer. (unchanged)
- Bit 7: 0=Digital, 1=Analog
- Bit 6: 0=AUX track data disabled 1=AUX track data enabled
- Bit 5: retained for future use
- Bit 4: retained for future use
- Bit 3: retained for future use
- Bit 2: retained for future use
- Bit 1: retained for future use
- Bit 0: retained for future use