summaryrefslogtreecommitdiff
path: root/project/Core/Src/Homework/hw8.c
blob: e684c0769265fd846301eea0155257ca73941c3c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
 * hw8.c
 *
 *  Created on: Nov 19, 2025
 *      Author: sowgro
 */

#include <stdint.h>
#include <stdio.h>
#include "hw8.h"

void hw8_run() {
	uint8_t data[] = {0x90, 0x82, 0x93, 0x64, 0xD3, 0x89};
	parseDelay_result_t d = parseDelay(data);
	printf("delay: %lu bytes: %i\r\n", d.value, d.bytes_used);
}

parseDelay_result_t parseDelay(uint8_t* delay) {
	uint32_t ret = 0;
	uint8_t* cur = delay;

	for (;;) {
		uint8_t value = *cur & ~(1 << 7);
		ret = (ret << 7) | value;
		if (~*cur & (1 << 7)) {
			break;
		}
		cur++;
	}
	return (parseDelay_result_t) {ret, cur - delay + 1};
}