 #endif
 }
 
-#if ROLE == ROLE_SENDER
-byte sendByte(byte val) {
+
+byte sendData(void* val, int numBytes) {
     byte recvByte;
 
+    if (radio.available())
+        Serial.println("Data available before request was sent! This probably means something was not read correctly.");
+
+    Serial.print("Sending data ");
+    for (int i = 0; i < numBytes; i++)
+    {
+        Serial.print(((byte*)val)[i]);
+        Serial.print(" ");
+    }
+    Serial.println();
+
     radio.stopListening();
-    if (radio.write(&val, 1)) {
+    bool writeResult = radio.write(val, numBytes);
+    radio.startListening();
+
+    if (writeResult) {
         if (!radio.available()) {
             Serial.println("Empty recv!");
             return 0;
         }
         else {
             radio.read(&recvByte, 1);
+            radio.writeAckPayload(1, &ackVal, 1);
+
             Serial.print("Received ack byte ");
             Serial.println((int)recvByte);
         }


    triggerButton.poll();
    resetButton.poll();

    // Require a long press to activate
    if (triggerButton.longPress()) {

#endif
byte addresses[][6] = { *(byte*)"1Node", *(byte*)"2Node" };

// TODO: Choose numbers that make sense
const byte triggerVal = 0b11111111;
const byte resetVal = 0b10101010;
const byte heightInitialVal = 0b01010101;
const byte ackVal = 0b11110000;

#if ROLE == ROLE_SENDER
