cliface.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * \file cliface.h
  3. *
  4. * This file contains definitions for command line interface (CLI) framework.
  5. */
  6. /*
  7. * Copyright (C) 2017. Mindtree Ltd.
  8. * All rights reserved.
  9. */
  10. #ifndef _H_CLIFACE_
  11. #define _H_CLIFACE_
  12. /* --------------------------------------------- Header File Inclusion */
  13. #include "EM_os.h"
  14. /* --------------------------------------------- Global Definitions */
  15. /* --------------------------------------------- Macros */
  16. /* Debug Macros */
  17. /* TBD: Mapped with debug sub-system */
  18. #define CLI_ERR(...) /* printf(__VA_ARGS__) */
  19. #define CLI_TRC(...) /* printf(__VA_ARGS__) */
  20. #define CLI_INF(...) /* printf(__VA_ARGS__) */
  21. #define CLI_STR_COMPARE(s0, s1) strcmp((const char *)(s0), (const char *)(s1))
  22. #define CLI_NULL_CHECK(ptr) \
  23. if (NULL == (ptr)) \
  24. {\
  25. CLI_ERR( \
  26. "[CLI] NULL Pointer\n"); \
  27. \
  28. return EM_FAILURE; \
  29. }
  30. #define CLI_IS_WHITE_SPACE(ch) ((' ' == (ch)) || ('\t' == (ch)))
  31. #define CLI_IS_CMD_SEPARATOR(ch) ((' ' == (ch)) || ('\t' == (ch)) || ('\r' == (ch)) || ('\n' == (ch)))
  32. /** TBD: Move to limits/configuration header file */
  33. #define CLI_MAX_ARGS 16
  34. #define CLI_strlen(s) EM_str_len(s)
  35. /* --------------------------------------------- Data Types/ Structures */
  36. /**
  37. * CLI command handler.
  38. *
  39. * CLI will call the handler for the received command.
  40. *
  41. * \param [in] argc Number of arguments.
  42. * \param [in] argv List of arguments.
  43. */
  44. typedef EM_RESULT (* CLI_CMD_HANDLER)
  45. (
  46. UINT32 argc,
  47. UCHAR * argv[]
  48. ) DECL_REENTRANT;
  49. /** This data structure represents a CLI command */
  50. typedef struct _cli_command
  51. {
  52. /** Command name */
  53. DECL_CONST UCHAR * cmd;
  54. /* Command description */
  55. DECL_CONST UCHAR * desc;
  56. /** Command handler */
  57. DECL_CONST CLI_CMD_HANDLER cmd_hdlr;
  58. } CLI_COMMAND;
  59. /* --------------------------------------------- Functions */
  60. EM_RESULT CLI_init
  61. (
  62. void
  63. );
  64. EM_RESULT CLI_process_line
  65. (
  66. /* IN */ UCHAR * buffer,
  67. /* IN */ UINT32 buffer_len,
  68. /* IN */ CLI_COMMAND * cmd_list,
  69. /* IN */ UINT32 cmd_count
  70. );
  71. INT32 CLI_strtoi
  72. (
  73. /* IN */ UCHAR *data,
  74. /* IN */ UINT16 data_length,
  75. /* IN */ UINT8 base
  76. );
  77. EM_RESULT CLI_strtoarray
  78. (
  79. /* IN */ UCHAR * data,
  80. /* IN */ UINT16 data_length,
  81. /* OUT */ UINT8 * output_array,
  82. /* IN */ UINT16 output_array_len
  83. );
  84. EM_RESULT CLI_strtoarray_le
  85. (
  86. /* IN */ UCHAR * data,
  87. /* IN */ UINT16 data_length,
  88. /* OUT */ UINT8 * output_array,
  89. /* IN */ UINT16 output_array_len
  90. );
  91. #endif /* _H_CLIFACE_ */