LCOV - code coverage report
Current view: top level - zephyr/shell - shell_history.h Hit Total Coverage
Test: new.info Lines: 0 5 0.0 %
Date: 2024-12-22 00:14:23

          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 1.14