#include "spi_proto.h" #include "spi.h" uint8_t read[2]; uint8_t write[4]; void talk_to_slave(uint8_t opcode, uint8_t addr, uint8_t wlen, uint8_t rlen) { write[0] = opcode; write[1] = addr; spi_mst_start_packet(); spi_mst_write(wlen, write); spi_mst_read(rlen, read); spi_mst_end_packet(); } uint16_t read_temperature(uint8_t number) { talk_to_slave(1, number, 2, 2); return (read[0] << 8) | read[1]; } uint8_t read_var8(uint8_t number) { talk_to_slave(2, number, 2, 2); return read[1]; } uint16_t read_var16(uint8_t number) { talk_to_slave(3, number, 2, 2); return (read[0] << 8) | read[1]; } void write_var8(uint8_t number, uint8_t value) { write[2] = 0; write[3] = number; talk_to_slave(4, number, 4, 0); } void write_var16(uint8_t number, uint16_t value) { write[2] = value >> 8; write[3] = value & 0xff; talk_to_slave(5, number, 4, 0); } void call_func(uint8_t number) { talk_to_slave(6, number, 2, 0); }