/* * Copyright 2012-2020 NXP * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef PHTMLUWB_H #define PHTMLUWB_H #include #include #include /* * Message posted by Reader thread uponl * completion of requested operation */ #define PH_TMLUWB_READ_MESSAGE (0xAA) /* * Message posted by Writer thread upon * completion of requested operation */ #define PH_TMLUWB_WRITE_MESSAGE (0x55) /* * Value indicates to reset device */ #define PH_TMLUWB_RESETDEVICE (0x00008001) /* ***************************Globals,Structure and Enumeration ****************** */ /* * Transaction (Tx/Rx) completion information structure of TML * * This structure holds the completion callback information of the * transaction passed from the TML layer to the Upper layer * along with the completion callback. * * The value of field wStatus can be interpreted as: * * - UWBSTATUS_SUCCESS Transaction performed * successfully. * - UWBSTATUS_FAILED Failed to wait on Read/Write * operation. * - UWBSTATUS_INSUFFICIENT_STORAGE Not enough memory to store data in * case of read. * - UWBSTATUS_BOARD_COMMUNICATION_ERROR Failure to Read/Write from the * file or timeout. */ struct phTmlUwb_WriteTransactInfo { tHAL_UWB_STATUS wStatus; const uint8_t* pBuff; size_t wLength; }; struct phTmlUwb_ReadTransactInfo { tHAL_UWB_STATUS wStatus; uint8_t* pBuff; size_t wLength; }; // IO completion callback to Upper Layer // pContext - Context provided by upper layer // pInfo - Transaction info. See phTmlUwb_[Read|Write]TransactInfo using ReadCallback = void (void *pContext, phTmlUwb_ReadTransactInfo* pInfo); using WriteCallback = void (void *pContext, phTmlUwb_WriteTransactInfo* pInfo); /* * Enum definition contains supported ioctl control codes. * * phTmlUwb_Spi_IoCtl */ enum class phTmlUwb_ControlCode_t { Invalid = 0, SetPower, EnableFwdMode, EnableThroughPut, EseReset, }; /* Function declarations */ tHAL_UWB_STATUS phTmlUwb_Init(const char* pDevName, std::shared_ptr> pClientMq); tHAL_UWB_STATUS phTmlUwb_Shutdown(void); void phTmlUwb_Suspend(void); void phTmlUwb_Resume(void); // Writer: caller should call this for every write io tHAL_UWB_STATUS phTmlUwb_Write(const uint8_t* pBuffer, size_t wLength, WriteCallback pTmlWriteComplete, void* pContext); // Reader: caller calls this once, callback will be called for every received packet. // and call StopRead() to unscribe RX packet. tHAL_UWB_STATUS phTmlUwb_StartRead(ReadCallback pTmlReadComplete, void* pContext); void phTmlUwb_StopRead(); void phTmlUwb_Chip_Reset(void); void phTmlUwb_DeferredCall(std::shared_ptr msg); #endif /* PHTMLUWB_H */