diff --git a/src/console/vtxprintf.c b/src/console/vtxprintf.c index 4fc6f35bd1..7e6f4d295d 100644 --- a/src/console/vtxprintf.c +++ b/src/console/vtxprintf.c @@ -8,6 +8,10 @@ #include #include +#if !CONFIG_ARCH_MIPS +#define SUPPORT_64BIT_INTS +#endif + /* haha, don't need ctype.c */ #define isdigit(c) ((c) >= '0' && (c) <= '9') #define is_digit isdigit @@ -31,12 +35,24 @@ static int skip_atoi(const char **s) #define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */ static int number(void (*tx_byte)(unsigned char byte), - unsigned long long num, int base, int size, int precision, int type) + unsigned long long inum, int base, int size, int precision, int type) { char c,sign,tmp[66]; const char *digits="0123456789abcdefghijklmnopqrstuvwxyz"; int i; int count = 0; +#ifdef SUPPORT_64BIT_INTS + unsigned long long num = inum; +#else + unsigned long num = (long)inum; + + if (num != inum) { + /* Alert user to an incorrect result. */ + tx_byte('#'); + tx_byte('^'); + tx_byte('!'); + } +#endif if (type & LARGE) digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";