IDC stands for Inter-Device Connection and can be used to send and receive serial data between boards.

KLST_PANDA features two such connectors; one left (00), one right(01) ( see Technical Specifications ):

  • ㉕ :: IDC port ( 6-pin IDC connector ) ( right 01 )
  • ㉛ :: IDC port ( 6-pin IDC connector ) ( left 00 )

( IDC incidentally also uses a Insulation-Displacement Contact )

SerialDevice

void          serial_event(SerialDevice* serial_device)

SerialDevice* serialdevice_create(uint8_t device_type, uint32_t buffer_size, uint32_t baud_rate)
void          serialdevice_delete(SerialDevice* serialdevice)
void          serialdevice_send(const SerialDevice* serialdevice, const uint8_t* data, uint16_t length)

Example IDC

/**
 * this example demonstrates how to use the debugging console to print messages to the serial console.
*/

#include <string>

#include "Arduino.h"
#include "System.h"
#include "Console.h"
#include "SerialDevice.h"

SerialDevice* serial_IDC_00;
SerialDevice* serial_IDC_01;

void setup() {
    system_init();

    serial_IDC_00 = serialdevice_create(SERIAL_DEVICE_TYPE_IDC_00);
    serial_IDC_01 = serialdevice_create(SERIAL_DEVICE_TYPE_IDC_01, 64, 115200);
}

void loop() {
    console_println("...");
    serialdevice_send(serial_IDC_00, (uint8_t*) "Hello from serial_IDC_00", 24 + 1);
    //    const char* message = "Hello from serial_IDC_01";
    const uint8_t message[4] = {54, 55, 56, 57};
    serialdevice_send(serial_IDC_01, (uint8_t*) message, 4);
    delay(1000);
}

void serial_event(SerialDevice* serial_device) {
    console_println("client: serial event ID %i", serial_device->device_id);
    if (serial_device == serial_IDC_00) {
        if (serial_device->data != nullptr && serial_device->length > 0) {
            std::string data = std::string((char*) serial_device->data, serial_device->length);
            console_println("IDC 00 data ( as ASCII ): %s", data.c_str());
            console_print("IDC 00 data ( as HEX )  : ");
            for (int i = 0; i < serial_device->length; ++i) {
                console_print("0x%02X, ", serial_device->data[i]);
            }
            console_println("");
        }
    }
    if (serial_device == serial_IDC_01) {
        console_println("IDC 01 data ( as ASCII ): %s", serial_device->data);
    }
}