FIELD(n) encoding method takes the next n bits from the
uncompressed header and stores them in a temporary
Field_Value. The NEXT_FIELD encoding method works
similar manner, but rather than taking the bits from the
uncompressed header, it takes them from a labelled field
spotted in the TCP/IP profile, it's possible to encounter
instance of NEXT_FIELD immediately followed by an instance
FIELD(n). In this case the NEXT_FIELD encoding method
considered to "win" - i.e. the Field_Value is taken from
labelled field rather than from the uncompressed header.
see that this is the case from the following
the definition of FIELD(n):
If Field_Value == Null then set Field_Value:= F and
Remaining_Data := Remaining_Data -
So, the FIELD(n) encoding method must first check
the Field_Value temporary variable already contains a field
or not. If it doesn't then the next n bits are extracted
uncompressed header as expected. However, if the
encoding method has been used previously, then
already be set and the FIELD(n) encoding method will be
behaviour is a little clumsy, so why do we need it?
benefit is that we can compress labelled fields using
encoding methods such as STATIC and IRREGULAR,
static // irregular(8).
pointed out, the STATIC and IRREGULAR encoding
methods both call an instance of FIELD(n) to extract
from the uncompressed header. Using the NEXT_FIELD
encoding method we can "override" this default
them to compress a labelled field instead.
can think of a neater way of doing this then please let
I am confused on the definition of FIELD and NEXT_FIELD.
According to ROHC-FN draft, FIELD encoding method extracts an n-bit field
from the uncompressed packet and stores it in a temporary variable. It means
this encoding method operates on the header rather than any
label or temporary varialbe. NEXT_FIELD instead operates on labeled
field. See the example where NEXT_FIELD is used as
static // irregular(8).
The encoding method that follows the next_field is either STATIC or
IRREGULAR, both further using FIELD encoding method via RANGE. It seems
quite difficult to understand we can use FIELD encoding method when a labeled
field is expected to be encoded/decoded. Consider that following
next_field(order)++ we expect to add the labeled field 'order' to the
compressed header, but when we use static or irregular(24), we point to the
uncompressed header and try to shift the 'remaining_data'. But this is not the
action we want to take, is it right?
The new MSN 8: smart spam
protection and 2 months FREE*