Added noise maker support.
[cerebrum.git] / util.c
blob1b01dbc5fa7e2457c32de73ec7ee966d41c7747e
1 /*
2 Copyright (C) 2012 jaseg <s@jaseg.de>
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 version 3 as published by the Free Software Foundation.
7 */
9 #include "util.h"
10 #include "uart.h"
12 void uart_puthex_nibble(uint8_t nibble){
13 if(nibble < 0xA)
14 uart_putc('0'+nibble);
15 else
16 uart_putc('A'+nibble-0xA);
19 void uart_puthex(uint8_t data){
20 uart_puthex_nibble(data>>4);
21 uart_puthex_nibble(data&0xF);
24 void uart_puthex_16(uint16_t data){
25 uart_puthex(data>>8);
26 uart_puthex(data&0xFF);
29 void uart_puthex_flip_16(uint16_t data){
30 uart_puthex(data&0xFF);
31 uart_puthex(data>>8);
34 void uart_puthex_32(uint32_t data){
35 uint16_t high = data>>16;
36 uart_puthex_16(high);
37 uint16_t low = data&0xFFFF;
38 uart_puthex_16(low);
41 void uart_puthex_flip_32(uint32_t data){
42 uint16_t low = data&0xFFFF;
43 uart_puthex_flip_16(low);
44 uint16_t high = data>>16;
45 uart_puthex_flip_16(high);
48 void uart_putdec(uint8_t data){
49 if(data >= 100){
50 if(data >= 200){
51 uart_putc('2');
52 data -= 200;
53 }else{
54 uart_putc('1');
55 data -= 100;
58 uint8_t d2 = data/10;
59 data %= 10;
60 uart_putc('0'+d2);
61 uart_putc('0'+data);
64 int parseHex(char* buf){
65 int result = 0;
66 int len = 2;
67 for(int i=0; i<len; i++){
68 char c = buf[len-i];
69 int v = 0;
70 if(c>='0' && c<='9'){
71 v=(c-'0');
72 }else if(c>='a' && c<= 'f'){
73 v=(c-'a'+10);
74 }else if(c>='A' && c<= 'F'){
75 v=(c-'A'+10);
77 result |= v<<(4*i);
79 return result;