Hello Neil,
Ok, I see what misleaded you.
I believe that Example 8 at page 47 of MMA9555L manual is wrong, sorry about that.
Reason is that the MBOX application (APP_ID 0x04) has only configuration registers and no status (or output data) registers, hence you cannot request any status register out of it. That's why the command "0x04 0x30 etc..." returns an error.
This application (together with MBOX config App_ID 0x18) are meant to assign specific Application results into given Mailboxes number (that can be assimilated to sensor registers address). Then those results are directly available by reading associated Mailboxes, without involving the 2 steps command/response protocol:
1/write to APP_ID to query result
2/read appropriate status registers to fetch the output data
Hence the Quick-read in Legacy Mode makes data collection simpler and faster.
For the record, you may also program INT_O to signal the host MCU that new data is ready:
on top of the LEGACY bit-field, set INT_O_EN and INT_O_FRAME_EN to 1, in MBOX config register.
Below is a comparison of the legacy/normal modes, still based on current example (settings are the one I already provided).
I simply halted the device before (command W00 12 20 16 01 01) to froze the AFE data.
IIC WRITE TRANSACTION :: Starting MB = 00
Write : 12 20 06 01 01 // enable sleep mode (STOPNC) in Sleep-Wake Application
Quick-read Mailboxes, legacy mode
IIC READ TRANSACTION :: Starting MB = 1A, No. bytes to read = 6
Read : FF A1 FF A6 10 D7
Standard Command/response transaction, for same data
IIC COMMAND TRANSACTION :: Starting MB = 00, No. bytes to read = 10
Write : 06 30 18 06 // query AFE Stage0_LPF data
Read : 06 80 06 06 FF A1 FF A6 10 D7

Regards, Jacques.