Phone Call Service

Last Updated on : 2024-06-04 09:13:39download

This topic describes the commands for the phone call service.

Incoming call notification (0x71 23 00)

The MCU and the module communicate in a request-response manner. The MCU should respond to an incoming call within three seconds. Otherwise, the call will be hung up.

The module sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0002+N (phone number)
Data 2+N
  • Subcommand: 0x23
  • Control command: 0x00
  • N-byte phone number string
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 00 71 00 0D 23 00 31 35 38 39 30 39 38 36 37 36 37 F2

The MCU returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002
Data 2
  • Subcommand: 0x23
  • Control command: 0x00
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 03 71 00 02 23 00 98

Outgoing calls (0x71 23 01)

The return value can only indicate whether the command of an outgoing call is sent successfully. Whether the call is received depends on the return value of a call status query.

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002+N (phone number)
Data 2+N
  • Subcommand: 0x23
  • Control command: 0x01
  • Phone number string
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 03 71 00 07 23 01 31 30 30 38 36 9D

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0003
Data 3
  • Subcommand: 0x23
  • Control command: 0x01
  • Result:
    • 1: Success.
    • 0: Failure.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 00 71 00 03 23 01 01 98

Answer calls (0x71 23 02)

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002
Data 2
  • Subcommand: 0x23
  • Control command: 0x02
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 03 71 00 02 23 02 9A

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0003
Data 3
  • Subcommand: 0x23
  • Control command: 0x02
  • Result:
    • 1: Success.
    • 0: Failure.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 00 71 00 03 23 02 00 9A

Hang up calls (0x71 23 03)

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002
Data 2
  • Subcommand: 0x23
  • Control command: 0x03
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 03 71 00 02 23 03 9B

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0003
Data 3
  • Subcommand: 0x23
  • Control command: 0x03
  • Result:
    • 1: Success.
    • 0: Failure.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 00 71 00 03 23 03 00 99

Query call status (0x71 23 04)

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002
Data 2
  • Subcommand: 0x23
  • Control command: 0x04
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 03 71 00 02 23 04 9C

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0003
Data 3
  • Subcommand: 0x23
  • Control command: 0x04
  • Result:
    • 0: Dialing.
    • 1: Idle.
    • 2: Call failed.
    • 3: On a call.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 00 71 00 03 23 04 01 9B

Report call status (0x71 23 04)

When the voice call status changes, the module proactively reports the current status to avoid additional memory usage caused by repeated queries.

The module sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0003
Data 3
  • Subcommand: 0x23
  • Control command: 0x04
  • Result:
    • 0: Dialing.
    • 1: Idle.
    • 2: Call failed.
    • 3: On a call.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Example: 55 aa 00 71 00 03 23 04 01 9B

Enable/disable VoLTE (0x72 94)

Enable VoLTE to support voice calls over 4G. When VoLTE is disabled, voice calls fall back to the 2G network. If the SIM card supports voice calls, but the mobile operator does not support 2G, VoLTE must be enabled to support voice calls. If the mobile operator supports both 2G and 4G, you can choose whether to enable VoLTE. VoLTE setting is stored in non-volatile memory.

  • LZxxx-CN series modules support the 4G network only, so VoLTE is enabled by default.
  • LZ211-EAU module supports both 2G and 4G. VoLTE is enabled by default. You can call this function to disable VoLTE as needed.

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x72
Data length 2 0x0002
Data 2
  • Subcommand: 0x94
  • Control commands:
    • 0x01: Enable
    • 0x00: Disable
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x72
Data length 2 0x0002
Data 2
  • Subcommand: 0x94
  • Status:
    • 0x00: Failure.
    • 0x01: Success.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Send DTMF commands (0x72 95)

