System (system)#

Commands and events in this class can be used to access and query the local device.

system commands#

system_data_buffer_clear#

Remove all data from the system data buffer.

C API#

/* Function */  
struct gecko_msg_system_data_buffer_clear_rsp_t *gecko_cmd_system_data_buffer_clear();  
  
/* Response id */  
gecko_rsp_system_data_buffer_clear_id  
  
/* Response structure */  
struct gecko_msg_system_data_buffer_clear_rsp_t  
{  
  uint16 result;  
}  

Command does not have parameters (for BGAPI headers refer to#

link)

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_data_buffer_write#

Write data into the system data buffer. Data will be appended to the end of existing data.

C API#

/* Function */  
struct gecko_msg_system_data_buffer_write_rsp_t *gecko_cmd_system_data_buffer_write(uint8 data_len, const uint8 *data_data);  
  
/* Response id */  
gecko_rsp_system_data_buffer_write_id  
  
/* Response structure */  
struct gecko_msg_system_data_buffer_write_rsp_t  
{  
  uint16 result;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint8

data_len

Array length.

uint8array

data_data

Data to write

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_get_bt_address#

Read the Bluetooth public address used by the device.

C API#

/* Function */  
struct gecko_msg_system_get_bt_address_rsp_t *gecko_cmd_system_get_bt_address();  
  
/* Response id */  
gecko_rsp_system_get_bt_address_id  
  
/* Response structure */  
struct gecko_msg_system_get_bt_address_rsp_t  
{  
  bd_addr address;  
}  

Command does not have parameters (for BGAPI headers refer to#

link)

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

bd_addr

address

Bluetooth public address in little endian format

system_get_counters#

Get packet and error counters. Passing a non-zero value also resets counters.

C API#

/* Function */  
struct gecko_msg_system_get_counters_rsp_t *gecko_cmd_system_get_counters(uint8 reset);  
  
/* Response id */  
gecko_rsp_system_get_counters_id  
  
/* Response structure */  
struct gecko_msg_system_get_counters_rsp_t  
{  
  uint16 result;  
  uint16 tx_packets;  
  uint16 rx_packets;  
  uint16 crc_errors;  
  uint16 failures;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint8

reset

Reset counters if the parameter value is not zero.

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes
uint16 | tx_packets | The number of successfully transmitted packets
uint16 | rx_packets | The number of successfully received packets
uint16 | crc_errors | The number of received packets with CRC errors
uint16 | failures | The number of radio failures, such as aborted TX/RX packets, scheduling failures, and so on.

system_get_random_data#

Get random data up to 16 bytes.

C API#

/* Function */  
struct gecko_msg_system_get_random_data_rsp_t *gecko_cmd_system_get_random_data(uint8 length);  
  
/* Response id */  
gecko_rsp_system_get_random_data_id  
  
/* Response structure */  
struct gecko_msg_system_get_random_data_rsp_t  
{  
  uint16 result;  
  uint8array data;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint8

length

Length of random data. Maximum length is 16 bytes.

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes
uint8array | data | Random data

system_halt#

Force radio to idle state and allow device to sleep. Advertising, scanning, connections, and software timers are halted by this command. Halted operations resume after calling this command with parameter 0. Connections stay alive if system is resumed before connection supervision timeout.

Use this command only for a short time period (a few seconds at maximum). Although it halts Bluetooth activity, all tasks and operations still exist inside the stack with their own concepts of time. Halting the system for a long time period may have negative consequences on stack's internal states.

NOTE: The software timer is also halted. Hardware interrupts are the only way to wake up from energy mode 2 when the system is halted.

C API#

/* Function */  
struct gecko_msg_system_halt_rsp_t *gecko_cmd_system_halt(uint8 halt);  
  
/* Response id */  
gecko_rsp_system_halt_id  
  
/* Response structure */  
struct gecko_msg_system_halt_rsp_t  
{  
  uint16 result;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint8

halt

Values:

  • 1: halt

