void RadioReceiveTask::task() { _clearSerialBuffer(); _initialiseDiscoveryState(); // Packet byte packetBuffer[RADIO_PACKET_WITH_RSSI_LENGTH]; uint8_t packetBufferLength = 0; #ifdef RADIO_DEBUG_MODE uint8_t serialRingBufferHWM = 0; #endif _wakeUp(); _currentMessageReceiver = NO_CURRENT_MESSAGE; while (true) { uint8_t availableBytes = RADIO_SERIAL.available(); if (availableBytes > 0) { pinMode(PIN_LED_RXL, OUTPUT); digitalWrite(PIN_LED_RXL, 1); #ifdef RADIO_DEBUG_MODE if (serialRingBufferHWM < availableBytes) { serialRingBufferHWM = availableBytes; debug::log("RadioReceiveTask: serialRingBufferHWM=" + String(serialRingBufferHWM)); } #endif while (availableBytes > 0) { packetBuffer[packetBufferLength] = RADIO_SERIAL.read(); packetBufferLength++; availableBytes--; // Only handle one packet at a time if (packetBufferLength == RADIO_PACKET_WITH_RSSI_LENGTH) { break; // we have enough for one packet } } #ifdef RADIO_DEBUG_MODE_EXTENDED debug::log("RadioReceiveTask: Current buffer:"); debug::logByteArray(packetBuffer, packetBufferLength); #endif packetBufferLength = _parsePacketBuffer(packetBuffer, packetBufferLength); digitalWrite(PIN_LED_RXL, 0); _lastMessageReceived = xTaskGetTickCount(); } else { vTaskDelay(RADIO_NO_DATA_SLEEP_DURATION); } _checkForStateChange(); } }
void RadioTask::task() { // Temporary: Remove me soon! _outgoingPacketBuffer[0] = 0x90; _outgoingPacketBuffer[1] = 0x03; // ping service for (uint8_t i=2; i<RADIO_PACKET_LENGTH; i++) { _outgoingPacketBuffer[i] = i - 2; } _outgoingPacketAvailable = true; // Setup radio communitcation RADIO_SERIAL.begin(RADIO_SERIAL_BAUD); // Setup AT Mode pin pinMode(RADIO_AT_MODE_PIN, OUTPUT); _clearSerialBuffer(); _initialiseDiscoveryState(); // Packet byte packetBuffer[RADIO_PACKET_WITH_RSSI_LENGTH]; uint8_t packetBufferLength = 0; _currentMessageReceiver = NO_CURRENT_MESSAGE; while (true) { uint8_t availableBytes = RADIO_SERIAL.available(); if (availableBytes > 0) { while (availableBytes > 0) { packetBuffer[packetBufferLength] = RADIO_SERIAL.read(); packetBufferLength++; availableBytes--; // Only handle one packet at a time if (packetBufferLength == RADIO_PACKET_WITH_RSSI_LENGTH) { break; // we have enough for one packet } } packetBufferLength = _parsePacketBuffer(packetBuffer, packetBufferLength); _lastMessageReceived = xTaskGetTickCount(); } _checkForStateChange(); } }