Getting started with Bluetooth Low Energy - 4.3. 속성

목록

Attributes

속성

They are addressable pieces of information that can contain relevant user data (or metadata) about the structure and grouping of the different attributes contained within the server.

이는 서버 내에 포함된 다양한 속성의 구조 및 그룹화에 대한 관련 사용자 데이터 (또는 메타데이터)를 포함할 수 있는 주소 지정 가능한 정보입니다.

Both GATT and ATT can work only with attributes, so for clients and servers to interact, all information must be organized in this form.

GATT와 ATT는 모두 속성으로만 작동할 수 있으므로 클라이언트와 서버가 상호 작용하려면 모든 정보가 이 형식으로 구성되어야 합니다.

Conceptually, attributes are always located on the server and accessed (and potentially modified) by the client.

개념적으로 특성은 항상 서버에 있으며 클라이언트가 액세스 (잠재적으로 수정)합니다.

The specification defines attributes only conceptually, and it does not force the ATT and GATT implementations to use a particular internal storage format or mechanism.

사양은 속성을 개념적으로만 정의하며 ATT 및 GATT 구현이 특정 내부 저장소 형식이나 메커니즘을 사용하도록 강제하지 않습니다.

Because attributes contain both static definitions of invariable nature and also actual user (often sensor) data that is bound to change rapidly with time (as discussed in “Attribute and Data Hierarchy” on page 56), attributes are usually stored in a mixture of nonvolatile memory and RAM.

속성에는 불변 특성의 정적 정의와 시간에 따라 빠르게 변경되는 실제 사용자 (종종 센서) 데이터가 모두 포함되어 있기 때문에 (56페이지의 "속성 및 데이터 계층 구조"에서 설명한 대로) 일반적으로 속성은 비휘발성 메모리와 RAM이 혼합된 형태로 저장됩니다.

Each and every attribute contains information about the attribute itself and then the actual data, in the fields described in the following sections.

각각의 모든 속성에는 다음 섹션에 설명된 필드에 속성 자체에 대한 정보와 실제 데이터에 대한 정보가 포함되어 있습니다.

The attribute handle is a unique 16-bit identifier for each attribute on a particular GATT server.

속성 핸들은 특정 GATT 서버의 각 속성에 대한 고유한 16비트 식별자입니다.

It is the part of each attribute that makes it addressable, and it is guaranteed not to change (with the caveats described in “Attribute Caching” on page 66) between trans‐ actions or, for bonded devices, even across connections.

이는 주소 지정이 가능하도록 만드는 각 속성의 일부이며 트랜잭션 간 또는 결합된 장치의 경우 연결 전체에서도 변경되지 않는 것이 보장됩니다 (66페이지의 "속성 캐싱"에 설명된 주의 사항 사용).

Because value 0x0000 denotes an invalid handle, the amount of handles available to every GATT server is 0xFFFE (65535), although in practice, the number of attributes in a server is typically closer to a few dozen.

값 0x0000은 유효하지 않은 핸들을 나타내기 때문에 모든 GATT 서버에서 사용할 수 있는 핸들의 양은 0xFFFE (65535)이지만 실제로는 서버의 속성 수가 일반적으로 수십 개에 가깝습니다.

Whenever used in the context of attribute handles, the term handle range refers to all attributes with handles contained between two given boundaries.

속성 핸들의 맥락에서 사용될 때마다 핸들 범위라는 용어는 지정된 두 경계 사이에 핸들이 포함된 모든 속성을 나타냅니다.

For example, handle range 0x0100-0x010A would refer to any attribute with a handle between 0x0100 and 0x010A.

예를 들어 핸들 범위 0x0100-0x010A는 0x0100과 0x010A 사이의 핸들이 있는 모든 특성을 나타냅니다.

Within a GATT server, the growing values of handles determine the ordered sequence of attributes that a client can access.

GATT 서버 내에서 증가하는 핸들 값에 따라 클라이언트가 액세스할 수 있는 속성의 순서가 결정됩니다.

But gaps between handles are allowed, so a client cannot rely on a contiguous sequence to guess the location of the next attribute.

그러나 핸들 사이의 간격은 허용되므로 클라이언트는 연속 시퀀스에 의존하여 다음 속성의 위치를 ​​추측할 수 없습니다.

Instead, the client must use the discovery feature (“Service and Characteristic Discovery” on page 69) to obtain the handles of the attributes it is interested in.

대신, 클라이언트는 관심 있는 속성의 핸들을 얻기 위해 검색 기능 (69페이지의 "서비스 및 특성 검색")을 사용해야 합니다.

The attribute type is nothing other than a UUID (see “UUIDs” on page 52).