Dual-tone multi-frequency (DTMF) is used for sending numbers and issuing commands when dialing. When the user enters a command on the keypad during a call, this function sends the signal tone to the voice channel. Note that calling this function when not on a call will fail.

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x72
Data length 2 0x0006
Data 6
  • Data[0]: Subcommand 0x95
  • Data[1]: The type of signal tones.
    • 0: DTMF 0
    • 1: DTMF 1
    • 2: DTMF 2
    • 3: DTMF 3
    • 4: DTMF 4
    • 5: DTMF 5
    • 6: DTMF 6
    • 7: DTMF 7
    • 8: DTMF 8
    • 9: DTMF 9
    • 10: DTMF A
    • 11: DTMF B
    • 12: DTMF C
    • 13: DTMF D
    • 14: DTMF #
    • 15: DTMF *
  • Data[2] to Data[5]: The duration of a signal tone in milliseconds, high byte first.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x72
Data length 2 0x0002
Data 2
  • Subcommand: 0x95
  • Status:
    • 0x00: Failure.
    • 0x01: Success.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Enable listening for DTMF (0x72 99)

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x72
Data length 2 0x0002
Data 2
  • Subcommand: 0x99
  • Control commands:
    • 00: Disable.
    • 01: Enable.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x72
Data length 2 0x0002
Data 2
  • Subcommand: 0x99
  • Result:
    • 0: Failure.
    • 1: Success.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Report DTMF events (0x71 95)

The module sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002
Data 2
  • Data[0]: Subcommand 0x95
  • Data[1]: The type of signal tones.
    • 0: DTMF 0
    • 1: DTMF 1
    • 2: DTMF 2
    • 3: DTMF 3
    • 4: DTMF 4
    • 5: DTMF 5
    • 6: DTMF 6
    • 7: DTMF 7
    • 8: DTMF 8
    • 9: DTMF 9
    • 10: DTMF A
    • 11: DTMF B
    • 12: DTMF C
    • 13: DTMF D
    • 14: DTMF #
    • 15: DTMF *
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

Set or query mic gain for calls (0x71 46)

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002/0x0003
Data 2/3 Subcommand: 0x46
  • The query command:
    Data[1] 0: Query
  • The set command:
    Data[1] 1: Set
    Data[2]: Valid values range from 0 to 30, 0 for mute.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

The module sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0003/0x0004
Data 3/4 Subcommand: 0x46
  • The query command:
    Data[1] 0: Query
    Data[2] 0: Failure. 1: Success.
    Data[3]: Valid values range from 0 to 30, 0 for mute.
  • The set command:
    Data[1] 1: Set
    Data[2] 0: Failure. 1: Success.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.
  • The setting is stored in the flash memory. During a call, the mic gain setting will be automatically applied to the mic driver. If the mic gain is set during a call, the value will be applied instantly.
  • If no gain is set, the module will respond to the query with failure.

Example:

  • The query command: 55 aa 03 71 00 02 46 00 BB

  • The set command: 55 aa 03 71 00 03 46 01 10 CD

Set or query sidetone gain (0x71 47)

This command takes effect on a call.

The MCU sends the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x03
Command 1 0x71
Data length 2 0x0002/0x0003
Data 2/3 Subcommand: 0x47
  • The query command:
    Data[1] 0: Query
  • The set command:
    Data[1] 1: Set
    Data[2]: 0 to 100
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.

The module returns the following data.

Field Bytes Description
Header 2 0x55aa
Version 1 0x00
Command 1 0x71
Data length 2 0x0004/0x0003
Data 4/3 Subcommand: 0x47
  • The query command:
    Data[1]: Select a type.
    Data[1] 0: Query
    Data[2] 0: Failure. 1: Success.
    Data[3]: Valid values range from 0 to 100.
  • The set command:
    Data[1] 1: Set
    Data[2] 0: Failure. 1: Success.
Checksum 1 Start from the header, add up all the bytes, and then divide the sum by 256 to get the remainder.
  • The setting is stored in the flash memory. During a call, the sidetone gain setting will be automatically applied to the driver. If the sidetone gain is set during a call, the value will be applied instantly.
  • If no gain is set, the module will respond to the query with failure.

Example:

  • The query command: 55 aa 03 71 00 02 47 00 BC

  • The set command: 55 aa 03 71 00 03 47 01 05 C3