You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
937 B

#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);
}