Wireless Core Changelog

v0.9.0 - 2023-12-08

Added
  • swc_get_status returns the status of the SPARK Wireless Core.

  • Added new error code SWC_ERR_NOT_INITIALIZED.

Changed
  • swc_connect can now return errors:
    • SWC_ERR_NOT_INITIALIZED

    • SWC_ERR_ALREADY_CONNECTED

    • SWC_ERR_INTERNAL

  • swc_disconnect can now return errors:
    • SWC_ERR_NOT_CONNECTED

    • SWC_ERR_NOT_INITIALIZED

    • SWC_ERR_DISCONNECT_TIMEOUT

    • SWC_ERR_INTERNAL

v0.8.1 - 2023-10-18

Release notes:
  • This release provides an update to the frequency calibration to improve compatibility between tranceivers.

Changed
  • Improved the frequency calibration of the 1020 transceiver.

v0.8.0 - 2023-05-31

Added
  • Added new API calls
    • swc_node_get_radio_serial_number() to get the radio’s 64-bit serial number.

    • swc_node_get_radio2_serial_number() to get the second radio’s 64-bit serial number.

    • swc_get_beacon_connection_config to get a beacon connection configuration.

    • swc_connection_set_event_callback set an event callback when events occur on a connection.

    • swc_get_event returns the event notified by the event callback.

    • swc_get_event_error returns the error notified by the event callback.

    • swc_connection_set_ranging_data_ready_callback() set the callback function which will invoke once the required number of ranging data samples is collected.

    • swc_get_ranging_data retrive a ranging data buffer.

    • swc_ranging_data_completed free the used up ranging data buffer.

    • swc_connection_get_enqueued_count get the number of frame in the connection queue.

    • swc_connection_get_connect_status return if the connection is connected or disconnected.

    • swc_send_tx_flush_request send a tx flush request to the connection.

  • Added region regulations support (FCC, ETSI and ARIB) for pairing.

  • Added timer_frequency_hz to the swc_hal_t structure.

  • Added new members to the swc_radio_hal_t structure:
    • uint64_t (*get_tick)(void) function pointer to BSP timer peripheral.

    • uint32_t tick_frequency_hz frequency in hertz of the BSP timer peripheral.

  • Added statistics metrics:
    • packet_rejected_count,

    • cca_pass_count,

    • cca_fail_count,

    • cca_try_fail_count.

  • Added SWC initialisation option in the swc_radio_cfg:
    • no_reset for whether or not the radio should be reset when doing initialization.

    • no_calibration for whether or not the SWC should perform the calibration routine of the radio.

  • Added connection object options to the swc_connection_cfg structure:
    • ranging_enabled for whether or not headers contain phase data.

    • ranging_settings for ranging feature settings if enabled.

  • Ranging callbacks are now enqueued in the callback queue.

  • Added certification_mode_enabled to swc_cfg_t.

Changed
  • swc_connection_init now returns an error if the queue size is less than 2.

  • Coordinator device must call pairing_coordinator_start() to start the pairing procedure.

  • Node device must call pairing_node_start() to start the pairing process.

  • Application must provide pairing_discovery_list array with the number of devices on the network.

  • Application must provide pairing_assigned_address structure that will be populated during pairing procedure.

  • The application must handle any error once the pairing procedure is completed or aborted.

  • Pairing configuration must provide: application code, timeout in seconds, hardware abstraction layer, wireless memory pool, memory pool size, the UWB regulation and optionally the application callback.

  • The application must handle the returning event when the pairing procedure is completed or aborted.

  • Pairing process is now done inside the pairing module instead of the application.

  • Pairing now uses a frame rate of 1 kHz instead of 333 Hz.

Fixed
  • Fixed erroneous comment regarding the retry time parameter in CCA settings, which incorrectly indicated that the time unit was microseconds (us) instead of nanoseconds (ns).

Removed
  • Removed allocate_payload_memory member from the Wireless Core connection configuration (swc_connection_cfg_t)

  • Removed uint64_t (*get_tick_quarter_ms)(void) member from the swc_hal_ structure.

