void setup()
{

    Serial.begin(115200);
    printf_begin();
    Serial.println(F("\n\n** NeoPixelWirelessClient ** \n\n"));

    Serial.println(F("Reading client configuration...."));
    if( !readClientConfiguration( (client_configuration_t *)&clientConfig) )
    {
        Serial.println(F("** Error reading client configuration\n"));
        clientConfig.version = CLIENT_CONFIG_V10;
        clientConfig.nodeId = 0x01;
        if( !writeClientConfiguration((client_configuration_t *)&clientConfig) )
        {
            Serial.println(F("** Error writing client configuration\n"));
        }
        else
        {
            Serial.println(F("Successfully wrote client configuration\n"));
        }
    }
    else
    {
        Serial.println(F("Successfully Read Configuration:\n"));
    }
    dumpClientConfiguration((client_configuration_t *)&clientConfig);

    // Setup and configure radio
    radio.begin();
    radio.enableAckPayload(); // enable payload ack
    radio.enableDynamicPayloads(); // Ack payloads are dynamic payloads

    setNodeId(clientConfig.nodeId);
//	radio.openWritingPipe(addresses[1]);
//	radio.openReadingPipe(1, addresses[0]);
//	radio.startListening(); // we're the client, so start listening
    radio.writeAckPayload(1, &message_count, sizeof(message_count));
    ++message_count;
    radio.printDetails(); // Dump the configuration of the rf unit for debugging
    delay(50);
    attachInterrupt(0, check_radio, LOW); // Attach interrupt handler to interrupt #0 (using pin 2) on BOTH the sender and receiver

    if (controller.initialize(50, 2) == false)
    {

    }
    else
    {
        controller.fill(CRGB::Black, true);
    }

}
/**
 * Handles interrupts from the radio
 *
 *
 */
void check_radio(void)
{

    bool tx, fail, rx;

    // What happened?
    radio.whatHappened(tx, fail, rx);

    if (tx)
    {
        // Have we successfully transmitted?
        message_good++;
//		printf("Ack Payload:Sent\n\r");
    }

    if (fail)
    {
        // Have we failed to transmit?
        message_fail++;
//		printf("Ack Payload:Failed\n\r");
    }

    // Did we receive a message?
    if (rx || radio.available())
    {

        // get payload and store in buffer; set command flag
        while (radio.available())
        {
            radio.read((void *) commandBuffer, MAX_COMMAND_SIZE);
        }
        radio.writeAckPayload(1, &message_count, sizeof(message_count));
        ++message_count;
        commandAvailable = true;
    }
}