Matter SDK Coverage Report
Current view: top level - include/platform - GeneralFaults.h (source / functions) Coverage Total Hit
Test: SHA:b879ecb8e99e175eea0a293a888bda853da2b19c Lines: 0.0 % 8 0
Test Date: 2025-01-17 19:00:11 Functions: 0.0 % 3 0

            Line data    Source code
       1              : /*
       2              :  *
       3              :  *    Copyright (c) 2021 Project CHIP Authors
       4              :  *
       5              :  *    Licensed under the Apache License, Version 2.0 (the "License");
       6              :  *    you may not use this file except in compliance with the License.
       7              :  *    You may obtain a copy of the License at
       8              :  *
       9              :  *        http://www.apache.org/licenses/LICENSE-2.0
      10              :  *
      11              :  *    Unless required by applicable law or agreed to in writing, software
      12              :  *    distributed under the License is distributed on an "AS IS" BASIS,
      13              :  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      14              :  *    See the License for the specific language governing permissions and
      15              :  *    limitations under the License.
      16              :  */
      17              : 
      18              : /**
      19              :  *    @file
      20              :  *          General faults could be detected by the Node.
      21              :  */
      22              : 
      23              : #pragma once
      24              : 
      25              : #include <lib/core/CHIPError.h>
      26              : #include <lib/support/CodeUtils.h>
      27              : 
      28              : namespace chip {
      29              : namespace DeviceLayer {
      30              : 
      31              : static constexpr size_t kMaxHardwareFaults = 11;
      32              : static constexpr size_t kMaxRadioFaults    = 7;
      33              : static constexpr size_t kMaxNetworkFaults  = 4;
      34              : 
      35              : template <size_t N>
      36              : class GeneralFaults
      37              : {
      38              : public:
      39              :     /* The iterator */
      40              :     class Iterator
      41              :     {
      42              :     public:
      43              :         Iterator(const GeneralFaults<N> * GeneralFaults, int index);
      44              :         uint8_t operator*() const;
      45              :         Iterator & operator++();
      46              :         bool operator!=(const Iterator & other) const;
      47              : 
      48              :     private:
      49              :         const GeneralFaults<N> * mGeneralFaultsPtr;
      50              :         int mIndex = -1;
      51              :     };
      52              : 
      53            0 :     GeneralFaults() = default;
      54            0 :     ~GeneralFaults() { mSize = 0; }
      55              : 
      56              :     CHIP_ERROR add(const uint8_t value);
      57              : 
      58              :     const uint8_t * data() const { return mData; }
      59              :     size_t size() const;
      60              :     uint8_t operator[](int index) const;
      61              : 
      62              :     Iterator begin() const;
      63              :     Iterator end() const;
      64              : 
      65              : private:
      66              :     uint8_t mData[N];
      67              :     int mSize = 0;
      68              : };
      69              : 
      70              : /*
      71              :  * GeneralFaults methods
      72              :  **/
      73              : template <size_t N>
      74            0 : inline CHIP_ERROR GeneralFaults<N>::add(const uint8_t value)
      75              : {
      76            0 :     if (mSize == N)
      77              :     {
      78            0 :         return CHIP_ERROR_NO_MEMORY;
      79              :     }
      80              : 
      81              :     // add the new element
      82            0 :     mData[mSize] = value;
      83            0 :     ++mSize;
      84            0 :     return CHIP_NO_ERROR;
      85              : }
      86              : 
      87              : template <size_t N>
      88              : inline size_t GeneralFaults<N>::size() const
      89              : {
      90              :     return static_cast<size_t>(mSize);
      91              : }
      92              : 
      93              : template <size_t N>
      94              : inline uint8_t GeneralFaults<N>::operator[](int index) const
      95              : {
      96              :     VerifyOrDie(index < mSize);
      97              :     return mData[index];
      98              : }
      99              : 
     100              : template <size_t N>
     101              : inline typename GeneralFaults<N>::Iterator GeneralFaults<N>::begin() const
     102              : {
     103              :     return GeneralFaults<N>::Iterator{ this, 0 };
     104              : }
     105              : 
     106              : template <size_t N>
     107              : inline typename GeneralFaults<N>::Iterator GeneralFaults<N>::end() const
     108              : {
     109              :     return GeneralFaults<N>::Iterator{ this, mSize };
     110              : }
     111              : 
     112              : /*
     113              :  * Iterator methods
     114              :  **/
     115              : template <size_t N>
     116              : inline GeneralFaults<N>::Iterator::Iterator(const GeneralFaults<N> * pGeneralFaults, int index) :
     117              :     mGeneralFaultsPtr(pGeneralFaults), mIndex(index)
     118              : {}
     119              : 
     120              : template <size_t N>
     121              : inline uint8_t GeneralFaults<N>::Iterator::operator*() const
     122              : {
     123              :     return mGeneralFaultsPtr->operator[](mIndex);
     124              : }
     125              : 
     126              : template <size_t N>
     127              : inline typename GeneralFaults<N>::Iterator & GeneralFaults<N>::Iterator::operator++()
     128              : {
     129              :     ++mIndex;
     130              :     return *this;
     131              : }
     132              : 
     133              : template <size_t N>
     134              : inline bool GeneralFaults<N>::Iterator::operator!=(const GeneralFaults<N>::Iterator & other) const
     135              : {
     136              :     return mIndex != other.mIndex;
     137              : }
     138              : 
     139              : } // namespace DeviceLayer
     140              : } // namespace chip
        

Generated by: LCOV version 2.0-1