args.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #pragma once
  2. #include "m-string.h"
  3. #include "stdint.h"
  4. #include "stdbool.h"
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. /**
  9. * @brief Extract first word from arguments string and trim arguments string
  10. *
  11. * @param args arguments string
  12. * @param word first word, output
  13. * @return true - success
  14. * @return false - arguments string does not contain anything
  15. */
  16. bool args_read_string_and_trim(string_t args, string_t word);
  17. /**
  18. * @brief Convert hex ASCII values to byte array
  19. *
  20. * @param args arguments string
  21. * @param bytes byte array pointer, output
  22. * @param bytes_count needed bytes count
  23. * @return true - success
  24. * @return false - arguments string does not contain enough values, or contain non-hex ASCII values
  25. */
  26. bool args_read_hex_bytes(string_t args, uint8_t* bytes, uint8_t bytes_count);
  27. /************************************ HELPERS ***************************************/
  28. /**
  29. * @brief Get length of first word from arguments string
  30. *
  31. * @param args arguments string
  32. * @return size_t length of first word
  33. */
  34. size_t args_get_first_word_length(string_t args);
  35. /**
  36. * @brief Get length of arguments string
  37. *
  38. * @param args arguments string
  39. * @return size_t length of arguments string
  40. */
  41. size_t args_length(string_t args);
  42. /**
  43. * @brief Convert ASCII hex value to nibble
  44. *
  45. * @param c ASCII character
  46. * @param nibble nibble pointer, output
  47. * @return bool conversion status
  48. */
  49. bool args_char_to_hex_nibble(char c, uint8_t* nibble);
  50. /**
  51. * @brief Convert ASCII hex values to byte
  52. *
  53. * @param hi_nibble ASCII hi nibble character
  54. * @param low_nibble ASCII low nibble character
  55. * @param byte byte pointer, output
  56. * @return bool conversion status
  57. */
  58. bool args_char_to_hex(char hi_nibble, char low_nibble, uint8_t* byte);
  59. #ifdef __cplusplus
  60. }
  61. #endif