The mapping between SLP_TYP and the state the machine enters isn't defined by the spec. To do this reliably you need to parse the _S*x functions in the ACPI tables and write the values that you receive from there, and strictly you also need to do various other things such as masking appropriate GPEs in order to avoid the machine immediately turning back on.
Re: How about Halt ?