/** * receiveData * * Read data packet from RX FIFO * * 'packet' Container for the packet received * * Return: * Amount of bytes received */ byte CC1101_receiveData(CCPACKET * packet) { byte val; // Rx FIFO overflow? if (((val=readStatusReg(CC1101_MARCSTATE)) & 0x1F) == 0x11) { setIdleState(); // Enter IDLE state flushRxFifo(); // Flush Rx FIFO //CC1101_cmdStrobe(CC1101_SFSTXON); packet->length = 0; } // Any byte waiting to be read? else if ((val=readStatusReg(CC1101_RXBYTES)) & 0x7F) { // Read data length packet->length = readConfigReg(CC1101_RXFIFO); // If packet is too long if (packet->length > CC1101_DATA_LEN) packet->length = 0; // Discard packet else { // Read data packet CC1101_readBurstReg(packet->data, CC1101_RXFIFO, packet->length); // Read RSSI packet->rssi = readConfigReg(CC1101_RXFIFO); // Read LQI and CRC_OK val = readConfigReg(CC1101_RXFIFO); packet->lqi = val & 0x7F; packet->crc_ok = (val & 0x80)>>7; } }
void Thermal_init(){ I2C_init(THERMAL_I2C_ID,I2C_CLOCK_FREQ); count = 0; readEeprom(); writeTrimmingValue(); writeConfigReg(); readConfigReg(); configCalculationData(); Timer_new(TIMER_THERMAL,READ_DELAY); }
/** * receiveData * * Read data packet from RX FIFO * * 'packet' Container for the packet received * * Return: * Amount of bytes received */ byte CC1101::receiveData(CCPACKET * packet) { byte val; byte rxBytes = readStatusReg(CC1101_RXBYTES); // Any byte waiting to be read and no overflow? if (rxBytes & 0x7F && !(rxBytes & 0x80)) { // Read data length packet->length = readConfigReg(CC1101_RXFIFO); // If packet is too long if (packet->length > CC1101_DATA_LEN) packet->length = 0; // Discard packet else { // Read data packet readBurstReg(packet->data, CC1101_RXFIFO, packet->length); // Read RSSI packet->rssi = readConfigReg(CC1101_RXFIFO); // Read LQI and CRC_OK val = readConfigReg(CC1101_RXFIFO); packet->lqi = val & 0x7F; packet->crc_ok = bitRead(val, 7); } } else packet->length = 0; setIdleState(); // Enter IDLE state flushRxFifo(); // Flush Rx FIFO //cmdStrobe(CC1101_SCAL); // Back to RX state setRxState(); return packet->length; }
/** * receiveData * * Read data packet from RX FIFO * * Return: * Amount fo bytes received * 'packet' Container for the packet received */ byte CC1101::receiveData(CCPACKET * packet) { byte val; // Any byte waiting to be read? if (readStatusReg(CC1101_RXBYTES) & 0x7F) { // Read data length packet->length = readConfigReg(CC1101_RXFIFO); // If packewt is too long if (packet->length > CC1101_DATA_LEN) packet->length = 0; // Discard packet else { // Read data packet readBurstReg(packet->data, CC1101_RXFIFO, packet->length); // Read RSSI packet->rssi = readConfigReg(CC1101_RXFIFO); // Read LQI and CRC_OK val = readConfigReg(CC1101_RXFIFO); packet->lqi = val & 0x7F; packet->crc_ok = bitRead(val, 7); } } else packet->length = 0; // Flush RX FIFO. Don't uncomment //cmdStrobe(CC1101_SFRX); // Enter back into RX state setRxState(); return packet->length; }