[UDP] replace UDP offsets by struct UdpHeader #356
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Replace UDP array indexes by struct UdpHeader
Description
less error prone
decrease code size to flash (save some bytes, see below)
move
ethernet_header()
,ethernet_payload()
,ip_header()
,ip_payload()
.... basic functions to new headerEtherUtils.h
as those function are required from many places. I didn't want to make them "public" by moving them toEtherCard.h
, that's why there is a new headeradapt
htons
tovoid htons(uint16_t &d, const uint16_t v)
. I've not been able to reduce ASM size ofuint16_t htons(const uint16_t v)
, so I've created a new one accepting the returned value as reference and reduce the code size for each call by 6 bytes.Rework of htons
for example (building getDHCPandDNS, using CC_VERSION = 5.4.0 (avr-gcc)):
using
uint16_t htons(const uint16_t v)
generate the following code:
using
void htons(uint16_t &d, const uint16_t v)
generate the following code:
as we can see the following 3 lines doing the bytes swap have disappeared for the same result:
Code size evolution depending on examples
Differences are between revisions 7f42021 and 5ca0418
Negative value: save size
Positive value: increase size