import Foundation

enum BluetoothRequestType: UInt8 {
    /**
     * Request the number of bytes already recorded
     *
     * Request:
     * - No additional bytes expected
     *
     * Response:
     * - `BluetoothResponseType.success`
     * - the number of recorded bytes as a `Uint16` (2 bytes)
     * - the number of seconds until the next measurement as a `Uint16` (2 bytes)
     * - the number of seconds between measurements as a `Uint16` (2 bytes)
     * - the number of measurements as a `Uint16` (2 bytes)
     * - the maximum number of bytes to request as a `Uint16` (2 bytes)
     * - the number of seconds since power on as a `Uint32` (4 bytes)
     */
    case getInfo = 0

    /**
     * Request recording data
     *
     * Request:
     * - Bytes 1-2: Memory offset (`UInt16`)
     * - Bytes 3-4: Number of bytes (`UInt16`)
     *
     * Response:
     * - `BluetoothResponseType.success`, plus the requested bytes
     * - `BluetoothResponseType.responseTooLarge` if too many bytes are requested
     */
    case getRecordingData = 1

    /**
     * Request deletion of recordings
     *
     * Request:
     * - Bytes 1-2: Number of bytes to clear (uint16_t)
     *
     * Response:
     * - `BluetoothResponseType.success`
     * - `BluetoothResponseType.invalidNumberOfBytesToDelete`, if the number of bytes does not match.
     *   This may happen when a new temperature recording is performed in between calls
     */
    case clearRecordingBuffer = 2
}