  • 0: resume

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_hello#

Verify whether the communication between the host and the device is functional.

C API#

/* Function */  
struct gecko_msg_system_hello_rsp_t *gecko_cmd_system_hello();  
  
/* Response id */  
gecko_rsp_system_hello_id  
  
/* Response structure */  
struct gecko_msg_system_hello_rsp_t  
{  
  uint16 result;  
}  

Command does not have parameters (for BGAPI headers refer to#

link)

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_linklayer_configure#

Send configuration data to the link layer. This command fine tunes low-level Bluetooth operations.

C API#

/* Function */  
struct gecko_msg_system_linklayer_configure_rsp_t *gecko_cmd_system_linklayer_configure(uint8 key, uint8 data_len, const uint8 *data_data);  
  
/* Response id */  
gecko_rsp_system_linklayer_configure_id  
  
/* Response structure */  
struct gecko_msg_system_linklayer_configure_rsp_t  
{  
  uint16 result;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint8

key

Key to configure

uint8

data_len

Array length.

uint8array

data_data

Configuration data. Length and contents of the data

field depend on the key value used.

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_reset#

Reset the system. The command does not have a response but it triggers one of the boot events (normal reset or boot to DFU mode) depending on the selected boot mode.

C API#

/* Function */  
void *gecko_cmd_system_reset(uint8 dfu);  
  
/* Command does not have response */  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint8

dfu

Boot mode:

  • 0: Normal reset

  • 1: Boot to UART DFU mode

  • 2: Boot to OTA DFU mode

Command does not have response (for BGAPI headers refer to [link)](bgapi-#

headers)

Events generated#

Event

Description

system_boot

Sent after the device has booted in normal mode.

dfu_boot

Sent after the device has booted in UART DFU mode.

system_set_bt_address#

Deprecated and replaced by system_set_identity_address command.

Set the Bluetooth public address used by the device. A valid address set with this command overrides the default Bluetooth public address programmed at production and is effective in the next system reboot. The stack treats 00:00:00:00:00:00 and ff:ff:ff:ff:ff:ff as invalid addresses. As a result, passing one of them into this command will cause the stack to use the default address in the next system reboot.

C API#

/* Function */  
struct gecko_msg_system_set_bt_address_rsp_t *gecko_cmd_system_set_bt_address(bd_addr address);  
  
/* Response id */  
gecko_rsp_system_set_bt_address_id  
  
/* Response structure */  
struct gecko_msg_system_set_bt_address_rsp_t  
{  
  uint16 result;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

bd_addr

address

Bluetooth public address in little endian format

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_set_device_name#

Set the device name which will be used during the OTA update. The name will be stored in the persistent store. If the OTA device name is also set in the stack configuration, the name stored in the persistent store is overwritten by the name in the stack configuration during the device boot.

C API#

/* Function */  
struct gecko_msg_system_set_device_name_rsp_t *gecko_cmd_system_set_device_name(uint8 type, uint8 name_len, const uint8 *name_data);  
  
/* Response id */  
gecko_rsp_system_set_device_name_id  
  
/* Response structure */  
struct gecko_msg_system_set_device_name_rsp_t  
{  
  uint16 result;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint8

type

Device name to set. Values:

  • 0: OTA device name

uint8 | name_len | Array length.
uint8array | name_data | Device name

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_set_identity_address#

Set the device's Bluetooth identity address. The address can be a public device address or a static device address. A valid address set with this command will be written into persistent storage using PS keys. The stack returns an error if the static device address does not conform to the Bluetooth specification.

The new address will be effective in the next system reboot. The stack will use the address in the PS keys when present. Otherwise, it uses the default Bluetooth public device address which is programmed at production.

The stack treats 00:00:00:00:00:00 and ff:ff:ff:ff:ff:ff as invalid addresses. Therefore, passing one of them into this command will cause the stack to delete the PS keys and use the default address in the next system reboot.

Note: Because the PS keys are located in flash and flash wearing can occur, avoid calling this command regularly.

C API#

/* Function */  
struct gecko_msg_system_set_identity_address_rsp_t *gecko_cmd_system_set_identity_address(bd_addr address, uint8 type);  
  
/* Response id */  
gecko_rsp_system_set_identity_address_id  
  
/* Response structure */  
struct gecko_msg_system_set_identity_address_rsp_t  
{  
  uint16 result;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

bd_addr

address

Bluetooth identity address in little endian format

uint8

type

Address type

  • 0: Public device address

