]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS-Plus/Source/FreeRTOS-Plus-UDP/FreeRTOS_DHCP.c
Update TimerDemo.c to test the new vTimerSetTimerID() function.
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-UDP / FreeRTOS_DHCP.c
index e9fe777b592b2d51c4ca293b4cc88ca7321d1f51..06842535e2dd8e16d24845477c5a3fb3f1f0e767 100644 (file)
@@ -630,6 +630,7 @@ static uint8_t *prvCreatePartDHCPMessage( struct freertos_sockaddr *pxAddress, x
 xDHCPMessage_t *pxDHCPMessage;\r
 const size_t xRequiredBufferSize = sizeof( xDHCPMessage_t ) + xOptionsArraySize;\r
 uint8_t *pucUDPPayloadBuffer;\r
+static uint8_t ucUseBroadcastFlag = pdFALSE;\r
 \r
        /* Get a buffer.  This uses a maximum delay, but the delay will be capped\r
        to ipconfigMAX_SEND_BLOCK_TIME_TICKS so the return value still needs to be\r
@@ -649,7 +650,19 @@ uint8_t *pucUDPPayloadBuffer;
        pxDHCPMessage->ucAddressLength = dhcpETHERNET_ADDRESS_LENGTH;\r
        pxDHCPMessage->ulTransactionID = ulTransactionId;\r
        pxDHCPMessage->ulDHCPCookie = dhcpCOOKIE;\r
-       pxDHCPMessage->usFlags = dhcpBROADCAST;\r
+\r
+       /* For maximum possibility of success, alternate between broadcast and non\r
+       broadcast. */\r
+       ucUseBroadcastFlag = !ucUseBroadcastFlag;\r
+       if( ucUseBroadcastFlag == pdTRUE )\r
+       {\r
+               pxDHCPMessage->usFlags = dhcpBROADCAST;\r
+       }\r
+       else\r
+       {\r
+               pxDHCPMessage->usFlags = 0;\r
+       }\r
+\r
        memcpy( ( void * ) &( pxDHCPMessage->ucClientHardwareAddress[ 0 ] ), ( void * ) pxMACAddress, sizeof( xMACAddress_t ) );\r
 \r
        /* Copy in the const part of the options options. */\r