This is used for sending Data to receiving mDot
Dependencies: libmDot-dev-mbed5-deprecated ISL29011
Fork of mdot-examples by
itoa.cpp@5:c9ab5062cfc3, 2017-12-01 (annotated)
- Committer:
- SDesign2018
- Date:
- Fri Dec 01 20:22:20 2017 +0000
- Revision:
- 5:c9ab5062cfc3
Added option 8 and 9; 8 to read SPI and 9 to write though not calling function yet;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SDesign2018 | 5:c9ab5062cfc3 | 1 | #include <string.h> |
SDesign2018 | 5:c9ab5062cfc3 | 2 | #include "itoa.h" |
SDesign2018 | 5:c9ab5062cfc3 | 3 | using namespace std; |
SDesign2018 | 5:c9ab5062cfc3 | 4 | |
SDesign2018 | 5:c9ab5062cfc3 | 5 | // Implementation of itoa() |
SDesign2018 | 5:c9ab5062cfc3 | 6 | char* itoa(int num, char* str, int base) |
SDesign2018 | 5:c9ab5062cfc3 | 7 | { |
SDesign2018 | 5:c9ab5062cfc3 | 8 | int i = 0; |
SDesign2018 | 5:c9ab5062cfc3 | 9 | bool isNegative = false; |
SDesign2018 | 5:c9ab5062cfc3 | 10 | |
SDesign2018 | 5:c9ab5062cfc3 | 11 | /* Handle 0 explicitely, otherwise empty string is printed for 0 */ |
SDesign2018 | 5:c9ab5062cfc3 | 12 | if (num == 0) |
SDesign2018 | 5:c9ab5062cfc3 | 13 | { |
SDesign2018 | 5:c9ab5062cfc3 | 14 | str[i++] = '0'; |
SDesign2018 | 5:c9ab5062cfc3 | 15 | str[i] = '\0'; |
SDesign2018 | 5:c9ab5062cfc3 | 16 | return str; |
SDesign2018 | 5:c9ab5062cfc3 | 17 | } |
SDesign2018 | 5:c9ab5062cfc3 | 18 | |
SDesign2018 | 5:c9ab5062cfc3 | 19 | // In standard itoa(), negative numbers are handled only with |
SDesign2018 | 5:c9ab5062cfc3 | 20 | // base 10. Otherwise numbers are considered unsigned. |
SDesign2018 | 5:c9ab5062cfc3 | 21 | if (num < 0 && base == 10) |
SDesign2018 | 5:c9ab5062cfc3 | 22 | { |
SDesign2018 | 5:c9ab5062cfc3 | 23 | isNegative = true; |
SDesign2018 | 5:c9ab5062cfc3 | 24 | num = -num; |
SDesign2018 | 5:c9ab5062cfc3 | 25 | } |
SDesign2018 | 5:c9ab5062cfc3 | 26 | |
SDesign2018 | 5:c9ab5062cfc3 | 27 | // Process individual digits |
SDesign2018 | 5:c9ab5062cfc3 | 28 | while (num != 0) |
SDesign2018 | 5:c9ab5062cfc3 | 29 | { |
SDesign2018 | 5:c9ab5062cfc3 | 30 | int rem = num % base; |
SDesign2018 | 5:c9ab5062cfc3 | 31 | str[i++] = (rem > 9)? (rem-10) + 'a' : rem + '0'; |
SDesign2018 | 5:c9ab5062cfc3 | 32 | num = num/base; |
SDesign2018 | 5:c9ab5062cfc3 | 33 | } |
SDesign2018 | 5:c9ab5062cfc3 | 34 | |
SDesign2018 | 5:c9ab5062cfc3 | 35 | // If number is negative, append '-' |
SDesign2018 | 5:c9ab5062cfc3 | 36 | if (isNegative) |
SDesign2018 | 5:c9ab5062cfc3 | 37 | str[i++] = '-'; |
SDesign2018 | 5:c9ab5062cfc3 | 38 | |
SDesign2018 | 5:c9ab5062cfc3 | 39 | str[i] = '\0'; // Append string terminator |
SDesign2018 | 5:c9ab5062cfc3 | 40 | |
SDesign2018 | 5:c9ab5062cfc3 | 41 | // Reverse the string |
SDesign2018 | 5:c9ab5062cfc3 | 42 | reverse(str); |
SDesign2018 | 5:c9ab5062cfc3 | 43 | |
SDesign2018 | 5:c9ab5062cfc3 | 44 | return str; |
SDesign2018 | 5:c9ab5062cfc3 | 45 | } |
SDesign2018 | 5:c9ab5062cfc3 | 46 | |
SDesign2018 | 5:c9ab5062cfc3 | 47 | /* |
SDesign2018 | 5:c9ab5062cfc3 | 48 | ** reverse string in place |
SDesign2018 | 5:c9ab5062cfc3 | 49 | */ |
SDesign2018 | 5:c9ab5062cfc3 | 50 | void reverse(char *s){ |
SDesign2018 | 5:c9ab5062cfc3 | 51 | char *j; |
SDesign2018 | 5:c9ab5062cfc3 | 52 | int c; |
SDesign2018 | 5:c9ab5062cfc3 | 53 | |
SDesign2018 | 5:c9ab5062cfc3 | 54 | j = s + strlen(s) - 1; |
SDesign2018 | 5:c9ab5062cfc3 | 55 | while(s < j) { |
SDesign2018 | 5:c9ab5062cfc3 | 56 | c = *s; |
SDesign2018 | 5:c9ab5062cfc3 | 57 | *s++ = *j; |
SDesign2018 | 5:c9ab5062cfc3 | 58 | *j-- = c; |
SDesign2018 | 5:c9ab5062cfc3 | 59 | } |
SDesign2018 | 5:c9ab5062cfc3 | 60 | } |