  • 1: Static device address

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

result

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_set_tx_power#

Set the global maximum TX power for Bluetooth. The returned value is the selected maximum output power level after applying the RF path compensation. If the GATT server contains a TX power service, the TX Power Level attribute will be updated accordingly.

The selected power level may be less than the specified value if the device does not meet the power requirements. For Bluetooth connections, the maximum TX power is limited to 10 dBm if Adaptive Frequency Hopping (AFH) is not enabled.

By default, the global maximum TX power value is 8 dBm.

NOTE: Do not use this command while advertising, scanning, or during connection.

C API#

/* Function */  
struct gecko_msg_system_set_tx_power_rsp_t *gecko_cmd_system_set_tx_power(int16 power);  
  
/* Response id */  
gecko_rsp_system_set_tx_power_id  
  
/* Response structure */  
struct gecko_msg_system_set_tx_power_rsp_t  
{  
  int16 set_power;  
}  

Command Parameters (for BGAPI headers refer to link)#

Type

Name

Description

int16

power

TX power in 0.1 dBm steps. For example, the value of 10 is 1

dBm and 55 is 5.5 dBm.

Response Parameters (for BGAPI headers refer to link)#

Type

Name

Description

int16

set_power

The selected maximum power level

system events#

system_boot#

Indicates that the device has started and the radio is ready. This event carries the firmware build number and other software and hardware identification codes.

C API#

/* event id*/  
gecko_evt_system_boot_id  
  
/* event structure*/  
struct gecko_msg_system_boot_evt_t  
{  
  uint16 major;  
  uint16 minor;  
  uint16 patch;  
  uint16 build;  
  uint32 bootloader;  
  uint16 hw;  
  uint32 hash;  
}  

Event Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

major

Major release version

uint16

minor

Minor release version

uint16

patch

Patch release number

uint16

build

Build number

uint32

bootloader

Bootloader version

uint16

hw

Hardware type

uint32

hash

Version hash

system_external_signal#

Indicates that the external signals have been received. External signals are generated from the native application.

C API#

/* event id*/  
gecko_evt_system_external_signal_id  
  
/* event structure*/  
struct gecko_msg_system_external_signal_evt_t  
{  
  uint32 extsignals;  
}  

Event Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint32

extsignals

Bitmask of external signals received since last event.

system_awake#

Indicates that the device is awake and no longer in sleep mode.

NOTE: Stack does not generate this event by itself because sleep and wakeup are managed by applications. If this event is needed, call function gecko_send_system_awake(), which signals the stack to send this event.

C API#

/* event id*/  
gecko_evt_system_awake_id  
  
/* event structure*/  
struct gecko_msg_system_awake_evt_t  
{  
}  

Event does not have parameters (for BGAPI headers refer to [link)](bgapi-#

headers)

system_hardware_error#

Indicates that a hardware-related error has occurred.

C API#

/* event id*/  
gecko_evt_system_hardware_error_id  
  
/* event structure*/  
struct gecko_msg_system_hardware_error_evt_t  
{  
  uint16 status;  
}  

Event Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

status

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes

system_error#

Indicates that an error has occurred. See error codes table for more information.

C API#

/* event id*/  
gecko_evt_system_error_id  
  
/* event structure*/  
struct gecko_msg_system_error_evt_t  
{  
  uint16 reason;  
  uint8array data;  
}  

Event Parameters (for BGAPI headers refer to link)#

Type

Name

Description

uint16

reason

Result code

  • 0: success

  • Non-zero: an error has occurred

For other values see Error codes
uint8array | data | Data related to the error; this field can be empty.

system enumerations#

system_linklayer_config_key#

These Keys are used to configure Link Layer Operation

Enumerations#

Value

Name

Description

1

system_linklayer_config_key_halt

Same as system_halt command, value-0

Stop Radio 1- Start Radio

2

system_linklayer_config_key_priority_range

Sets the RAIL

priority_mapping offset field of the link layer priority configuration

structure to the first byte of the value field.

3

system_linklayer_config_key_scan_channels

Sets channels to scan on. The

first byte of the value is the channel map. 0x1 = Channel 37, 0x2 = Channel

38, 0x4 = Channel 39

4

system_linklayer_config_key_set_flags

Sets the link layer configuration

flags. The value is a little endian 32-bit integer. Flag Values:

  • 0x00000001 - Disable Feature Exchange when slave

  • 0x00000002 - Disable Feature Exchange when master

5 | system_linklayer_config_key_clr_flags | Value is flags to clear. Flags are the same as in SET_FLAGS command.
7 | system_linklayer_config_key_set_afh_interval | Set afh_scan_interval field of Link Layer priority configuration structure.
9 | system_linklayer_config_key_set_priority_table | Value contains priority table to be copied over the existing table. If value is smaller than full table then only those values are updated. see gecko_bluetooth_ll_priorities struct for the definition of priority table.