Kestrel Interface
Loading...
Searching...
No Matches
kest_hfunc.c
Go to the documentation of this file.
1#include <stdint.h>
2#include <math.h>
3
4#include "kest_hfunc.h"
5
7
8char *binary_print_n(uint32_t x, int n)
9{
10 binary_print_buffer[0] = '0';
11 binary_print_buffer[1] = 'b';
12
13 int i = 0;
14 while (i < n && i < 32)
15 {
16 binary_print_buffer[i+2] = '0' + ((x >> (n - i - 1)) & 1);
17 i++;
18 }
19
20 binary_print_buffer[i+2] = 0;
21
23}
24
25char *binary_print_8 (uint8_t x)
26{
27 return binary_print_n(x, 8);
28}
29
30char *binary_print_16(uint16_t x)
31{
32
33 return binary_print_n(x, 16);
34}
35
36
37char *binary_print_24(uint32_t x)
38{
39 return binary_print_n(x, 24);
40}
41
42char *binary_print_32(uint32_t x)
43{
44 return binary_print_n(x, 32);
45}
46
47int format_float(char *buf, float val, int max_len)
48{
49 if (!buf) return 0;
50
51 char tmp[10];
52 int i = 0;
53
54 // Handle negative numbers
55 int is_neg = (val < 0);
56 if (is_neg)
57 val = -val;
58
59 // Multiply and round to 2 decimal places
60 int scaled = (int)roundf(val * 100.0f);
61 int int_part = scaled / 100;
62 int frac_part = scaled % 100;
63
64 // Write manually to buffer
65 int pos = 0;
66
67 if (is_neg)
68 buf[pos++] = '-';
69
70 if (int_part == 0)
71 {
72 buf[pos++] = '0';
73 }
74 else
75 {
76 while (int_part > 0)
77 {
78 tmp[i++] = '0' + (int_part % 10);
79 int_part /= 10;
80 }
81
82 while (i-- && pos < max_len - 1)
83 {
84 buf[pos++] = tmp[i];
85 }
86
87 if (pos == max_len - 1)
88 {
89 buf[pos] = 0;
90 return pos;
91 }
92 }
93
94 tmp[0] = (pos < 5) ? '.' : 0;
95 tmp[1] = (pos < 5) ? '0' + (frac_part / 10) : 0;
96 tmp[2] = (pos < 4) ? '0' + (frac_part % 10) : 0;
97 tmp[3] = 0;
98
99 for (i = 0; i < 4 && pos < max_len - 1 && tmp[i]; i++)
100 buf[pos++] = tmp[i];
101
102 buf[pos] = 0;
103
104 return pos - 1;
105}
char binary_print_buffer[35]
Definition kest_hfunc.c:6
char * binary_print_16(uint16_t x)
Definition kest_hfunc.c:30
char * binary_print_8(uint8_t x)
Definition kest_hfunc.c:25
int format_float(char *buf, float val, int max_len)
Definition kest_hfunc.c:47
char * binary_print_32(uint32_t x)
Definition kest_hfunc.c:42
char * binary_print_24(uint32_t x)
Definition kest_hfunc.c:37
char * binary_print_n(uint32_t x, int n)
Definition kest_hfunc.c:8