속성 유형은 다름 아닌 UUID입니다 (52페이지의 "UUID" 참조).

This can be a 16-, 32-, or 128-bit UUID, taking up 2, 4, or 16 bytes, respectively.

이는 16비트, 32비트 또는 128비트 UUID일 수 있으며 각각 2바이트, 4바이트 또는 16바이트를 차지합니다.

The type determines the kind of data present in the value of the attribute, and mechanisms are available to discover attributes based exclusively on their type (see “Service and Characteristic Discovery” on page 69).

유형은 속성 값에 존재하는 데이터의 종류를 결정하며 메커니즘은 해당 유형만을 기반으로 속성을 검색하는 데 사용할 수 있습니다 (69페이지의 "서비스 및 특성 검색" 참조).

Although the attribute type is always a UUID, many kinds of UUIDs can be used to fill in the type.

속성 유형은 항상 UUID이지만 다양한 종류의 UUID를 사용하여 유형을 채울 수 있습니다.

They can be standard UUIDs that determine the layout of the GATT server’s attribute hierarchy (further discussed in “Attribute and Data Hierarchy” on page 56), such as the service or characteristic UUIDs, profile UUIDs that specify the kind of data contained in the attribute, such as Heart Rate Measurement or Temperature, and even proprietary, vendor-specific UUIDs, the meaning of which is assigned by the vendor and depends on the implementation.

이러한 UUID는 GATT 서버의 속성 계층 구조 (56페이지의 "속성 및 데이터 계층 구조"에서 자세히 설명)의 레이아웃을 결정하는 표준 UUID일 수 있으며, 여기에는 서비스 또는 특성 UUID, 심박수 측정 또는 온도와 같이 속성에 포함된 데이터 종류를 지정하는 프로파일 UUID, 심지어 공급업체에서 의미를 지정하고 구현에 따라 달라지는 독점적인 공급업체별 UUID가 있습니다.

Permissions are metadata that specify which ATT operations (see “ATT operations” on page 26) can be executed on each particular attribute and with which specific security requirements.

권한은 각 특정 속성에 대해 실행할 수 있는 ATT 작업 (26페이지의 "ATT 작업" 참조)과 특정 보안 요구 사항을 지정하는 메타데이터입니다.

ATT and GATT define the following permissions:

ATT 및 GATT는 다음 권한을 정의합니다:.

Similar to file permissions, access permissions determine whether the client can read or write (or both) an attribute value(introduced in “Value” on page 55).

파일 권한과 마찬가지로 액세스 권한은 클라이언트가 속성 값 (55페이지의 "값"에서 소개됨)을 읽거나 쓸 수 있는지 (또는 둘 다) 여부를 결정합니다.

Each attribute can have one of the following access permissions:

각 속성은 다음 액세스 권한 중 하나를 가질 수 있습니다:

The attribute can neither be read nor written by a client.

클라이언트는 속성을 읽거나 쓸 수 없습니다.

The attribute can be read by a client.

클라이언트가 특성을 읽을 수 있습니다.

The attribute can be written by a client.

속성은 클라이언트가 작성할 수 있습니다.

The attribute can be both read and written by the client.

이 속성은 클라이언트가 읽고 쓸 수 있습니다.

Determines whether a certain level of encryption is required for this attribute to be accessed by the client. (See “Authentication” on page 45, “Security Modes and Procedures” on page 46, and “Security Modes” on page 45 for more information on authentication and encryption.)

클라이언트가 이 속성에 액세스하려면 특정 수준의 암호화가 필요한지 여부를 결정합니다. (인증 및 암호화에 대한 자세한 내용은 45페이지의 "인증", 46페이지의 "보안 모드 및 절차", 45페이지의 "보안 모드"를 참조하세요).

These are the allowed encryption permissions, as defined by GATT:

다음은 GATT에 의해 정의된 허용된 암호화 권한입니다:

The attribute is accessible on a plain-text, non-encrypted connection.

이 속성은 암호화되지 않은 일반 텍스트 연결을 통해 액세스할 수 있습니다.

The connection must be encrypted to access this attribute, but the encryption keys do not need to be authenticated (although they can be).

이 속성에 액세스하려면 연결을 암호화해야 하지만 암호화 키는 인증할 필요가 없습니다 (인증할 수 있음에도 불구하고).

The connection must be encrypted with an authenticated key to access this attribute.

이 속성에 액세스하려면 인증된 키를 사용하여 연결을 암호화해야 합니다.

Determines whether user permission (also known as authorization, as discussed in “Security Modes and Procedures” on page 46) is required to access this attribute.