v0.7.0 - 2022-11-30

Release notes:
  • Lower-level types, mostly wps_ ones, have been replaced by equivalent swc_ types located in swc_def.h.

  • New event system that gives information to the application about what is happening in the Wireless Core.

  • Error checking on API calls input parameters.

  • Device pairing is now part of the Wireless Core.

  • Bug fixes and general improvements.

Added
  • New swc_def.h public header file.

  • New swc_utils.h public header file.

  • New pairing/swc_pairing.c/h public source files.

  • New phy/sr_radio_model.h private header file.

  • New link/link_connect_stats.c/h private source files.

  • New protocol_stack/wps_frag.c/h private source files.

  • New API call swc_connection_set_event_callback().

  • New API call swc_get_event().

  • New API call swc_get_event_error().

  • New API call swc_connection_receive_to_buffer().

  • New SWC_BROADCAST_ADDRESS constant the application can use when configuring the destination address of a broadcast connection.

  • New error codes in swc_error_t.

  • In swc_cfg_t, the new rdo_enabled field must be set to true to activate the random data rate offset feature in addition to the one in swc_connection_cfg_t.

Changed
  • protocol_stack/sr1000/single_radio/ has been renamed to protocol_stack/single_radio/.

  • protocol_stack/sr1000/multi_radio/ has been renamed to protocol_stack/multi_radio/.

  • In swc_hal_t, radio_hal is now of type swc_radio_hal_t instead of radio_hal_t.

  • In swc_hal_t, multi_cfg of type multi_cfg_t has been removed and replaced by timer_start, timer_stop, timer_set_period, disable_timer_irq and enable_timer_irq function pointers.

  • In swc_node_cfg_t, role is now of type swc_role_t instead of wps_role_t.

  • In swc_node_cfg_t, sleep_level is now of type swc_sleep_level_t instead of sleep_lvl_t.

  • In swc_radio_cfg_t, irq_polarity is now of type swc_irq_polarity_t instead of irq_polarity_t.

  • In swc_radio_cfg_t, std_spi has been renamed to spi_mode and is now of type swc_spi_mode_t instead of std_spi_t.

  • In swc_connection_cfg_t, modulation is now of type swc_modulation_t instead of modulation_t.

  • In swc_connection_cfg_t, fec is now of type swc_fec_level_t instead of fec_level_t.

  • In swc_connection_cfg_t, cca_settings.fail_action is now of type swc_cca_fail_action_t instead of cca_fail_action_t.

  • swc_fallback_info_t has a new cca_fail_count member.

  • swc_connection_set_tx_success_callback() has a new swc_error_t parameter.

  • swc_connection_set_tx_fail_callback() has a new swc_error_t parameter.

  • swc_connection_set_tx_dropped_callback() has a new swc_error_t parameter.

  • swc_connection_set_rx_success_callback() has a new swc_error_t parameter.

  • swc_setup() has a new swc_error_t parameter.

  • swc_connect() has a new swc_error_t parameter.

  • swc_disconnect() has a new swc_error_t parameter.

  • swc_connection_get_fallback_info() has a new swc_error_t parameter.

  • The size parameter of swc_connection_send() is now of type uint16_t instead of uint8_t.

  • The return type of swc_connection_receive() is now uint16_t instead of uint8_t.

  • Pairing power settings went from 2 pulses with a width of 4 to 3 pulses with a width of 5.

  • Pairing modulation is now 2-bit PPM instead of IOOK.

  • Pairing schedule has now 2 timeslots of 3000 us instead of 2 timeslots of 500 us.

  • paired_device_t has been renamed to swc_pairing_device_t.

  • app_pairing_t has been renamed to swc_pairing_t.

  • In swc_pairing_t, network_role is now of type swc_role_t instead of wps_role_t.

  • In swc_pairing_t, paired_device is now of type swc_pairing_device_t instead of paired_device_t.

  • swc_pairing_t```has two new members, ``memory_pool and memory_pool_size.

  • app_pairing_start_pairing_process() has been removed and broken down into the following 3 functions: swc_pairing_init_pairing_process(), swc_pairing_process() and swc_pairing_deinit().

Removed
  • protocol_stack/sr1000/single_radio/wps_phy.c/h private source files.

v0.6.1 - 2022-06-16

Fixed
  • Fix wrong channel configuration when using dual radio mode.

  • ARQ setting retry_count has changed name to try_count in swc_connection_cfg_t.

v0.6.0 - 2022-05-27

This release contains a major Wireless Core API refactor. See Wireless Core and Wireless Core API for more details.

Added
  • Fallback mode feature.

  • Statistics module.

  • Fast Sync feature.

  • Configurable Automatic Repeat Request (ARQ) feature.

  • Dual Radio feature.

  • Link Throttling feature.

  • Concurrency mechanisms.

  • Configurable channels.

Changed
  • Prefix of the SPARK Wireless Core (SWC) API changed from wireless_ to swc_.

  • Connection callbacks behavior.

  • Address scheme now using a 12-bit PAN ID and a 8-bit Node address.

Removed
  • Support for Wireless Core internal WPS and SR APIs.

  • write and read function pointers from radio_hal member in the Wireless Core API HAL (swc_hal_t).

  • critical member in the Wireless Core API HAL (swc_hal_t).

v0.5.1 - 2022-04-19

Fixed
  • Delay line calibration issue that could slightly increase the packet error rate on some transceivers.

v0.5.0 - 2022-03-03

Changed
  • Set auto-sync to disabled by default in the Wireless Core API.

Fixed
  • Most recently manufactured transceivers were not handled properly causing a wrong Wireless Core behavior.

  • Transceiver’s FIFO corruption when IRQ handling was too much delayed.

v0.4.0 - 2022-02-04

Added
  • New Wireless Core API call wireless_core_get_allocated_bytes().

  • New Wireless Core API call wireless_set_syncing_address().

  • New Wireless Core API call wireless_free_memory().

  • SR API which is a merge of the SR1000 API and SR1000 API advance.

  • Syncword length can be adjusted through the syncword_len field of the wps_node_cfg_t type.

Changed
  • Wireless Core processing time optimization.

  • NVM instance is now in the wps_radio_t type.

  • Calibration instance is now in the wps_radio_t type.

Removed
  • SR1000 API and SR1000 API advance.

Fixed
  • Doxygen comment header of wireless_connection_init().

v0.3.0 - 2021-12-16

Added
  • Wireless Core API.

  • Dual radio feature.

  • Link throttling feature.

  • Fast synchronization feature.

  • An SPI timing setting which compensates for high capacitive loads on the SPI bus.

  • Auto-reply with user payload capabilities

  • Phase fetching , use for ranging. See stdspi in the wps_radio_t type.

Changed
  • Rename wps_l1.c/h source files to wps_phy.c/h.

  • Rename wps_l2.c/h source files to wps_mac.c/h.

  • Split wps_phy.c/h source files in wps_phy_common.c/h, wps_phy_def.h, multi_radio/wps_phy.c/h and single_radio/wps_phy.c/h.

  • Rename wps_set_coordinator_address() to wps_set_syncing_address().

  • Add sr1000/ folders for SR1000 Series transceiver specific code.

  • Add api/ folder for the Wireless Core API.

  • Inline sr1000_access_adv functions (function definitions are now in the header file).

  • Inline sr1000_api_adv functions (function definitions are now in the header file).

Removed
  • sr1000_access_adv.c source file.

  • sr1000_api_adv.c source file.

  • wps_radio_calibrate() from the WPS API.

  • wps_phy_init() from the WPS API.

  • wps_modem_phy_init() from the WPS API.

  • wps_modem_phy_t type from the WPS API.

Fixed
  • Issue with shutdown mode that could cause the WPS to hang.

  • Issue when using small payloads into an auto-reply frame.

v0.2.0 - 2021-11-09

Added
  • Changelog.

v0.1.0 - 2021-09-30

Initial release.