//
// Tools for USB HID Autofire
//

void strrev(char* arr, int start, int end) {
    char temp;

    if(start >= end) return;

    temp = *(arr + start);
    *(arr + start) = *(arr + end);
    *(arr + end) = temp;

    start++;
    end--;
    strrev(arr, start, end);
}

char* itoa(int number, char* arr, int base) {
    int i = 0, r, negative = 0;

    if(number == 0) {
        arr[i] = '0';
        arr[i + 1] = '\0';
        return arr;
    }

    if(number < 0 && base == 10) {
        number *= -1;
        negative = 1;
    }

    while(number != 0) {
        r = number % base;
        arr[i] = (r > 9) ? (r - 10) + 'a' : r + '0';
        i++;
        number /= base;
    }

    if(negative) {
        arr[i] = '-';
        i++;
    }

    strrev(arr, 0, i - 1);

    arr[i] = '\0';

    return arr;
}
