Since there is come duplicated code here, we could refactor into e.g. a check_current_rank() function, something like:

```
void check_current_rank(uint32_t old_rank)
{
    if (rank < SuperCoder::rank())
    {
        // Execute callback function if a callback function is set
        if (m_callback_func)
        {
            m_callback_func(SuperCoder::rank());
        }
    }
}
```

This function could then be called by the ``decode_symbol(...)`` functions:

```
/// Invoke rank changed callback
/// @copydoc layer::decode_symbol()
void decode_symbol(const uint8_t *symbol_data, uint32_t symbol_index)
{
    // Rank before decoding
    uint32_t rank = SuperCoder::rank();

    // Decode symbol
    SuperCoder::decode_symbol(symbol_data, symbol_index);

    check_current_rank(rank);
}
```