First, that is from Protocol 4.9, which is the oldest active (but still default) protocol. In all later protocols, this is handled differently.
For protocol 4.9, there is an explanation here: http://www.iqfeed.net/dev/api/docs/docs51/Level1UpdateSummaryMessage.cfm
Quote: The character indicates one of the following:
t - A trade update occurred
T - Extended Trade = Any trade that is counted in volume (field 7) but does not set a new open, high, low, or last.
b - A bid update occurred (an ask update may also have occurred)
a - An ask update occurred
o - Some other type of update occurred
For later protocols, the Message Contents field contains the type of trade(s) this message reflects. As of 6.0, the explanation of the codes is:
Quote: Possible single character values include:
C - Last Qualified Trade.
E - Extended Trade = Form T trade.
O - Other Trade = Any trade not accounted for by C or E.
b - A bid update occurred.
a - An ask update occurred.
o - An Open occurred.
h - A High occurred.
l - A Low occurred.
c - A Close occurred.
s - A Settlement occurred.
v - A volume update occurred.
You can get multiple codes in a single message but you will only get one trade identifier per message. It is also possible to receive no codes in a message if the fields that updated were not trade or quote related.