diff --git a/tracker/software/pkt/channels/pktservice.h b/tracker/software/pkt/channels/pktservice.h index 80bb9d6a..525069c1 100644 --- a/tracker/software/pkt/channels/pktservice.h +++ b/tracker/software/pkt/channels/pktservice.h @@ -458,7 +458,7 @@ static inline msg_t pktReceiveDataBufferTimeout(packet_svc_t *handler, * * @api */ -static inline msg_t pktIsBufferValidAX25Frame(pkt_data_object_t *object) { +static inline bool pktIsBufferValidAX25Frame(pkt_data_object_t *object) { chDbgAssert(object != NULL, "no pointer to packet object buffer"); uint16_t frame_size = object->packet_size; return ((object->status & EVT_AFSK_DECODE_DONE) diff --git a/tracker/software/pkt/devices/si446x.c b/tracker/software/pkt/devices/si446x.c index b5a5a64e..d81099e4 100644 --- a/tracker/software/pkt/devices/si446x.c +++ b/tracker/software/pkt/devices/si446x.c @@ -1128,9 +1128,16 @@ void Si446x_mapCallback(pkt_data_object_t *pkt_buff) { #if DUMP_PACKET_TO_SERIAL == TRUE pktDiagnosticOutput(pkt_buff->handler, pkt_buff); #endif - +if(pktIsBufferValidAX25Frame(pkt_buff)) { /* Perform the callback. */ rx_cb(frame_buffer, frame_size); + } else { +#ifdef PKT_IS_TEST_PROJECT + dbgPrintf(DBG_INFO, "RX > Invalid frame - dropped\r\n"); +#else + TRACE_INFO("RX > Invalid frame - dropped"); +#endif + } } void Si446x_startDecoder(radio_freq_t freq, radio_squelch_t sq, void* cb) {