对比新文件 |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * 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 an MKSEMI |
| | | * 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 MKSEMI 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 |
| | | * MKSEMI 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 MKSEMI "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 MKSEMI 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 UL_TDOA_H_ |
| | | #define UL_TDOA_H_ |
| | | #include "mk_common.h" |
| | | #include "mk_mac.h" |
| | | #include "ul_tdoa_task.h" |
| | | |
| | | /* UL-TDoA FSM stage */ |
| | | enum UL_TDOA_STAGE_T |
| | | { |
| | | UL_TDOA_IDLE = 0x00, |
| | | UL_TDOA_TX_BLINK = 0x01, |
| | | UL_TDOA_TX_SYNC = 0x02, |
| | | UL_TDOA_LISTEN = 0x03, |
| | | }; |
| | | |
| | | /* UL-TDoA environment variable */ |
| | | struct UL_TDOA_ENV_T |
| | | { |
| | | uint32_t anchor_point; |
| | | uint32_t sequence_num; |
| | | uint32_t ranging_period; |
| | | uint32_t random_window; |
| | | uint32_t tx_offset; |
| | | enum UL_TDOA_STAGE_T stage; |
| | | uint8_t lost_cnt; |
| | | uint8_t enable; |
| | | }; |
| | | |
| | | /* UL-TDoA timestamp */ |
| | | union TIMESTAMP_T |
| | | { |
| | | uint8_t ts_u8[8]; |
| | | uint64_t ts_u64; |
| | | }; |
| | | |
| | | /** UL-TDoA measurement result */ |
| | | struct UL_TDOA_MEASUREMENT_T |
| | | { |
| | | uint8_t mac_addr[8]; |
| | | uint8_t status; |
| | | uint8_t msg_control; |
| | | uint8_t frame_type; |
| | | uint8_t NLoS; |
| | | // Q9.7 |
| | | int16_t aoa_azimuth; |
| | | int16_t aoa_elevation; |
| | | uint8_t aoa_azimuth_fom; |
| | | uint8_t aoa_elevation_fom; |
| | | uint32_t frame_number; |
| | | union TIMESTAMP_T rx_timestamp; |
| | | uint8_t dev_id[8]; |
| | | union TIMESTAMP_T tx_timestamp; |
| | | }; |
| | | |
| | | /* Main control block of the ul_tdoa task */ |
| | | struct UL_TDOA_CB_T |
| | | { |
| | | wsfQueue_t msg_queue; |
| | | wsfHandlerId_t handle_id; |
| | | }; |
| | | |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | extern struct UL_TDOA_ENV_T ul_tdoa_env; |
| | | |
| | | /** |
| | | * @brief Initialize ul-tdoa task. |
| | | * |
| | | * @param [in] handle_id Task handle ID |
| | | */ |
| | | int ul_tdoa_init(uint8_t handle_id); |
| | | |
| | | /** |
| | | * @brief De-initialize ul-tdoa task. |
| | | */ |
| | | int ul_tdoa_deinit(void); |
| | | |
| | | /** |
| | | * @brief Configure ul-tdoa environment variable, and configure UWB subsystem. |
| | | */ |
| | | void ul_tdoa_configure(void); |
| | | |
| | | /** |
| | | * @brief Start ul-tdoa procedure. |
| | | */ |
| | | void ul_tdoa_start(void); |
| | | |
| | | /** |
| | | * @brief Stop ul-tdoa procedure. |
| | | */ |
| | | void ul_tdoa_stop(void); |
| | | |
| | | /** |
| | | * @brief Process MAC report event. |
| | | * |
| | | * @param [in] ind Pointer of MAC HW report |
| | | */ |
| | | void ul_tdoa_process(const struct MAC_HW_REPORT_T *ind); |
| | | |
| | | /** |
| | | * @brief Indicate ul-tdoa RX event. |
| | | * |
| | | * @param [in] status RX status |
| | | * @param [in] data Pointer of RX data |
| | | * @param [in] len RX data length |
| | | * @param [in] timestamp RX timestamp |
| | | * |
| | | */ |
| | | void ul_tdoa_rx_ind(uint16_t status, const uint8_t *data, uint16_t len, int64_t timestamp); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | |
| | | #endif /* UL_TDOA_H_ */ |