Terrestrial Network Overview

Introduction

The Hubble Terrestrial Network is the name Hubble uses for its network built on Bluetooth® Low Energy (BLE). It is a framework designed to provide secure and efficient communication within a Bluetooth Low Energy (BLE) environment. Advanced encryption techniques and Bluetooth technology protect data integrity and privacy across distributed systems. The Hubble Terrestrial API, definede in the hubble/ble.h header file, provides a comprehensive set of functions for initializing, configuring, and managing network operations.

Note

While this network is called the Hubble Terrestrial Network, the SDK code and APIs use the ble namespace for it. Terrestrial functions, types, and configuration options carry a ble marker — for example the hubble_ble_advertise_get() function, the hubble/ble.h header, and the CONFIG_HUBBLE_BLE_NETWORK option — reflecting the Bluetooth Low Energy technology the network is built on.

Key Features

Secure Communication

The Hubble Terrestrial Network uses a 128 or 256-bit encryption key to safeguard all transmitted data, minimizing the risk of unauthorized access and data breaches. See Cryptographic Overview

Time Synchronization

Functions are available to initialize the network with the current time and update it as needed. This ensures that all nodes remain synchronized, which facilitates coordinated operations and data consistency. See Time Management for best practices on provisioning time and accounting for clock drift.

API Overview

Initialization

Initialize the network with the current Unix time before calling other Hubble Terrestrial API functions. The hubble_init function sets up the required configurations and prepares the network for operation:

int hubble_init(uint64_t initial_time, const void *key);

Time Management

The API provides functions to set and update the Unix time (milliseconds since the Unix epoch). The hubble_time_set function enables precise time synchronization throughout the network:

int hubble_time_set(uint64_t unix_time);

Encryption Key Management

An encryption key secures all network communication. The hubble_key_set function configures this key for ongoing network operations:

int hubble_key_set(const void *key);