void cc110x_writeburst_reg(cc110x_t *dev, uint8_t addr, const char *src, uint8_t count) { unsigned int cpsr; spi_acquire(dev->params.spi); cpsr = disableIRQ(); cc110x_cs(dev); spi_transfer_regs(dev->params.spi, addr | CC110X_WRITE_BURST, (char *)src, 0, count); gpio_set(dev->params.cs); restoreIRQ(cpsr); spi_release(dev->params.spi); }
void cc110x_write_reg(uint8_t addr, uint8_t value) { unsigned int cpsr; spi_acquire(CC110X_SPI); cpsr = disableIRQ(); cc110x_cs(); spi_transfer_reg(CC110X_SPI, addr, value, 0); gpio_set(CC110X_CS); restoreIRQ(cpsr); spi_release(CC110X_SPI); }
void cc110x_writeburst_reg(uint8_t addr, char *src, uint8_t count) { unsigned int cpsr; spi_acquire(CC110X_SPI); cpsr = disableIRQ(); cc110x_cs(); spi_transfer_regs(CC110X_SPI, addr | CC1100_WRITE_BURST, src, 0, count); gpio_set(CC110X_CS); restoreIRQ(cpsr); spi_release(CC110X_SPI); }
void cc110x_write_reg(cc110x_t *dev, uint8_t addr, uint8_t value) { unsigned int cpsr; spi_acquire(dev->params.spi); cpsr = disableIRQ(); cc110x_cs(dev); spi_transfer_reg(dev->params.spi, addr, value, 0); gpio_set(dev->params.cs); restoreIRQ(cpsr); spi_release(dev->params.spi); }
uint8_t cc110x_strobe(uint8_t c) { char result; unsigned int cpsr; spi_acquire(CC110X_SPI); cpsr = disableIRQ(); cc110x_cs(); spi_transfer_byte(CC110X_SPI, c, &result); gpio_set(CC110X_CS); restoreIRQ(cpsr); spi_release(CC110X_SPI); return (uint8_t) result; }
uint8_t cc110x_read_status(uint8_t addr) { char result; unsigned int cpsr; spi_acquire(CC110X_SPI); cpsr = disableIRQ(); cc110x_cs(); spi_transfer_reg(CC110X_SPI, addr | CC1100_READ_BURST, CC1100_NOBYTE, &result); gpio_set(CC110X_CS); restoreIRQ(cpsr); spi_release(CC110X_SPI); return (uint8_t) result; }
uint8_t cc110x_read_status(cc110x_t *dev, uint8_t addr) { char result; unsigned int cpsr; spi_acquire(dev->params.spi); cpsr = disableIRQ(); cc110x_cs(dev); spi_transfer_reg(dev->params.spi, addr | CC110X_READ_BURST, CC110X_NOBYTE, &result); gpio_set(dev->params.cs); restoreIRQ(cpsr); spi_release(dev->params.spi); return (uint8_t) result; }
void cc110x_readburst_reg(uint8_t addr, char *buffer, uint8_t count) { int i = 0; unsigned int cpsr; spi_acquire(CC110X_SPI); cpsr = disableIRQ(); cc110x_cs(); spi_transfer_byte(CC110X_SPI, addr | CC1100_READ_BURST, 0); while (i < count) { spi_transfer_byte(CC110X_SPI, CC1100_NOBYTE, &buffer[i]); i++; } gpio_set(CC110X_CS); restoreIRQ(cpsr); spi_release(CC110X_SPI); }
void cc110x_readburst_reg(cc110x_t *dev, uint8_t addr, char *buffer, uint8_t count) { int i = 0; unsigned int cpsr; spi_acquire(dev->params.spi); cpsr = disableIRQ(); cc110x_cs(dev); spi_transfer_byte(dev->params.spi, addr | CC110X_READ_BURST, 0); while (i < count) { spi_transfer_byte(dev->params.spi, CC110X_NOBYTE, &buffer[i]); i++; } gpio_set(dev->params.cs); restoreIRQ(cpsr); spi_release(dev->params.spi); }
uint8_t cc110x_get_reg_robust(cc110x_t *dev, uint8_t addr) { char result, result2; unsigned int cpsr; spi_acquire(dev->params.spi); cpsr = disableIRQ(); cc110x_cs(dev); do { spi_transfer_reg(dev->params.spi, addr | CC110X_READ_BURST, CC110X_NOBYTE, &result); spi_transfer_reg(dev->params.spi, addr | CC110X_READ_BURST, CC110X_NOBYTE, &result2); } while (result != result2); gpio_set(dev->params.cs); restoreIRQ(cpsr); spi_release(dev->params.spi); return (uint8_t) result; }
uint8_t cc110x_strobe(cc110x_t *dev, uint8_t c) { #ifdef CC110X_DONT_RESET if (c == CC110X_SRES) { return 0; } #endif char result; unsigned int cpsr; spi_acquire(dev->params.spi); cpsr = disableIRQ(); cc110x_cs(dev); spi_transfer_byte(dev->params.spi, c, &result); gpio_set(dev->params.cs); restoreIRQ(cpsr); spi_release(dev->params.spi); return (uint8_t) result; }