anchor.diff:      {error, queue_overrun};
   decode_packet_data(received_dmx, <<0, S, _/binary>>) when S /= 0 ->
       {error, unknown_start_code};
  -decode_packet_data(get_parameters, <<FwVer:16/little, Break, MarkAfterBreak,
  -                                     Rate, _/binary>>) ->
  +decode_packet_data(T, <<FwVer:16/little, Break, MarkAfterBreak,
  +                        Rate, UserData/binary>>) when T =:= get_parameters;
  +                                                      T =:= get_parameters2 ->
       {ok, #{firmware_version => FwVer,
              break_time => Break,
              mark_after_break_time => MarkAfterBreak,
  -           output_rate => Rate}};
  +           output_rate => Rate,
  +           user_data => UserData}};
   decode_packet_data(get_hw_version, <<Ver>>) ->
       {ok, Ver};
   decode_packet_data(change_of_state, <<Offset, Index:5/binary, Data/binary>>) ->
  
positive.code: 
  -spec get_packet_type(integer()) -> enttec_packet_type() | unknown.
  
  get_packet_type(2)  -> flash_page;
  get_packet_type(3)  -> get_parameters;
  get_packet_type(5)  -> received_dmx;
  get_packet_type(9)  -> change_of_state;
  get_packet_type(10) -> get_serial;
  get_packet_type(14) -> get_hw_version;
  get_packet_type(_)  -> unknown.
  
  -spec put_packet_type(enttec_packet_type()) -> integer() | unknown.
  
  put_packet_type(reprogram_firmware)    -> 1;
  put_packet_type(flash_page)            -> 2;
  put_packet_type(get_parameters)        -> 3;
  put_packet_type(set_parameters)        -> 4;
  put_packet_type(send_dmx)              -> 6;
  put_packet_type(send_rdm)              -> 7;
  put_packet_type(receive_dmx_on_change) -> 8;
  
negative.code: -spec encode_packet_data(enttec_packet_type(), term()) ->
      {ok, binary()} | {error, term()}.
  
  encode_packet_data(T, Data) when T =:= send_dmx; T =:= send_dmx2 ->
      {ok, <<0, Data/binary>>};
  encode_packet_data(assign_ports, {Dunno, Dunno}) ->
      {ok, <<Dunno, Dunno>>};
  