Chat Client model

The Chat Client model is a vendor model that allows communication with other such models, by sending text messages and providing the presence of the model instance. It demonstrates basics of a vendor model implementation. The model doesn’t have a limitation on per-node instantiations of the model, and therefore can be instantiated on each element of the node.

Overview

In this section, you can find more detailed information about the following aspects of the Chat Client:

Composition data structure

The Chat Client model is a vendor model, and therefore in the application, when defining the node composition data, it needs to be declared in the third argument in the BT_MESH_ELEM macro:

static struct bt_mesh_elem elements[] = {
    BT_MESH_ELEM(1,
        BT_MESH_MODEL_LIST(
            BT_MESH_MODEL_CFG_SRV(&cfg_srv),
            BT_MESH_MODEL_HEALTH_SRV(&health_srv, &health_pub)),
        BT_MESH_MODEL_LIST(
            BT_MESH_MODEL_CHAT_CLI(&chat))),
};

Messages

The Chat Client model defines the following messages:

Presence

Used to report the current model presence. When the model periodic publication is configured, the Chat Client model will publish its current presence, regardless of whether it has been changed or not. Presence message has a defined length of 1 byte.

Presence Get

Used to retrieve the current model presence. Upon receiving the Presence Get message, the Chat Client model will send the Presence message with the current model presence stored in the response. The message doesn’t have any payload.

Message

Used to send a non-private text message. The payload consists of the text string terminated by \0. The length of the text string can be configured at the compile-time using BT_MESH_CHAT_CLI_MESSAGE_LENGTH option.

Private Message

Used to send a private text message. When the model receives this message, it replies with the Message Reply. The payload consists of the text string terminated by \0. The length of the text string can be configured at the compile-time using BT_MESH_CHAT_CLI_MESSAGE_LENGTH option.

Message Reply

Used to reply on the received Private Message to confirm the reception. The message doesn’t have any payload.

Configuration

The following configuration parameters are associated with the Chat Client model:

  • BT_MESH_CHAT_CLI_MESSAGE_LENGTH - Max length of the message to be sent over the mesh network.

States

The Chat Client model contains the following states:

Presence: bt_mesh_chat_cli_presence:

The Chat Client model enables a user to set a current presence of the client instantiated on the element of the node. It can have the following values:

  • BT_MESH_CHAT_CLI_PRESENCE_AVAILABLE - The client is available.

  • BT_MESH_CHAT_CLI_PRESENCE_AWAY - The client is away.

  • BT_MESH_CHAT_CLI_PRESENCE_INACTIVE - The client is inactive.

  • BT_MESH_CHAT_CLI_PRESENCE_DO_NOT_DISTURB - The client is in “do not disturb” state.

Extended models

None.

Persistent storage

If CONFIG_BT_SETTINGS is enabled, the Chat Client stores its presence state.