#AT Commands used by Bluetooth HFP profiles.


# Bluetooth Retrieve Supported Features command
# HFP 1.8 4.35.1
# TODO(fxb/71403) Guarantee this int is 32 bits.
command { AT+BRSF=features: Integer }

# Bluetooth Retrieve Supported Features response
# HFP 1.8 4.35.1
# TODO(fxb/71403) Guarantee this int is 32 bits.
response { +BRSF: features: Integer}

# Standard Indicator Update read command
# HFP 1.8 4.34.2
command { AT+CIND=?}

# Standard Indicator Update test command
# HFP 1.8 4.34.2
command { AT+CIND? }

# Standard Indicator Update response
# HFP 1.8 4.34.2
response { +CIND:
    service: BoolAsInt,
    call: BoolAsInt,
    callsetup: Integer,
    callheld: Integer,
    signal: Integer,
    roam: BoolAsInt,
    battchg: Integer,
}

# Standard List Current Calls command
# HFP 1.8 4.34.2
command { AT+CLCC }

# Standard List Current Calls response
# HFP 1.8 4.34.2
response { +CLCC:
    index: Integer,
    dir: Integer,
    status: Integer,
    mode: Integer,
    mpty: Integer,
    number: String,
    ty: Integer,
}

# Bluetooth Available Codecs command
# HFP 1.8 4.35.1
command { AT+BAC=codecs: List<Integer> }

# Bluetooth HF Indicators
# Bluetooth Assigned Numbers - HF Indicators
# via https://www.bluetooth.com/specifications/assigned-numbers/hands-free-profile/
enum BluetoothHFIndicator {
    EnhancedSafety = 1,
    BatteryLevel = 2,
}

# Bluetooth HF Indicators Feature list command
# HFP 1.8 4.35.1
command { AT+BIND=indicators: List<BluetoothHFIndicator> }

# Bluetooth HF Indicators Feature read command
# HFP 1.8 4.35.1
command { AT+BIND=? }

# Bluetooth HF Indicators Feature read response
# Lists the supported HF indicators.
# HFP 1.8 4.35.1
response BindList { +BIND: (indicators: List<BluetoothHFIndicator>) }

# Bluetooth HF Indicators Feature test command
# HFP 1.8 4.35.1
command { AT+BIND? }

# Bluetooth HF Indicators Feature test response
# Lists the enabled/disabled status of the supported HF indicators.
# HFP 1.8 4.36.1.3
response BindStatus { +BIND:anum:BluetoothHFIndicator,state:BoolAsInt }

# Bluetooth HF Indicator value command
# HFP 1.8 4.36.1.5
command { AT+BIEV=anum:BluetoothHFIndicator,value:Integer}

# Standard Call hold read command.
# HFP 1.8 4.34.2
command { AT+CHLD=? }

# Standard Call hold read response.
# HFP 1.8 4.34.2
response { +CHLD: (commands: List<String>)}

# Standard Event Reporting command
# HFP 1.8 4.34.2
command { AT+CMER=mode: Integer, keyp: Integer, disp: Integer, ind: Integer }

# Standard Noise Cancelling command
# HFP 1.8 4.34.2
command { AT+NREC=nrec:BoolAsInt }

# Standard Set Network Operator Format command
# HFP 1.8 4.34.2
command { AT+COPS=three: Integer, format: NetworkOperatorNameFormat}

# Standard Query Operator Selection read command
# HFP 1.8 4.34.2
command { AT+COPS? }

# Standard Query Operator Selection read response
# HFP 1.8 4.34.2
response { +COPS: format: NetworkOperatorNameFormat, zero: Integer, operator: String}

# The parameter used to determine how the network operator name should be defined.
# This is defined in HFP v1.8, Section 4.8.
# Note: The HFP specification does not provide alternate formats besides the Long
# Alphanumeric format. For the sake of strong type safety and to provide forward-looking
# flexibility, this is represented as an enum with a single variant.
enum NetworkOperatorNameFormat {
    LongAlphanumeric = 0,
}

# Standard Set Extended Error Reporting command
# HFP 1.8 4.34.2
command { AT+CMEE=enable: BoolAsInt }

# Call Waiting Notification Activation
# HFP 1.8 4.34.2
command { AT+CCWA=enable: BoolAsInt }

# Call Line Identification (CLI) Notification
# HFP 1.8 4.34.2
command { AT+CLIP=enable: BoolAsInt }

# Call Line Identification Notification
# HFP 1.8 4.34.2
response { +CLIP: number: String, ty: Integer }

# Subscriber Number Information
# HFP 1.8 4.34.2
command { AT+CNUM }

response { +CNUM:
    alpha: String,
    number: String,
    ty: Integer,
    speed: String,
    service: Integer,
}

# Transmit DTMF Codes
# HFP 1.8 4.34.2
# Code should be a single ascii character 0-9,*,#,A-D
command { AT+VTS=code: String }

# Volume Level Synchronization
# HFP 1.8 4.34.2
command { AT+VGS=level: Integer }
command { AT+VGM=level: Integer }

# Standard indicator events reporting command
# HFP 1.8 4.34.2
response { +CIEV: ind: Integer, value: Integer }

# Indicator activation and deactivation command
# HFP 1.8 4.35
command { AT+BIA=indrep: List<String> }

# Answer
# HFP 1.8 4.34.2
command Answer { ATA }

# Hang Up
# HFP 1.8 4.34.2
command { AT+CHUP }
