aboutsummaryrefslogtreecommitdiff
path: root/shared/pb/driver.c
blob: 2552b61112a8c982f6337e4778609ce6e647884f (plain)
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
#include "types.h"
#include "driver.h"

__weak bool pbdrv_hook_cmd() {
	return false;
}

__weak void pbdrv_i2c_recv(uint16_t addr, const char * buf, size_t sz) {
	if (sz == 0) return;
	enum pb_cmd cmd = (enum pb_cmd) buf[0];

	// shift buffer pointer to only contain the puzzle bus message buf
	buf++;
	sz--;

	// allow user to override command handler while still using this weak
	// function
	if (pbdrv_hook_cmd(cmd, buf, sz)) return;

	switch (cmd) {
		case PB_CMD_READ: return pbdrv_handle_read(buf, sz);
		// case PB_CMD_WRITE: return pbdrv_handle_write(buf, sz);
		// case PB_CMD_MAGIC: return pbdrv_handle_magic(buf, sz);
		default: return;
	}
}

__weak void pbdrv_i2c_send(uint16_t addr, const char * buf, size_t sz) {
	return;
}