blob: 0ed91c3c1874401e9df59752dce2340ece8f15c9 [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.bluetooth.map;
// Based on MAP v1.4.2 section 3.1.6.
const MAX_SUBJECT_LENGTH uint16 = 256;
const MAX_SENDER_ADDR_LENGTH uint16 = 256;
const MAX_SENDER_NAME_LENGTH uint16 = 256;
const MAX_FOLDER_LENGTH uint16 = 512;
const CONVERSATION_ID_LENGTH uint8 = 16;
/// Based on x-bt/message, x-bt/MAP-msg-listing v1.1, and MAP-Event-Report NewMessage objects.
/// See MAP v1.4.2 sections 3.1.3 and 3.1.6 for details.
/// Depending on the method used to get the message, not all fields
/// may be populated.
type Message = table {
/// Handle for this message. Locally unique to each
/// Message Server Equipment (MSE).
/// Always present.
1: handle uint64;
/// Summary of the message.
2: subject string:MAX_SUBJECT_LENGTH;
/// Unix timestamp that represents the sending time if it was included
/// in the message, otherwise represents the reception time of the MSE.
3: timestamp int64;
/// Information about the sender.
4: sender Audience;
/// Information about the recipient.
5: recipient Audience;
/// Type of the message.
/// Always present.
6: type MessageType;
/// Content of the message.
7: content string:MAX;
/// Folder where the message is located in.
8: folder string:MAX_FOLDER_LENGTH;
/// Whether or not message is high priority.
/// If this information is missing, it would be set as unknown, not false.
9: priority bool;
/// Whether or not message was read.
/// If this information is missing, it would be set as unknown, not false.
10: read bool;
/// Whether or not meessage has already been sent to the recipient.
/// If this information is missing, it would be set as unknown, not false.
11: sent bool;
/// Whether or not message is protected by a DRM scheme.
12: protected bool;
/// A 128 bit value that uniquely identifies a conversation within a single MAS instance.
13: conversation_id array<uint8, CONVERSATION_ID_LENGTH>;
};
type Audience = table {
/// Addressing information. In the case of emails, it's email address.
/// In the case of an email, this is the sender's email address.
/// In the case of an SMS, this is the sender's phone number.
/// In the case of an MMS, this is the senders email address or phone number.
1: addressing string:MAX_SENDER_ADDR_LENGTH;
/// Display friendly name.
2: name string:MAX_SENDER_NAME_LENGTH;
};
/// Used to represent the type of a particular Message.
/// Also used to present the message types that are supported
/// by a Message Access Server.
type MessageType = strict bits : uint8 {
EMAIL = 0x01;
SMS_GSM = 0x02;
SMS_CDMA = 0x04;
MMS = 0x08;
IM = 0x10;
};
/// Specific error that is returned for Message Access/Message Notification
/// related requests.
type Error = strict enum {
/// A general error occurred that cannot be classified as one of the more specific statuses.
GENERIC = 1;
/// Peer was disconnected.
PEER_DISCONNECTED = 2;
/// Requested object or entity was not found.
NOT_FOUND = 3;
/// Request was not recognized/ill-formatted or contained parameters that
/// were not acceptable to the peer.
BAD_REQUEST = 4;
/// Request was not implemented at the peer.
NOT_IMPLEMENTED = 5;
/// Object to be handled was protected and access was not authorized.
UNAUTHORIZED = 6;
/// Request could not be performed due to some condition at the peer.
UNAVAILABLE = 7;
};