Signed-off-by: Robert Marshall KI4MCW <ki4mcw@gmail.com>
[bertos.git] / bertos / net / ax25.h
index 4eb77f6de0501e6b6c5c84a67a5d1ef3a1dff66a..dd439445465495b37357bff42766af1281bbe39b 100644 (file)
@@ -106,6 +106,11 @@ typedef struct AX25Call
  */
 #define AX25_MAX_RPT 8
 
+/*
+ * Has to be lesser than 8 in order to fit in one byte
+ * change AX25Msg.rpt_flags if you need more repeaters.
+ */
+STATIC_ASSERT(AX25_MAX_RPT <= 8);
 
 /**
  * AX25 Message.
@@ -118,6 +123,8 @@ typedef struct AX25Msg
        #if CONFIG_AX25_RPT_LST
        AX25Call rpt_lst[AX25_MAX_RPT]; ///< List of repeaters
        uint8_t rpt_cnt; ///< Number of repeaters in this message
+       uint8_t rpt_flags; ///< Has-been-repeated flags for each repeater (bit-mapped)
+       #define AX25_REPEATED(msg, idx) ((msg)->rpt_flags & BV(idx))
        #endif
        uint16_t ctrl; ///< AX25 control field
        uint8_t pid;   ///< AX25 PID field
@@ -125,6 +132,7 @@ typedef struct AX25Msg
        size_t len;    ///< Payload length
 } AX25Msg;
 
+
 #define AX25_CTRL_UI      0x03
 #define AX25_PID_NOLAYER3 0xF0