LCOV - code coverage report
Current view: top level - zephyr/shell - shell_history.h Coverage Total Hit
Test: new.info Lines: 0.0 % 5 0
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2018 Nordic Semiconductor ASA
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef ZEPHYR_INCLUDE_SHELL_HISTORY_H_
       8              : #define ZEPHYR_INCLUDE_SHELL_HISTORY_H_
       9              : 
      10              : #include <zephyr/kernel.h>
      11              : #include <zephyr/sys/util.h>
      12              : #include <zephyr/sys/dlist.h>
      13              : #include <zephyr/sys/ring_buffer.h>
      14              : #include <stdbool.h>
      15              : 
      16              : #ifdef __cplusplus
      17              : extern "C" {
      18              : #endif
      19              : 
      20              : 
      21            0 : struct shell_history {
      22            0 :         struct ring_buf *ring_buf;
      23            0 :         sys_dlist_t list;
      24            0 :         sys_dnode_t *current;
      25              : };
      26              : 
      27              : /**
      28              :  * @brief Create shell history instance.
      29              :  *
      30              :  * @param _name History instance name.
      31              :  * @param _size Memory dedicated for shell history.
      32              :  */
      33              : #define Z_SHELL_HISTORY_DEFINE(_name, _size)                      \
      34              :         static uint8_t __noinit __aligned(sizeof(void *))         \
      35              :                         _name##_ring_buf_data[_size];             \
      36              :         static struct ring_buf _name##_ring_buf =                 \
      37              :                 {                                                 \
      38              :                         .size = _size,                            \
      39              :                         .buffer = _name##_ring_buf_data           \
      40              :                 };                                                \
      41              :         static struct shell_history _name = {                     \
      42              :                 .ring_buf = &_name##_ring_buf                         \
      43              :         }
      44              : 
      45              : 
      46              : /**
      47              :  * @brief Initialize shell history module.
      48              :  *
      49              :  * @param history Shell history instance.
      50              :  */
      51              : void z_shell_history_init(struct shell_history *history);
      52              : 
      53              : /**
      54              :  * @brief Purge shell history.
      55              :  *
      56              :  * Function clears whole shell command history.
      57              :  *
      58              :  * @param history Shell history instance.
      59              :  *
      60              :  */
      61              : void z_shell_history_purge(struct shell_history *history);
      62              : 
      63              : /**
      64              :  * @brief Exit history browsing mode.
      65              :  *
      66              :  * @param history Shell history instance.
      67              :  */
      68              : void z_shell_history_mode_exit(struct shell_history *history);
      69              : 
      70              : /**
      71              :  * @brief Get next entry in shell command history.
      72              :  *
      73              :  * Function returns next (in given direction) stored line.
      74              :  *
      75              :  * @param[in]     history       Shell history instance.
      76              :  * @param[in]     up            Direction.
      77              :  * @param[out]    dst           Buffer where line is copied.
      78              :  * @param[in,out] len           Buffer size (input), amount of copied
      79              :  *                              data (output).
      80              :  * @return True if remains in history mode.
      81              :  */
      82              : bool z_shell_history_get(struct shell_history *history, bool up,
      83              :                          uint8_t *dst, uint16_t *len);
      84              : 
      85              : /**
      86              :  * @brief Put line into shell command history.
      87              :  *
      88              :  * If history is full, oldest entry (or entries) is removed.
      89              :  *
      90              :  * @param history       Shell history instance.
      91              :  * @param line          Data.
      92              :  * @param len           Data length.
      93              :  *
      94              :  */
      95              : void z_shell_history_put(struct shell_history *history, uint8_t *line,
      96              :                          size_t len);
      97              : 
      98              : /**
      99              :  * @brief Get state of shell history.
     100              :  *
     101              :  * @param history       Shell history instance.
     102              :  *
     103              :  * @return True if in browsing mode.
     104              :  */
     105              : static inline bool z_shell_history_active(struct shell_history *history)
     106              : {
     107              :         return (history->current) ? true : false;
     108              : }
     109              : 
     110              : #ifdef __cplusplus
     111              : }
     112              : #endif
     113              : 
     114              : #endif /* ZEPHYR_INCLUDE_SHELL_HISTORY_H_ */
        

Generated by: LCOV version 2.0-1