This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ATT_ReadReq vs GATT_ReadCharValue

The "TI Vendor Specific HCI Guide" says this:

ATT_ReadReq (Command = 0xFD0A, Event = 0x050A) The Read Request is used request the server to read the value of an attribute and return its value in a Read Response.

GATT_ReadCharValue (0xFD8A) This sub-procedure is used to read a Characteristic Value from a server when the client knows the Characteristic Value Handle. This sub-procedure is complete when either ATT_ReadRsp (with bleProcedureComplete or bleTimeout status) or ATT_ErrorRsp (with SUCCESS status) is received by the calling application task.

Testing the behavior on the sensor tag running stock firmware:

09:35:59.500 --
09:35:59.500 Packet "ATT_ReadReq", Opcode 0xfd0a
09:35:59.500 Parameters:
09:35:59.500 | connectionHandle : 0
09:35:59.500 | handle           : 2
09:35:59.500 --
09:35:59.500 Outgoing Dump:
09:35:59.500     0000: 01 0a fd 04 00 00 02 00                         ........
09:35:59.516 Incoming Dump:
09:35:59.516     0000: 04 ff 06 7f 06 00 0a fd 00                      .........
09:35:59.547 --
09:35:59.547 Packet "HCI_Vendor_Specific_Event", Opcode 0x00ff
09:35:59.562 Parameters:
09:35:59.562 | Event Opcode : 0x067f (CommandStatus)
09:35:59.562 | Status       : 0x00 (SUCCESS)
09:35:59.562 | opCode       : 0xfd0a (ATT_ReadReq)
09:35:59.562 | dataLen      : 0x00
09:35:59.562 --

09:43:33.461 --
09:43:33.461 Packet "GATT_ReadCharValue", Opcode 0xfd8a
09:43:33.461 Parameters:
09:43:33.461 | connectionHandle : 0
09:43:33.461 | handle           : 2
09:43:33.476 --
09:43:33.476 Outgoing Dump:
09:43:33.476     0000: 01 8a fd 04 00 00 02 00                         ........
09:43:33.492 Incoming Dump:
09:43:33.492     0000: 04 ff 06 7f 06 00 8a fd 00                      .........
09:43:33.508 --
09:43:33.508 Packet "HCI_Vendor_Specific_Event", Opcode 0x00ff
09:43:33.523 Parameters:
09:43:33.523 | Event Opcode : 0x067f (CommandStatus)
09:43:33.523 | Status       : 0x00 (SUCCESS)
09:43:33.523 | opCode       : 0xfd8a (GATT_ReadCharValue)
09:43:33.523 | dataLen      : 0x00
09:43:33.523 --
09:43:33.523 Incoming Dump:
09:43:33.523     0000: 04 ff 0b 0b 05 00 00 00 05 02 03 00 00 2a       .............*
09:43:33.555 --
09:43:33.555 Packet "HCI_Vendor_Specific_Event", Opcode 0x00ff
09:43:33.570 Parameters:
09:43:33.570 | Event Opcode     : 0x050b (ATT_ReadRsp)
09:43:33.570 | Status           : 0x00 (SUCCESS)
09:43:33.570 | connectionHandle : 0x0000
09:43:33.570 | pduLen           : 0x05
09:43:33.570 | value            : "02:03:00:00:2A"
09:43:33.570 --

What is the difference between the two? When should one be used versus the other?