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