이 속성에 액세스하려면 사용자 권한 (46페이지의 "보안 모드 및 절차"에 설명된 권한 부여라고도 함)이 필요한지 여부를 결정합니다.

An attribute can choose only between requiring or not requiring authorization:

속성은 인증 요구 또는 요구하지 않음 중에서만 선택할 수 있습니다:

Access to this attribute does not require authorization.

이 속성에 액세스하려면 인증이 필요하지 않습니다.

Access to this attribute requires authorization.

이 속성에 액세스하려면 승인이 필요합니다.

All permissions are independent from each other and can be freely combined by the server, which stores them in a per-attribute basis.

모든 권한은 서로 독립적이며 서버에 의해 자유롭게 결합될 수 있으며 속성별로 저장됩니다.

The attribute value holds the actual data content of the attribute.

속성 값은 속성의 실제 데이터 내용을 보유합니다.

There are no restrictions on the type of data it can contain (you can imagine it as a non-typed buffer that can be cast to whatever the actual type is, based on the attribute type), although its maximum length is limited to 512 bytes by the specification.

포함할 수 있는 데이터 유형에는 제한이 없습니다 (속성 유형에 따라 실제 유형으로 캐스팅할 수 있는 비형식화 버퍼로 생각할 수 있음). 그러나 사양에 따라 최대 길이는 512바이트로 제한됩니다.

As discussed in “Attribute and Data Hierarchy” on page 56, depending on the attribute type, the value can hold additional information about attributes themselves or actual, useful, user-defined application data.

56페이지의 "속성 및 데이터 계층 구조"에서 설명한 대로 속성 유형에 따라 값은 속성 자체 또는 실제적이고 유용한 사용자 정의 응용 프로그램 데이터에 대한 추가 정보를 보유할 수 있습니다.

This is the part of an attribute that a client can freely access (with the proper permissions permitting) to both read and write.

이는 클라이언트가 읽기 및 쓰기 모두를 위해 (적절한 권한이 허용되는 경우) 자유롭게 액세스할 수 있는 속성의 일부입니다.

All other entities make up the structure of the attribute and cannot be modified or accessed directly by the client (although the client uses the handle and UUID indirectly in most of the exchanges with the server).

다른 모든 엔터티는 속성의 구조를 구성하며 클라이언트가 직접 수정하거나 액세스할 수 없습니다 (다만 클라이언트는 서버와의 대부분의 교환에서 핸들과 UUID를 간접적으로 사용합니다).

You can think of the whole set of attributes contained in a GATT server as a table (such as Table 4-1), with each row representing a single attribute and each column representing the different parts that actually constitute an attribute.

GATT 서버에 포함된 속성의 전체 집합을 표 (예: 표 4-1)로 생각할 수 있습니다. 각 행은 단일 속성을 나타내고 각 열은 실제로 속성을 구성하는 다양한 부분을 나타냅니다.

In this fictitious GATT server, the attributes it contains are represented as rows of a simple table.

이 가상의 GATT 서버에서 포함된 속성은 간단한 테이블의 행으로 표시됩니다.

This particular GATT server happens to host only five attributes (a rather low number when compared to real-world devices).

이 특정 GATT 서버는 5개의 속성만 호스팅합니다 (실제 장치와 비교할 때 다소 낮은 숫자).

Note that, as mentioned earlier in this section, the handles of the different attributes do not need to be immediately consecutive, but the ordinal sequence must progress increasingly, as in this example.

이 섹션의 앞부분에서 언급했듯이 다양한 속성의 핸들은 즉시 연속적일 필요는 없지만 이 예에서처럼 순서 순서는 점점 더 진행되어야 합니다.

The Value column of the table is intended to mirror the high diversity of formats that attribute values can contain in the different GATT-based profiles.

테이블의 값 열은 다양한 GATT 기반 프로필에 속성 값이 포함될 수 있는 매우 다양한 형식을 반영하기 위한 것입니다.

The attributes with handles 0x0201, 0x0202, and 0x031A contain 16-bit integers in their respective value fields.

0x0201, 0x0202 및 0x031A 핸들이 있는 속성은 해당 값 필드에 16비트 정수를 포함합니다.

The attribute with handle 0x0215 contains a UTF-8 string, 0x030C contains a 4- byte buffer, and 0x030D holds an IEEE-754 64-bit floating point number in its value field.

핸들이 0x0215인 특성에는 UTF-8 문자열이 포함되어 있고, 0x030C에는 4바이트 버퍼가 포함되어 있으며, 0x030D에는 해당 값 필드에 IEEE-754 64비트 부동 소수점 숫자가 포함되어 있습니다.