This guide explains how to implement the Heartbeat procedure as defined in WINNF-TS-0016.
The Heartbeat is the ongoing "keep-alive" mechanism that maintains an active Grant. It allows the SAS to:
Heartbeats must be sent regularly (typically every 60 seconds, but follow SAS-specified heartbeatInterval).
Failure to heartbeat results in Grant termination.
grantIdRequired Parameters
| Parameter | Data Type | Description |
|---|---|---|
| cbsdId | string | From registration |
| grantId | string | From GrantResponse |
| grantRenew | boolean | true to request renewal (usually always true) |
| operationState | string | "GRANTED" initially; later "AUTHORIZED" once transmitting |
Optional but Recommended
| Parameter | Description |
|---|---|
| measReport | Include measurements if configured by SAS |
| transmitExpireTime | UTC timestamp when current transmission period ends (if transmitting) |
Example JSON (first heartbeat after grant)
{
"heartbeatRequest": [
{
"cbsdId": "SAS123/CBSD-001",
"grantId": "GRANT-789",
"grantRenew": true,
"operationState": "GRANTED",
"measReport": {
"rcvdPowerMeasReports": [
{
"measFrequency": 3620000000,
"measBandwidth": 10000000,
"measRcvdPower": -55.3
}
]
}
}
]
}
Example JSON (ongoing heartbeat while transmitting)
{
"heartbeatRequest": [
{
"cbsdId": "SAS123/CBSD-001",
"grantId": "GRANT-789",
"grantRenew": true,
"operationState": "AUTHORIZED",
"transmitExpireTime": "2026-01-07T14:30:00Z"
}
]
}
heartbeatInterval)Tip: Start a timer immediately after receiving a successful response. Send the next heartbeat before the interval expires (e.g., 5-10 seconds early as safety margin).
Key Parameters
| Parameter | Description |
|---|---|
| transmitExpireTime | UTC time until which transmission is authorized (must stop after this) |
| heartbeatInterval | Seconds until next heartbeat required |
| operationParam | Updated parameters if SAS reduces power/range |
| response | responseCode and responseMessage |
Critical responseCode Values
| Code | Meaning | Action Required |
|---|---|---|
| 0 | SUCCESS | Continue/restart heartbeat timer; transmit if authorized |
| 500 | SUSPENDED_GRANT | Stop transmitting immediately; wait for resumption |
| 501 | TERMINATED_GRANT | Stop transmitting; relinquish grant |
| 502 | UNSYNC_OP_PARAM | Update to new operationParam and acknowledge |
Example Successful Response
{
"heartbeatResponse": [
{
"cbsdId": "SAS123/CBSD-001",
"grantId": "GRANT-789",
"transmitExpireTime": "2026-01-07T15:00:00Z",
"heartbeatInterval": 60,
"response": {
"responseCode": 0,
"responseMessage": "Success"
}
}
]
}
| Issue | Likely Cause | Solution |
|---|---|---|
| TERMINATED_GRANT (501) | DPA activation or interference | Relinquish; request new grant on different channel |
| Missed heartbeat deadline | Network latency or CBSD crash | Implement watchdog timer; quick recovery on boot |
| SUSPENDED_GRANT (500) | Temporary protection event | Pause TX; continue heartbeats until resumed |
| Reduced maxEirp in response | Aggregate interference rise | Adjust radio power downward immediately |
Pages