I've implemented a soft-decoder for DQPSK using the wonderful answers I received here:

How to soft decode DQPSK?

To get the soft-decoder working properly I needed to precode the data I was sending out.  I implemented the precoder mentioned in this paper:

$I_k=\overline{u_k \oplus v_k}*(u_k \oplus I_{k-1})+(u_k \oplus v_k)*(v_k \oplus Q_{k-1})$
$Q_k=\overline{u_k \oplus v_k}*(v_k \oplus Q_{k-1})+(u_k \oplus v_k)*(u_k \oplus I_{k-1})$

I'd like to know why this precoder is necessary -- what does that complicated expression of XORs actually accomplish?  

Here's a table showing what the equation yields.  If "to_encode" is 00, the to_send symbol is the same as the previous ("prev") symbol.  If the "to_encode" is 11, the to_send symbol is the previous symbol xor 11.  What is the meaning in other cases?


to_encode prev  to send
[ 0 0 ] [ 0 0 ] [ 0 0 ]
[ 0 1 ] [ 0 0 ] [ 1 0 ]
[ 1 0 ] [ 0 0 ] [ 0 1 ]
[ 1 1 ] [ 0 0 ] [ 1 1 ]
[ 0 0 ] [ 0 1 ] [ 0 1 ]
[ 0 1 ] [ 0 1 ] [ 0 0 ]
[ 1 0 ] [ 0 1 ] [ 1 1 ]
[ 1 1 ] [ 0 1 ] [ 1 0 ]
[ 0 0 ] [ 1 0 ] [ 1 0 ]
[ 0 1 ] [ 1 0 ] [ 1 1 ]
[ 1 0 ] [ 1 0 ] [ 0 0 ]
[ 1 1 ] [ 1 0 ] [ 0 1 ]
[ 0 0 ] [ 1 1 ] [ 1 1 ]
[ 0 1 ] [ 1 1 ] [ 0 1 ]
[ 1 0 ] [ 1 1 ] [ 1 0 ]
[ 1 1 ] [ 1 1 ] [ 0 0 ]



Question: how to set up wired and wireless to be used by different applications
Answer: Since you're using an Ubuntu desktop, I presume you're managing your connections with NetworkManager.

You will need to do two things:


Edit your Ethernet interface in NetworkManager, choose Routes and then select Use this connection only for resources on its network.
Add static routes here for all of the IP address ranges in use on your corporate network that you need to access. The gateway for these should be your current gateway IP address for the eth0 interface. You can obtain a list of these networks from your network admin staff.




Once you have completed this, all of your traffic will go out via your wireless connection unless it's on one of the networks you specified a static route for.

You will probably need to set up your browser as well, so that it only proxies traffic bound for IP address ranges inside the corporate network. Better yet, use two Firefox profiles: one for the corporate network and one for general Internet usage.

(Part of this answer, and the above image, borrowed from the Ask Ubuntu question Force network-manager to use wireless for an Internet connection.)