Telephone 0xc8
→ GT 0x3b
Telephone 0xc8
→ MID 0xc0
Only BMBT (GT) usage is discussed!
0x21
Menu Text: Radio0x21
Menu Text: Cluster0x23
Title Text: Telephone0x24
Property Text: Telephone0x31
Menu Button: Telephone0xa5
Body Text: Telephone
# Telephone: CMT4000
C8 06 3B 21 42 02 20 B4
C8 1E 3B 21 43 01 60 06 43 61 6C 6C 43 6F 6E 6E 65 63 74 06 4D 65 73 73 61 67 65 42 61 6E 6B FF
C8 18 3B 21 43 01 04 06 4D 55 4D 06 59 65 6C 6C 6F 77 50 61 67 65 73 44 69 90
C8 16 3B 21 80 01 60 06 43 61 6C 6C 43 6F 6E 6E 65 63 74 06 4D 55 4D 0C
C8 20 3B 21 80 01 04 06 4D 65 73 73 61 67 65 42 61 6E 6B 06 59 65 6C 6C 6F 77 50 61 67 65 73 44 69 53
Length will vary with String.
Property | Index | Length | Type |
---|---|---|---|
Layout | 0 |
1 |
Bitfield |
Function | 1 |
1 |
Bitfield |
Options | 2 |
1 |
Bitfield |
String | 3 |
-1 |
String |
DIAL = 0x42
DIRECTORY = 0x43
TOP_8 = 0x80
LIST = 0xf0 # SMS: Index, "Bluetooth Pairing"
DETAIL = 0xf1 # SMS: Message, SOS/Emergency
0xf0
and 0xf1
were introduced later in production, and had multiple use cases.
NULL = 0x00
CONTACT = 0x01
DIGIT = 0x02
SOS = 0x05
NAVIGATION = 0x07
INFO = 0x08
Presumably to help differentiate the the function of a given layout and index returned by 0x31
.
INDEX = 0b0001_1111 # Index of field to write to
CLEAR = 0b0010_0000 # Clear layout
BUFFER = 0b0100_0000 # Buffer the write
HIGHLIGHT = 0b1000_0000 # Highlight given field
Each layout has a given number of fields, each of which is represented by a known index.
This might also be thought of as a cursor position from which to start writing. The control character 0x06
will move the cursor to the next index.
Setting this bit will clear the given layout, including the buffer. As such, it's only set on the first message.
Careful omission of this bit allows the updating the rendered display. However, the factory implementation seemingly always writes the display in it's entirity, thus always clearing the display when commencing writing.
As populating a display requires multiple messages, the GT 0x3b
will buffer preliminary messages until the entire display is ready to be rendered.
All but the last message will have this bit set. The absense of the bit in the final messages is what triggers the GT 0x3b
to render the buffer.
The field with the given index will be highlighted.
I've not seen this used in the factory implementation. If omitted, the first, or last selected field (for the given layout) will be highlighted.
Code Point | Name | Description |
---|---|---|
0x00 |
NUL | Null-terminated string |
0x06 |
LF | Line Feed |
Given that several commands are associated with each use case, they're discussed in their own respective documentation.