aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages')
-rw-r--r--thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.c141
-rw-r--r--thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.h135
-rw-r--r--thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.c110
-rw-r--r--thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.h120
-rw-r--r--thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.c117
-rw-r--r--thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.h111
6 files changed, 734 insertions, 0 deletions
diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.c b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.c
new file mode 100644
index 0000000..0026fe5
--- /dev/null
+++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.c
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#include "sdk_common.h"
+#if NRF_MODULE_ENABLED(ANT_COMMON_PAGE_70)
+
+#include <string.h>
+#include "ant_common_page_70.h"
+
+#define NRF_LOG_MODULE_NAME ant_common_page_70
+#if ANT_COMMON_PAGE_70_LOG_ENABLED
+#define NRF_LOG_LEVEL ANT_COMMON_PAGE_70_LOG_LEVEL
+#define NRF_LOG_INFO_COLOR ANT_COMMON_PAGE_70_INFO_COLOR
+#else // ANT_COMMON_PAGE_70_LOG_ENABLED
+#define NRF_LOG_LEVEL 0
+#endif // ANT_COMMON_PAGE_70_LOG_ENABLED
+#include "nrf_log.h"
+NRF_LOG_MODULE_REGISTER();
+
+/**@brief ANT+ common page 70 data layout structure. */
+typedef struct
+{
+ uint8_t reserved[2];
+ uint8_t descriptor[2];
+ uint8_t req_trans_response;
+ uint8_t req_page_number;
+ uint8_t command_type;
+}ant_common_page70_data_layout_t;
+
+/**@brief Function for tracing page 70 data.
+ *
+ * @param[in] p_page_data Pointer to the page 70 data.
+ */
+static void page70_data_log(volatile ant_common_page70_data_t const * p_page_data)
+{
+ NRF_LOG_INFO("Page %d request", p_page_data->page_number);
+
+ switch (p_page_data->transmission_response.specyfic)
+ {
+ case ANT_PAGE70_RESPONSE_TRANSMIT_UNTIL_SUCCESS:
+ NRF_LOG_INFO("Try to send until ACK");
+ break;
+
+ case ANT_PAGE70_RESPONSE_INVALID:
+ NRF_LOG_INFO("Invalid requested transmission response");
+ break;
+
+ default:
+
+ if (p_page_data->transmission_response.items.ack_resposne)
+ {
+ NRF_LOG_INFO("Answer with acknowledged messages");
+ }
+ NRF_LOG_INFO("Requested number of transmissions: %d",
+ p_page_data->transmission_response.items.transmit_count);
+ }
+
+ switch (p_page_data->command_type)
+ {
+ case ANT_PAGE70_COMMAND_PAGE_DATA_REQUEST:
+ NRF_LOG_INFO("Request Data Page");
+ break;
+
+ case ANT_PAGE70_COMMAND_ANT_FS_SESSION_REQUEST:
+ NRF_LOG_INFO("Request ANT-FS Session");
+ break;
+
+ default:
+ NRF_LOG_INFO("Invalid request");
+ }
+ NRF_LOG_INFO("Descriptor %x\r\n\n", p_page_data->descriptor);
+}
+
+
+void ant_common_page_70_encode(uint8_t * p_page_buffer,
+ volatile ant_common_page70_data_t const * p_page_data)
+{
+ ant_common_page70_data_layout_t * p_outcoming_data =
+ (ant_common_page70_data_layout_t *)p_page_buffer;
+
+ memset(p_outcoming_data->reserved, UINT8_MAX, sizeof (p_outcoming_data->reserved));
+ UNUSED_PARAMETER(uint16_encode(p_page_data->descriptor, p_outcoming_data->descriptor));
+ p_outcoming_data->req_trans_response = p_page_data->transmission_response.byte;
+ p_outcoming_data->req_page_number = p_page_data->page_number;
+ p_outcoming_data->command_type = p_page_data->command_type;
+
+ page70_data_log(p_page_data);
+}
+
+
+void ant_common_page_70_decode(uint8_t const * p_page_buffer,
+ volatile ant_common_page70_data_t * p_page_data)
+{
+ ant_common_page70_data_layout_t const * p_incoming_data =
+ (ant_common_page70_data_layout_t *)p_page_buffer;
+
+ p_page_data->descriptor = uint16_decode(p_incoming_data->descriptor);
+ p_page_data->transmission_response.byte = p_incoming_data->req_trans_response;
+ p_page_data->page_number = p_incoming_data->req_page_number;
+ p_page_data->command_type = (ant_page70_command_t)p_incoming_data->command_type;
+
+ page70_data_log(p_page_data);
+}
+
+#endif // NRF_MODULE_ENABLED(ANT_COMMON_PAGE_70)
diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.h b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.h
new file mode 100644
index 0000000..20e5351
--- /dev/null
+++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_70.h
@@ -0,0 +1,135 @@
+/**
+ * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#ifndef ANT_COMMON_PAGE_70_H__
+#define ANT_COMMON_PAGE_70_H__
+
+/** @file
+ *
+ * @defgroup ant_common_page_70 ANT+ common page 70
+ * @{
+ * @ingroup ant_sdk_common_pages
+ */
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ANT_COMMON_PAGE_70 (70) ///< @brief ID value of common page 70.
+#define ANT_PAGE70_INVALID_DESCRIPTOR UINT16_MAX ///< Invalid descriptor.
+
+/**@brief Command type.
+ */
+typedef enum
+{
+ ANT_PAGE70_COMMAND_PAGE_DATA_REQUEST = 0x01, ///< Page request.
+ ANT_PAGE70_COMMAND_ANT_FS_SESSION_REQUEST = 0x02, ///< ANT FS session request.
+} ant_page70_command_t;
+
+
+/**@brief Data structure for ANT+ common data page 70.
+ */
+typedef struct
+{
+ uint8_t page_number; ///< Requested page number.
+ uint16_t descriptor; ///< Descriptor.
+ ant_page70_command_t command_type; ///< Command type.
+ union
+ {
+ enum
+ {
+ ANT_PAGE70_RESPONSE_INVALID = 0x00, ///< Invalid response type.
+ ANT_PAGE70_RESPONSE_TRANSMIT_UNTIL_SUCCESS = 0x80, ///< Transmit until a successful acknowledge is received.
+ } specyfic;
+ struct
+ {
+ uint8_t transmit_count :7; ///< Number of re-transmissions.
+ uint8_t ack_resposne :1; ///< Acknowledge transmission is required.
+ } items;
+ uint8_t byte;
+ } transmission_response;
+} ant_common_page70_data_t;
+
+/**@brief Initialize page 70 with default values.
+ */
+#define DEFAULT_ANT_COMMON_PAGE70() \
+ (ant_common_page70_data_t) \
+ { \
+ .page_number = 0x00, \
+ .command_type = (ant_page70_command_t)0x00, \
+ .transmission_response.specyfic = ANT_PAGE70_RESPONSE_INVALID, \
+ .descriptor = ANT_PAGE70_INVALID_DESCRIPTOR, \
+ }
+
+/**@brief Initialize page 70 with the page request.
+ */
+#define ANT_COMMON_PAGE_DATA_REQUEST(PAGE_NUMBER) \
+ (ant_common_page70_data_t) \
+ { \
+ .page_number = (PAGE_NUMBER), \
+ .command_type = ANT_PAGE70_COMMAND_PAGE_DATA_REQUEST, \
+ .transmission_response.specyfic = ANT_PAGE70_RESPONSE_TRANSMIT_UNTIL_SUCCESS, \
+ .descriptor = ANT_PAGE70_INVALID_DESCRIPTOR, \
+ }
+
+/**@brief Function for encoding page 70.
+ *
+ * @param[in] p_page_data Pointer to the page data.
+ * @param[out] p_page_buffer Pointer to the data buffer.
+ */
+void ant_common_page_70_encode(uint8_t * p_page_buffer,
+ volatile ant_common_page70_data_t const * p_page_data);
+
+/**@brief Function for decoding page 70.
+ *
+ * @param[in] p_page_buffer Pointer to the data buffer.
+ * @param[out] p_page_data Pointer to the page data.
+ */
+void ant_common_page_70_decode(uint8_t const * p_page_buffer,
+ volatile ant_common_page70_data_t * p_page_data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // ANT_COMMON_PAGE_70_H__
+/** @} */
diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.c b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.c
new file mode 100644
index 0000000..b60e859
--- /dev/null
+++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.c
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#include "sdk_common.h"
+#if NRF_MODULE_ENABLED(ANT_COMMON_PAGE_80)
+
+#include <string.h>
+#include "ant_common_page_80.h"
+
+#define NRF_LOG_MODULE_NAME ant_common_page_80
+#if ANT_COMMON_PAGE_80_LOG_ENABLED
+#define NRF_LOG_LEVEL ANT_COMMON_PAGE_80_LOG_LEVEL
+#define NRF_LOG_INFO_COLOR ANT_COMMON_PAGE_80_INFO_COLOR
+#else // ANT_COMMON_PAGE_80_LOG_ENABLED
+#define NRF_LOG_LEVEL 0
+#endif // ANT_COMMON_PAGE_80_LOG_ENABLED
+#include "nrf_log.h"
+NRF_LOG_MODULE_REGISTER();
+
+/**@brief ant+ common page 80 data layout structure. */
+typedef struct
+{
+ uint8_t reserved[2]; ///< unused, fill by 0xFF
+ uint8_t hw_revision;
+ uint8_t manufacturer_id[2];
+ uint8_t model_number[2];
+}ant_common_page80_data_layout_t;
+
+
+/**@brief Function for tracing page 80 data.
+ *
+ * @param[in] p_page_data Pointer to the page 80 data.
+ */
+static void page80_data_log(volatile ant_common_page80_data_t const * p_page_data)
+{
+ NRF_LOG_INFO("hw revision: %u", p_page_data->hw_revision);
+ NRF_LOG_INFO("manufacturer id: %u", p_page_data->manufacturer_id);
+ NRF_LOG_INFO("model number: %u\r\n\n", p_page_data->model_number);
+}
+
+
+void ant_common_page_80_encode(uint8_t * p_page_buffer,
+ volatile ant_common_page80_data_t const * p_page_data)
+{
+ ant_common_page80_data_layout_t * p_outcoming_data =
+ (ant_common_page80_data_layout_t *)p_page_buffer;
+
+ memset(p_page_buffer, UINT8_MAX, sizeof (p_outcoming_data->reserved));
+
+ p_outcoming_data->hw_revision = p_page_data->hw_revision;
+
+ UNUSED_PARAMETER(uint16_encode(p_page_data->manufacturer_id,
+ p_outcoming_data->manufacturer_id));
+ UNUSED_PARAMETER(uint16_encode(p_page_data->model_number, p_outcoming_data->model_number));
+
+ page80_data_log(p_page_data);
+}
+
+
+void ant_common_page_80_decode(uint8_t const * p_page_buffer,
+ volatile ant_common_page80_data_t * p_page_data)
+{
+ ant_common_page80_data_layout_t const * p_incoming_data =
+ (ant_common_page80_data_layout_t *)p_page_buffer;
+
+ p_page_data->hw_revision = p_incoming_data->hw_revision;
+
+ p_page_data->manufacturer_id = uint16_decode(p_incoming_data->manufacturer_id);
+ p_page_data->model_number = uint16_decode(p_incoming_data->model_number);
+
+ page80_data_log(p_page_data);
+}
+
+#endif // NRF_MODULE_ENABLED(ANT_COMMON_PAGE_80)
diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.h b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.h
new file mode 100644
index 0000000..15a971c
--- /dev/null
+++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_80.h
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#ifndef ANT_COMMON_PAGE_80_H__
+#define ANT_COMMON_PAGE_80_H__
+
+/** @file
+ *
+ * @defgroup ant_sdk_common_pages ANT+ common pages
+ * @{
+ * @ingroup ant_sdk_profiles
+ * @brief This module implements functions for the ANT+ common pages.
+ * @details ANT+ common data pages define common data formats that can be used by any device on any ANT network. The ability to send and receive these common pages is defined by the transmission type of the ANT channel parameter.
+ *
+ * Note that all unused pages in this section are not defined and therefore cannot be used.
+ * @}
+ *
+ * @defgroup ant_common_page_80 ANT+ common page 80
+ * @{
+ * @ingroup ant_sdk_common_pages
+ */
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ANT_COMMON_PAGE_80 (80) ///< @brief ID value of common page 80.
+
+/**@brief Data structure for ANT+ common data page 80.
+ *
+ * @note This structure implements only page 80 specific data.
+ */
+typedef struct
+{
+ uint8_t hw_revision; ///< Hardware revision.
+ uint16_t manufacturer_id; ///< Manufacturer ID.
+ uint16_t model_number; ///< Model number.
+} ant_common_page80_data_t;
+
+/**@brief Initialize page 80.
+ */
+#define DEFAULT_ANT_COMMON_page80() \
+ (ant_common_page80_data_t) \
+ { \
+ .hw_revision = 0x00, \
+ .manufacturer_id = UINT8_MAX, \
+ .model_number = 0x00, \
+ }
+
+/**@brief Initialize page 80.
+ */
+#define ANT_COMMON_page80(hw_rev, man_id, mod_num) \
+ (ant_common_page80_data_t) \
+ { \
+ .hw_revision = (hw_rev), \
+ .manufacturer_id = (man_id), \
+ .model_number = (mod_num), \
+ }
+
+/**@brief Function for encoding page 80.
+ *
+ * @param[in] p_page_data Pointer to the page data.
+ * @param[out] p_page_buffer Pointer to the data buffer.
+ */
+void ant_common_page_80_encode(uint8_t * p_page_buffer,
+ volatile ant_common_page80_data_t const * p_page_data);
+
+/**@brief Function for decoding page 80.
+ *
+ * @param[in] p_page_buffer Pointer to the data buffer.
+ * @param[out] p_page_data Pointer to the page data.
+ */
+void ant_common_page_80_decode(uint8_t const * p_page_buffer,
+ volatile ant_common_page80_data_t * p_page_data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // ANT_COMMON_PAGE_80_H__
+/** @} */
diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.c b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.c
new file mode 100644
index 0000000..3e5582e
--- /dev/null
+++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.c
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#include "sdk_common.h"
+#if NRF_MODULE_ENABLED(ANT_COMMON_PAGE_81)
+
+#include "ant_common_page_81.h"
+
+#define NRF_LOG_MODULE_NAME ant_common_page_81
+#if ANT_COMMON_PAGE_81_LOG_ENABLED
+#define NRF_LOG_LEVEL ANT_COMMON_PAGE_81_LOG_LEVEL
+#define NRF_LOG_INFO_COLOR ANT_COMMON_PAGE_81_INFO_COLOR
+#else // ANT_COMMON_PAGE_81_LOG_ENABLED
+#define NRF_LOG_LEVEL 0
+#endif // ANT_COMMON_PAGE_81_LOG_ENABLED
+#include "nrf_log.h"
+NRF_LOG_MODULE_REGISTER();
+
+/**@brief ant+ common page 81 data layout structure. */
+typedef struct
+{
+ uint8_t reserved; ///< unused, fill by 0xFF
+ uint8_t sw_revision_minor;
+ uint8_t sw_revision_major;
+ uint8_t serial_number[4];
+}ant_common_page81_data_layout_t;
+
+
+/**@brief Function for tracing page 80 data.
+ *
+ * @param[in] p_page_data Pointer to the page 80 data.
+ */
+static void page81_data_log(volatile ant_common_page81_data_t const * p_page_data)
+{
+ if (p_page_data->sw_revision_minor != UINT8_MAX)
+ {
+ NRF_LOG_INFO("sw revision: %u.%u",
+ ((ant_common_page81_data_t const *) p_page_data)->sw_revision_major,
+ ((ant_common_page81_data_t const *) p_page_data)->sw_revision_minor);
+ }
+ else
+ {
+ NRF_LOG_INFO("sw revision: %u", p_page_data->sw_revision_major);
+ }
+
+ NRF_LOG_INFO("serial number: %u\r\n\n", (unsigned int) p_page_data->serial_number);
+}
+
+
+void ant_common_page_81_encode(uint8_t * p_page_buffer,
+ volatile ant_common_page81_data_t const * p_page_data)
+{
+ ant_common_page81_data_layout_t * p_outcoming_data =
+ (ant_common_page81_data_layout_t *)p_page_buffer;
+
+ p_outcoming_data->reserved = UINT8_MAX;
+
+ p_outcoming_data->sw_revision_minor = p_page_data->sw_revision_minor;
+ p_outcoming_data->sw_revision_major = p_page_data->sw_revision_major;
+
+ UNUSED_PARAMETER(uint32_encode(p_page_data->serial_number, p_outcoming_data->serial_number));
+
+ page81_data_log(p_page_data);
+}
+
+
+void ant_common_page_81_decode(uint8_t const * p_page_buffer,
+ volatile ant_common_page81_data_t * p_page_data)
+{
+ ant_common_page81_data_layout_t const * p_incoming_data =
+ (ant_common_page81_data_layout_t *)p_page_buffer;
+
+ p_page_data->sw_revision_minor = p_incoming_data->sw_revision_minor;
+ p_page_data->sw_revision_major = p_incoming_data->sw_revision_major;
+
+ p_page_data->serial_number = uint32_decode(p_incoming_data->serial_number);
+
+ page81_data_log(p_page_data);
+}
+
+#endif // NRF_MODULE_ENABLED(ANT_COMMON_PAGE_81)
diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.h b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.h
new file mode 100644
index 0000000..4299850
--- /dev/null
+++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/components/ant/ant_profiles/ant_common/pages/ant_common_page_81.h
@@ -0,0 +1,111 @@
+/**
+ * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#ifndef ANT_COMMON_PAGE_81_H__
+#define ANT_COMMON_PAGE_81_H__
+
+/** @file
+ *
+ * @defgroup ant_common_page_81 ANT+ common page 81
+ * @{
+ * @ingroup ant_sdk_common_pages
+ */
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ANT_COMMON_PAGE_81 (81) ///< @brief ID value of common page 81.
+
+/**@brief Data structure for ANT+ common data page 81.
+ *
+ * @note This structure implements only page 81 specific data.
+ */
+typedef struct
+{
+ uint8_t sw_revision_minor; ///< Supplemental, fill by 0xFF if unused.
+ uint8_t sw_revision_major; ///< Main software version.
+ uint32_t serial_number; ///< Lowest 32 b of serial number, fill by 0xFFFFFFFFF if unused.
+} ant_common_page81_data_t;
+
+/**@brief Initialize page 81.
+ */
+#define DEFAULT_ANT_COMMON_page81() \
+ (ant_common_page81_data_t) \
+ { \
+ .sw_revision_minor = UINT8_MAX, \
+ .sw_revision_major = UINT8_MAX, \
+ .serial_number = UINT32_MAX, \
+ }
+
+/**@brief Initialize page 81.
+ */
+#define ANT_COMMON_page81(sw_major_rev, sw_minor_rev, seril_no) \
+ (ant_common_page81_data_t) \
+ { \
+ .sw_revision_minor = (sw_minor_rev), \
+ .sw_revision_major = (sw_major_rev), \
+ .serial_number = (seril_no), \
+ }
+
+/**@brief Function for encoding page 81.
+ *
+ * @param[in] p_page_data Pointer to the page data.
+ * @param[out] p_page_buffer Pointer to the data buffer.
+ */
+void ant_common_page_81_encode(uint8_t * p_page_buffer,
+ volatile ant_common_page81_data_t const * p_page_data);
+
+/**@brief Function for decoding page 81.
+ *
+ * @param[in] p_page_buffer Pointer to the data buffer.
+ * @param[out] p_page_data Pointer to the page data.
+ */
+void ant_common_page_81_decode(uint8_t const * p_page_buffer,
+ volatile ant_common_page81_data_t * p_page_data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // ANT_COMMON_PAGE_81_H__
+/** @} */