/*************************************************************************************************/ /*! * \file wsf_nvm.h * * \brief NVM service. * * Copyright (c) 2019 Arm Ltd. All Rights Reserved. * * Copyright (c) 2019-2020 Packetcraft, Inc. * * 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 WSF_NVM_H #define WSF_NVM_H #include "wsf_types.h" #ifdef __cplusplus extern "C" { #endif /*! \addtogroup WSF_NVM_API * \{ */ /*! \brief Operation completion callback. */ typedef void (*WsfNvmCompEvent_t)(bool_t status); /************************************************************************************************** Function Declarations **************************************************************************************************/ /*************************************************************************************************/ /*! * \brief Read data. * * \param charId charactor arrary for NVM ID. * * \return if Read NVM successfully. */ /*************************************************************************************************/ static inline uint64_t WsfNvmConvertChar8to64Bit(char *charId) { uint64_t retValue = 0; for (uint8_t i = 0; i < 8; i++) { retValue |= ((uint64_t)charId[7 - i]) << (8 * i); } return retValue; } /*************************************************************************************************/ /*! * \brief Initialize the WSF NVM. */ /*************************************************************************************************/ void WsfNvmInit(void); /*************************************************************************************************/ /*! * \brief Read data. * * \param id Read ID. * \param pData Buffer to read to. * \param len Data length to read. * \param compCback Read callback. * * \return TRUE if NVM operation is successful, FALSE otherwise. */ /*************************************************************************************************/ bool_t WsfNvmReadData(uint16_t id, uint8_t *pData, uint16_t len, WsfNvmCompEvent_t compCback); /*************************************************************************************************/ /*! * \brief Write data. * * \param id Write ID. * \param pData Buffer to write. * \param len Data length to write. * \param compCback Write callback. * * \return TRUE if NVM operation is successful, FALSE otherwise. */ /*************************************************************************************************/ bool_t WsfNvmWriteData(uint16_t id, const uint8_t *pData, uint16_t len, WsfNvmCompEvent_t compCback); /*************************************************************************************************/ /*! * \brief Erase data. * * \param id Erase ID. * \param compCback Write callback. * * \return TRUE if NVM operation is successful, FALSE otherwise. */ /*************************************************************************************************/ bool_t WsfNvmEraseData(uint64_t id, WsfNvmCompEvent_t compCback); /*************************************************************************************************/ /*! * \brief Erase all data located in NVM storage. * * \param compCback Erase callback. * * \note Security Risk Warning. NVM storage could be shared by multiple Apps. */ /*************************************************************************************************/ void WsfNvmEraseDataAll(WsfNvmCompEvent_t compCback); /*! \} */ /* WSF_NVM_API */ #ifdef __cplusplus }; #endif #endif /* WSF_NVM_H */