Have a look at the Autel MaxiAP200. It reads codes in all modules plus I can confirm it will code keys, injectors and recode ECU's to suit the keys, BCM and immobiliser. They're about $AUD130 on eBay and other online sites and give close to Dealer level capability.
If you think this is for you...