1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Copyright (c) 2025-2026 (r)evolve - Revolve Team LLC
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! Peat GATT Service Module
//!
//! Provides the GATT service implementation for Peat Protocol BLE communication.
//!
//! ## Service Structure
//!
//! ```text
//! Peat GATT Service (UUID: f47ac10b-58cc-4372-a567-0e02b2c3d479)
//! ├── Node Info (read) - Basic node information
//! ├── Sync State (read/notify) - Current sync status
//! ├── Sync Data (write/indicate) - Sync data transfer
//! ├── Command (write) - Control commands
//! └── Status (read/notify) - Node status updates
//! ```
//!
//! ## Usage
//!
//! ```ignore
//! use peat_btle::gatt::{PeatGattService, PeatCharacteristics};
//! use peat_btle::{NodeId, HierarchyLevel};
//!
//! // Create the GATT service
//! let service = PeatGattService::new(
//! NodeId::new(0x12345678),
//! HierarchyLevel::Platform,
//! 0, // capabilities
//! );
//!
//! // Get characteristic descriptors for registration
//! let chars = service.characteristics();
//!
//! // Handle reads
//! let node_info = service.read_node_info().await;
//!
//! // Handle writes
//! service.write_command(&command_data).await?;
//! ```
//!
//! ## Sync Protocol
//!
//! The sync protocol uses fragmentation for large messages:
//!
//! ```ignore
//! use peat_btle::gatt::SyncProtocol;
//!
//! let mut protocol = SyncProtocol::new();
//! protocol.set_mtu(251); // Use negotiated MTU
//!
//! // Start sync with local sync vector
//! protocol.start_sync(sync_vector);
//!
//! // Send outgoing messages
//! while let Some(msg) = protocol.next_outgoing() {
//! // Write msg.encode() to Sync Data characteristic
//! }
//!
//! // Process incoming messages
//! if let Some((msg_type, payload)) = protocol.process_incoming(&data) {
//! // Handle received message
//! }
//! ```
pub use ;
pub use ;
pub use ;