#include <stdlib.h>
#include <stdio.h>
#include <time.h>
+#include <stdarg.h>
#ifdef _WIN32
#include <windows.h>
return ( error == 0 ? cnt : -1 );
}
-#else
+char getch(void)
+{
+ char c;
+ int error;
+ struct termios Otty, Ntty;
+ if ( tcgetattr(STDIN_FILENO, &Otty) == -1 ) return -1;
+ Ntty = Otty;
+ Ntty.c_lflag &= ~ICANON; /* disable buffered i/o */
+ if (0 == (error = tcsetattr(STDIN_FILENO, TCSANOW, &Ntty))) { // set new attributes
+ c = getchar();
+ error += tcsetattr(STDIN_FILENO, TCSANOW, &Otty); // reset attributes
+ }
+ return ( error == 0 ? c : -1 );
+}
+
+#else // _WIN32
#include <conio.h>
int ukbhit(void) {
sprintf(fnameptr, "%s", ext);
}
+// fill buffer from structure [{uint8_t data, size_t length},...]
+int FillBuffer(uint8_t *data, size_t maxDataLength, size_t *dataLength, ...) {
+ *dataLength = 0;
+ va_list valist;
+ va_start(valist, dataLength);
+
+ uint8_t *vdata = NULL;
+ size_t vlength = 0;
+ do{
+ vdata = va_arg(valist, uint8_t *);
+ if (!vdata)
+ break;
+
+ vlength = va_arg(valist, size_t);
+ if (*dataLength + vlength > maxDataLength) {
+ va_end(valist);
+ return 1;
+ }
+
+ memcpy(&data[*dataLength], vdata, vlength);
+ *dataLength += vlength;
+
+ } while (vdata);
+
+ va_end(valist);
+
+ return 0;
+}
+
+bool CheckStringIsHEXValue(const char *value) {
+ for (int i = 0; i < strlen(value); i++)
+ if (!isxdigit(value[i]))
+ return false;
+
+ if (strlen(value) % 2)
+ return false;
+
+ return true;
+}
+
void hex_to_buffer(const uint8_t *buf, const uint8_t *hex_data, const size_t hex_len, const size_t hex_max_len,
const size_t min_str_len, const size_t spaces_between, bool uppercase) {
// printing and converting functions
char *sprint_hex(const uint8_t *data, const size_t len) {
- static char buf[1025] = {0};
+ static char buf[4097] = {0};
hex_to_buffer((uint8_t *)buf, data, len, sizeof(buf) - 1, 0, 1, false);
}
char *sprint_hex_inrow_ex(const uint8_t *data, const size_t len, const size_t min_str_len) {
- static char buf[1025] = {0};
+ static char buf[4097] = {0};
hex_to_buffer((uint8_t *)buf, data, len, sizeof(buf) - 1, min_str_len, 0, false);