@@ -927,7 +927,8 @@ port_INLINE void activity_ti1ORri1() {
927
927
// sfcontrol
928
928
/**
929
929
minimal slot 0:
930
- only send DIO with possibility of 10 %
930
+ only send DIO with possibility of 10% or
931
+ stop sending DIO if control slot conflict detected
931
932
my control slot:
932
933
when traffic controlled by sf0:
933
934
only allow sixtopres packet to send
@@ -940,7 +941,10 @@ port_INLINE void activity_ti1ORri1() {
940
941
*/
941
942
if (ieee154e_vars .slotOffset == SCHEDULE_MINIMAL_6TISCH_SLOTOFFSET ){
942
943
ieee154e_vars .dataToSend = openqueue_macGetDIOPacket ();
943
- if (ieee154e_vars .dataToSend != NULL && openrandom_get16b ()> 0xffff /10 ){
944
+ if (
945
+ (ieee154e_vars .dataToSend != NULL && openrandom_get16b ()> 0xffff /10 ) ||
946
+ sf0_getControlslotConflictWithParent ()
947
+ ){
944
948
ieee154e_vars .dataToSend = NULL ;
945
949
}
946
950
} else {
@@ -960,7 +964,8 @@ port_INLINE void activity_ti1ORri1() {
960
964
} else {
961
965
if (cellType == CELLTYPE_TXRX && neighbor .type == ADDR_64B ){
962
966
// this is parent control slot
963
- ieee154e_vars .dataToSend = openqueue_macGetPacketCreatedBy (COMPONENT_SIXTOP_RES ,& neighbor );
967
+ // ieee154e_vars.dataToSend = openqueue_macGetPacketCreatedBy(COMPONENT_SIXTOP_RES,&neighbor);
968
+ ieee154e_vars .dataToSend = openqueue_macGetDataPacket (& neighbor );
964
969
} else {
965
970
// all other slots send data packet
966
971
ieee154e_vars .dataToSend = openqueue_macGetDataPacket (& neighbor );
@@ -2498,6 +2503,7 @@ bool isValidEbFormat(OpenQueueEntry_t* pkt, uint16_t* lenIE){
2498
2503
// there is a conflict when using this hashFunction, replace my control slot by neighbor's control slot.
2499
2504
// (same slotoffset and type but with neighbor's ADDR_64B address associated)
2500
2505
schedule_removeActiveSlot (tempSlotoffset ,& temp_neighbor );
2506
+ sf0_setControlslotConflictWithParent (TRUE);
2501
2507
}
2502
2508
2503
2509
schedule_addActiveSlot (
0 commit comments